3
0
mirror of https://github.com/ergochat/ergo.git synced 2024-11-10 22:19:31 +01:00
Commit Graph

1059 Commits

Author SHA1 Message Date
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