3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-12-02 08:59:24 +01:00
Commit Graph

724 Commits

Author SHA1 Message Date
Daniel Oaks
7d140c9e43 PROXY: Update some comments, disallow from registered clients 2017-09-25 10:52:01 +10:00
Shivaram Lingamneni
99f02ede20 restore PROXY protocol support
support for PROXY was removed in 43e28e2fef. After discussion,
it's worth keeping around in case of client compatibility issues,
and until /rehash support is more mature.
2017-09-25 10:52:01 +10:00
Daniel Oaks
8cd016e4c0 server: Fix comments 2017-09-25 10:52:01 +10:00
Shivaram Lingamneni
0f0f2d1314 refactor listener update/destroy code
Don't close and reopen listeners
2017-09-11 18:40:15 -04:00
Shivaram Lingamneni
d5528f6e56 execute rehash() in its own goroutine
This prevents a deadlock:

1. rehash() is executing on the main goroutine
2. it's trying to stop a listener goroutine
3. the listener goroutine needs to hand off a new connection to newConns
4. but the main goroutine is blocked by rehash() so it can't receive it
2017-09-11 14:03:53 -04:00
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
Daniel Oaks
c48d869f4d Allow multiple account registrations for testing 2017-09-11 09:16:13 +10:00
Shivaram Lingamneni
6063d30bc5 add a test for default channel mode parsing 2017-09-06 19:51:50 -04:00
Shivaram Lingamneni
333afe1062 make default channel modes configurable 2017-09-06 17:37:29 -04:00
Daniel Oaks
d052ca8a8d accounts: Disable reg if client's already registered an account 2017-09-06 14:38:55 +10:00
Daniel Oaks
ac91a3e484 strings: Follow latest advice on PRECIS regarding string stabilizing 2017-09-06 14:38:55 +10: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
Shivaram Lingamneni
9a9a85cd55 fix hostmask issue
PTR records ending in . (e.g., `google-public-dns-b.google.com.`)
were considered invalid
2017-09-05 11:43:50 -04:00
Daniel Oaks
ffabd26653 Make sure ISUPPORT outputs are sorted and tested 2017-07-30 22:42:37 +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
Daniel Oaks
0b75351e56 Merge pull request #128 from euank/return-bad-ip-err
server: close connection on parse-ip failure
2017-07-26 17:19:08 +10:00
Euan Kemp
3b47f3d470 config: don't casefold tls names
I don't think casefolding things like `:6697` ever made sense.
Since these are configured by the ircd operator, it makes sense to
assume they'll already be in a canonical form regardless.
2017-07-25 23:28:29 -07:00
Euan Kemp
449ef4cea1 strings: disallow ':' in nicks
This matches the behavior of inspircd at the very least.

Previously, the comment above that section claimed ':' should be
disallowed, but the code didn't do so.

