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