Commit Graph

1798 Commits

Author SHA1 Message Date
Shivaram Lingamneni 98a7b45d96 add mysql timeouts 2020-02-21 00:33:48 -05:00
Shivaram Lingamneni 8123e3c08f improve nick and channel length validation 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni 108ef3f424 don't double-store messages users send to themselves 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni fab0630180 time.Unix still requires normalization to UTC 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni 8031085c26 clean up nil checks relevant to always-on join 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni 282e7a4d57 don't write to mysql while holding joinPartMutex 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni 4472683d58 persist lastSignoff in the database 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni 17a89838b8 fix Client.historyStatus 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni 8f4c14c783 miscellaneous review fixes 2020-02-21 00:33:37 -05:00
Shivaram Lingamneni 82732d5b5d fix behavior of echo-message without message-tags 2020-02-20 01:51:19 -05:00
Shivaram Lingamneni 5892680f60 consolidate sending DMs to targets with sending copies to non-originating sessions 2020-02-20 01:51:19 -05:00
Shivaram Lingamneni ef161c47ed use custime.Duration for more config fields 2020-02-20 00:09:39 -05:00
Shivaram Lingamneni 7b3caed20f fix/enhancement to custime 2020-02-19 02:45:50 -05:00
Shivaram Lingamneni e59aa43225 fix StringToBool (thanks @wrmsr) 2020-02-19 00:54:42 -05:00
Shivaram Lingamneni ad32356e34 move authentication data from Client to Session 2020-02-19 00:24:21 -05:00
Shivaram Lingamneni 33dac4c0ba initial persistent history implementation 2020-02-19 00:24:12 -05:00
Shivaram Lingamneni 306ca986a8 minor fixes 2020-02-11 22:08:41 -05:00
Shivaram Lingamneni 0c2d8adeac improve maintainability and license compliance
0. Maximum parity with upstream code
1. Added Apache-required modification notices
2. Added Apache license
2020-02-11 16:13:12 -05:00
Shivaram Lingamneni c13597f807 additional LDAP support 2020-02-11 06:35:17 -05:00
Matt Ouille 5ba2527eb0 Fix compilation errors 2020-02-09 22:13:12 -05:00
Matt Ouille d4afb027e5 Add LDAP support 2020-02-09 22:13:02 -05:00
Shivaram Lingamneni b964a201c1 fix #776 2020-02-07 13:28:49 -05:00
Shivaram Lingamneni a3f008e348 mitigate #772 2020-02-06 17:56:10 -05:00
Shivaram Lingamneni 88d7e98011 add vhost snomasks 2020-02-02 02:03:08 -05:00
Shivaram Lingamneni 5426c9fdc0 disallow TAKE and REQUEST while under a FORBID 2020-02-01 23:51:29 -05:00
Shivaram Lingamneni e1f56aaee3 fix #764 2020-02-01 22:19:33 -05:00
Shivaram Lingamneni 52d85517cd actually fix #760 2020-01-29 16:27:59 -05:00
Shivaram Lingamneni fd46874ad3 fix #760 2020-01-29 15:45:50 -05:00
Shivaram Lingamneni b329cf430e
Merge pull request #744 from slingamn/hostserv_offer.1
add support for offering vhosts
2020-01-28 19:36:17 -08:00
Shivaram Lingamneni 955cdbdfef impose throttle checks on HS TAKE 2020-01-28 22:27:56 -05:00
Shivaram Lingamneni dedf78d0e9 review fixes 2020-01-28 21:23:31 -05:00
Shivaram Lingamneni 7d3c0f7884 fix #757 2020-01-27 21:10:24 -05:00
Shivaram Lingamneni 166dc60729 fix #753
Also add +C no-ctcp mode, since it's not conflicted
2020-01-26 21:07:20 -05:00
Shivaram Lingamneni 1fc9a04503 fix #754 2020-01-25 21:06:55 -05:00
Shivaram Lingamneni 6e2b2a44b8 set the time of a multiline message at BATCH - 2020-01-20 00:37:13 -05:00
Shivaram Lingamneni 5d662742b9 remove oragono.io/maxline-2 and fmsgid 2020-01-18 23:47:05 -05:00
Shivaram Lingamneni 0cebdba82c
Merge pull request #750 from slingamn/isupport_fix
fix incorrect values of UTF8MAPPING for non-PRECIS casefoldings
2020-01-14 13:11:53 -05:00
Shivaram Lingamneni d807f1252f move generateISupport to config.go 2020-01-14 01:21:47 -05:00
Shivaram Lingamneni 3ff586e821 don't read globalCasemappingSetting in generateISupport
The isupport is always a pure function of the Config object,
not of Server or any globals.
2020-01-14 01:19:48 -05:00
Shivaram Lingamneni 90b428b416 fix #745 2020-01-12 11:24:11 -05:00
Shivaram Lingamneni 2db14c91b9 review fixes 2020-01-11 22:52:30 -05:00
Shivaram Lingamneni 05cb80507f fix #741 2020-01-11 22:43:40 -05:00
Shivaram Lingamneni 11ca86028c fix #741 2020-01-09 13:49:36 -05:00
Shivaram Lingamneni 6838d19acc don't check the real IP for bans on proxy-before-TLS
In the k8s PROXY-before-TLS setting, we don't know all the IPs
of the load balancers, so we can't whitelist them, so they're at
risk of being d-lined.
2020-01-09 04:38:59 -05:00
Shivaram Lingamneni 2110f3dad7 fix #705 2020-01-08 02:20:37 -05:00
Shivaram Lingamneni eb630b7657 Revert "never set the certfp lookup key before verification"
This reverts commit a120cc2443.
2020-01-06 15:00:26 -05:00
Shivaram Lingamneni a120cc2443 never set the certfp lookup key before verification 2020-01-06 12:53:21 -05:00
Shivaram Lingamneni 1b35c6887f fix #733 2020-01-06 12:21:52 -05:00
Shivaram Lingamneni 1ae38091a3
Merge pull request #728 from slingamn/issue727_group_ghost.1
fix #727
2020-01-05 03:26:26 -05:00
Shivaram Lingamneni d67d77bee7 fix #731 2020-01-03 09:46:55 -05:00
Shivaram Lingamneni bc0712b19b fix #727 2019-12-31 21:19:28 -05:00
Shivaram Lingamneni bd822853bc fix some translation warnings 2019-12-30 14:47:22 -05:00
Shivaram Lingamneni f920d3b79f fix #530, #721 2019-12-29 12:05:01 -05:00
Shivaram Lingamneni 9de9fcf069
Merge pull request #695 from slingamn/issue693_casemappings.4
#693: configurable casemappings
2019-12-29 09:20:06 -05:00
Shivaram Lingamneni f6757f814e
Merge pull request #707 from slingamn/multiline.4
implement draft/multiline
2019-12-26 23:18:54 -05:00
Shivaram Lingamneni 47ac8e984f remove unnecessary helper 2019-12-26 22:54:00 -05:00
Shivaram Lingamneni 68e3b74b79
Merge pull request #717 from slingamn/issue716
fix #716
2019-12-25 21:11:53 -05:00
Shivaram Lingamneni 8c1db7a2f5 better UX for cancelling channel transfers 2019-12-25 15:59:38 -05:00
Shivaram Lingamneni 33c8b2177e fix a bug
In the previous commit, the client would receive a failure message but would
actually remain logged in after an authzid/authcid mismatch. This was a
correctness rather than a security issue, but now it's fixed so that the client
never logs in in the first place.
2019-12-25 15:06:26 -05:00
Shivaram Lingamneni c8ccf94936 fix #716 2019-12-25 12:44:55 -05:00
Shivaram Lingamneni 9b5d6bf746 fix #713 2019-12-24 16:20:18 -05:00
Shivaram Lingamneni 1487980fe0 Fix #710 2019-12-24 15:03:37 -05:00
Shivaram Lingamneni cd3ff3922e fill in more authzid/authcid details 2019-12-24 12:46:31 -05:00
Pavel Djundik 6831b0ffdc
Fix `authcid` variable name 2019-12-24 19:33:33 +02:00
Shivaram Lingamneni 358c4b7d81 implement draft/multiline 2019-12-24 09:29:54 -05:00
Shivaram Lingamneni 7a6925fa3f Merge remote-tracking branch 'origin/master' into issue702 2019-12-23 11:32:15 -05:00
Shivaram Lingamneni bf5a02f077
Merge pull request #692 from slingamn/issue683_channelpurge.1
chanserv enhancements and miscellaneous fixes
2019-12-22 10:41:24 -05:00
Shivaram Lingamneni 4391b1ba5a restrict ASCII mode to printable characters only 2019-12-22 09:57:49 -05:00
Shivaram Lingamneni 781bb6b051 more systematic bad-character check in permissive mode 2019-12-22 09:31:51 -05:00
Shivaram Lingamneni 2d4dbeba1c disallow some bad characters in foldPermissive 2019-12-22 09:19:28 -05:00
Shivaram Lingamneni 76a8768d05 make rehash-enable logic a little more uniform 2019-12-22 08:42:56 -05:00
Shivaram Lingamneni bd6c2117e8 fix analogous issue for history
History couldn't be enabled by rehash if autoresize-window was nonzero.
2019-12-22 08:11:24 -05:00
Shivaram Lingamneni 26ca016c66 fix the analogous issue for vhosts 2019-12-21 20:26:40 -05:00
Shivaram Lingamneni 25c4eb2996 fix #702 2019-12-21 20:19:19 -05:00
Shivaram Lingamneni 0df25e0e30 remove redundant error check 2019-12-19 18:41:46 -05:00
Shivaram Lingamneni c4e66d8b83
Merge pull request #698 from slingamn/issue616_prefs.2
fix #616
2019-12-19 18:38:18 -05:00
Shivaram Lingamneni 9bc5fb78cf
Merge pull request #700 from slingamn/issue347_snomasks
fix #347
2019-12-19 18:35:19 -05:00
Shivaram Lingamneni 01488bfe2e slightly more defensive implementation of /OPER check 2019-12-19 18:30:19 -05:00
Shivaram Lingamneni 78da024b24 improve an error message 2019-12-19 09:30:49 -05:00
Shivaram Lingamneni 0c33c3399f fix #347 2019-12-19 09:27:54 -05:00
Shivaram Lingamneni b717402b5e implement review feedback
1. If both fingerprint and hash are specified, require both instead of either
2. Implement auto-oper on connect
2019-12-19 06:33:43 -05:00
Shivaram Lingamneni 6033d9f569 tweaks for consistency 2019-12-18 20:33:58 -05:00
Shivaram Lingamneni 6740222ecb fix #616 2019-12-18 17:38:14 -05:00
Shivaram Lingamneni e143aaa83f fix #696 2019-12-18 16:04:43 -05:00
Shivaram Lingamneni f9b5224ae0 have realSkeleton use cases.Fold as well 2019-12-18 12:26:09 -05:00
Shivaram Lingamneni 91d6888b7e fix #693 2019-12-18 12:26:09 -05:00
Shivaram Lingamneni ab444a3980 remove unnecessary uses of Casefold 2019-12-18 12:21:03 -05:00
Shivaram Lingamneni f1e2bbc0e4 more permissive hostname validation
In particular, allow hostnames without periods (like on a LAN).
This shouldn't be a client compability concern since we allow
vhosts without periods.
2019-12-18 09:21:45 -05:00
Shivaram Lingamneni 4b37b5dd3e tweak to avoid a potential data race 2019-12-17 19:57:23 -05:00
Shivaram Lingamneni b468baa959 allow NS SESSIONS targeting yourself 2019-12-17 19:37:33 -05:00
Shivaram Lingamneni 3480f124cd fix #688 2019-12-17 19:37:33 -05:00
Shivaram Lingamneni c5a81d59ff fix #581 2019-12-17 13:21:26 -05:00
Shivaram Lingamneni 07865b8f63 chanserv enhancements and miscellaneous fixes
* Fix #684
* Fix #683
* Add `CHANSERV CLEAR`
* Allow mode changes from channel founders even when they aren't joined
* Operators with the chanreg capability are exempt from max-channels-per-account
* Small fixes and cleanup
2019-12-16 20:06:52 -05:00
Shivaram Lingamneni 438d1f0488 fix bad ERR_WASNOSUCHNICK responses 2019-12-05 08:31:17 -05:00
Shivaram Lingamneni bcc58be8af remove some redundant casefolds 2019-12-05 07:44:28 -05:00
Shivaram Lingamneni 08f351060e fix #682 2019-12-05 07:29:27 -05:00
Shivaram Lingamneni 0880f20f4b fix analogous invalid parameters for ERR_NOSUCHNICK 2019-12-05 06:52:07 -05:00
Shivaram Lingamneni aa8579b6e8 Assorted fixes
* Fix #679 (borked reply to `JOIN #chan,\r\n`)
* Replace invalid error parameters with *'s in various places
* Fix PART with no message sending an empty trailing parameter to the channel
* Fix some error responses not getting labeled
2019-12-02 21:13:09 -05:00
Shivaram Lingamneni fec1139dc8
Merge pull request #673 from slingamn/proxytls.18
fix #561, take two
2019-11-23 22:09:45 -05:00
Shivaram Lingamneni c6bd0aea8d
Merge pull request #672 from slingamn/issue671
fix #671
2019-11-23 22:09:37 -05:00
Shivaram Lingamneni 2d456c2106 review feedback: rename a key 2019-11-23 22:01:24 -05:00
Shivaram Lingamneni 7432ef07a7 rename some variables for clarity 2019-11-20 17:43:45 -05:00
Shivaram Lingamneni 50783d5276 fix #561, take 2 2019-11-20 17:35:35 -05:00
Shivaram Lingamneni 42db1778ac unexport rawLimiterConfig 2019-11-18 17:30:54 -05:00
Shivaram Lingamneni babd8b1da9 fix #671 2019-11-18 17:21:28 -05:00
Shivaram Lingamneni 4050b6571a fix #646
Includes a partially backwards-incompatible config change
2019-11-18 01:47:18 -05:00
Shivaram Lingamneni 149c9b45e8 bump version 2019-11-16 18:49:30 -05:00
Shivaram Lingamneni d1ed5e4cbf bump version and changelog 2019-11-16 18:14:20 -05:00
Shivaram Lingamneni ae9aecbbb0 increase max cap line length
Workaround for #661: this makes the `CAP LS 302` line from the default config
fit on a single line, as long as the server name is at most 35 characters.
2019-11-09 22:43:07 -05:00
Shivaram Lingamneni a75d26a46b refactor cap line splitting 2019-11-09 20:31:39 -05:00
Shivaram Lingamneni 507740464a bump version 2019-11-03 12:39:13 -05:00
Shivaram Lingamneni b6cdb51f00 fix #652 2019-10-23 11:32:32 -04:00
Shivaram Lingamneni baa71ba2be remove unnecessary special-casing for ASCII 2019-10-23 02:18:45 -04:00
Shivaram Lingamneni 82c5041225 fix #649 2019-10-16 18:10:32 -04:00
Shivaram Lingamneni 332f0d8d91 fix #644 2019-10-16 12:51:40 -04:00
Shivaram Lingamneni cddc51d6cf
Merge pull request #640 from slingamn/issue639_emptystruct.1
make semaphores O(1) in storage
2019-10-12 18:13:07 -07:00
Shivaram Lingamneni 24c103da5a fix #642 2019-10-05 23:50:11 -04:00
Shivaram Lingamneni 40df122c73 remove unused getters 2019-10-04 02:08:49 -04:00
Shivaram Lingamneni 45476079a1 make semaphores O(1) in storage 2019-10-03 00:03:00 -04:00
Shivaram Lingamneni 06b1e7b603 fix #632 2019-09-24 21:47:37 -04:00
Shivaram Lingamneni c1acf3ea43 move ISUPPORT regeneration to the end of config loading 2019-09-22 17:26:50 -04:00
Shivaram Lingamneni 1ce716582a make CHANTYPES a constant 2019-09-22 15:48:17 -04:00
Shivaram Lingamneni 584f2261a8 fix #625 2019-09-22 15:45:06 -04:00
Shivaram Lingamneni 3cb9234bb5 review fixes 2019-09-08 06:28:48 -04:00
Shivaram Lingamneni f6eb8fa5a1 fix #197 2019-09-01 02:36:56 -04:00
Shivaram Lingamneni 8a33d68cf1 add cap-notify for bouncer 2019-08-31 22:42:51 -04:00
Shivaram Lingamneni ca17e58b3a fix #595 2019-08-31 21:29:23 -04:00
Shivaram Lingamneni 7ed27d4a42 Fix #448, #594 2019-08-27 03:58:04 -04:00
Shivaram Lingamneni 65834c0729 optimize Sessions() at the expense of AddSession() 2019-08-02 00:20:31 -04:00
Daniel Oaks 8bca8a1752
Merge pull request #606 from slingamn/issue331.1
fix #331
2019-07-31 06:37:23 +10:00
Daniel Oaks 7a56c4e0ad
Merge pull request #591 from slingamn/history_autoresize.4
autoresizing of history buffers (#349)
2019-07-31 06:36:35 +10:00
Shivaram Lingamneni 938ce7e435 fix #331 2019-07-14 16:17:37 -04:00
Daniel Oaks 07bb38ecdf
Merge pull request #601 from slingamn/spurious_message
fix spurious error message
2019-07-14 12:57:09 +10:00
Shivaram Lingamneni ce651b4a90 remove obsolete consistency check
tor-listeners.listeners was checked against listen,
but listen is obsolete now, so config load would fail
on a config that used the new style `listeners` instead of
`listen` --- unless tor-listeners.listeners was empty, which
it should be under the new style, but there's no need to enforce
that
2019-07-12 15:19:43 -04:00
Shivaram Lingamneni 80aa77372b fix spurious error message 2019-07-12 11:49:01 -04:00
Shivaram Lingamneni ecf945038f
Merge pull request #565 from slingamn/listener_refactor.3
refactor listener config loading
2019-07-12 11:08:04 -04:00
Shivaram Lingamneni 86ad402203 review feedback 2019-07-12 09:58:14 -04:00
Daniel Oaks dc87ae7ef1
Merge pull request #583 from slingamn/stats.4
fix #526
2019-07-12 23:39:50 +10:00
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