I also simplified the code a little bit and added tests.
2017-07-25 23:28:29 -07: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
Euan Kemp
2e8a98a925 irc: fix timer memleak
This is a gotcha called out in the `time.After` docs. `time.After` will
leak the underlying channel if nothing ever receives on it.
2017-07-14 17:21:53 +10:00
Daniel Oaks
c0fbc7908d sasl: Always send a 906 in response to AUTHENTICATE * 2017-06-30 11:06:10 +10:00
Daniel Oaks
7735ddfa03 Setup v0.8.3-unreleased devel ver 2017-06-30 11:04:24 +10:00
Daniel Oaks
376fa70244 Release v0.8.2 2017-06-30 01:14:50 +10:00
Daniel Oaks
b633db3c9d modes: Also allow Voice 2017-06-30 01:14:38 +10:00
Daniel Oaks
6ffc96d495 modes: Let users give other users privs in channels. Silly bug. 2017-06-30 00:59:51 +10:00
Daniel Oaks
279ac928ae Setup 0.8.2-unreleased for next release 2017-06-28 14:59:01 +10:00
Daniel Oaks
325ed3e112 Release v0.8.1 2017-06-26 15:57:38 +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
1c0c4841a1 General comments, fix misspellings and lints 2017-06-19 14:53:16 -06:00
Daniel Oaks
e5980beb7d SANICK: Fix check for new user 2017-06-18 08:23:51 -06: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
5b3cea8b98 xline: Add snomasks for setting/removing xlines 2017-06-11 10:17:55 -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
3ee26041ff Send snomask on client quits 2017-06-11 09:42:37 -06:00
Daniel Oaks
8a6ba6f9cc LIST: Start implementing ELIST conditions 2017-06-11 07:45:58 -06:00
Daniel Oaks
55d8eb5dce Make 'nick' snomask look nicer 2017-06-10 17:07:44 -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
a271481c41 Setup 0.8.1-unreleased for next release 2017-05-16 21:08:15 -06:00
Daniel Oaks
f051b43f27 Release v0.8.0 2017-05-09 22:01:14 +10:00
Daniel Oaks
ab2ae70f13 help: Add help text for snomasks 2017-05-09 21:33:03 +10: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
fb63691c8b commands: Timeout unregistered clients 2017-05-09 20:36:45 +10:00
Daniel Oaks
ff82872934 reg: Rename commands to match 2017-05-08 09:28:30 +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
f5ecf70ecf logger: Flush file writes to ensure they get written out 2017-05-01 19:02:49 +10:00
Daniel Oaks
7ac96114c3 log: Allow logging to stdout 2017-05-01 18:51:37 +10:00
Daniel Oaks
51425b7764 help: Generate index of help topics 2017-04-30 13:53:49 +10:00
Daniel Oaks
5c518531be Integrate StackImpact profiling 2017-04-30 12:35:07 +10:00
Daniel Oaks
2bd4d03ecc Prevent copying locks because that's silly 2017-04-30 11:12:25 +10:00
Daniel Oaks
4254672133 socket: Fix bad mutex unlock 2017-04-19 08:50:57 +10:00
Daniel Oaks
c911ff2bcd Squash a bunch of possible races 2017-04-18 22:26:01 +10:00
Daniel Oaks
f7a4f5d956 socket: Move to a timing-out send method that reduces goroutines and ensures QUIT/ERROR are sent 2017-04-18 20:29:00 +10:00
Daniel Oaks
067f982da4 socket: Remove old comment 2017-04-18 17:19:55 +10:00
Daniel Oaks
f665ebac16 channels: Help prevent issues when join/parting 2017-04-18 17:19:44 +10:00
Daniel Oaks
4a66771c39 socket: Attempt to close sockets better 2017-04-18 16:43:24 +10:00
Daniel Oaks
1c917a19a7 client: Ensure ERROR message is parsed when quitting 2017-04-17 23:05:47 +10:00
Daniel Oaks
9cfa92ede8 modes: Avoid unnecessarily sending unknown mode numerics 2017-04-17 23:05:24 +10:00
Daniel Oaks
86957d4392 socket: Fix quitting 2017-04-17 22:35:25 +10:00
Daniel Oaks
7aaa30d399 Setup 0.7.3-unreleased for next release 2017-04-17 21:59:53 +10:00
Daniel Oaks
9264ffc857 Release v0.7.2 2017-04-17 21:16:22 +10:00
Daniel Oaks
121269661b socket: Make closing work a little better 2017-04-17 21:03:07 +10:00
Daniel Oaks
e0035dfa04 types: Make ChannelNameMap use mutexes to fix crash 2017-04-17 21:03:02 +10:00
Daniel Oaks
ff3a864aa3 accountreg: Fix crash 2017-04-17 21:00:49 +10:00
Daniel Oaks
9a94121281 JOIN: Fix a dumb bug. Really dumb bug. 2017-04-17 20:28:01 +10:00
Daniel Oaks
88b5dd5621 Fix misspelling 2017-04-16 11:36:33 +10:00
Daniel Oaks
166cddecb1 Fix nits 2017-04-16 11:35:44 +10:00
Daniel Oaks
22216d4d60 Fix lots of nits 2017-04-16 11:31:33 +10:00
Daniel Oaks
8ba0bf347d Setup 0.7.2-unreleased for next release 2017-04-16 10:59:31 +10:00
Daniel Oaks
511da5b434 Release v0.7.1 2017-03-28 17:34:52 +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
99fd9af432 Setup 0.8.0-unreleased for next release 2017-03-27 22:07:11 +10:00
Daniel Oaks
1741a0fad1 Release v0.7.0 2017-03-27 14:53:50 +10:00
Daniel Oaks
013635a827 channel: Give founder mode if channel already exists and founder joins 2017-03-27 14:52:34 +10:00
Daniel Oaks
451c40f170 WHO: Fix a small hang 2017-03-27 14:30:00 +10:00
Daniel Oaks
6aebd4aad9 channel: Add comments, fix a small bug with moderated mode 2017-03-27 14:29:51 +10:00
Daniel Oaks
300d02bd9c channel: Kill a race condition that locked up the server.
Specifically, if you joined a channel while someone else was trying to part. the Join method would grab the lock, the Quit method would queue to grab the lock, the Join method would unlock and then try to regrab the lock, and it would get into a situation where nobody would have the lock and everyone would be waiting for it.

