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

1193 Commits

Author SHA1 Message Date
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
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
Shivaram Lingamneni
b7b24c34b4 rehash cannot modify the server name 2017-09-28 02:58:09 -04:00
Shivaram Lingamneni
3b0f1ff1cc delete websocket support as per discussion on #139 2017-09-28 02:53:08 -04:00
Shivaram Lingamneni
e8b1870067 refactor the rehash implementation 2017-09-28 02:13:24 -04:00
Daniel Oaks
eae04e8c51 Release v0.9.1 2017-09-28 15:49:10 +10:00
Daniel Oaks
cd8b4877b6 accounts: Check for account logins correctly, fixes registration. Also fix a typo, thanks squigz! 2017-09-28 15:49:01 +10:00
Shivaram Lingamneni
1612c141d5 send the actual quit message to friends 2017-09-25 22:47:03 -04:00
Daniel Oaks
a78a8f1130 client: Only add friends if they actually have the caps we request. Friends() is entirely broken because of this 2017-09-26 08:36:34 +10:00
Daniel Oaks
79de443496 channel: Don't send TOPIC on entirely new channel 2017-09-26 08:01:10 +10:00
Daniel Oaks
2759d8f5d3 modes: Allow 'MODE b' (used by irssi for channel sync) (thanks @dx!) 2017-09-26 07:58:17 +10:00
Daniel Oaks
3b0d9c4db9 Send nick parameter correctly on ERR_NOSUCHNICK numerics 2017-09-26 07:52:43 +10:00
Daniel Oaks
1ccdd67a45 Setup v0.9.1-unreleased devel ver 2017-09-26 00:45:42 +10:00
Daniel Oaks
02cd620bd4 Release v0.9.0 2017-09-25 11:29:43 +10:00
Daniel Oaks
e95c75f87d monitor: Fix a crash around the MONITOR command 2017-09-25 11:29:27 +10:00
Daniel Oaks
acec0e1690 PROXY: Check DLINEs and connection limits/throttle on new proxied connections 2017-09-25 10:52:02 +10:00
Daniel Oaks
38498b752b PROXY: Make sure given IPs are valid and pass them through appropriately 2017-09-25 10:52:01 +10:00
Daniel Oaks
7d140c9e43 PROXY: Update some comments, disallow from registered clients 2017-09-25 10:52:01 +10:00
Shivaram Lingamneni
99f02ede20 restore PROXY protocol support
support for PROXY was removed in 43e28e2fef. After discussion,
it's worth keeping around in case of client compatibility issues,
and until /rehash support is more mature.
2017-09-25 10:52:01 +10:00
Daniel Oaks
8cd016e4c0 server: Fix comments 2017-09-25 10:52:01 +10:00
Shivaram Lingamneni
0f0f2d1314 refactor listener update/destroy code
Don't close and reopen listeners
2017-09-11 18:40:15 -04:00
Shivaram Lingamneni
d5528f6e56 execute rehash() in its own goroutine
This prevents a deadlock:

1. rehash() is executing on the main goroutine
2. it's trying to stop a listener goroutine
3. the listener goroutine needs to hand off a new connection to newConns
4. but the main goroutine is blocked by rehash() so it can't receive it
2017-09-11 14:03:53 -04:00
Shivaram Lingamneni
b1376d5f71 Fix a concurrency error with Server.listeners
See #134; there was a `fatal error: concurrent map read and map write`
due to unsynchronized accesses to `Server.listeners`. Now, `listeners`
is only accessed by `NewServer` and `rehash`, so it doesn't need
synchronization.
2017-09-11 11:29:14 -04:00
Daniel Oaks
c48d869f4d Allow multiple account registrations for testing 2017-09-11 09:16:13 +10:00
Shivaram Lingamneni
6063d30bc5 add a test for default channel mode parsing 2017-09-06 19:51:50 -04:00
Shivaram Lingamneni
333afe1062 make default channel modes configurable 2017-09-06 17:37:29 -04:00
Daniel Oaks
d052ca8a8d accounts: Disable reg if client's already registered an account 2017-09-06 14:38:55 +10:00
Daniel Oaks
ac91a3e484 strings: Follow latest advice on PRECIS regarding string stabilizing 2017-09-06 14:38:55 +10:00
Daniel Oaks
f9ef97b204 modes: Add experimental, untested +R user mode to block messages from unregistered users 2017-09-06 14:38:54 +10:00
Shivaram Lingamneni
9a9a85cd55 fix hostmask issue
PTR records ending in . (e.g., `google-public-dns-b.google.com.`)
were considered invalid
2017-09-05 11:43:50 -04:00
Daniel Oaks
ffabd26653 Make sure ISUPPORT outputs are sorted and tested 2017-07-30 22:42:37 +10:00
Daniel Oaks
97cfc0b629 Print warnings to heavily encourage exposing port 6697 as a TLS port 2017-07-27 23:29:08 +10:00
Daniel Oaks
0b75351e56 Merge pull request #128 from euank/return-bad-ip-err
server: close connection on parse-ip failure
2017-07-26 17:19:08 +10:00
Euan Kemp
3b47f3d470 config: don't casefold tls names
I don't think casefolding things like `:6697` ever made sense.
Since these are configured by the ircd operator, it makes sense to
assume they'll already be in a canonical form regardless.
2017-07-25 23:28:29 -07:00
Euan Kemp
449ef4cea1 strings: disallow ':' in nicks
This matches the behavior of inspircd at the very least.

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

