Commit Graph

662 Commits

Author SHA1 Message Date
Daniel Oaks 64bdedaee2 Add oper classes, for more finely-grained control 2016-10-23 10:47:11 +10:00
Daniel Oaks a5395b5fe2 Setup 0.4.0-unreleased for next release 2016-10-23 09:42:57 +10:00
Daniel Oaks 09efb8e322 Release v0.3.0 2016-10-23 00:56:13 +10:00
Daniel Oaks c599c8f599 modes: Fix error with cmodes being sent badly 2016-10-23 00:49:33 +10:00
Daniel Oaks 517893065b Support STATUSMSG 2016-10-23 00:45:51 +10:00
Daniel Oaks d9db688963 Implement echo-message capability 2016-10-22 22:29:01 +10:00
Daniel Oaks b84dbb1a06 Support cap-notify and enabling/disabling SASL 2016-10-22 22:18:41 +10:00
Daniel Oaks ef437348cf server: rehash on SIGHUP 2016-10-22 21:20:08 +10:00
Daniel Oaks 1812edb2db server: Add a mutex to kill a very small, bad race 2016-10-22 21:01:19 +10:00
Daniel Oaks 835187a736 REHASH: Update listeners, fix some bad hangs/locks 2016-10-22 20:54:04 +10:00
Daniel Oaks 149550b453 socket: Timeout TLS handshakes 2016-10-22 20:53:36 +10:00
Daniel Oaks 6cd71e1b9e Add REHASH command 2016-10-19 21:38:31 +10:00
Daniel Oaks 6e24efe84b Setup 0.3.0-unreleased for next release 2016-10-19 21:37:59 +10:00
Daniel Oaks d96ca0ba25 client_lookup_set: Expose ByNick so we can loop over all clients 2016-10-19 21:35:51 +10:00
Daniel Oaks b23707c12a Release v0.2.0 2016-10-16 21:36:21 +10:00
Daniel Oaks 425a521d27 channel: Fix MODE and WHO 2016-10-16 21:28:59 +10:00
Daniel Oaks 41d534d6dd server: fix sprintf call 2016-10-16 20:45:36 +10:00
Daniel Oaks e100bd18af HELP: correct misspelling 2016-10-16 20:44:38 +10:00
Daniel Oaks 1e956355bf NICK: Fix small bug when casefolding 2016-10-16 20:35:50 +10:00
Daniel Oaks 1bab81091f Add MONITOR command 2016-10-16 20:14:56 +10:00
Daniel Oaks 859d0cd607 net: Prepend IPv6 addresses with '0' if necessary 2016-10-16 14:17:29 +10:00
Daniel Oaks a8d910e233 capability: Add invite-notify 2016-10-16 14:14:55 +10:00
Daniel Oaks b33cbd311c accounts: Release SASL lock after finishing auth 2016-10-16 14:01:40 +10:00
Daniel Oaks e643c2101f capability: Add 3.2 CAP values 2016-10-16 13:54:09 +10:00
Daniel Oaks 9162d0da61 account-tag: Fix sending on PRIVMSG/NOTICE 2016-10-16 13:27:33 +10:00
Daniel Oaks 8abffde6a0 PRIVMSG: Fix sending them 2016-10-16 12:59:36 +10:00
Daniel Oaks 2e3ffd2f23 caps: Add message-tags draft capability 2016-10-16 12:54:15 +10:00
Daniel Oaks 43e28e2fef PROXY: Remove command, I don't think it's that useful 2016-10-15 16:29:34 +10:00
Daniel Oaks 06028e0117 modes: Remove channel.Persist mode
It's broken anyways, and we'll be replacing it with our custom channel ownership stuff later.
2016-10-14 21:04:04 +10:00
Daniel Oaks 7b50f64d7e help: Add new /HELP command 2016-10-14 20:56:44 +10:00
Daniel Oaks da6f350563 modes: Remove ReOp channel mode (unused) 2016-10-14 20:55:26 +10:00
Daniel Oaks 28b81d1a45 password_new: Rename to password_salted 2016-10-14 17:11:53 +10:00
Daniel Oaks d226a0c6d3 nickname: Preserve case when setting NICK 2016-10-14 00:31:13 +10:00
Daniel Oaks 9ccd6037a6 strings: Make Nickname profile not actually case-sensitive 2016-10-14 00:25:37 +10:00
Daniel Oaks 4fa094cea2 accounts: Support account-notify capability 2016-10-13 18:18:00 +10:00
Daniel Oaks 0eebd6273c AWAY: Only dispatch AWAY when cap-notify is used 2016-10-13 18:08:08 +10:00
Daniel Oaks e807f3ca04 Fixing warnings and golint stuff 2016-10-13 17:36:44 +10:00
Daniel Oaks 09802f7181 constants: Remove unused constants.
We may re-add MaxReplyLength later as a variable config option, similar to mammon.
2016-10-13 16:44:36 +10:00
Daniel Oaks 3c2fae666a net: Fix issue where some local clients would break.
Ran into this on Windows, when it didn't return "localhost" as a possible name for 127.0.0.1 or ::1.
2016-10-13 16:34:04 +10:00
Daniel Oaks 985f87d9d1 client: Remove silly testing Println 2016-10-13 16:21:19 +10:00
Daniel Oaks 5e72409695 Move from ascii(ish) unicode encoding to prelim rfc7700 using functions instead 2016-10-11 23:51:46 +10:00
Daniel Oaks 2bfcc553ce client: Don't fail silently on error sending messages 2016-09-19 23:00:19 +10:00
Daniel Oaks 5d7d510348 client: Fix minor bug when doing SASL before NICK/USER 2016-09-19 22:30:29 +10:00
Daniel Oaks 32b328f53f accounts: Fix broken long SASL auth strings 2016-09-19 21:34:17 +10:00
Daniel Oaks 88ce999b52 Rename things for next version 2016-09-18 11:48:41 +10:00
Daniel Oaks 2fdc9e5941 Release v0.1.0 2016-09-18 09:15:23 +10:00
Daniel Oaks ae69ef5cd6 db: Remove SQLite db, hopefully looking up clients still works.Channel persistence is broken by this, will fix it later. 2016-09-17 21:23:04 +10:00
Daniel Oaks 969eed394f KILL: Make reason optional, to match other ircds 2016-09-14 20:57:33 +10:00
Daniel Oaks c9a82e3f6f modes: Return right character on unknown mode char 2016-09-14 20:42:55 +10:00
Daniel Oaks ad8df3c9a8 modes: Fix modes, re-add +l and +k 2016-09-14 19:48:47 +10:00
Daniel Oaks 0701267395 server: Add CHANMODES 2016-09-13 22:05:38 +10:00
Daniel Oaks 0087de6092 client: Add AWAYLEN 2016-09-12 12:40:09 +10:00
Daniel Oaks bc42960552 strings: Remove CTCP stuff, unused 2016-09-12 12:33:37 +10:00
Daniel Oaks 266c534af9 theater: Remove THEATER command for now 2016-09-12 12:31:25 +10:00
Daniel Oaks 79d831bbb7 channel: Add KICKLEN and TOPICLEN 2016-09-12 12:22:50 +10:00
Daniel Oaks 3321243486 server: Add away-notify capability 2016-09-12 11:56:20 +10:00
Daniel Oaks 754b74c21c accounts: Add account-tag capability 2016-09-12 11:25:31 +10:00
Daniel Oaks c2aa31001a client: Fix initial RPL_UMODEIS 2016-09-07 21:50:42 +10:00
Daniel Oaks 220bc2c609 server-time: Fix time format 2016-09-07 21:48:03 +10:00
Daniel Oaks b5e7d8968f accounts: Add SASL EXTERNAL handler 2016-09-07 21:32:58 +10:00
Daniel Oaks 70665850aa accounts: Add SASL PLAIN handler 2016-09-07 20:46:01 +10:00
Daniel Oaks 1679bc9ac2 accounts: Add initial SASL handler, still need to write mechanism handlers 2016-09-06 16:31:59 +10:00
Daniel Oaks 5d6b4127ff registration: Fix comment 2016-09-05 23:00:21 +10:00
Daniel Oaks e3fbdebc48 registration: Hook up reg to actual accounts 2016-09-05 22:54:09 +10:00
Daniel Oaks 5269dc8776 accounts: Very roughly introduce account type 2016-09-05 22:35:13 +10:00
Daniel Oaks 739f8d71d2 server: Close db and store more properly 2016-09-05 22:14:20 +10:00
Daniel Oaks 90d5f7d6a2 registration: Very initial, very skodgy 'working' account reg 2016-09-05 19:43:32 +10:00
Daniel Oaks 4cb196f50a server: Close store properly, on shutdown 2016-09-05 19:39:16 +10:00
Daniel Oaks 6e96a175d6 registration: Add new password manager, integrate registration and credential types 2016-09-05 18:45:42 +10:00
Daniel Oaks 68c83a95d4 WHOIS: Fixes, add certfp 2016-09-05 14:23:57 +10:00
Daniel Oaks 49034cb20e certfp: Add certfp retrieval from client 2016-09-05 13:53:39 +10:00
Daniel Oaks d3d88cfa0c registration: Move REG CREATE to its' own function 2016-09-04 21:42:19 +10:00
Daniel Oaks 6e9722dee5 accounts: Rename some args, check credential type 2016-09-04 21:15:28 +10:00
Daniel Oaks e7fced804e accounts: Fix broken numeric, write more framework for reg 2016-09-04 20:08:53 +10:00
Daniel Oaks e4b6c1852b accounts: Add very initial, extremely broken account work (not including config changes) 2016-09-04 19:25:33 +10:00
Daniel Oaks 1746be2bb8 db: Add very initial buntdb datastore 2016-08-19 23:21:52 +10:00
Daniel Oaks 2ab8d4cb6e names: Allow more characters in channel names -- from jlatt/ergonomadic#39 <3 2016-08-14 14:15:31 +10:00
Daniel Oaks a177ca36b1 server: Add some comments and clean up a bit -- from jlatt/ergonomadic#39 <3 2016-08-14 14:13:01 +10:00
Daniel Oaks 43553390d6 WHOWAS: Make maximum number of entries configurable 2016-08-14 14:07:50 +10:00
Daniel Oaks 6e66c5c8a7 channel: Prevent duping error code in channel.Persist -- from jlatt/ergonomadic#39 <3 2016-08-14 13:34:24 +10:00
Daniel Oaks e33a810522 capability: Add extended-join and userhost-in-names 2016-08-14 11:59:33 +10:00
Daniel Oaks ef592d160c capability: Add server-time 2016-08-13 22:04:21 +10:00
Daniel Oaks e04ef1ca11 NICK: Fix setting nicks after registration 2016-08-13 20:54:15 +10:00
Daniel Oaks 842f0d05ab strings: Only allow # channels, since we only implement those 2016-08-13 20:53:56 +10:00
Daniel Oaks 5a8e7709b2 strings: Disallow more broken nicknames 2016-08-13 20:53:23 +10:00
Daniel Oaks 1b67af7e85 strings: Also explicitly disallow . in nicknames 2016-08-12 23:38:19 +10:00
Daniel Oaks 9d853d5be7 strings: Don't allow nicks to start with dashes or 0-9 2016-08-12 23:33:44 +10:00
Daniel Oaks 5e55e35774 OPER: Fix sent MODE string 2016-08-12 22:26:45 +10:00
Daniel Oaks a5911ad14c server: Add configurable NICKLEN and CHANNELLEN 2016-08-12 22:20:32 +10:00
Daniel Oaks d810033a02 client: Timeout ident more nicely 2016-07-02 19:12:00 +10:00
Daniel Oaks 199f8bd8ae USER: disallow usernames that break the protocol 2016-06-30 23:55:44 +10:00
Daniel Oaks 19c2bb69fc Allow looking up usernames with ident on connection 2016-06-30 19:28:34 +10:00
Daniel Oaks 1d51bb450a constants: Make SEM_VER the actual version number conforming to Semantec Versioning, and VER the composed number 2016-06-30 17:42:24 +10:00
Daniel Oaks 748bc759cb Cleanups reported by goreportcard 2016-06-30 15:43:27 +10:00
Daniel Oaks 5d3b185881 client: Use more accurate QUIT message for ping timeouts 2016-06-30 15:35:34 +10:00
Daniel Oaks b820559050 modes: Add TLS umode (+Z) 2016-06-29 01:09:07 +10:00
Daniel Oaks 2874d4f897 remove empty file 2016-06-28 16:25:11 +10:00
Daniel Oaks 138f61d852 remove empty file 2016-06-28 16:24:28 +10:00
Daniel Oaks 670cf51452 modes: Migrating useful mode structs and functions directly to modes 2016-06-28 16:22:35 +10:00
Daniel Oaks 41473bb444 Fix PASS handling 2016-06-28 16:06:17 +10:00
Daniel Oaks bded3202c2 channels: send RPL_CHANNELCREATED and RPL_TOPICTIME 2016-06-26 21:06:28 +10:00
Daniel Oaks 34a099b61a Fix PING and PONG 2016-06-22 22:04:13 +10:00
Daniel Oaks e19c1527a4 modes: Fix modes, re-add channel modes 2016-06-22 21:35:26 +10:00
Daniel Oaks 04442ddef1 Stuff is no longer completely broken. Just mostly. 2016-06-20 22:53:45 +10:00
Daniel Oaks b8dc10f92d nickname: Fix 2016-06-20 10:04:53 +10:00
Daniel Oaks 9e7a590f23 server: Fix 2016-06-19 21:59:18 +10:00
Daniel Oaks 2a519c8061 use server.name and server.nameString, name for checking and getting nice comparison, nameString for reply outputs 2016-06-19 15:43:16 +10:00
Daniel Oaks 7b13858f8c client: Fix 2016-06-19 15:37:29 +10:00
Daniel Oaks 7fcc6bdbc4 channels: Fix 2016-06-19 14:55:24 +10:00
Daniel Oaks c2e5386966 commands: Fix comment 2016-06-19 12:53:52 +10:00
Daniel Oaks 08225c201d continue work reorganising and redoing EVERYTHING 2016-06-19 10:01:30 +10:00
Daniel Oaks e83283e7fd urgh this should not even be commited yet, this will all be squashed out 2016-06-17 22:17:42 +10:00
Daniel Oaks dbca03e948 Split numerics into their own new file 2016-06-16 19:41:07 +10:00
Daniel Oaks 3a5314bd8e Add basic ClientSocket work 2016-06-15 22:16:07 +10:00
Daniel Oaks 2f08401a0f Attempt to add mostly-correct license info at the top of each file... track this stuff a bit better 2016-06-15 21:50:56 +10:00
Daniel Oaks 9860094020 socket: Use updated socket code 2016-06-15 21:21:45 +10:00
Daniel Oaks fd6ed36995 strings: Restrict *? explicitly as they are used for mask matching 2016-06-15 17:41:53 +10:00
Daniel Oaks 3a9a643d30 server: Let websocket listeners also be TLS 2016-04-28 20:41:26 +10:00
Daniel Oaks 2fb6acb92a restructure SSL/TLS a bit, name config items better 2016-04-28 20:12:23 +10:00
Daniel Oaks cfcecd0101 tests: Start net tests 2016-04-21 22:32:17 +10:00
Daniel Oaks cd7d30a997 Set default channel modes to +nt 2016-04-21 19:29:50 +10:00
Daniel Oaks 8885f14f19 PROXY: Restrict to specified addresses/hostnames 2016-04-21 16:53:55 +10:00
Daniel Oaks 77bf7173ff Require that server names must be hostnames, and nicks cannot be hostnames 2016-04-21 10:48:15 +10:00
Daniel Oaks 4a8d526c4d strings: Nicks and usernames can't contain ! or @ 2016-04-21 10:21:36 +10:00
Daniel Oaks ed95f09725 Fix clients no longer being able to send commands after a single command errors out 2016-04-15 19:08:52 +10:00
Daniel Oaks fb345a2dd4 user: Don't parse the second and third params anymore 2016-04-15 18:45:05 +10:00
Daniel Oaks 9acdeedec6 commands: Simplify and unify minimum required number of args handling 2016-04-15 15:57:08 +10:00
Daniel Oaks 8b79662f1a modes: use secret instead of private, it's the standard these days. fix secret channel hiding in whois 2016-04-14 22:33:38 +10:00
Daniel Oaks a715882a75 Remove RplCurrentMode NOTICE on successful MODE commands. Fixes #22 2016-04-14 21:53:45 +10:00
Daniel Oaks 4177522e74 modes: Correct mode argument handling, only first param is the modestring 2016-04-14 21:22:17 +10:00
Daniel Oaks 9b32d7d6b8 mode: Parse more advanced mode changes 2016-04-14 18:41:58 +10:00
Daniel Oaks 63f5f34f28 version: Clarify semantic versioning "public API" and reset ver number on Oragono 2016-04-14 15:31:51 +10:00
Daniel Oaks 0ccabead31 cap: Properly suspend registration for CAP negotiation 2016-04-14 11:25:23 +10:00
Daniel Oaks b028b6929c reply: Include param on RPL_ENDOFWHOIS. Fixes #18 2016-04-14 10:16:32 +10:00
Daniel Oaks a241ea7dd6 version: Return RPL_ISUPPORT tokens, as standard 2016-04-14 09:55:22 +10:00
Daniel Oaks 3972fc49ed privileges: Add founder/admin/halfop (qah), remove owner (O)
channel owner is from 2812 and unused in the real world
2016-04-14 09:36:02 +10:00
Daniel Oaks 5ee0f1c205 capability: Remove CAP CLEAR as per IRCv3 recommendations, allow CAP command after registration 2016-04-14 07:30:14 +10:00
Daniel Oaks c3288823af Add native SSL/TLS listener support from @enmand for our new config 2016-04-13 20:45:09 +10:00
Daniel Oaks 8dc2732137 server: Store MOTD in memory rather than reading it from disk every time. Fixes #3 2016-04-13 15:49:30 +10:00
Daniel Oaks 56641ff650 isupport: Don't advertise stuff that's still TODO 2016-04-13 08:59:00 +10:00
Daniel Oaks 78928c0322 isupport: STATUSMSG isn't supported, don't advertise it 2016-04-13 08:58:52 +10:00
Daniel Oaks a013205fd1 Support network name 2016-04-13 08:58:41 +10:00
Daniel Oaks c88cd328f8 Very initial RPL_ISUPPORT numeric support 2016-04-13 08:57:34 +10:00
Daniel Oaks c0c16c72f0 ergonomadic -> oragono. I'm making lots of changes and this is AN EXPERIMENT. I want to differentiate this from Ergonomadic proper 2016-04-13 08:55:37 +10:00
Daniel Oaks 29d80366a6 Use docopt for command-line processing and new YAML configuration format 2016-04-13 08:46:14 +10:00
Daniel Oaks c705bdaac5 irc/server: MOTD does not need to be clipped at 80 chars, has not been standard for a long while now 2016-04-13 08:46:14 +10:00
Daniel Oaks 7ce62444de strings: Disallow nicknames that mess with the protocol in bad ways 2016-04-12 22:42:17 +10:00
John Soros 65539a593b this is related to https://github.com/fluffle/goirc/pull/71: common irc server behaviour is to reply with an empty + 2016-02-20 22:19:32 -08:00
Roberto Besser 404151fe9d code.google.com is shutting down, change import to use gopkg.in 2016-02-20 18:16:04 -08:00
Robin Burchell 6ad97f7e5d irc: Switch to golang.org versions, not google code versions of dependencies.
This has a few advantages:
* the google code versions are no longer maintained
* the google code versions are using mercurial (which I don't have installed)
2015-07-04 12:19:33 +02:00
Edmund Huber 67a6247377 Merge pull request #14 from edmund-huber/websocket
add support for WebSocket connections
2015-06-09 10:30:04 -07:00
Edmund Huber 02dca1dd89 fix array overrun panic bug, #13 2015-06-06 18:26:28 -07:00
Edmund Huber a16cc84e41 don't shadow the second error 2015-06-06 16:15:09 -07:00
Edmund Huber fce54343ea touchups to irc/websocket.go per review comments 2015-06-06 16:11:06 -07:00
Edmund Huber 62302ec92e fail WebSockets with subprotocols here, because gorilla leaves it up for us to deal with subprotocols 2015-06-06 15:19:07 -07:00
Edmund Huber 23d7c81684 comment for CheckOrigin 2015-06-06 14:05:29 -07:00
Niels Freier 6a69a65860 WebSocket layer to be able to connect "web" client
Currently working with a mini irc js implem, the flow:

* PASS
* NICK
* USER
* JOIN
* PRIVMSG

works and the ping/pong timeout keep the communication open.
2015-05-04 09:47:26 +04:00
Edmund Huber 846543c180 try including the prefix in the PONG to a client PING, maybe fix #5 2015-02-19 02:09:25 -08:00
Jeremy Latt 84eed13f1d v1.4.4 2014-04-15 21:25:55 -07:00
Jeremy Latt 4ce4ba31c5 keep track of whether sockets are closed 2014-04-15 12:10:02 -07:00
Jeremy Latt 6c10add399 improve performance by using less goroutines
- get rid of command channel in Client
- get rid of loginTimer; use other timers instead
- move debugging code to debug.go
2014-04-15 12:10:02 -07:00
Jeremy Latt cab21782b4 fix crash in whowas circular buffer 2014-04-10 11:53:34 -07:00
Jeremy Latt 142bf3d3bb don't async buffer flushing 2014-03-31 10:00:59 -07:00
Edmund Huber b4edcea6e3 pretty up the notice a bit, and use RplNotice 2014-03-29 19:46:44 +01:00
Edmund Huber e1c235a9ea fix up MODE behavior to allow /mode <not-your-nick> and show per-channel modes, fixes #29 2014-03-29 19:36:42 +01:00
Jeremy Latt 37e15d7f62 v1.4.1 2014-03-28 14:41:24 -07:00
Jeremy Latt 2e212e3692 Merge pull request #35 from jlatt/fix-goroutine-leak
fix two bugs
2014-03-28 14:41:00 -07:00
Jeremy Latt 2d2e63a1b7 Merge pull request #33 from jlatt/async-write-flush
async all write buffer flushes
2014-03-28 14:34:37 -07:00
Jeremy Latt b0bb0faadc remove unnecessary String()s; rename parse functions 2014-03-28 14:33:31 -07:00
Jeremy Latt 21a86c3216 fix gcstats debugging command 2014-03-28 13:03:06 -07:00
Jeremy Latt f32df20a83 get rid of useless assignment 2014-03-28 12:11:01 -07:00
Jeremy Latt 63a46498ce reuse replies where possible 2014-03-27 19:04:34 -07:00
Jeremy Latt 3b12dec207 cleanup 2014-03-27 18:58:12 -07:00
Jeremy Latt 2dc69c7e3d use a Scanner instead of ReadString 2014-03-27 18:53:01 -07:00
Jeremy Latt 5f268e4847 async all write buffer flushes 2014-03-27 18:34:31 -07:00
Jeremy Latt d696f2313e stop leaking client goroutines; closes #34 2014-03-27 16:49:22 -07:00
Jeremy Latt c2e3bbe494 fix whois; closes #32 2014-03-27 16:48:13 -07:00
Edmund Huber 2272aae213 spelling and gofmt 2014-03-23 06:50:07 +01:00
Edmund Huber 34b01b115e add a type for CTCP-encoded strings, and NOTICEs for error cases 2014-03-23 06:47:21 +01:00
Edmund Huber 6267b6a40c clean up /theater so that it doesn't need a bunch of pointers and that it reuses channel-scoped-user-modes machinery 2014-03-22 22:25:24 +01:00
Jeremy Latt bffad06a26 v1.4 2014-03-21 23:25:19 -07:00
Edmund Huber d5bdc78d55 adding theater-mode, fixes #15 2014-03-20 05:05:18 +01:00
Jeremy Latt 8c44bb9ff3 ONICK command to allow operators to change users' nicks 2014-03-17 12:56:35 -07:00
Jeremy Latt abf00e22ec LIKE quoting should convert to string for SQL 2014-03-17 12:56:12 -07:00
Jeremy Latt 874f3628c9 fix another Name => string conversion 2014-03-15 19:18:57 -07:00
Jeremy Latt 7a9f1d750b explain why CheckPassword happens in client thread 2014-03-15 15:12:29 -07:00
Jeremy Latt 7db4347419 bind to listening sockets before asyncing 2014-03-13 17:19:39 -07:00
Jeremy Latt d85e6681d9 move modes code to its own file; fix SQL (un)marshalling 2014-03-13 13:22:38 -07:00
Jeremy Latt 39b7c2a915 Merge remote-tracking branch 'origin/master' into cleanup
Conflicts:
	irc/client.go
	irc/commands.go
	irc/constants.go
	irc/reply.go
	irc/server.go
	irc/types.go
2014-03-13 12:38:44 -07:00
Jeremy Latt 2006aff9f7 break up types.go
- remove old interfaces, move to relevant files
- remove Phase in favor of a boolean flag
2014-03-12 17:52:25 -07:00
Jeremy Latt 0126edc7af move capability handling code to a single file 2014-03-12 17:38:11 -07:00
Jeremy Latt e15f47c766 move to channel-based logging 2014-03-12 17:17:26 -07:00
Jeremy Latt 77d053ccac get rid of editableCommand 2014-03-12 17:10:48 -07:00
Jeremy Latt d1a299792e don't buffer channels (except signal channel) 2014-03-12 16:58:11 -07:00
Jeremy Latt 4268c4a936 don't set CapNegotiating for blind CAP REQ 2014-03-12 16:57:15 -07:00
Jeremy Latt 96a108f8da mark unicode normalization with type 2014-03-12 16:45:22 -07:00
Jeremy Latt 97886dd00f relax regex restrictions for nicknames 2014-03-08 20:03:36 -08:00
Jeremy Latt f1b610e1c1 v1.3 2014-03-08 19:24:55 -08:00
Jeremy Latt 465313c9ac Merge remote-tracking branch 'origin/master' into user-mask
Conflicts:
	irc/types.go
2014-03-08 19:23:10 -08:00
Jeremy Latt 81df7b4a5c comments and improvements for client set 2014-03-08 19:22:04 -08:00
Jeremy Latt 33df043961 fix CAP messages 2014-03-08 14:00:13 -08:00
Jeremy Latt cf76d2bd77 persist and load channel mask lists 2014-03-07 18:14:39 -08:00
Jeremy Latt 04c30c8c9b channel invite mode/list 2014-03-07 17:36:20 -08:00
Jeremy Latt cd2042dfea Merge remote-tracking branch 'origin/master' into user-mask 2014-03-07 17:10:14 -08:00
Jeremy Latt d4093e7f8b mask lists (ban, except, invite) 2014-03-07 17:09:49 -08:00
Jeremy Latt f56db354ee fix client auth for no password
All clients are authorized if the server lacks a password.
2014-03-06 20:10:02 -08:00
Jeremy Latt 5d46e7d7fa Merge remote-tracking branch 'origin/master' into user-mask
Conflicts:
	irc/reply.go
	irc/server.go
	irc/types.go
2014-03-06 17:44:37 -08:00
Jeremy Latt 4bcd42ff34 Merge pull request #8 from jlatt/cap-protocol
basic capability negotiation
2014-03-06 17:39:12 -08:00
Jeremy Latt 12ae89ca14 minor cleanup/refactoring 2014-03-06 17:07:23 -08:00
Jeremy Latt adde42a1bf update ClientLookupSet when username changes 2014-03-06 16:53:15 -08:00
Jeremy Latt 76852b0370 implement WHOWAS with a shared ringbuffer 2014-03-06 13:55:40 -08:00
Jeremy Latt 41a6027d4e move ClientLookupSet to its own file 2014-03-06 13:10:54 -08:00
Jeremy Latt b2055595e1 WHOWAS command 2014-03-06 12:14:21 -08:00
Jeremy Latt 69cdad45ac partially-working sqlite-based usermasks 2014-03-06 11:56:32 -08:00
Jeremy Latt 832a5e1e19 allow empty server password 2014-03-06 11:00:48 -08:00
Jeremy Latt d54f530d13 Merge remote-tracking branch 'origin/master' into cap-protocol
Conflicts:
	irc/server.go
2014-03-06 10:34:50 -08:00
Jeremy Latt 5c6f8ff92a improve logging 2014-03-05 23:07:55 -08:00
Jeremy Latt fa5b1e6cf7 Merge pull request #9 from jlatt/gcfg
switch from JSON to gcfg config files
2014-03-05 23:02:22 -08:00
Jeremy Latt 04bb79a610 fix invite message to clients 2014-03-05 22:55:22 -08:00
Jeremy Latt d6688a3047 allow | in nicks 2014-03-02 13:10:47 -08:00
Jeremy Latt 0874692aa8 send proper replies for cap protocol 2014-03-02 12:54:48 -08:00
Jeremy Latt 92e7a7961f notify on more signals 2014-03-02 11:51:29 -08:00
Jeremy Latt fa165a9d74 Merge remote-tracking branch 'origin/master' into gcfg
Conflicts:
	ergonomadic.go
	irc/config.go
	irc/server.go
2014-03-02 11:42:43 -08:00
Jeremy Latt 2340464265 Merge pull request #10 from jlatt/cleanup
cleanup
2014-03-02 11:37:06 -08:00
Jeremy Latt 6aa6f0aeaa notify clients when the server shuts down 2014-03-02 11:36:00 -08:00
Jeremy Latt 8f0d2b89ee v.1.2.12 2014-03-02 11:06:02 -08:00
Edmund Huber 857907320d allow underscores in nicks 2014-03-02 19:56:21 +01:00
Jeremy Latt 22c1cfdc3e chdir instead of relativizing paths in config 2014-03-01 21:51:52 -08:00
Jeremy Latt 9aa7debbfe move password handling into a single file 2014-03-01 15:18:49 -08:00
Jeremy Latt b421971b61 move db init/open functions into a single file 2014-03-01 15:09:58 -08:00
Jeremy Latt 83d021fcb7 switch to gcfg for conf file
- add some validation for config file
- add comments explaining config
- remove TLS listener since most clients can't use it anyway
- remove unused nick generation function
2014-03-01 14:38:01 -08:00
Jeremy Latt 36602c9a3c basic capability negotiation
- multi-prefix is supported as an example
2014-02-28 19:24:38 -08:00
Jeremy Latt 542744d52a fix line parsing function 2014-02-27 21:21:47 -08:00
Jeremy Latt 8c8d371ae2 don't give operator to the first person to enter an empty persistent channel 2014-02-27 20:42:12 -08:00
Jeremy Latt f17855fce9 check channel emptiness when anyone leaves 2014-02-27 18:33:44 -08:00
Jeremy Latt e33a65ec72 fix channel persistence 2014-02-26 21:52:17 -08:00
Jeremy Latt 04f0b2c48d trim trailing space from commands 2014-02-26 16:18:52 -08:00
Jeremy Latt 9aeb813cf5 restrict nicknames to proper character set 2014-02-26 13:42:29 -08:00
Jeremy Latt 6f00f89efa relax unicode parsing rules
NFKC was previously used for all text. Now, we use NFKC for all args but
the last, which may be free text. This arg is normalized with NFC to
allow for formatting characters.
2014-02-26 13:11:29 -08:00
Jeremy Latt 4df8ec12f6 allow nick changing 2014-02-26 12:24:52 -08:00
Jeremy Latt 39911a812d handle mode command with trailing empty arguments 2014-02-26 12:08:01 -08:00
Jeremy Latt 66f9b42125 avoid duplicate mode changes 2014-02-25 22:19:21 -08:00
Jeremy Latt 0d277025c1 fix channel insert statement 2014-02-25 21:59:49 -08:00
Jeremy Latt 9dc229b98f skip nick change if there is no difference 2014-02-25 20:47:59 -08:00
Jeremy Latt e9c5e4794e version 1.2.0 2014-02-25 20:24:30 -08:00
Jeremy Latt 45bb0d05e7 normalize all unicode input from the client 2014-02-25 20:22:07 -08:00
Jeremy Latt c35d5d1b8a code review
- SEM_VER instead of SEMVER
- persist user limit along with other params
2014-02-25 16:13:47 -08:00
Jeremy Latt b30e247e77 properly persist channels 2014-02-25 15:57:35 -08:00
Jeremy Latt a30bb540e9 rewrite parseLine to be much saner about utf8 2014-02-25 13:24:32 -08:00
Jeremy Latt e409bcec99 simplify new channel insert 2014-02-25 13:12:11 -08:00
Jeremy Latt 02abeeb164 persistent channels persisted to a sqlite db 2014-02-25 11:11:34 -08:00
Jeremy Latt de5538f5d5 add persistent flag for channels 2014-02-25 10:04:59 -08:00
Jeremy Latt 0531c40481 simplify semantic version constant 2014-02-25 09:42:50 -08:00
Jeremy Latt 6882edeff7 version 1.1.0 2014-02-25 09:14:50 -08:00
Jeremy Latt 1fe73aaa9e kill command 2014-02-25 09:10:16 -08:00
Jeremy Latt 4d2d18caf1 time command 2014-02-25 07:45:40 -08:00
Jeremy Latt f0305cf01a invite command 2014-02-25 07:35:52 -08:00
Jeremy Latt d6ec1e719b add a version command for sumeet 2014-02-24 22:04:11 -08:00
Jeremy Latt f0773c4e9e increase buffer for a server channel 2014-02-24 19:00:09 -08:00
Jeremy Latt cc6f764c85 minor cleanup 2014-02-24 17:45:04 -08:00
Jeremy Latt 72726a39b8 many changes
- load config sub files relative to config file dir
- load config file by name
- expect bcrypt for passwords
- -genpasswd for generating config-file-safe passwords
- block client thread while checking passwords (PASS and OPER)
2014-02-24 09:48:46 -08:00
Jeremy Latt be089e7f5f do bcrypt in the client main routine 2014-02-23 22:21:39 -08:00
Jeremy Latt 2229645a39 refactor server command loop 2014-02-23 19:13:45 -08:00
Jeremy Latt 41e6baf9d4 get rid of a race; use pointers where possible 2014-02-23 18:05:06 -08:00
Jeremy Latt 0856a9fa81 flag socket as closed when writes fail 2014-02-23 17:16:35 -08:00
Jeremy Latt 0bf968e19e move command parsing and hostname lookups into the socket routine 2014-02-23 17:04:24 -08:00
Jeremy Latt ff5656fdb4 aggressively clean up client 2014-02-23 11:08:01 -08:00
Jeremy Latt 3b56b5bf42 expose various go internals as a DEBUG command 2014-02-23 10:04:31 -08:00
Jeremy Latt f482b6b82f add all channel mask list replies 2014-02-22 15:01:11 -08:00
Jeremy Latt c5c7469cf0 good ol' fashioned refactoring 2014-02-22 13:15:31 -08:00
Jeremy Latt c7298c55b9 flesh out channel modes
- deprecate 's' mode
- add user limit
- don't leak key in mode messages to non-members
- begin refactoring Mode()
2014-02-22 13:08:25 -08:00
Jeremy Latt 21337cda7f add error responses for mode command 2014-02-22 12:15:34 -08:00
Jeremy Latt 1283bd35c7 encapsulate client replies in method 2014-02-22 11:40:32 -08:00
Jeremy Latt 39fb4bfb53 restrict new channels to channel regex 2014-02-21 17:19:02 -08:00
Jeremy Latt c8701febd0 loosen restrictions on WHO replies 2014-02-21 11:09:46 -08:00
Jeremy Latt f9bf422ba7 be more lax about whitespace when parsing commands from clients 2014-02-20 21:09:56 -08:00
Jeremy Latt c1edddb9a1 fix whois reply 2014-02-20 20:47:05 -08:00
Jeremy Latt e1c4c8e8cc don't send prefix on server-originated string coded replies 2014-02-20 20:08:32 -08:00
Jeremy Latt 0ad05abf5f omit prefix for non-numeric replies from the server 2014-02-20 19:55:17 -08:00
Jeremy Latt 23f01ff9ee handle CAP command silently in registration too 2014-02-20 19:55:03 -08:00
Jeremy Latt b6d8f62674 adjust ping message 2014-02-20 19:22:08 -08:00
Jeremy Latt 52ffc77d8d don't allow double-joining 2014-02-20 18:56:13 -08:00
Jeremy Latt 1486411db1 render a single part string for all channel members 2014-02-20 18:20:07 -08:00
Jeremy Latt 7dffa530c2 send part message from correct source 2014-02-20 16:56:05 -08:00
Jeremy Latt ad513da486 do hostname lookups in the client read thread 2014-02-20 13:03:33 -08:00
Jeremy Latt 97881b555d async hostname lookups 2014-02-20 11:51:45 -08:00
Jeremy Latt c0dc733351 don't wait for writing to complete 2014-02-20 11:16:10 -08:00
Jeremy Latt 9960089226 format replies to strings instead of using a Reply struct 2014-02-19 22:20:34 -08:00
Jeremy Latt 25ebab37d3 replies shouldn't contain references to client 2014-02-19 19:30:49 -08:00
Jeremy Latt 9c385ededd synchronize on last writes to client sockets 2014-02-19 18:46:46 -08:00
Jeremy Latt af6a8ee6f0 remove channel buffering 2014-02-19 18:22:57 -08:00
Jeremy Latt 6265b70622 get rid of goroutines on client socket 2014-02-19 18:13:35 -08:00
Jeremy Latt 95f267ea4f buffer all channels 2014-02-19 17:48:03 -08:00
Jeremy Latt f090c616b3 reduce writes 2014-02-18 20:28:35 -08:00
Jeremy Latt dcb4ac90e2 use a buffered channel for socket writing 2014-02-18 17:46:11 -08:00
Jeremy Latt 0cd6be8008 clean up nickname setting logic 2014-02-18 15:36:58 -08:00
Jeremy Latt 86d4cae141 swap refcounting friends for iteration 2014-02-18 15:28:20 -08:00
Jeremy Latt 9e471b5b5d solve quit/connection close race 2014-02-18 13:25:21 -08:00
Jeremy Latt 2bc1b952a0 do idle in the server goroutine instead of the timeout goroutine 2014-02-18 11:22:56 -08:00
Jeremy Latt 4f106e7d3e make server logging consistent with other logs 2014-02-18 10:22:40 -08:00