Commit Graph

889 Commits

Author SHA1 Message Date
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
Shivaram Lingamneni 60b861e07e fix a race in regenerateMembersCache
The rationale for why regenerateMembersCache didn't need to hold the Lock()
throughout was subtly wrong. It is true that at least some attempt to
regenerate the cache would see *all* the updates. However, it was possible for
the value of `result` generated by that attempt to lose the race for the final
assignment `channel.membersCache = result`.

The fix is to serialize the attempts to regenerate the cache, without adding
any additional locking on the underlying `Channel` fields via
`Channel.stateMutex`. This ensures that the final read from `Channel.members`
is paired with the final write to `Channel.membersCache`.
2017-11-07 14:38:18 -05:00
Shivaram Lingamneni 9b74c47b74 rename some getters
Rename getters in conformance with the "Effective Go" styleguide recommendation:
https://golang.org/doc/effective_go.html#Getters
2017-11-03 02:36:55 -04:00
Shivaram Lingamneni 94cf438f51 remove channelJoinPartMutex 2017-10-30 05:21:47 -04:00
Daniel Oaks d715abf0f0 Add the INFO command 2017-10-29 07:59:56 +00:00
Daniel Oaks 384e6e1720 client: Fix crash from not having right line lengths computed 2017-10-29 05:04:32 +00:00
Daniel Oaks c6b6a25906 Merge remote-tracking branch 'slingmann/recovery' 2017-10-29 04:37:57 +00:00
Daniel Oaks c09ca729c4 Merge remote-tracking branch 'slingmann/membersmutex.2' 2017-10-29 04:36:42 +00:00
Daniel Oaks 03978c6b85 Setup 0.10.1-unreleased devel ver 2017-10-29 04:35:15 +00:00
Shivaram Lingamneni 6130e48a67 always log the panic trace 2017-10-26 05:15:55 -04:00
Shivaram Lingamneni 7b58bf76ef make error recovery configurable 2017-10-26 04:19:01 -04:00
Shivaram Lingamneni 80968d000f log panic traces via the usual logging mechanism 2017-10-25 13:22:02 -04:00
Shivaram Lingamneni 054f57e215 recover from client-caused panics 2017-10-23 19:08:32 -04:00
Shivaram Lingamneni 71e82a9ccf move a check, avoiding a crash 2017-10-23 18:01:28 -04:00
Shivaram Lingamneni 240f121e5e bug fix: SAMODE should list other users' modes 2017-10-22 23:07:21 -04:00
Daniel Oaks fbaf2d8e3a Release v0.10.0 2017-10-23 12:51:42 +10:00
Shivaram Lingamneni fa83ccd82b refactor synchronization for Channel 2017-10-22 19:50:16 -04:00
Shivaram Lingamneni c026cc5ab6 review fixes
* move constant definitions
* always give the client at least quitTimeout to respond to ping,
  even if registerTimeout or quitTimeout are longer than idleTimeout
2017-10-15 22:37:36 -04:00
Daniel Oaks 8910dc59ee Fix KLINE quit/error message and corrects comment on Client.Quit 2017-10-16 10:48:05 +10:00
Shivaram Lingamneni 7ccb485b50 add two getters 2017-10-15 19:46:25 -04:00
Shivaram Lingamneni e540fde816 refactor idle timeouts 2017-10-15 19:46:25 -04:00
Shivaram Lingamneni b86fc105cd eliminate destroyMutex 2017-10-15 19:46:25 -04:00
Shivaram Lingamneni 545e8d71db eliminate quitMutex 2017-10-15 19:46:25 -04:00
Daniel Oaks b0649cb5d3 WEBIRC: Allow protecting with fingerprint and parse `tls` flag 2017-10-16 08:47:49 +10:00
Daniel Oaks e1868f8a47 WEBIRC: Export fields so the config loads properly 2017-10-15 18:15:18 +10:00
Daniel Oaks 34987ba53a Allow WEBIRC from specified hosts 2017-10-15 16:18:14 +10:00
Daniel Oaks 16c4b4166a Change debug files from ergonomadic -> oragono 2017-10-15 12:48:10 +10:00
Daniel Oaks ef25b5b5c7 draft/sts -> sts 2017-10-15 07:58:18 +10:00
Daniel Oaks 1324c5ff83 Allow simple way of listing DLINEs and KLINEs 2017-10-15 07:53:24 +10:00
Daniel Oaks 90bb3f79d3 Merge remote-tracking branch 'slingamn/default_tweaks' 2017-10-11 07:44:36 +10:00
Daniel Oaks 2791476f16 INVITE: Fix dumb crash (thanks for pointing this out, @josephbisch!) 2017-10-10 11:17:41 +10:00
Shivaram Lingamneni d66470f1c4 review fix: rename various packages and objects 2017-10-09 17:38:06 -04:00
Shivaram Lingamneni 58faad90dd add loglines for IP limits 2017-10-09 13:24:12 -04:00
Shivaram Lingamneni ac9ac5ef19 create separate irc/connection_limiting package 2017-10-09 13:24:12 -04:00
Shivaram Lingamneni a2ac4eeef9 refactor limits and throttling 2017-10-09 13:24:12 -04:00
Daniel Oaks 695faefd93 Allow formatting codes in the MOTD 2017-10-08 20:17:49 +10:00
Daniel Oaks d4a8984e63 Initial implementation of labeled-responses for WHOIS 2017-10-08 11:05:05 +10:00
Daniel Oaks a90ee16a20 caps: Test Add, Remove and String 2017-10-08 09:26:01 +10:00
Daniel Oaks 378d55af65 Add tests to subpackages 2017-10-07 22:19:37 +10:00
Daniel Oaks 10949a434a kline: Gofmt -s 2017-10-06 12:45:32 +10:00
Daniel Oaks 9f7e395c96 logger: Fix comments 2017-10-06 12:44:11 +10:00
Daniel Oaks 68b1dc9e72 Split passwd into its' own subpackage 2017-10-06 00:03:53 +10:00
Daniel Oaks 207c1074df Split utils out to a separate subpackage 2017-10-05 23:47:43 +10:00
Daniel Oaks 4aa52956e5 Split isupport to its' own subpackage 2017-10-05 23:39:57 +10:00
Daniel Oaks eac6a69782 Fix some notes and add some comments. 2017-10-05 23:29:34 +10:00
Daniel Oaks 797b9f0996 help: Link to https oragono.io 2017-10-05 23:09:13 +10:00
Shivaram Lingamneni 456174ed53 review fixes for raw i/o notification 2017-10-05 21:06:22 +10:00
Shivaram Lingamneni aff1752d67 refactor logging to implement #142 2017-10-05 21:05:57 +10:00
Daniel Oaks f7f049973f Rip out REST API and web interface.
It's not really used and I'd rather not have it here unless I'm able to actively maintain it properly and build out the web interface.

