3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-29 23:49:25 +01:00
Commit Graph

1660 Commits

Author SHA1 Message Date
Daniel Oaks
b396d41375
Merge pull request #585 from slingamn/samode_bug
fix bugs affecting SAMODE on other users
2019-07-12 23:31:38 +10:00
Daniel Oaks
23974af345
Merge pull request #588 from slingamn/servicehelp.5
refactor /HELP for services
2019-07-12 23:30:50 +10:00
Daniel Oaks
5cff9bb636
Merge pull request #593 from slingamn/issue592
fix #592
2019-07-12 23:27:34 +10:00
Shivaram Lingamneni
bbf6c4a269 fix #572 2019-07-08 22:04:53 -04:00
Shivaram Lingamneni
cbabccc2f8 fix #592 2019-07-04 07:05:38 -04:00
Shivaram Lingamneni
6e9a728354 autoresizing of history buffers (#349) 2019-07-03 21:08:37 -04:00
Shivaram Lingamneni
1c583d775c refactor /HELP for services
1. DRY "banner" descriptions of each services
2. `/HELP NICKSERV` now refers the user to `/NICKSERV HELP`, etc.
3. Fix double translation of `textGenerator` output
2019-07-02 12:48:33 -04:00
Shivaram Lingamneni
6a3d2733d6 fix bugs affecting SAMODE on other users
1. Your own snomasks would be reported as belonging to the other user
2. Prefixes were incorrect
2019-07-02 08:45:14 -04:00
Shivaram Lingamneni
5a554ab4b0 fix #526 2019-07-01 09:21:38 -04:00
Shivaram Lingamneni
22c298d337 fix #567 2019-06-28 16:40:51 -04:00
Shivaram Lingamneni
eee0747e5e new format for listener section 2019-06-28 14:43:53 -04:00
Shivaram Lingamneni
cfe991a335 Merge remote-tracking branch 'origin/master' into listener_refactor.4 2019-06-28 09:05:07 -04:00
Daniel Oaks
a5d09c932c
Merge pull request #557 from slingamn/issue555.2
upgrade to draft/labeled-response-0.2
2019-06-28 22:18:42 +10:00
Daniel Oaks
9ce3bed4a2 Setup v1.2.0-unreleased devel ver 2019-06-28 22:17:43 +10:00
Shivaram Lingamneni
57821c865a bump version to 1.1.0 2019-06-25 19:59:04 -04:00
Shivaram Lingamneni
24c46235a3 remove m -> rn skeleton mapping again 2019-06-24 06:23:10 -04:00
Shivaram Lingamneni
b075ea6eb9 use regular Skeleton instead of SkeletonTweaked
dan: "I probably wouldn't expect those mappings to cause much
trouble at all for legitimate users at the end of the day"

shivaram: [concurs]
2019-06-24 00:16:42 -04:00
Shivaram Lingamneni
5d0b8390e9 refactor listener config loading 2019-06-19 22:33:15 -04:00
Shivaram Lingamneni
6e9a31a574 use confusables.SkeletonTweaked to fix the test 2019-06-19 05:24:09 -04:00
Shivaram Lingamneni
f17777995b add a new test 2019-06-19 04:53:15 -04:00
Shivaram Lingamneni
be4d098945 fix an edge case in skeletonization
'm' skeletonizes to 'rn' (but is exempted by the isBoring check),
but the fullwidth 'm' does not skeletonize to anything. The root cause
of this is the (still unexplained) patchiness of the skeleton mapping
for fullwidth -> standard-width Latin characters; the fix is to perform
width mapping first, before either skeletonization or isBoring.
2019-06-18 02:34:16 -04:00
Shivaram Lingamneni
8dca545264 consolidate some time-setting code 2019-06-13 07:24:38 -04:00
Shivaram Lingamneni
34f11ddb97 implement draft/labeled-response-0.2 2019-06-13 07:24:38 -04:00
Shivaram Lingamneni
60d5586099 bump to 1.1.0-rc1 2019-06-12 05:25:10 -04:00
Daniel Oaks
655f1f6f54
Merge pull request #538 from slingamn/issue537.1
fix #537
2019-06-10 01:14:32 +10:00
Daniel Oaks
dc322f8fd4
Merge pull request #546 from slingamn/issue536.3
fix #536
2019-06-10 01:13:02 +10:00
Daniel Oaks
4a4bf8612b
Merge pull request #525 from slingamn/autobrb.8
hopefully the last round of resume/brb fixes before the release
2019-06-10 01:12:40 +10:00
Shivaram Lingamneni
321c437499 fix #536 2019-05-31 14:39:21 -04:00
Shivaram Lingamneni
4350b92bef fix KILL etc. for BRB'ed clients 2019-05-30 18:49:03 -04:00
Shivaram Lingamneni
3b71be3bf0 fix #537 2019-05-30 05:40:18 -04:00
Shivaram Lingamneni
364d31e10c implement the strict modern behavior 2019-05-29 14:51:09 -04:00
Shivaram Lingamneni
521d5bf50f fix #380
Partially fixed earlier in #467
2019-05-29 14:40:56 -04:00
Shivaram Lingamneni
c0b554e98c changes from discussion 2019-05-29 07:37:57 -04:00
Shivaram Lingamneni
acc9d8c13d update to proposed draft/resume-0.5 behavior 2019-05-29 05:58:47 -04:00
Shivaram Lingamneni
71cc9a1adf review fix 2019-05-29 05:50:33 -04:00
Shivaram Lingamneni
ef796f1b11 review fix 2019-05-29 05:06:40 -04:00
Shivaram Lingamneni
1a1d3ff89f fix #410 2019-05-29 04:43:13 -04:00
Shivaram Lingamneni
b134a63dc2 simplify "client dead" logic in AddSession
now that we have client.destroyed again, we don't need to test the
"0 sessions && brb disabled" condition in both AddSession() and
destroy()
2019-05-28 04:56:56 -04:00
Shivaram Lingamneni
dee9740e68 add some testing 2019-05-27 16:10:10 -04:00
Shivaram Lingamneni
9fe65223db fix #527
Use []uint32 in bitset instead of []uint64, because it's harder to guarantee
64-bit alignment of []uint64 than I had realized:

https://go101.org/article/memory-layout.html
2019-05-27 15:51:28 -04:00
Shivaram Lingamneni
5ac7ea5b1c fix data race on exitedSnomaskSent 2019-05-27 14:33:59 -04:00
Shivaram Lingamneni
1a7169d75d fix double-destroy bug 2019-05-27 06:10:39 -04:00
Shivaram Lingamneni
74732c4aeb new proposed format for RESUMED messages 2019-05-27 06:10:39 -04:00
Shivaram Lingamneni
57684fc1e5 fix #518 2019-05-27 06:10:39 -04:00
Shivaram Lingamneni
bc2e546de9
Merge pull request #522 from slingamn/confusable_service_names.1
check restricted nicknames against skeletons, more pedantically
2019-05-24 15:16:54 -04:00
Shivaram Lingamneni
ada710b807 fix #521 2019-05-24 13:33:49 -04:00
Shivaram Lingamneni
8794740f89 be more pedantic about distinguishing skeletons and casefolds 2019-05-24 13:09:56 -04:00
Chris Smith
a6164cd9c4
Check restricted nicknames against skeletons
Fixes #519
2019-05-24 17:01:56 +01:00
Shivaram Lingamneni
34925ce4a7 fix #516 2019-05-23 21:21:36 -04:00
Shivaram Lingamneni
99de53264e fix a bug in SetQuitMessage
Quit messages aren't supposed to clobber each other under any
circumstances, but actually only the default "Connection closed"
message was non-clobbering, all others would clobber.
2019-05-23 21:20:14 -04:00
Shivaram Lingamneni
174115deb6 fix #455 2019-05-23 21:20:14 -04:00
Daniel Oaks
a27c46f983
Merge pull request #509 from slingamn/brb.5
implement draft/resume-0.4
2019-05-24 11:06:11 +10:00
Daniel Oaks
30914c564a
Merge pull request #513 from slingamn/issue511.1
fix #511
2019-05-24 10:59:53 +10:00
Shivaram Lingamneni
0835ad6af5 fix #514
Also ensure that people can remove their own persistent modes via CS AMODE
2019-05-23 18:33:41 -04:00
Shivaram Lingamneni
dcb3487566 fix #511 2019-05-23 01:32:43 -04:00
Shivaram Lingamneni
4b88a60ba6 clean up some old getters 2019-05-22 19:07:12 -04:00
Shivaram Lingamneni
05459012ef move fakelag processing back to read loop as well 2019-05-22 18:35:24 -04:00
Shivaram Lingamneni
4e13f72ca9 put an upper limit on registration messages
Fixes #505
2019-05-22 16:42:25 -04:00
Shivaram Lingamneni
0af0a0b445 fix a race condition
Setting `closed` on the socket (which can mean either "the socket is broken"
or "we should close the socket at the next opportunity") was racing against
the final write. Even if socket.closed is true, we should attempt to send
buffered message data to the socket, before we send the `finalData` and
actually call `Close`.
2019-05-22 16:42:25 -04:00
Shivaram Lingamneni
1de166bccb eliminate client.Realname() getter 2019-05-22 16:10:56 -04:00
Shivaram Lingamneni
cf153c2b09 restore RESUME SUCCESS message 2019-05-22 15:08:02 -04:00
Shivaram Lingamneni
851617a4a5 Merge remote-tracking branch 'origin/master' into brb.5 2019-05-22 03:29:18 -04:00
Daniel Oaks
678c8606b6
Merge pull request #504 from slingamn/playback.4
support znc.in/playback
2019-05-22 15:38:39 +10:00
Shivaram Lingamneni
1121e3d320 fix #404 2019-05-22 01:18:22 -04:00
Shivaram Lingamneni
3d445573cf implement draft/resume-0.4 2019-05-21 22:36:37 -04:00
Shivaram Lingamneni
a59212f8dc send nickserv timeout warnings from a full pseudo-nickmask 2019-05-21 02:48:18 -04:00
Shivaram Lingamneni
f996e6bb87 review fix 2019-05-20 20:08:06 -04:00
Daniel Oaks
a1b30290e3
Merge pull request #503 from slingamn/acquire_timeout.1
add AcquireWithTimeout for semaphores
2019-05-21 09:46:57 +10:00
Shivaram Lingamneni
b96fdb2293 support znc.in/playback 2019-05-20 19:08:57 -04:00
Shivaram Lingamneni
dbf03d5c5e add AcquireWithTimeout for semaphores 2019-05-20 16:48:13 -04:00
Shivaram Lingamneni
d5ebebaa5b add uncommitted test file 2019-05-20 12:34:30 -04:00
Shivaram Lingamneni
38b228af6a review fixes 2019-05-20 02:56:49 -04:00
Shivaram Lingamneni
f10ed05f86 fix a lock access in ResumeManager 2019-05-19 06:17:30 -04:00
Shivaram Lingamneni
8fc588375b implement user preferences system 2019-05-19 06:17:30 -04:00
Shivaram Lingamneni
25974b6881 fix #487 2019-05-19 05:12:12 -04:00
Daniel Oaks
b8c9de5379 Make strings easier to understand 2019-05-17 13:41:32 +10:00
Shivaram Lingamneni
58d089020e send command processing errors to the originating session only 2019-05-15 22:30:35 -04:00
Daniel Oaks
45fb9cade0
Merge pull request #491 from slingamn/munge
formalize token munging code
2019-05-16 12:20:14 +10:00
Daniel Oaks
9fbfee62d5 Update translations 2019-05-16 08:10:48 +10:00
Shivaram Lingamneni
7d53dd5d81 formalize token munging code 2019-05-15 16:17:13 -04:00
Shivaram Lingamneni
0346c23ae0 fix #387 2019-05-15 01:30:21 -04:00
Shivaram Lingamneni
ea70580adc fix #488 2019-05-14 21:21:57 -04:00
Shivaram Lingamneni
8f0977f59e human-readable times for NS SESSIONS 2019-05-13 02:24:58 -04:00
Shivaram Lingamneni
316d45917d pass the correct quit message when a proxied client is banned
If you were banned and the ban was only detected when you proxied
(because you were proxying from a DLINE'd IP), you'd get an incorrect
quit message: `QUIT: Bad or unauthorized PROXY command`. This propagates
the correct ban message as the quit line.
2019-05-13 02:19:00 -04:00
Shivaram Lingamneni
89a50d772c WHO should leave the client idle
Some clients seem to automatically poll for channel state
2019-05-13 00:43:29 -04:00
Shivaram Lingamneni
6ded2ea466 fix #483 2019-05-13 00:43:29 -04:00
Shivaram Lingamneni
0b55fed7c5 consolidate acceptClient into RunNewClient 2019-05-12 20:57:53 -04:00
Shivaram Lingamneni
80a594802f remove more indirections 2019-05-12 20:57:53 -04:00
Shivaram Lingamneni
353aeb0389 normalize most times in the app to UTC
Fixes #480
2019-05-12 20:57:53 -04:00
Shivaram Lingamneni
13dda00989
Merge pull request #481 from slingamn/cloaks.5
implement ip cloaking
2019-05-12 20:23:45 -04:00
Shivaram Lingamneni
18cf816396 add a manual entry for cloaks 2019-05-12 19:19:36 -04:00
Shivaram Lingamneni
11076be0ee review fixes 2019-05-12 16:26:23 -04:00
Shivaram Lingamneni
b8ca8ec852 fix #463 2019-05-12 04:50:43 -04:00
Shivaram Lingamneni
2451737f87 give cloaks their own package 2019-05-12 04:03:50 -04:00
Shivaram Lingamneni
79c730dd44 fix #429 2019-05-12 03:27:02 -04:00
Shivaram Lingamneni
f2eb2b05f2 fix #360 2019-05-12 03:25:02 -04:00
Shivaram Lingamneni
18aecfeed0 fix #362 2019-05-12 03:20:31 -04:00
Shivaram Lingamneni
c28e6d13f9 implement ip cloaking 2019-05-12 02:52:12 -04:00
Shivaram Lingamneni
5331afbdd4 Merge remote-tracking branch 'origin/master' into compat.4 2019-05-11 21:56:41 -04:00
Shivaram Lingamneni
15289bd7db review fixes 2019-05-11 21:48:36 -04:00
Shivaram Lingamneni
c193def606 fix some issues found with staticcheck.io 2019-05-10 01:44:14 -04:00
Shivaram Lingamneni
ce6a3e42df load isupport directly into the config object
eliminates Server.configurableStateMutex
2019-05-10 00:32:10 -04:00
Shivaram Lingamneni
61d666a25b load motd directly into the config object 2019-05-10 00:13:48 -04:00
Shivaram Lingamneni
fbc6c84a01 add client compatibility switches 2019-05-09 15:41:08 -04:00
Shivaram Lingamneni
278e4acf57 fix handling of nil session in reattach code 2019-05-09 05:03:21 -04:00
Shivaram Lingamneni
08ebfb1676 fix redundant JOIN line 2019-05-09 03:57:02 -04:00
Shivaram Lingamneni
60c8f286e8 fix several session destruction bugs 2019-05-08 20:55:34 -04:00
Shivaram Lingamneni
da656c07c8 add NICKSERV SESSIONS command to list sessions 2019-05-08 18:18:05 -04:00
Shivaram Lingamneni
b11bf503e7 improvements to message replay code 2019-05-08 03:02:48 -04:00
Shivaram Lingamneni
2a7d734098 disallow AUTHENTICATE when already auth'ed 2019-05-07 23:32:51 -04:00
Shivaram Lingamneni
74afeaed55 tweaks to NAMES / WHO privacy 2019-04-28 21:20:18 -04:00
Shivaram Lingamneni
51465b4a3a strip out the +a away mode 2019-04-28 15:12:48 -04:00
Shivaram Lingamneni
b9501722a9 remove all MODE +a / -a lines
as per discussion in #oragono, these are not sent by other servers
2019-04-28 14:52:15 -04:00
Shivaram Lingamneni
d6b22b925a fix #468 2019-04-28 14:38:27 -04:00
Shivaram Lingamneni
d6c970f521 names should respect invisibility 2019-04-28 02:48:19 -04:00
Shivaram Lingamneni
30f6e11698 fix #400
Also fix some issues with STATUSMSG
2019-04-28 02:48:19 -04:00
Daniel Oaks
267c51bbbf Review fix 2019-04-28 15:57:42 +10:00
Daniel Oaks
22ed6bb1f1 Detect cap-notify clients better (as recommended by cap spec) 2019-04-28 01:50:43 +10:00
Daniel Oaks
c84ef97b90 Make CAP version upgrading work as recommended by cap spec 2019-04-28 01:50:16 +10:00
Daniel Oaks
cb1de17ffc Omit SASL cap when auth is disabled 2019-04-28 01:39:02 +10:00
Daniel Oaks
ab4f186673
Merge pull request #458 from slingamn/multisocket.11
minimum viable product for bouncer
2019-04-28 01:22:36 +10:00
Shivaram Lingamneni
97e71dfef7 extract Semaphore to utils package 2019-04-15 11:15:31 -04:00
Shivaram Lingamneni
fe6a520fa4 temporarily assign the client a nick during reattach
(So that the registration burst displays correctly)
2019-04-14 22:05:53 -04:00
Shivaram Lingamneni
4af783ed9e fix #449 2019-04-14 20:48:50 -04:00
Shivaram Lingamneni
c2faeed4b5 initial implementation of bouncer functionality 2019-04-14 20:48:50 -04:00
Daniel Oaks
0b644065b7 Review and spec updates 2019-04-08 11:36:48 +10:00
Daniel Oaks
7bcba602ec Don't check for * again, we handle that properly now 2019-04-08 10:54:52 +10:00
Daniel Oaks
8f47b3a6cf Actually advertise the draft/acc capability lol 2019-04-08 10:42:17 +10:00
Daniel Oaks
4df71df454 Initial ACC update to match the new spec 2019-04-08 10:40:19 +10:00
Shivaram Lingamneni
a729772f0c fix a deadlock in CS AMODE 2019-04-07 02:12:14 -04:00
Daniel Oaks
8c7027c604
Merge pull request #446 from slingamn/chanregrefactor.6
refactor channel registration
2019-04-04 21:59:25 +10:00
Shivaram Lingamneni
42dca34c1f ensure each target sees distinct msgids 2019-03-19 05:51:33 -04:00
Shivaram Lingamneni
18a8b075ea fix #425 and #395 2019-03-19 04:40:48 -04:00
Shivaram Lingamneni
63149e754a update registeredChannels cache on rename as well 2019-03-14 03:21:45 -04:00
Shivaram Lingamneni
8a11768c6a disallow squatting a registered channel name via RENAME 2019-03-12 05:02:31 -04:00
Shivaram Lingamneni
63029e2ff5 refactor channel registration 2019-03-12 04:16:16 -04:00
Shivaram Lingamneni
26cddf2f59 fix a regression introduced by #444 2019-03-11 18:58:28 -04:00
Daniel Oaks
baa7e5af0b
Merge pull request #442 from slingamn/message_tags.5
upgrade message-tags to non-draft version
2019-03-12 08:47:08 +10:00
Daniel Oaks
64bf4a10c6
Merge pull request #444 from slingamn/issue300.1
fix #300
2019-03-12 08:41:10 +10:00
Shivaram Lingamneni
713df3a34d fix #300
Also upgrade RENAME to latest draft specification
2019-03-11 07:03:51 -04:00
Shivaram Lingamneni
2e88f82e41 remove indirections in Fakelag and NickTimer 2019-03-08 05:36:54 -05:00
Shivaram Lingamneni
85493ef031 upgrade message-tags to non-draft version 2019-03-07 04:31:08 -05:00
Shivaram Lingamneni
12e3ca9b4d work around a Tor bug
https://bugs.torproject.org/29665 describes how single-onion circuits
will close unless the client sends data every 60 seconds. To cause the
client to send these messages, have Oragono send the client a PING every
30 seconds.
2019-03-05 22:10:30 -05:00
Shivaram Lingamneni
18169cbedf disallow resume from tor to non-tor 2019-02-26 16:39:10 -05:00
Shivaram Lingamneni
5f26023d88 Merge remote-tracking branch 'origin/master' into tor.2 2019-02-26 14:46:15 -05:00
Daniel Oaks
9ec4f76c60
Merge pull request #405 from slingamn/language_loading.2
fix #384
2019-02-26 21:14:43 +10:00
Shivaram Lingamneni
d13f58acf0 review fixes 2019-02-25 22:56:08 -05:00
Shivaram Lingamneni
b0f89062fa add support for tor (#369) 2019-02-25 22:09:09 -05:00
Shivaram Lingamneni
d43ce07b66 consume resume token during VerifyToken
Independently of this, ClientLookupSet.Resume ensures that at most one
resume can succeed, so this doesn't actually change the behavior.
But ResumeManager should be a standalone example of how to implement
resume without race conditions.
2019-02-24 21:07:12 -05:00
Shivaram Lingamneni
7018e3693b optimization: check IsLoggingRawIO before attempting to log input 2019-02-24 21:07:12 -05:00
Shivaram Lingamneni
f790a910cd change the b32 alphabet for absolutely no reason 2019-02-24 21:07:12 -05:00
Shivaram Lingamneni
0d2cf21cec clean something up in ApplyProxiedIP 2019-02-24 21:07:12 -05:00
Daniel Oaks
1dbe01b09a
Merge pull request #416 from oragono/master+tlchanges
Improve translations
2019-02-24 17:57:26 +10:00
Shivaram Lingamneni
a4a143ef56 new unreleased version 2019-02-24 02:19:50 -05:00
Daniel Oaks
f396003ec9 Release v1.0.0 2019-02-24 17:02:04 +10:00
Daniel Oaks
7e6e7742f9 Band-aid NS REGISTER fix 2019-02-23 21:27:19 +10:00
Daniel Oaks
d738688b2a Simplify NS GROUP help text 2019-02-22 12:53:01 +10:00
Daniel Oaks
6d109e92a5 Fix dodgy TL strings to make them easier to translate 2019-02-22 12:37:11 +10:00
Shivaram Lingamneni
baa2c3b581 send the response line to NICK via the response buffer 2019-02-20 22:20:23 -05:00
Shivaram Lingamneni
bbd99b655a A labeled command that has 0 response lines should receive an empty batch
See discussion on #391.
2019-02-20 21:40:25 -05:00
Shivaram Lingamneni
c6b9fe0218 fix #384 2019-02-19 03:12:47 -05:00
Shivaram Lingamneni
fcef121aac bump oragono version to 1.0.0-rc1 2019-02-18 03:35:14 -05:00
Shivaram Lingamneni
29c6db593a fix missing Unescape call 2019-02-17 22:59:13 -05:00
Shivaram Lingamneni
729d4b377c revised string from discussion on ticket 2019-02-17 22:47:41 -05:00
Shivaram Lingamneni
a211ddfcdb work around znc's broken nickserv support 2019-02-17 21:29:04 -05:00
Daniel Oaks
09909e3b3d
Merge pull request #396 from slingamn/issue394
fix #394
2019-02-18 10:24:35 +10:00
Daniel Oaks
7cf8aaccf6
Merge pull request #352 from slingamn/chanreglimit.1
track channel registrations per account
2019-02-18 07:08:57 +10:00
Daniel Oaks
c604638b7c
Merge pull request #386 from slingamn/regenabled
allow SAREGISTER even when normal registration is fully disabled
2019-02-18 07:08:04 +10:00
Shivaram Lingamneni
a5b9634783 fix #394 2019-02-17 14:29:04 -05:00
Shivaram Lingamneni
344a1d7e48 fix #392 2019-02-17 06:51:48 -05:00
Shivaram Lingamneni
a5f04495a1 fix #389 2019-02-15 13:34:09 -05:00
Shivaram Lingamneni
d147708158 allow SAREGISTER even when normal registration is fully disabled 2019-02-14 20:42:02 -05:00
Shivaram Lingamneni
754934b429 unregister should boot clients if sasl is required 2019-02-14 15:42:07 -05:00
Shivaram Lingamneni
9ce1d31b90 fix HS STATUS for logged-out users 2019-02-14 15:08:45 -05:00
Shivaram Lingamneni
519d19c364 fix #364 2019-02-13 16:48:26 -05:00
Daniel Oaks
a273ef624c
Merge pull request #377 from slingamn/kickfail
fix another three bugs that were reported today
2019-02-14 07:23:56 +10:00
Shivaram Lingamneni
c019fa3ab2 fix #375 2019-02-13 15:48:15 -05:00
Shivaram Lingamneni
e2e07c0eee fix #374 2019-02-13 15:09:23 -05:00
Shivaram Lingamneni
b7ec121c19 fix some KICK issues
reported by bogdomania

1. KICK without privileges incorrectly returned ERR_CANNOTSENDTOCHAN
2. Halfops should be able to kick voice and unprivileged, but not other halfops
2019-02-13 14:38:10 -05:00
Shivaram Lingamneni
4c7a5585db fix #371 2019-02-13 13:22:00 -05:00
Daniel Oaks
78a0b322f7 Make it act as intended 2019-02-13 23:42:03 +10:00
Daniel Oaks
53ed368701 Draft implementation of draft/setname 2019-02-13 23:22:16 +10:00
Shivaram Lingamneni
7786043275 make the land-grab check case-insensitive 2019-02-13 03:19:47 -05:00
Shivaram Lingamneni
6d690b0e36 add loglines for account registration, login, and unregistration 2019-02-13 02:54:27 -05:00
Shivaram Lingamneni
f40c363170 compatibility mode for NS IDENTIFY
Standard nickserv clients like znc's expect (by default) to send just:

PRIVMSG NickServ :identify $passphrase

with the account name assumed to be the currently held nick.

Let's support this in the common case where the client doesn't have a certfp
(if it does, the first argument is the account name, not the passphrase).
2019-02-13 02:54:27 -05:00
Shivaram Lingamneni
5beb0764f2 review fix 2019-02-12 12:53:58 -05:00
Shivaram Lingamneni
e4c9351254 fix: set the existing channels unregistered 2019-02-12 02:09:31 -05:00
Shivaram Lingamneni
afe94d43c3 update resume support to draft/resume-0.3 2019-02-12 01:03:19 -05:00
Daniel Oaks
3220242fae
Merge pull request #358 from slingamn/resumefix.3
RESUME should end cap negotiation without requiring CAP LS
2019-02-10 20:59:23 +10:00
Daniel Oaks
6ca2cb26d7
Merge pull request #351 from slingamn/changelog.2
changelog and manual updates, plus some last-minute fixes
2019-02-10 20:45:45 +10:00
Shivaram Lingamneni
46083f5739 fix typo in CHATHISTORY help url
reported by bogdomania
2019-02-10 02:09:48 -05:00
Shivaram Lingamneni
35abe7940a RESUME should end cap negotiation without requiring CAP LS 2019-02-09 20:26:32 -05:00
Shivaram Lingamneni
370255bec1 review fixes 2019-02-06 15:47:20 -05:00
Daniel Oaks
fef58bb935
Merge pull request #354 from slingamn/issue353
don't send the client its own on-join MODE line
2019-02-07 06:37:10 +10:00
Shivaram Lingamneni
2910eda737 fix a nit 2019-02-06 14:28:17 -05:00
Chris Smith
34a9a37b82 Fix usernames being used in place of hostnames.
Closes #355
2019-02-06 19:14:32 +00:00
Shivaram Lingamneni
20b8ba8cae don't send the client its own on-join MODE line
Fixes #353.
2019-02-06 13:50:45 -05:00
Shivaram Lingamneni
eff2571096 limit the number of channels a client can join 2019-02-06 04:55:05 -05:00
Shivaram Lingamneni
ff7bbc4a9c track channel registrations per account
* limit the total number of registrations per account
* when an account is unregistered, unregister all its channels
2019-02-06 04:34:45 -05:00
Shivaram Lingamneni
73f36fba08 NS REGISTER needs a login throttle check as well 2019-02-05 20:23:32 -05:00
Shivaram Lingamneni
775ead700f prevent nick reservation land-grabs 2019-02-05 20:18:40 -05:00
Shivaram Lingamneni
7608e0c76c fix #121 2019-02-05 20:17:55 -05:00
Daniel Oaks
457b7eaf11 Review fixes 2019-02-06 08:45:09 +10:00
Daniel Oaks
8ecf96d447 Set uninteresting username if user's using a special nick 2019-02-06 08:33:15 +10:00
Daniel Oaks
71a33890b8
Merge pull request #344 from slingamn/history.4
add CHATHISTORY and HISTORY implementations
2019-02-05 22:16:45 +10:00
Shivaram Lingamneni
a9f9f725b1 review fixes 2019-02-05 04:29:32 -05:00
Shivaram Lingamneni
928caba922
Merge pull request #345 from slingamn/saslonly.3
add sasl-only config option
2019-02-05 04:10:35 -05:00
Shivaram Lingamneni
36612f6e2d review fixes 2019-02-05 03:05:05 -05:00
Shivaram Lingamneni
bf1d758de9 simplify username logic 2019-02-05 02:42:13 -05:00
Shivaram Lingamneni
e094c2a9c5 add tests for masking in limiter/throttler 2019-02-05 02:25:16 -05:00
Shivaram Lingamneni
eb8f0e50df fix masking bug
IP.Mask() returns a new IP value, rather than modifying its target in place
2019-02-05 02:25:16 -05:00
Shivaram Lingamneni
1c23af8767 add sasl-only config option 2019-02-05 00:51:58 -05:00
Shivaram Lingamneni
463de94610 allow history queries against PRIVMSG of other clients, if the accounts match 2019-02-04 12:46:04 -05:00
Shivaram Lingamneni
51fcedc5a1 review fix 2019-02-04 12:16:28 -05:00
Shivaram Lingamneni
f6b3008f8f add CHATHISTORY and HISTORY implementations 2019-02-04 05:33:36 -05:00
Shivaram Lingamneni
057d00b2c8
Merge pull request #341 from oragono/restrict-usernames
Restrict idents as other servers do
2019-02-03 15:24:08 -05:00
Daniel Oaks
2ce203a6d8 Setup v0.13.0-unreleased devel ver (I forgot to do this~) 2019-02-04 06:18:40 +10:00
Daniel Oaks
e8309aee79 Avoiding a crash when getting a short ident is a good thing 2019-02-04 05:02:13 +10:00
Daniel Oaks
151002e232 Up identlen default to 20 2019-02-04 05:01:46 +10:00
Daniel Oaks
7eef390756 Handle translations a little better 2019-02-04 03:54:10 +10:00
Daniel Oaks
46f8ef9ed3 Be less strict with our language file loading, and handle multiple credits better 2019-02-03 20:21:07 +10:00
Daniel Oaks
cfbb4361dc Restrict ident length similar to other servers 2019-02-03 19:24:59 +10:00
Daniel Oaks
8cd5db1194 Restrict idents as other servers do 2019-02-03 18:49:42 +10:00
Shivaram Lingamneni
c34d9e0b72 more lenient casefolding for skeletons 2019-02-03 02:45:02 -05:00
Daniel Oaks
e7399ba2b5
Merge pull request #339 from slingamn/startuplog
rename the "startup", "rehash", and "shutdown" log types to "server"
2019-02-03 12:37:24 +10:00
Daniel Oaks
1f33ad290c
Merge pull request #334 from slingamn/confusables.4
implement confusables prevention (#178)
2019-02-03 12:33:44 +10:00
Shivaram Lingamneni
cbe0f79f73 unify "startup", "rehash", and "shutdown" log categories as "server" 2019-02-02 21:13:01 -05:00
Shivaram Lingamneni
f48af3ee44 correctly support disabling caps with CAP REQ, fixes #337 2019-02-02 20:22:07 -05:00
Shivaram Lingamneni
35948d2e5b refactor some conditions for clarity 2019-01-31 17:34:06 -05:00
Shivaram Lingamneni
18c0c9da45 use our fork of mtibben/confusables for now 2019-01-30 22:02:14 -05:00
Shivaram Lingamneni
b9b2553a2f use the TR39 skeleton algorithm to prevent confusables (#178) 2019-01-30 21:48:53 -05:00
Shivaram Lingamneni
8438afcc5c fix: usernames from ident don't get a ~ 2019-01-28 23:35:00 -05:00
Shivaram Lingamneni
4bbba5b478 fix the issue for AllNickmasks as well 2019-01-28 23:12:25 -05:00
Shivaram Lingamneni
a2a9788f39 fix spurious bidi violations when casefolding the nickmask of an RTL nick 2019-01-28 18:15:35 -05:00
Shivaram Lingamneni
96737ea6d7 fix a memory leak
Even after the timer fired, we were retaining a pointer to it;
clean those up too along with the other cleanup tasks.
2019-01-23 02:06:00 -05:00
Shivaram Lingamneni
854d85a474 add schema change for [dk]line refactor 2019-01-22 17:18:38 -05:00
Shivaram Lingamneni
6bdc6af186 refactor [dk]lines, implement #144 2019-01-22 17:18:38 -05:00
Shivaram Lingamneni
f154ea9583 add an error message for schema changes 2019-01-22 01:25:32 -05:00
Daniel Oaks
85276c5e6d Merge branch 'master' of github.com:oragono/oragono 2019-01-12 22:18:08 +10:00
Daniel Oaks
63fde2d62a Re-enable MaxLine 2019-01-12 22:17:51 +10:00
Shivaram Lingamneni
0475fe882c fix ns register validation bug 2019-01-09 15:03:44 -05:00
Shivaram Lingamneni
d6494957a4 forbid logging in twice via nickserv 2019-01-05 20:59:42 -05:00
Shivaram Lingamneni
598d9a025b review fix: add maxParams for service commands 2019-01-04 11:45:59 -05:00
Shivaram Lingamneni
4caa362f18 fix histserv nick reservation 2019-01-04 10:32:08 -05:00
Shivaram Lingamneni
a52d167278 additional defensive check in EnforcementStatus 2019-01-03 23:44:01 -05:00
Shivaram Lingamneni
efc0ce3b81 fix an edge case in configurable nickname reservation 2019-01-03 23:05:47 -05:00
Shivaram Lingamneni
b80df0885f refactor services code 2019-01-03 22:34:11 -05:00
Daniel Oaks
ea970f94a0
Merge pull request #323 from slingamn/initdb.1
fix #322
2019-01-03 09:18:19 +10:00
Shivaram Lingamneni
501bb1e5c5 replay JOIN/PART/QUIT/KICK as PRIVMSG from HistServ
see https://github.com/ircv3/ircv3-specifications/issues/293
2019-01-02 17:58:04 -05:00
Shivaram Lingamneni
f20abf414f don't log an error logline for an incorrect SASL password 2019-01-02 10:29:42 -05:00
Shivaram Lingamneni
2ee89b15b3 per-user settings for nickname enforcement 2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
d0ded906d4 fix a fairly bad bug where nicks could get out of sync
during nick change, removeInternal(client) was being called even before checking
whether the new nick was in use or reserved. Reproduction steps:

1. Log in a client 'alice'
2. Log in a client 'bob'
3. bob issues /nick alice, which fails (correctly) with:
:oragono.test 433 bob alice :Nickname is already in use
4. alice issues /msg bob hi, which fails (incorrectly) with:
:oragono.test 401 alice bob :No such nick
2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
9a2117f75d preregNick doesn't need synchronization
(since it's only accessed from the client's own goroutine)
2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
f94f737b31 add support for login throttling 2019-01-02 10:15:59 -05:00
Shivaram Lingamneni
3cd3601a30 refactor join/part 2019-01-02 09:55:45 -05:00
Shivaram Lingamneni
960d51159c add ClientDetails struct for getting a snapshot of client state 2019-01-02 09:55:45 -05:00
Shivaram Lingamneni
c2b2559ab4 avoid some uses of Sprintf for loglines 2019-01-02 09:55:45 -05:00
Shivaram Lingamneni
ec4f1c189a pointless optimizations to the logger 2019-01-01 16:43:35 -05:00
Shivaram Lingamneni
6402a69fb9 use the rehash log category consistently 2018-12-31 01:44:31 -05:00
Shivaram Lingamneni
d6d3a10817 implement #322
Automatically create the datastore on `oragono run` if it doesn't exist.
See also #302.
2018-12-31 01:44:31 -05:00
Shivaram Lingamneni
7c36ec3f9d allow auto-ops (halfop and higher) to bypass channel join restrictions 2018-12-30 18:28:56 -05:00
Shivaram Lingamneni
a4b3fb0e83 changes to client idle time counting
1. Remove leaveClientIdle (unused)
2. s/leaveClientActive/leaveClientIdle/
3. make ISON a leaveClientIdle command (some clients send it periodically
   if a /msg window is left open)
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
ba2aacaf5b fix #297
add validation for isupport tokens
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
b34bab16a7 ensure that identical PRIVMSG share a time tag 2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
d5eade5494 force trailing zeroes in timestamp wire format
According to jwheare, ISO 8601 doesn't specify the behavior one way
or the other, and the server-time spec is also ambiguous, but this
is safest.
2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
ac480d782f add millisecond resolution to loglines 2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
f35a1c7212 use GenerateSecretToken for msgids 2018-12-30 18:17:24 -05:00
Shivaram Lingamneni
c95ed46949 add whois support for services 2018-12-30 18:17:24 -05:00
Daniel Oaks
cd339281e4
Merge pull request #320 from slingamn/replay.1
history replay enhancements
2018-12-29 10:15:02 +10:00
Shivaram Lingamneni
2c7c8fbaf9 history replay enhancements 2018-12-28 13:45:55 -05:00
Shivaram Lingamneni
525b2c52b1 fix hostserv help string 2018-12-28 11:07:08 -05:00
Shivaram Lingamneni
f58c873f84 fix RPL_INVITING response to match modern ircdocs 2018-12-23 13:49:03 -05:00
Shivaram Lingamneni
b6b4d365bc fix #313 2018-12-23 13:30:25 -05:00
Daniel Oaks
f912f64f21
Merge pull request #304 from slingamn/history.1
draft/resume-0.2 implementation, message history support
2018-12-15 04:37:16 +10:00
Daniel Oaks
e1aa3e0f4a
Merge pull request #305 from slingamn/passwd.1
implement NS PASSWD for password changes
2018-12-07 10:43:10 +10:00
Shivaram Lingamneni
92eca4d795 add more test cases 2018-12-06 06:46:11 -05:00
Shivaram Lingamneni
40e63dbbe8 fix #306
Fix spurious bidi rule violations in casefolding channel names
by stripping the # before starting the casefolding.
2018-12-05 22:39:01 -05:00
Shivaram Lingamneni
48f9b5e4fa implement NS PASSWD for password changes 2018-11-28 18:25:15 -05:00
Shivaram Lingamneni
c8cf0befc6 fixes to irc/socket.go
* fix a race condition: a call to `Write` does not spawn a writer goroutine
  if the trylock is held, so `BlockingWrite` must check for fresh data after
  releasing the trylock
* streamline some close/finalize logic
2018-11-28 00:24:44 -05:00
Shivaram Lingamneni
a0bf548fc5 draft/resume-0.2 implementation, message history support 2018-11-26 05:23:27 -05:00
Sean Enck
c20afab7c2
prevents default create/open of buntdb, requires user to call initdb 2018-11-19 14:10:12 -05:00
Daniel Oaks
55503961cb Release v0.12.0 2018-10-15 12:18:23 +10:00
Shivaram Lingamneni
10d4f77638 fix PROXY protocol support for IPv6
1. Handle PROXY lines with IPv6 addresses starting with ::
(similar to WEBIRC in issue #211)

2. Strip v6 mapping from v4 addresses when handling proxied IPs.
2018-09-03 00:38:32 -04:00
Shivaram Lingamneni
0e5842b33a fix #211 2018-08-28 19:28:49 -04:00
Shivaram Lingamneni
c3d197f4ff make unix domain socket permissions configurable 2018-08-28 19:28:49 -04:00
Shivaram Lingamneni
831969f1f0
Merge pull request #292 from slingamn/nilreceivers
re-add nil receiver for ModeSet.HasMode
2018-08-27 23:56:28 -04:00
Shivaram Lingamneni
c72a84e49f
Merge pull request #284 from slingamn/passhashing.1
new password hashing technique
2018-08-27 23:55:54 -04:00
Shivaram Lingamneni
86836905b3 re-add nil receiver for ModeSet.HasMode 2018-08-23 10:30:28 -04:00
Daniel Oaks
1fd63672f3
Merge pull request #290 from slingamn/rpl330.1
Fix a bug in 330 RPL_WHOISACCOUNT
2018-08-20 16:48:38 +10:00
Shivaram Lingamneni
ac08ce0f20 move ChannelOperator check into hasPrivs helper 2018-08-17 16:22:32 -04:00
Shivaram Lingamneni
a18283e2de fix a crash when SAMODE'ing in a channel you're not joined to 2018-08-17 12:44:49 -04:00
Shivaram Lingamneni
1fb9bd7208 Fix a bug in 330 RPL_WHOISACCOUNT
According to https://defs.ircdocs.horse/defs/numerics.html, 330 RPL_WHOISACCOUNT
takes 4 parameters: `<client> <nick> <authname> :<info>`. We were omitting
the second parameter (the target nick).

Also refactor locking.
2018-08-17 11:45:32 -04:00
Shivaram Lingamneni
cbc2b07d35 Merge remote-tracking branch 'origin/master' into passhashing.2 2018-08-15 13:02:05 -04:00
Shivaram Lingamneni
a2c2419084 remove stackimpact 2018-08-14 23:26:43 -04:00
Shivaram Lingamneni
6eda236eab remove allow-multiple-per-connection 2018-08-14 22:50:20 -04:00
Shivaram Lingamneni
b45b863fc4 unregister capab was renamed to accreg, but i missed this occurrence 2018-08-14 22:48:06 -04:00
Shivaram Lingamneni
a4546c418b fix miscounting in LUSERS 2018-08-08 17:56:12 -04:00
Shivaram Lingamneni
7cd5b8473c fix a bug in CS UNREGISTER 2018-08-06 10:08:58 -04:00
Shivaram Lingamneni
578ca2fdf6 add support for service command aliases 2018-08-06 10:08:58 -04:00
Shivaram Lingamneni
3c12fb6254 fix #283 (remove unnecessary log.Fatal)
The server should never crash during rehash, even if the config is invalid.
2018-08-06 10:08:58 -04:00
Shivaram Lingamneni
eb5f2c1db9 fix webirc password handling 2018-08-06 04:55:39 -04:00
Shivaram Lingamneni
dfb0a57040 refactor the password hashing / password autoupgrade system 2018-08-06 02:26:21 -04:00
Daniel Oaks
6260869068 Upgrade password hashing.
Previously, we generated and prepended a long salt before generating
password hashes. This resulted in the hash verification cutting off long
before it should do. This form of salting is also not necessary with
bcrypt as it's provided by the password hashing and verification
functions themselves, so totally rip it out.

This commit also adds the functionality for the server to automagically
upgrade users to use the new hashing system, which means better
security and more assurance that people can't bruteforce passwords.

No need to apply a database upgrade to do this, whoo! \o/
2018-08-05 22:51:15 -04:00
Shivaram Lingamneni
7154f14781 move handling of RecoverFromErrors into LoadConfig 2018-07-16 04:08:24 -04:00
Shivaram Lingamneni
1383190249 refactor rehash to rely more on server.config 2018-07-16 03:46:40 -04:00
Shivaram Lingamneni
318da22448 simplify CAS logic a bit 2018-07-02 16:33:39 -04:00
Daniel Oaks
6ba741814d
Merge pull request #275 from slingamn/confirmations.1
some tweaks to account/channel unregistration
2018-07-02 16:00:49 +10:00
Shivaram Lingamneni
1e513a717c expand bitset tests 2018-06-27 17:42:39 -04:00
Shivaram Lingamneni
a1bbe0c7f2 review fix 2018-06-25 22:55:50 -04:00
Shivaram Lingamneni
2a33c1483b atomic bitset implementations of caps.Set and modes.ModeSet 2018-06-25 18:17:47 -04:00
Shivaram Lingamneni
cdbb369a9c add benchmarks for caps.Set 2018-06-25 16:41:13 -04:00
Shivaram Lingamneni
02a4aaf583 some tweaks to account/channel unregistration 2018-06-19 04:03:40 -04:00
Shivaram Lingamneni
c3b66b5236 add a verification code to CS UNREGISTER 2018-06-05 05:23:36 -04:00
Shivaram Lingamneni
31f386f5a9 add CHANSERV UNREGISTER 2018-06-04 05:02:22 -04:00
Daniel Oaks
7bf18443a8
Merge pull request #270 from slingamn/amode.1
frontend for persistent account modes in channels
2018-05-30 21:27:28 +10:00
Daniel Oaks
45b8d9e6fa Update snomask to work with HOPM 2018-05-29 03:21:48 +10:00
Shivaram Lingamneni
495705f538 implement SAJOIN, allow channel founders to join unconditionally 2018-05-25 02:47:50 -04:00
Shivaram Lingamneni
d3815fbe61 review fixes and updates 2018-05-25 00:38:20 -04:00
Shivaram Lingamneni
7122fb180c add a test 2018-05-23 16:18:53 -04:00
Shivaram Lingamneni
1016f86f70 implement CHANSERV AMODE 2018-05-23 16:00:49 -04:00
Shivaram Lingamneni
f408d0f37b review fix: add nil receivers to other read-only ModeSet methods 2018-05-23 15:50:04 -04:00
Shivaram Lingamneni
0751f52f37 fix #268 2018-05-22 04:23:33 -04:00
Daniel Oaks
f142bf065d services: Explicitly show when commands have been disabled in the HELP output 2018-05-19 09:00:22 +10:00
Daniel Oaks
de7b679fc5
Merge pull request #247 from slingamn/vhosts.3
initial vhosts implementation, #183
2018-05-19 08:51:16 +10:00
Daniel Oaks
8227822d3e
Merge pull request #264 from slingamn/deps.1
reduce copying of output lines
2018-05-04 23:13:56 +10:00
Shivaram Lingamneni
510f4320d0 fix formatting issue 2018-05-04 04:28:01 -04:00
Shivaram Lingamneni
f6373f7a4d fix #262 2018-05-04 00:29:16 -04:00
Shivaram Lingamneni
be588076e9 optimize IsLoggingRawIO 2018-05-01 06:00:39 -04:00
Shivaram Lingamneni
3150f4e23b reduce copying of output lines 2018-05-01 05:23:40 -04:00
Shivaram Lingamneni
ebfef1e848 add Semaphore and ServerSemaphores 2018-04-26 06:03:10 -04:00
Shivaram Lingamneni
6533893863 optimized implementation of Channel.Names() 2018-04-26 03:22:52 -04:00
Shivaram Lingamneni
ef35c587fc remove redundant friends computation 2018-04-25 00:58:54 -04:00
Shivaram Lingamneni
b97ae00fe3 refactor channel join and part 2018-04-25 00:58:54 -04:00
Shivaram Lingamneni
74fa58dda0 Merge remote-tracking branch 'origin/master' into vhosts.4 2018-04-23 21:46:12 -04:00
Daniel Oaks
22ec6139bf
Merge pull request #256 from slingamn/issue255.2
modes refactor, #255
2018-04-24 11:20:07 +10:00
Shivaram Lingamneni
abbbd2c899 review fix 2018-04-23 20:05:02 -04:00
Shivaram Lingamneni
cc9941cb07 review fixes, bug fixes 2018-04-23 02:38:35 -04:00
Shivaram Lingamneni
43b90f2a85 have travis enforce gofmt, #253 2018-04-22 20:41:29 -04:00
Shivaram Lingamneni
fad2475c3f modes refactor, #255 2018-04-22 19:36:15 -04:00
Daniel Oaks
8f22d5ffd8
Merge pull request #236 from slingamn/socket_again.1
eliminate dedicated RunSocketWriter goroutine
2018-04-23 02:07:43 +10:00
Daniel Oaks
4a17eadbce
Merge pull request #246 from slingamn/db_autoupgrade.1
implement database auto-upgrades (#243)
2018-04-22 13:39:41 +10:00
Daniel Oaks
0aab3b44e9
Merge pull request #252 from slingamn/issue249
fix #249
2018-04-22 13:38:26 +10:00
moocow
744ad2ce0b Stats for LUSERS logic now seperated, fixed params in LUSERS 2018-04-20 22:48:15 +02:00
Shivaram Lingamneni
393070b7d9 fix #249 2018-04-20 14:21:07 -04:00
Shivaram Lingamneni
3db71415c9 review fixes 2018-04-20 03:59:01 -04:00
moortens
0b3abb5bde
Fixed LUSERS count not subtracting invisible users 2018-04-20 09:11:56 +02:00
Shivaram Lingamneni
5e62cc4ebc initial vhosts implementation, #183 2018-04-19 03:00:56 -04:00
Daniel Oaks
40d6cd02da Fix whois channel handling 2018-04-18 01:11:12 +10:00
Shivaram Lingamneni
69fd3ac324 implement database auto-upgrades (#243) 2018-04-16 16:35:01 -04:00
Shivaram Lingamneni
f6d2dade4e fix fakelag double-rate issue
Basically, fakelag was counting the time imposed by its own sleeps as though
the user had themselves paused for that amount of time. Therefore, if a user
sent a large number of consecutive commands, every other command would pause
for the expected throttle interval, but the subsequent command would be
processed instantly (you'd get two back-to-back commands). This resulted in
throttled users being able to send at double the expected rate.
2018-04-16 04:32:57 -04:00
Daniel Oaks
c75d2c91c5
Merge pull request #224 from slingamn/channelkeys.1
Updates to channel persistence
2018-04-16 13:35:48 +10:00
Daniel Oaks
5811226760 Only allow valid snomasks to be set 2018-04-16 13:20:37 +10:00
Shivaram Lingamneni
f54561171e try to reduce redundant goroutines 2018-04-15 19:05:22 -04:00
Daniel Oaks
22f9df388d Fix trailing hack 2018-04-16 02:28:25 +10:00
Daniel Oaks
dd6aacee61 Setup v0.12.0-unreleased devel ver 2018-04-16 02:28:06 +10:00
Daniel Oaks
31e5db9c1e Release v0.11.0 2018-04-15 19:47:20 +10:00
Shivaram Lingamneni
4778e7bcc7 fixes
* Placate `go vet`
* Reorder the `send` loop, clarify things a little
2018-04-15 01:21:32 -04:00
Shivaram Lingamneni
b2f798cf03 eliminate dedicated RunSocketWriter goroutine 2018-04-13 16:13:43 -04:00
Daniel Oaks
27c575e191 Um... name monitor subcommands handler properly 2018-04-12 10:11:45 +10:00
Daniel Oaks
df17b77266 Back to -unreleased 2018-04-11 10:12:11 +10:00
Daniel Oaks
26fcb2ebbc Release v0.11.0-beta 2018-04-11 09:37:09 +10:00
Shivaram Lingamneni
363b120cc5 fix #227 2018-04-09 12:46:20 -04:00
Daniel Oaks
9e8920394f Only display modestring on connect if it's set 2018-04-09 16:37:06 +10:00
Daniel Oaks
b1a73142b5 Expose current git commit 2018-04-09 10:08:54 +10:00
Shivaram Lingamneni
8fb5a38851 Updates to channel persistence
1. Implement persistent channel keys (#208)
2. Persist changes to registered channel modes
3. Backend changes for persisting operator status (partial #198)
2018-04-03 21:49:40 -04:00
Daniel Oaks
b6a997f68c Unify translations 2018-04-01 23:22:21 +10:00
Daniel Oaks
a95c77bb86 Remove old command line that's no longer valid 2018-04-01 23:07:49 +10:00
Daniel Oaks
3394700def Fix translation notes 2018-04-01 18:31:30 +10:00
Daniel Oaks
ab6cd599b2 Fix name of ISUPPORT token (REGCOMMANDS -> ACCCOMMANDS) 2018-04-01 12:04:25 +10:00
Daniel Oaks
5cbd4d1de2 Force help entries for every ChanServ command as well 2018-04-01 11:54:49 +10:00
Daniel Oaks
1c636aaec6 nickserv.go: Fix comment 2018-04-01 11:52:37 +10:00
Daniel Oaks
6fb4284e32 Refactor chanserv.go to match nickserv.go, unify the two 2018-04-01 11:51:34 +10:00
Daniel Oaks
9af74d367a nickserv.go: Move comment to right place 2018-04-01 11:29:13 +10:00
Daniel Oaks
7b8c4e7e91 Refactor nickserv.go to better support NS HELP and translations 2018-04-01 11:22:06 +10:00
Daniel Oaks
a39c46d470 Fix registered-only modes in docs (it's +R, not +r) 2018-04-01 09:50:22 +10:00
Daniel Oaks
46c98c2cf5 Fix CHANSERV OP 2018-04-01 09:33:58 +10:00
Daniel Oaks
a67dfe37ca Add CHANSERV OP (thanks benharri for making the request!) 2018-04-01 01:26:31 +10:00
Shivaram Lingamneni
7cfa75a59e
Merge pull request #218 from slingamn/socketwriter.1
refactor irc.Socket
2018-03-28 13:26:03 -04:00
Shivaram Lingamneni
65f2e95d2b
Merge pull request #222 from slingamn/fakelag.3
implement fakelag (#189)
2018-03-28 13:25:49 -04:00
Shivaram Lingamneni
36018174b0 default fakelag to off, add explicit cooldown config 2018-03-28 13:18:08 -04:00
Shivaram Lingamneni
1bf5e2a7c8 implement fakelag (#189) 2018-03-22 11:04:21 -04:00
Shivaram Lingamneni
a8b952da77 store maxSendQBytes in a uint32 to avoid alignment problems
The sync.atomic documentation says:

"On both ARM and x86-32, it is the caller's responsibility to arrange
for 64-bit alignment of 64-bit words accessed atomically."
2018-03-19 00:24:20 -04:00
Shivaram Lingamneni
2885b37768 partial fix for #217
See discussion on issue; this might not be a complete fix but it's
definitely better than the current behavior.
2018-03-18 00:12:50 -04:00
Shivaram Lingamneni
d1f5c59eef fix #190 2018-03-17 23:26:07 -04:00
Shivaram Lingamneni
8fd1446627 tweak: clean up Socket.Close() 2018-03-16 18:16:04 -04:00
Shivaram Lingamneni
0a432c9d99 do an actual nonblocking send instead of the len() trick 2018-03-16 12:39:11 -04:00
Shivaram Lingamneni
fa5d4be718 refactor irc.Socket 2018-03-15 19:11:29 -04:00
Shivaram Lingamneni
f5f6b95662 fix #214 2018-03-14 12:51:53 -04:00
Shivaram Lingamneni
b0f262bc0c
Merge pull request #206 from slingamn/ghost.2
nickserv: implement GHOST, GROUP, DROP, and INFO
2018-03-14 09:42:20 -04:00
Shivaram Lingamneni
b8f37e4e6c fix bad interaction between nickTimer.Stop() and accounts.Logout()
Sequence of events:

1. client.nickTimer.Stop()
2. client.server.accounts.Logout(client)
3. accounts sees that client is no longer logged in, does client.nickTimer.Touch()
4. 30 seconds later, RandomlyRename resurrects the zombie client
2018-03-14 08:43:50 -04:00
Shivaram Lingamneni
fd34c78d6b add sadrop command 2018-03-14 06:50:26 -04:00
Shivaram Lingamneni
211ed6af99 add an option to expose a pprof http endpoint 2018-03-13 16:55:30 -04:00
Shivaram Lingamneni
679f25491c can't reserve a nick that's the name of an unverified account 2018-03-11 14:40:36 -04:00
Shivaram Lingamneni
47b9fe50be can't register an account with the same name as a registered nick 2018-03-11 13:59:02 -04:00
Shivaram Lingamneni
a022befffe nickserv: implement GHOST, GROUP, DROP, and INFO 2018-03-02 17:05:47 -05:00
Shivaram Lingamneni
ef99bc48d1 fix #204
Empty channels were only cleaned up on PART, not QUIT.
2018-03-01 11:10:46 -05:00
Shivaram Lingamneni
945dec9964 ensure the nick timeout mechanism is cleaned up on client quit 2018-02-28 17:29:18 -05:00
Shivaram Lingamneni
a5897baa2b clean up redundant error handling 2018-02-28 17:29:18 -05:00
Daniel Oaks
1023f7e20e
Merge pull request #200 from slingamn/issue199.2
implement #199
2018-02-27 19:50:09 -08:00
Shivaram Lingamneni
784a3bbf52 Don't send error messages for bad channels in NAMES
"There is no error reply for bad channel names."
<https://tools.ietf.org/html/rfc2812#section-3.2.5>
2018-02-27 15:37:58 -05:00
Shivaram Lingamneni
54123ef9a2 clear failed nick assignments to avoid confusion 2018-02-27 05:22:01 -05:00
Shivaram Lingamneni
62581962a6 fix confusing ips-per-subnet name 2018-02-26 23:52:15 -05:00
Shivaram Lingamneni
be86684e96 implement #199 2018-02-26 22:48:52 -05:00
Daniel Oaks
0ea210c28c
Merge pull request #196 from slingamn/smtp.1
implement mailto callbacks
2018-02-23 07:53:36 -08:00
Daniel Oaks
04d7792ed2
Merge pull request #195 from slingamn/stopevent
clean up stopEvent (requires go v1.10)
2018-02-23 07:49:22 -08:00
Shivaram Lingamneni
878f9ca94c fix: store the uncasefolded account name correctly 2018-02-20 04:50:46 -05:00
Shivaram Lingamneni
df41f9b3b0 don't send ACC numerics in response to NickServ commands 2018-02-20 04:44:44 -05:00
Shivaram Lingamneni
89ae261739 implement mailto callbacks 2018-02-20 04:20:30 -05:00
Daniel Oaks
25f8b15232
Merge pull request #194 from slingamn/issue192.1
fix #192
2018-02-19 14:54:03 +10:00
Shivaram Lingamneni
02161184cf clean up stopEvent (requires go v1.10) 2018-02-18 23:18:32 -05:00
Shivaram Lingamneni
5b636371a9 fix SASL enable-disable logic 2018-02-18 22:15:43 -05:00
Shivaram Lingamneni
ced3a17cd3 fix #192 2018-02-18 21:52:39 -05:00
Shivaram Lingamneni
988cb22692 changes to nick reservation
* Clients are now renamed, not disconnected, on reservation timeout
* Nick reservation config is now its own subsection
2018-02-18 04:46:14 -05:00
Shivaram Lingamneni
73391f11a6 replace ACC UNREGISTER with nickserv unregister 2018-02-12 01:09:30 -05:00
Shivaram Lingamneni
af256fccd3 remove redundant oper check from DEBUG 2018-02-11 23:58:54 -05:00
Shivaram Lingamneni
b139386391 fix account tags 2018-02-11 06:31:23 -05:00
Shivaram Lingamneni
ad73d68807 refactor account registration, add nick enforcement 2018-02-11 05:30:40 -05:00
Daniel Oaks
a70cc6713c (hopefully) fix labeled-response behaviour 2018-02-11 08:57:15 +10:00
Daniel Oaks
e0fa97d344 Get labeled-reply working just fine 2018-02-06 00:21:08 +10:00
Daniel Oaks
470109461b responsebuffer: Handle sending early properly 2018-02-04 21:34:44 +10:00
Daniel Oaks
3680a3fe9a Merge 2018-02-04 21:32:48 +10:00
Daniel Oaks
3561046bec Make ERR_CANNOT_RESUME use RPL_NONE numeric 2018-02-04 21:25:08 +10:00
Daniel Oaks
ca6a162696 handlers: Make sure all functions have appropriate comments 2018-02-04 05:48:44 +10:00
Daniel Oaks
52e3dde77a Move mkcerts package under lib/ 2018-02-04 05:34:26 +10:00
Daniel Oaks
2419f69879 Move all errors into errors.go 2018-02-03 22:03:36 +10:00
Daniel Oaks
3ef4c5f799 Split NS/CS commands into separate functions 2018-02-03 21:38:28 +10:00
Daniel Oaks
2ecec25d28 Misc refactoring 2018-02-03 21:15:07 +10:00
Daniel Oaks
d854bac78e Fix broken modes tests 2018-02-03 20:28:02 +10:00
Daniel Oaks
3634d0601e Split modes into a subpackage (this is painful, but will force us to simplify and improve the API for interacting with modes) 2018-02-03 20:21:32 +10:00
Daniel Oaks
9f71d9ce12 Add right copyright to handlers.go 2018-02-03 19:48:30 +10:00
Daniel Oaks
afd6ca610c Split language into a subpackage 2018-02-03 19:46:14 +10:00
Daniel Oaks
1b14230758 ...fix info string, how did that get messed up? 2018-02-03 19:30:23 +10:00
Daniel Oaks
47d2ce351c Centralise all command handlers in handlers.go 2018-02-03 19:28:02 +10:00
Daniel Oaks
29266ce80f nickserv: Fix help display 2018-02-03 19:00:27 +10:00
Daniel Oaks
6784cf82bf nickserv: Add NS REGISTER and NS IDENTIFY 2018-02-02 23:44:52 +10:00
Daniel Oaks
872f88eb94
Merge pull request #187 from slingamn/unixdomain.1
support unix domain sockets (#184)
2018-02-02 21:36:13 +10:00
Daniel Oaks
ed1fa7704c nickserv: Point users to an actual help entry (not a great one, but very slightly better) 2018-02-02 16:37:06 +10:00
Shivaram Lingamneni
2a7f055ef3 support unix domain sockets 2018-02-01 16:19:07 -05:00
Shivaram Lingamneni
bec39ee8cb log new listener creation 2018-02-01 15:53:44 -05:00
Shivaram Lingamneni
2d6ddf7eb9 kiwi's gateway uses the flag secure instead of tls 2018-01-31 22:01:13 -05:00
Shivaram Lingamneni
b7f66fb1de allow WEBIRC to set the TLS flag over local plaintext connections 2018-01-31 21:08:49 -05:00
Shivaram Lingamneni
09a17b32be disallow WEBIRC after PROXY 2018-01-31 20:04:05 -05:00
Daniel Oaks
7b88d21e58 Possible IdleTimer lock fix 2018-01-30 14:26:29 +10:00
Daniel Oaks
8bc2c0ee67 temp *badbadbad* 2018-01-30 14:20:12 +10:00
Daniel Oaks
cabb3b219d Fix some config loading issues 2018-01-28 10:52:07 +10:00
Daniel Oaks
16a55cbba8 Add labeled-responses for MODE 2018-01-28 10:51:46 +10:00
Daniel Oaks
00099eb4ba Make batch IDs smaller 2018-01-28 00:45:16 +10:00
Daniel Oaks
07fc902b21 Labeled-Response 2018-01-28 00:40:34 +10:00
Daniel Oaks
fc9b501a77 Show translator names in INFO 2018-01-25 19:51:02 +10:00
Daniel Oaks
ddd7f0dc99 Add 'are supported by this server' to translatable strings 2018-01-23 23:31:29 +10:00
Daniel Oaks
c5a6d22192 Hopefully apply new languages better, esp. during rehash 2018-01-23 21:27:15 +10:00
Daniel Oaks
638b0c03fc Better translate HELP entries and indexes 2018-01-23 21:17:14 +10:00
Daniel Oaks
099fd7c08f Update translation backend stuff a little more 2018-01-23 17:22:39 +10:00
Daniel Oaks
1a5ff05493 Update translation framework 2018-01-23 16:50:19 +10:00
Daniel Oaks
ddec79f8d0 Update translation framework a touch more 2018-01-23 15:09:47 +10:00
Daniel Oaks
75dcff7183 Update translation framework, add badge to readme 2018-01-23 15:06:55 +10:00
Shivaram Lingamneni
4b1aa2b952 remove unused member ChannelRegistry.channels 2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
7edd9032d3 remove newConns channel 2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
728863a17c move Commands initialization to an init() 2018-01-22 13:51:25 -05:00
Shivaram Lingamneni
62fc2c0cc3 remove Server.commands 2018-01-22 13:47:57 -05:00
Daniel Oaks
b2afd55285 Don't load example translation file, make example actually list all translatable strings 2018-01-22 22:16:07 +10:00
Daniel Oaks
090095b2b9 Set default client language when creating them 2018-01-22 21:30:28 +10:00
Daniel Oaks
275227a461 Make like every client-facing string translatable 2018-01-22 21:26:01 +10:00
Daniel Oaks
0569b5cfaa RESUME: Fix a few bugs, play modestrings 'n' all 2018-01-22 20:55:20 +10:00
Daniel Oaks
f8b39cfe61 Send fake channel joins on RESUME 2018-01-22 17:58:10 +10:00
Daniel Oaks
7760634efe Actually let the takeover work somewhat more properly 2018-01-22 17:57:38 +10:00
Daniel Oaks
0d5327de8a Fix some issues, add RPL_WHOISACCOUNT 2018-01-22 17:57:38 +10:00
Daniel Oaks
ac99e82192 Fix build issues 2018-01-22 17:57:38 +10:00
Daniel Oaks
d09f085b1a Add very initial RESUME cap and command 2018-01-22 17:57:38 +10:00
Daniel Oaks
e99f22488f Make LANGUAGE support work 2018-01-22 17:30:31 +10:00
Daniel Oaks
a7fdade41d Extend to include example translation stuff 2018-01-21 16:49:17 +10:00
Daniel Oaks
ba77a95c81 Very initial beginning of languages implementation 2018-01-21 16:11:16 +10:00
Daniel Oaks
3b3c1c733a Support bot mode +B 2018-01-07 12:56:51 +10:00
Daniel Oaks
3ba8af714e Use base 36 when generating message IDs, gives us full 0-9a-z to use while preserving uniqueness nicely 2018-01-04 00:21:35 +10:00
Daniel Oaks
63bd52d471 Make message IDs much shorter (thanks @prawnsalad!) 2018-01-04 00:13:32 +10:00
Daniel Oaks
713fc59691 CAP: Correctly suspend registration for CAP REQ as per the spec 2017-12-28 13:50:42 +10:00
Daniel Oaks
7c624f9a38 Setup v0.10.4-unreleased devel ver 2017-12-28 13:41:36 +10:00
Daniel Oaks
5e9f0fd411 Release v0.10.3 2017-12-26 12:43:37 +10:00
Daniel Oaks
197ab520bf Change casemapping name and advertisement to match new spec 2017-12-26 12:30:04 +10:00
Daniel Oaks
36b26f99be
Merge pull request #173 from slingamn/timeouts.3
refactor idle timeouts again
2017-12-11 14:53:05 +10:00
Shivaram Lingamneni
d8d1705035 refactor idle timeouts again 2017-12-06 23:23:25 -05:00
Daniel Oaks
e0519a6387 caps: Rename maxline cap 2017-12-06 13:11:38 +10:00
Shivaram Lingamneni
ad1e00629b fix a race condition in idle timeouts
squigz on freenode reported an issue where bots were responding to PING
on time, but were occasionally being timed out regardless. This was a race
condition: timeout was detected as idleTime >= it.quitTimeout, but if
the client responded promptly to its PING message and sent no further messages,
but the main loop subsequently slept for longer than expected (i.e., significantly
longer than quitTimeout), this condition would be met through no fault of the
client's.

The fix here is to explicitly track the last time the ping was sent, then test
!lastSeen.After(lastPinged) instead (making use of time.Time's monotonicity).
It is sufficient that the measurement of lastPinged happens-before the PING is sent.
2017-12-02 20:30:26 -05:00
Shivaram Lingamneni
f5e7ec525d synchronize accesses to client.atime 2017-12-02 20:05:06 -05:00
Shivaram Lingamneni
b4907dadb9 fix a bug where the uncasefolded nickname wasn't being recorded
Also, rename the nickname vars to hopefully make things clearer
2017-11-22 16:56:14 -05:00
Shivaram Lingamneni
d5a5f939dd review fixes 2017-11-22 16:35:57 -05:00
Shivaram Lingamneni
52b0fb71e7 refactor ClientManager 2017-11-22 05:09:38 -05:00
Daniel Oaks
bfcada11dc KLINE: Save name of the banning oper 2017-11-19 10:32:32 +10:00
Daniel Oaks
dedb029272 DLINE: Save name of the banning oper 2017-11-19 10:27:40 +10:00
Daniel Oaks
8036df92fc WHO: Require first param, matching other servers 2017-11-19 10:10:10 +10:00
Shivaram Lingamneni
b83d454554 fix ban regexp not being recompiled on removal 2017-11-13 18:25:51 -05:00
Shivaram Lingamneni
b1e12ca1eb allow unprivileged users to list bans 2017-11-13 18:25:51 -05:00
Daniel Oaks
fc8007e6e4 Setup v0.10.3-unreleased devel ver 2017-11-13 22:52:48 +10:00
Daniel Oaks
11ea52b0f0 Release v0.10.2 2017-11-13 22:46:50 +10:00
Shivaram Lingamneni
ca8a0b7091 fix a wide-ranging assortment of crash bugs 2017-11-13 02:42:20 -05:00
Daniel Oaks
ff50a25b65
Merge pull request #161 from slingamn/chanreg.3
remove registeredChannelsMutex
2017-11-13 12:46:23 +10:00
Daniel Oaks
efb54163a5 Setup v0.10.2-unreleased devel ver 2017-11-13 12:45:10 +10:00
Daniel Oaks
f2d4698baf Release v0.10.1 2017-11-09 15:07:40 +10:00
Shivaram Lingamneni
6d619bf411 fix channel mode change privilege enforcement 2017-11-08 23:37:38 -05:00
Shivaram Lingamneni
d4cb15354f remove registeredChannelsMutex
This moves channel registration to an eventual consistency model,
where the in-memory datastructures (Channel and ChannelManager)
are the exclusive source of truth, and updates to them get persisted
asynchronously to the DB.
2017-11-08 22:24:33 -05:00