Commit Graph

363 Commits

Author SHA1 Message Date
Shivaram Lingamneni b1376d5f71 Fix a concurrency error with Server.listeners
See #134; there was a `fatal error: concurrent map read and map write`
due to unsynchronized accesses to `Server.listeners`. Now, `listeners`
is only accessed by `NewServer` and `rehash`, so it doesn't need
synchronization.
2017-09-11 11:29:14 -04:00
Shivaram Lingamneni 333afe1062 make default channel modes configurable 2017-09-06 17:37:29 -04:00
Daniel Oaks f9ef97b204 modes: Add experimental, untested +R user mode to block messages from unregistered users 2017-09-06 14:38:54 +10:00
Daniel Oaks 97cfc0b629 Print warnings to heavily encourage exposing port 6697 as a TLS port 2017-07-27 23:29:08 +10:00
Euan Kemp 2b155f9b1e server: close connection on parse-ip failure
Close the client's connection if we're unable to parse their IP.

This also simplifies the check to reduce indentation by a level.

Finally, this replaces the two-var construction of the pseudo-const
messages with an inline dereference via a slice to allow constructing
them less noisily.
2017-07-25 22:19:40 -07:00
Daniel Oaks b807f492ed OPER: If client's already opered-up, ignore new OPER attempts 2017-07-23 22:50:50 +10:00
Daniel Oaks 23a26f83fe client: Show real IP and whether the target's using TLS in WHOIS 2017-06-23 05:15:10 +10:00
Daniel Oaks c9ed749538 Rename deps 2017-06-15 10:14:19 -06:00
Daniel Oaks a8fa131244 Move to new repo 2017-06-14 12:00:53 -06:00
Daniel Oaks 309ec8191e Add 'k' snomask for kills (including those coming from dlines and klines) 2017-06-11 10:01:39 -06:00
Daniel Oaks 8a6ba6f9cc LIST: Start implementing ELIST conditions 2017-06-11 07:45:58 -06:00
Daniel Oaks 34863a6320 JOIN: Disable JOIN 0 support, in line with Insp 2017-06-10 17:03:23 -06:00
Daniel Oaks 4128ff6137 server: Check for channel permissions when renaming channels 2017-06-04 20:06:11 -06:00
Daniel Oaks 0f8ab4eaec server: Add proposed RENAME command 2017-06-04 20:01:37 -06:00
Daniel Oaks 53190ef131 Send a whole lot more snomasks 2017-05-28 12:43:09 -06:00
Daniel Oaks ebb9d629d7 xline: Add ANDKILL param to kill all matching clients 2017-05-24 00:58:36 -06:00
Daniel Oaks d847d55c06 Fix wordWrap function so it doesn't drop chars, and fix client.Notice() to automagically split very long lines. 2017-05-09 21:09:44 +10:00
Daniel Oaks 9fe7c143c8 server: Remove useless comments, make idle/quit function layouts nicer 2017-05-09 20:37:48 +10:00
Daniel Oaks fd793d6adb Add very initial snomasks 2017-05-08 09:15:16 +10:00
Daniel Oaks 1afd3b8f78 server: Change localconnect msg to include username/realname 2017-05-01 19:03:04 +10:00
Daniel Oaks 51425b7764 help: Generate index of help topics 2017-04-30 13:53:49 +10:00
Daniel Oaks 2bd4d03ecc Prevent copying locks because that's silly 2017-04-30 11:12:25 +10:00
Daniel Oaks f665ebac16 channels: Help prevent issues when join/parting 2017-04-18 17:19:44 +10:00
Daniel Oaks e0035dfa04 types: Make ChannelNameMap use mutexes to fix crash 2017-04-17 21:03:02 +10:00
Daniel Oaks 0046025d60 Enable chanmode +r, fix bug with registering channels 2017-03-28 17:32:03 +10:00
Daniel Oaks 317a804644 Fix dates at top of source files 2017-03-27 22:15:02 +10:00
Daniel Oaks 451c40f170 WHO: Fix a small hang 2017-03-27 14:30:00 +10:00
Daniel Oaks 70b7606996 config: Allow enabling/disabling channel reg 2017-03-24 12:52:38 +10:00
Daniel Oaks 6842d2ead6 Merge master 2017-03-24 12:29:13 +10:00
Daniel Oaks 05074e966d modes: Continue overhauling 2017-03-24 12:23:21 +10:00
Daniel Oaks f29a5f0e70 socket: Very initial SendQ limit 2017-03-14 08:12:39 +10:00
Daniel Oaks b33b217fab Add very initial ChanServ and NickServ virtual clients
As well, add channel registration and re-applying founder privs on the first client joining the channel. I'm going to re-architect our modes system to better acocunt for this sort of change.
2017-03-11 22:01:40 +10:00
Daniel Oaks 439331cfb8 logger: Move to separate package, make *much* nicer 2017-03-10 22:02:08 +10:00
Daniel Oaks 531cf675c8 rehash: Add note about cap del/new order 2017-03-09 19:09:58 +10:00
Daniel Oaks 5c38800a02 config: Advertise STS draft, fix subsequent REHASHing 2017-03-09 19:07:35 +10:00
Daniel Oaks 25a373b7eb logger: Add notice on connection when server is logging all I/O 2017-03-08 21:57:31 +10:00
Daniel Oaks b328a4fcd3 logging: Add userinput and output, fix up lots 2017-03-06 22:11:10 +10:00
Daniel Oaks 415a8117ee logger: Better colours and output 2017-03-06 20:15:28 +10:00
Daniel Oaks 29e89b16a0 logger: Very initial working new logs 2017-03-06 15:50:23 +10:00
Daniel Oaks ba0f291e20 logger: Initial new logger 2017-03-06 13:05:33 +10:00
Daniel Oaks 3058161f62 config: Fix accounts registration/authentication 2017-03-06 09:43:52 +10:00
Daniel Oaks d1cb4b9b37 server: Bunch of nits 2017-03-06 09:27:08 +10:00
Daniel Oaks 9f6c4363b7 USERHOST: Clean up a bit, support multiple nicks 2017-03-06 09:14:15 +10:00
vegax87 a623d8ef1e Solved! RPL_USERHOST must use trailing 2017-01-23 21:20:42 +01:00
vegax87 2ff48a7088 I forgot a little typo 2017-01-23 18:51:09 +01:00
vegax87 1bb9502206 I don't understand why USERHOST is working with spaces... 2017-01-23 18:49:42 +01:00
vegax87 f3c9c2b4b5 USERHOST command 2017-01-23 17:44:35 +01:00
Daniel Oaks c8b5fb65e0 WHOIS: Use inbuilt functionality to force trailing, as suggested by @vegax87 2017-01-23 09:03:49 +10:00
Daniel Oaks ccae0cf7cd LIST: Fix list to display right member counts 2017-01-22 13:01:44 +10:00
Daniel Oaks cbe49ff3d8 Use a better line-splitting algorithm 2017-01-18 08:05:31 +10:00
Daniel Oaks 522001d4f6 Cleanup message sending 2017-01-18 07:27:06 +10:00
Daniel Oaks e741c1476b Implement message-ids draft 2017-01-18 07:26:41 +10:00
Daniel Oaks 62dc3c8f66 server: Implement TAGMSG draft command 2017-01-18 07:26:05 +10:00
Daniel Oaks f6185fa336 Get it working, using not-great and very initial splitting code 2017-01-18 07:26:05 +10:00
Daniel Oaks 92626a178d server: Start roughly hacking in new message-tags support 2017-01-18 07:26:05 +10:00
Daniel Oaks d2e18962e3 Very initial maxline work 2017-01-18 07:26:05 +10:00
Daniel Oaks a0c97542ee LUSERS: minor chan cleanup to avoid counting 2017-01-17 22:52:19 +10:00
Daniel Oaks 298f4907ac LUSERS: Minor cleanups, we don't need to worry about changelog lines for now 2017-01-17 22:49:14 +10:00
vegax87 750f0ffcb6 removed Unknown connections 2017-01-17 12:09:51 +01:00
vegax87 b4427fa782 some comments 2017-01-15 15:29:16 +01:00
vegax87 4797331962 Basic implementation of LUSERS command 2017-01-15 01:48:47 +01:00
Daniel Oaks 2de273462b WHOIS: Hack to make silly clients work 2017-01-14 13:54:57 +10:00
Daniel Oaks 2b240faa90 strings: Fix nick bugs, use UsernameCaseMapped 2017-01-14 02:32:15 +10:00
Daniel Oaks 0a3de9a912 whois: Send channels without prefix (handled by Send()) 2017-01-13 13:12:36 +10:00
vegax87 a54dcb9057 Fixed WHOIS Command 2017-01-13 02:05:58 +01:00
Daniel Oaks 91d59575ce Add initial automated connection throttling 2017-01-12 21:17:50 +10:00
Daniel Oaks 4168eaafbb Basic implementation of KLINEs 2017-01-11 22:38:16 +10:00
Daniel Oaks c39bebc696 Fix various locks around joining, kicking and quitting 2017-01-11 12:16:51 +10:00
Daniel Oaks 6f7c683247 channel: RWMutex for members access 2017-01-11 02:09:08 +10:00
Daniel Oaks efb3000717 client_lookup_set: Use RWMutex 2017-01-11 01:06:02 +10:00
Daniel Oaks f57a43f3da KICK: Allow multiple kicks to the same channel 2016-12-01 18:10:38 +10:00
Daniel Oaks a8eabe8e9c client: Fix a lot of bugs around setting NICK 2016-11-29 22:33:10 +10:00
Daniel Oaks 5eafd2656e channel: Send channel NOTICEs properly 2016-11-29 21:41:26 +10:00
Daniel Oaks 9a9820fa88 NICK: Prevent races, remove a DoS 2016-11-16 12:02:22 +10:00
Daniel Oaks 95e36b99a2 Nick locking (entirely broken, needs to be completely redesigned) 2016-11-16 03:05:33 +10:00
Daniel Oaks 6d6c1936cc Handle db better, fix bug, update db schema, rest 2016-11-06 13:47:13 +10:00
Daniel Oaks ee3853f845 restapi: Initial commit 2016-11-06 12:49:39 +10:00
Daniel Oaks c3174bb648 Various crash fixes, and little cleanups for safety 2016-11-04 21:38:47 +10:00
Daniel Oaks 8c797d0f76 Initial DLINE changes 2016-11-04 12:42:58 +10:00
Daniel Oaks 07e4728c15 roleplay: Initial commit 2016-11-01 23:56:25 +10:00
Daniel Oaks 62a0cbc1f6 server: Move maxTargets to constant, fix bug on privmsg/notice 2016-10-27 00:51:55 +10:00
Daniel Oaks f62ffe006f server: Support more RPL_ISUPPORT stuff 2016-10-24 01:01:27 +10:00
Daniel Oaks 78028135eb modes: Limit length of beI mode lists 2016-10-24 00:50:18 +10:00
Daniel Oaks a404bf83d1 Add automated client connection limiting 2016-10-23 23:05:00 +10:00
Daniel Oaks 194fa9af9f HELP: Check topics exist at startup, fix a bug 2016-10-23 18:59:13 +10:00
Daniel Oaks a7949b6cb4 irc: Assorted golint cleanups 2016-10-23 11:48:57 +10:00
Daniel Oaks 29e811a531 oper: Support custom vhosts, and chghost 2016-10-23 11:28:31 +10:00
Daniel Oaks f3459830e7 opers: Allow setting custom whois lines 2016-10-23 11:01:05 +10:00
Daniel Oaks 64bdedaee2 Add oper classes, for more finely-grained control 2016-10-23 10:47:11 +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 6cd71e1b9e Add REHASH command 2016-10-19 21:38:31 +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 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