I might re-add it later but for now I'd rather not have it unless anyone's actively using it.
2017-10-05 17:14:16 +10:00
Daniel Oaks 04d5d2fcc2 monitor: Fix target output when adding targets 2017-10-04 18:54:02 +10:00
Shivaram Lingamneni d39ee2fafa fix: RPL_MONONLINE must be server-prefixed
also, remove the self-notification check; clients are probably not
monitoring themselves, and it doesn't much matter if they are
2017-10-04 03:52:45 -04:00
Shivaram Lingamneni 84c1533b53 review fix: report unfolded nicks in `/monitor l` when possible 2017-10-04 03:16:22 -04:00
Shivaram Lingamneni 3877db2391 review fixes: rename MonitorManager methods 2017-10-04 02:59:59 -04:00
Shivaram Lingamneni 26686d7e86 refactor monitor and /oper implementations 2017-10-04 01:19:27 -04:00
Shivaram Lingamneni 23a66fa502 fix various data races, including 2 introduced by #139 2017-10-02 04:42:50 -04:00
Shivaram Lingamneni e66735619e tweak some defaults
* Lower ident timeout to 1.5 seconds, as discussed in #oragono
* Enforce connection limits at the granularity of ipv4 /32's and ipv6 /64's
* Raise the limit on number of new connections to 64 every 10 minutes
  (for the benefit of people behind large IPv4 NATs)
2017-10-02 00:01:29 -04:00
Daniel Oaks b8d47c3e4f channel: Server opers shouldn't override nooutside, reggedonly and moderated modes. if they want to do that sort of thing, they have SAMODE and all to be explicit about it 2017-10-01 15:18:52 +10:00
Daniel Oaks e3a0387cf5 channel: Fix +m (moderated) and +R (registeredonly) channel modes, add note about opers overriding +m/+R 2017-10-01 15:14:32 +10:00
Daniel Oaks b850a6c1d9 caps: Actually remove MessageIDs (accidentally left it here with the merge) 2017-09-29 17:54:17 +10:00
Daniel Oaks b4fcb45af0 Add license stuff to the top of caps/ and sno/ files I guess 2017-09-29 17:33:29 +10:00
Daniel Oaks 275449e6cc caps: Move most capability-handling types into the caps package 2017-09-29 17:25:58 +10:00
Shivaram Lingamneni ae441d22d3 refactor [dk]linemanagers
* Synchronize map accesses
* Be more aggressive about cleaning up expired lines
* CIDR dlines did not work (nil dereference)
2017-09-29 02:07:09 -04:00
Daniel Oaks cea6565b80 client: HasCapabs -> HasRoleCapabs to make it more clear exactly what this means 2017-09-29 12:11:06 +10:00
Daniel Oaks 810908db7f Add comments 2017-09-29 12:09:48 +10:00
Daniel Oaks 9bfdc4fdfb Move caps to their own package to prevent conflicts 2017-09-29 12:07:52 +10:00
Daniel Oaks 830484feb6 AWAY: Send correct mode string (thanks for pointing out this silly bug @jwheare!) 2017-09-29 11:56:18 +10:00
Daniel Oaks c39206ad13 Don't create new caps out of nowhere, dummy 2017-09-29 11:55:54 +10:00
Daniel Oaks ffe7375a68 Fix proxied DLINE/throttle/etc error messages 2017-09-29 07:18:08 +10:00
Shivaram Lingamneni a9e4ed237e deduplicate d-line and throttle code 2017-09-29 07:05:59 +10:00
Daniel Oaks 8b1f722655 server: Fix the PROXY command 2017-09-29 07:05:22 +10:00
Daniel Oaks 3f4bf38bee Merge branch 'rehash_refactor.4' of https://github.com/slingamn/oragono 2017-09-29 06:50:54 +10:00
Daniel Oaks 8ea5632269 Setup v0.9.2-unreleased devel ver 2017-09-29 06:50:09 +10:00