I also simplified the code a little bit and added tests.
2017-07-25 23:28:29 -07:00
Euan Kemp
2b155f9b1e server: close connection on parse-ip failure
Close the client's connection if we're unable to parse their IP.

This also simplifies the check to reduce indentation by a level.

Finally, this replaces the two-var construction of the pseudo-const
messages with an inline dereference via a slice to allow constructing
them less noisily.
2017-07-25 22:19:40 -07:00
Daniel Oaks
b807f492ed OPER: If client's already opered-up, ignore new OPER attempts 2017-07-23 22:50:50 +10:00
Euan Kemp
2e8a98a925 irc: fix timer memleak
This is a gotcha called out in the `time.After` docs. `time.After` will
leak the underlying channel if nothing ever receives on it.
2017-07-14 17:21:53 +10:00
Daniel Oaks
c0fbc7908d sasl: Always send a 906 in response to AUTHENTICATE * 2017-06-30 11:06:10 +10:00
Daniel Oaks
7735ddfa03 Setup v0.8.3-unreleased devel ver 2017-06-30 11:04:24 +10:00
Daniel Oaks
376fa70244 Release v0.8.2 2017-06-30 01:14:50 +10:00
Daniel Oaks
b633db3c9d modes: Also allow Voice 2017-06-30 01:14:38 +10:00
Daniel Oaks
6ffc96d495 modes: Let users give other users privs in channels. Silly bug. 2017-06-30 00:59:51 +10:00
Daniel Oaks
279ac928ae Setup 0.8.2-unreleased for next release 2017-06-28 14:59:01 +10:00
Daniel Oaks
325ed3e112 Release v0.8.1 2017-06-26 15:57:38 +10:00
Daniel Oaks
23a26f83fe client: Show real IP and whether the target's using TLS in WHOIS 2017-06-23 05:15:10 +10:00
Daniel Oaks
1c0c4841a1 General comments, fix misspellings and lints 2017-06-19 14:53:16 -06:00
Daniel Oaks
e5980beb7d SANICK: Fix check for new user 2017-06-18 08:23:51 -06:00
Daniel Oaks
c9ed749538 Rename deps 2017-06-15 10:14:19 -06:00
Daniel Oaks
a8fa131244 Move to new repo 2017-06-14 12:00:53 -06:00
Daniel Oaks
5b3cea8b98 xline: Add snomasks for setting/removing xlines 2017-06-11 10:17:55 -06:00
Daniel Oaks
309ec8191e Add 'k' snomask for kills (including those coming from dlines and klines) 2017-06-11 10:01:39 -06:00
Daniel Oaks
3ee26041ff Send snomask on client quits 2017-06-11 09:42:37 -06:00
Daniel Oaks
8a6ba6f9cc LIST: Start implementing ELIST conditions 2017-06-11 07:45:58 -06:00
Daniel Oaks
55d8eb5dce Make 'nick' snomask look nicer 2017-06-10 17:07:44 -06:00
Daniel Oaks
34863a6320 JOIN: Disable JOIN 0 support, in line with Insp 2017-06-10 17:03:23 -06:00
Daniel Oaks
4128ff6137 server: Check for channel permissions when renaming channels 2017-06-04 20:06:11 -06:00
Daniel Oaks
0f8ab4eaec server: Add proposed RENAME command 2017-06-04 20:01:37 -06:00
Daniel Oaks
53190ef131 Send a whole lot more snomasks 2017-05-28 12:43:09 -06:00
Daniel Oaks
ebb9d629d7 xline: Add ANDKILL param to kill all matching clients 2017-05-24 00:58:36 -06:00
Daniel Oaks
a271481c41 Setup 0.8.1-unreleased for next release 2017-05-16 21:08:15 -06:00
Daniel Oaks
f051b43f27 Release v0.8.0 2017-05-09 22:01:14 +10:00
Daniel Oaks
ab2ae70f13 help: Add help text for snomasks 2017-05-09 21:33:03 +10:00
Daniel Oaks
d847d55c06 Fix wordWrap function so it doesn't drop chars, and fix client.Notice() to automagically split very long lines. 2017-05-09 21:09:44 +10:00
Daniel Oaks
9fe7c143c8 server: Remove useless comments, make idle/quit function layouts nicer 2017-05-09 20:37:48 +10:00
Daniel Oaks
fb63691c8b commands: Timeout unregistered clients 2017-05-09 20:36:45 +10:00
Daniel Oaks
ff82872934 reg: Rename commands to match 2017-05-08 09:28:30 +10:00
Daniel Oaks
fd793d6adb Add very initial snomasks 2017-05-08 09:15:16 +10:00
Daniel Oaks
1afd3b8f78 server: Change localconnect msg to include username/realname 2017-05-01 19:03:04 +10:00
Daniel Oaks
f5ecf70ecf logger: Flush file writes to ensure they get written out 2017-05-01 19:02:49 +10:00
Daniel Oaks
7ac96114c3 log: Allow logging to stdout 2017-05-01 18:51:37 +10:00
Daniel Oaks
51425b7764 help: Generate index of help topics 2017-04-30 13:53:49 +10:00
Daniel Oaks
5c518531be Integrate StackImpact profiling 2017-04-30 12:35:07 +10:00
Daniel Oaks
2bd4d03ecc Prevent copying locks because that's silly 2017-04-30 11:12:25 +10:00
Daniel Oaks
4254672133 socket: Fix bad mutex unlock 2017-04-19 08:50:57 +10:00
Daniel Oaks
c911ff2bcd Squash a bunch of possible races 2017-04-18 22:26:01 +10:00
Daniel Oaks
f7a4f5d956 socket: Move to a timing-out send method that reduces goroutines and ensures QUIT/ERROR are sent 2017-04-18 20:29:00 +10:00
Daniel Oaks
067f982da4 socket: Remove old comment 2017-04-18 17:19:55 +10:00
Daniel Oaks
f665ebac16 channels: Help prevent issues when join/parting 2017-04-18 17:19:44 +10:00
Daniel Oaks
4a66771c39 socket: Attempt to close sockets better 2017-04-18 16:43:24 +10:00
Daniel Oaks
1c917a19a7 client: Ensure ERROR message is parsed when quitting 2017-04-17 23:05:47 +10:00
Daniel Oaks
9cfa92ede8 modes: Avoid unnecessarily sending unknown mode numerics 2017-04-17 23:05:24 +10:00
Daniel Oaks
86957d4392 socket: Fix quitting 2017-04-17 22:35:25 +10:00
Daniel Oaks
7aaa30d399 Setup 0.7.3-unreleased for next release 2017-04-17 21:59:53 +10:00
Daniel Oaks
9264ffc857 Release v0.7.2 2017-04-17 21:16:22 +10:00
Daniel Oaks
121269661b socket: Make closing work a little better 2017-04-17 21:03:07 +10:00
Daniel Oaks
e0035dfa04 types: Make ChannelNameMap use mutexes to fix crash 2017-04-17 21:03:02 +10:00
Daniel Oaks
ff3a864aa3 accountreg: Fix crash 2017-04-17 21:00:49 +10:00
Daniel Oaks
9a94121281 JOIN: Fix a dumb bug. Really dumb bug. 2017-04-17 20:28:01 +10:00
Daniel Oaks
88b5dd5621 Fix misspelling 2017-04-16 11:36:33 +10:00
Daniel Oaks
166cddecb1 Fix nits 2017-04-16 11:35:44 +10:00
Daniel Oaks
22216d4d60 Fix lots of nits 2017-04-16 11:31:33 +10:00
Daniel Oaks
8ba0bf347d Setup 0.7.2-unreleased for next release 2017-04-16 10:59:31 +10:00
Daniel Oaks
511da5b434 Release v0.7.1 2017-03-28 17:34:52 +10:00
Daniel Oaks
0046025d60 Enable chanmode +r, fix bug with registering channels 2017-03-28 17:32:03 +10:00
Daniel Oaks
317a804644 Fix dates at top of source files 2017-03-27 22:15:02 +10:00
Daniel Oaks
99fd9af432 Setup 0.8.0-unreleased for next release 2017-03-27 22:07:11 +10:00
Daniel Oaks
1741a0fad1 Release v0.7.0 2017-03-27 14:53:50 +10:00