This caused weird oddities with clients.
2017-03-26 22:11:09 +10:00
Daniel Oaks
cec3416eae modes: Kill a crash 2017-03-26 22:09:46 +10:00
Daniel Oaks
a8e13b062b logger: Make safer to avoid file write races 2017-03-26 21:41:52 +10:00
Daniel Oaks
861b65eb39 channels: Automagically save channel bans/excepts/invites 2017-03-26 20:37:13 +10:00
Daniel Oaks
1798572015 Add comments 2017-03-25 09:19:13 +10:00
Daniel Oaks
b4b120a83e nickserv: Point towards /HELP REG since not implemented yet 2017-03-24 21:59:13 +10:00
Daniel Oaks
91fab3ba55 socket: Better deal with chanfloods 2017-03-24 21:54:22 +10:00
Daniel Oaks
aad1070633 client: Unlock channel mutex earlier 2017-03-24 21:54:06 +10:00
Daniel Oaks
e34475d536 Merge branch 'master' into devel+chanserv 2017-03-24 21:25:37 +10:00
Daniel Oaks
f5eeca5339 channel: Fix not being able to Part 2017-03-24 21:24:51 +10:00
Daniel Oaks
194411716d channel: Automagically save topic updates on registered channels 2017-03-24 13:49:29 +10:00
Daniel Oaks
70b7606996 config: Allow enabling/disabling channel reg 2017-03-24 12:52:38 +10:00
Daniel Oaks
580385392a channel: Alert of given modes (+o/+q) on join 2017-03-24 12:38:07 +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
f5536d7945 socket: Add a simple println when SendQ exceeded, config comment update 2017-03-23 12:12:39 +10:00
Daniel Oaks
c3be2d0d46 socket: Fixup sending code so we can support more connections 2017-03-23 12:07:23 +10:00
Daniel Oaks
f29a5f0e70 socket: Very initial SendQ limit 2017-03-14 08:12:39 +10:00
Daniel Oaks
de4db1c6ef socket: Start overhaul of sockets and writing 2017-03-13 23:53:21 +10:00
Daniel Oaks
73d406ccd6 logger: Don't output control chars on log files 2017-03-13 23:52:28 +10:00
Daniel Oaks
657ed644cb modes: Start overhauling modes 2017-03-13 08:08:18 +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
7bb53af44e logger: Enable Windows support, properly lock writing to stderr 2017-03-10 12:27:05 +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
3d597a4fb3 accounts: Login to accounts properly
Avoids letting clients login to two accounts at once
2017-03-08 21:50:12 +10:00
Daniel Oaks
0c86c454c2 dline/kline: Allow year/month/day durations 2017-03-07 19:56:21 +10:00
Daniel Oaks
8834de5b32 rest: Expose DLINEs and KLINEs as xlines 2017-03-07 19:55:14 +10:00
Daniel Oaks
5de03f2169 logging: Reverse arrows for in and out, in ~= left, out ~= right 2017-03-06 22:12:27 +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
3d443339e5 logger: Initial colours 2017-03-06 16:28:38 +10:00
Daniel Oaks
29e89b16a0 logger: Very initial working new logs 2017-03-06 15:50:23 +10:00
Daniel Oaks
45dd882ec4 logger: Make new logger 2017-03-06 15:16:00 +10:00
Daniel Oaks
1ddeec9225 config: Parse logger config 2017-03-06 13:31:10 +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
542503f63e ws: Up the read/write buffer size 2017-03-06 09:26:54 +10:00
Daniel Oaks
9f6c4363b7 USERHOST: Clean up a bit, support multiple nicks 2017-03-06 09:14:15 +10:00
vegax87
b3a54cbb2c Merge branch 'master' of https://github.com/DanielOaks/oragono 2017-02-09 12:23:10 +01:00
Martin Lindhe
730d283201 server-time: convert local time to UTC before using it, fixes #94 2017-02-07 01:37:32 +01:00
vegax87
ef7c94e109 removed blank lines 2017-01-23 23:49:41 +01: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
9e65d9b87e Add SAMODE command, restricted by oper capab 2017-01-23 09:36:13 +10: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
ea0121aeff strings: Prevent crash 2017-01-22 12:44:05 +10:00
Daniel Oaks
c2fedfb177 client: Forego the ForceTrailing func, just automagically work it out based on the command name 2017-01-22 10:43:02 +10:00
Daniel Oaks
b257c5955e client: Add SendForceTrailing function, to force the last param to be a trailing 2017-01-20 23:51:36 +10:00
Daniel Oaks
db919722cb cull some old, unnecessary files 2017-01-19 16:12:10 +10:00
Daniel Oaks
4ca23f3554 Setup 0.7.0-unreleased for next release 2017-01-19 15:39:19 +10:00
Daniel Oaks
a9dfff4f30 Release v0.6.0 2017-01-19 08:12:59 +10:00
Daniel Oaks
67d65b0e3d client: Ignore empty lines, send ERROR with no prefix 2017-01-19 07:56:33 +10:00
Daniel Oaks
52127edde3 config: Better explain linelen 2017-01-18 09:46:30 +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