Shivaram Lingamneni
ed841ee62a
configurable idle timeouts
...
Fixes #2292
2025-11-09 21:11:04 -05:00
Shivaram Lingamneni
8798676ae9
update metadata corresponding to spec edits ( #2282 )
...
build / build (push) Has been cancelled
ghcr / Build (push) Has been cancelled
* spec update: metadata keys are lowercase
* add batch parameter to metadata batches
* fix: connecting clients receive METADATA, not RPL_KEYVALUE
* spec update: send RPL_METADATASUBS in a metadata-subs batch
* move some helpers
* bump irctest to forked hash
This is https://github.com/progval/irctest/pull/314 but I don't want to
couple the merges
* fix: empty value is valid
* fix: deleting a nonexistent key gets a FAIL
2025-06-22 18:59:42 -04:00
Shivaram Lingamneni
73e51333ad
implement metadata before-connect ( #2281 )
...
* metadata spec update: disallow colon entirely
* refactor key validation
* implement metadata before-connect
* play the metadata in reg burst to all clients with the cap
* bump irctest
* remove all case normalization for keys
From spec discussion, we will most likely either require keys to be lowercase,
or else treat them as case-opaque, similar to message tag keys.
2025-06-22 13:57:46 -04:00
thatcher-gaming
4dcbc48159
metadata-2 ( #2273 )
...
build / build (push) Has been cancelled
ghcr / Build (push) Has been cancelled
Initial implementation of draft/metadata-2
2025-06-15 04:06:45 -04:00
Shivaram Lingamneni
253972a9d2
clean up constant redefinition
2025-05-23 00:18:36 -04:00
Shivaram Lingamneni
5bab190d33
fix #2244 ( #2247 )
...
build / build (push) Has been cancelled
ghcr / Build (push) Has been cancelled
Fix #2244
Produce an explicit error on receiving the UTF-8 BOM
2025-04-21 22:37:53 -04:00
Shivaram Lingamneni
a6df370bd9
block HTTP DoS attacks ( #2239 )
...
build / build (push) Has been cancelled
ghcr / Build (push) Has been cancelled
Block uses of the JS Fetch API to send HTTP message bodies that are also valid
IRC. The constraint on such messages is that they must begin with a valid HTTP
verb; we can detect this and reject them immediately.
2025-03-30 21:33:06 -04:00
Shivaram Lingamneni
7256d83ff0
implement command aliases ( #2236 )
...
See #2229
2025-03-30 21:32:37 -04:00
Shivaram Lingamneni
19dbe10c99
fix panic on KILL ( #2234 )
...
build / build (push) Waiting to run
ghcr / Build (push) Waiting to run
Introduced by #2218 , reported by knolle
2025-03-26 21:21:05 -04:00
Shivaram Lingamneni
ec3417be79
fix #2218
...
The client's own QUIT line should respect server-time
2025-02-16 01:33:24 -05:00
Shivaram Lingamneni
7b71839615
fix buggy persistence of push timestamps
...
getPushSubscriptions() could have a stale view of the latest subscription
renewal and successful push times. We don't want to rebuild on every renewal
or every push, so add a boolean refresh argument that controls rebuilding.
2025-01-16 00:06:11 -05:00
Shivaram Lingamneni
2163d96348
add connID to another logline
2025-01-15 22:12:40 -05:00
Shivaram Lingamneni
36e5451aa5
implement draft/webpush ( #2205 )
2025-01-13 21:47:21 -05:00
Shivaram Lingamneni
efd3764337
add unique connection ID to debug logs ( #2207 )
...
build / build (push) Has been cancelled
ghcr / Build (push) Has been cancelled
Fixes #2206
2025-01-11 23:07:04 -05:00
Shivaram Lingamneni
7586520032
implement draft/extended-isupport ( #2184 )
2024-09-27 00:40:56 -04:00
Shivaram Lingamneni
7726160ec7
add a config switch to accept hostnames from WEBIRC
...
See #1686 ; this allows i2pd to pass the i2p address to Ergo, which may be
useful for moderation under some circumstances.
2024-04-13 21:43:41 -04:00
Shivaram Lingamneni
8d082865da
fix #2133 ( #2137 )
...
* fix #2133
Don't record NICK and QUIT in history for invisible auditorium members
2024-03-17 11:42:39 -04:00
Shivaram Lingamneni
ee7f818674
implement SASL OAUTHBEARER and draft/bearer ( #2122 )
...
* implement SASL OAUTHBEARER and draft/bearer
* Upgrade JWT lib
* Fix an edge case in SASL EXTERNAL
* Accept longer SASL responses
* review fix: allow multiple token definitions
* enhance tests
* use SASL utilities from irc-go
* test expired tokens
2024-02-13 18:58:32 -05:00
Shivaram Lingamneni
dfe2a21b17
add panic handler to async client/channel writes
...
See #2113 for motivation
2024-01-05 00:18:46 -05:00
Shivaram Lingamneni
4aa1aa371d
fix #2113
...
Persisting always-on clients was panicking if client X believed it was
a member of channel Y, but channel Y didn't have a record of client X.
2024-01-03 10:52:34 -05:00
Shivaram Lingamneni
f77d430d25
use maps.Clone from go1.21
2023-08-15 20:57:52 -04:00
Shivaram Lingamneni
f100c1d0fa
fix incorrect chathistory batch types
...
This was introduced in 38a6d17ee5
2023-06-02 06:56:45 -04:00
Shivaram Lingamneni
60af8ee491
clean up force-trailing logic
2023-06-02 02:58:09 -04:00
Shivaram Lingamneni
38a6d17ee5
clean up nested batch logic
2023-06-01 06:29:22 -04:00
Shivaram Lingamneni
1da11ae8ae
implement draft/pre-away ( #2044 )
...
* implement draft/pre-away
* clean up some subtleties in auto-away aggregation.
* consistently apply auto-away only to always-on
* `AWAY *` should not produce user-visible changes wherever possible
2023-02-05 00:50:14 -05:00
Shivaram Lingamneni
3ceff6a8b1
make ReloadableListener lock-free
...
Also stop attaching the *tls.Config to the wrapped connection,
since this forces it to be retained beyond its natural lifetime.
2023-01-05 20:18:14 -05:00
Shivaram Lingamneni
746309e386
replace some utils.Semaphore with (*sync.Mutex).TryLock
...
See #1994
2022-09-02 04:25:39 -04:00
Shivaram Lingamneni
7ad31497c2
exempt a configurable number of MARKREAD commands from fakelag
2022-08-22 23:23:17 -04:00
Shivaram Lingamneni
35128bfc23
use new aligned atomic types everywhere
...
See 69448b13a1 / #1969 ; the compiler can now ensure that a uint64
intended for atomic access is always aligned to a 64-bit boundary.
Convert atomic operations on uint32s and pointers as well.
2022-08-10 02:47:39 -04:00
Shivaram Lingamneni
2b86660e5c
fix read markers not being reloaded on restart
2022-05-20 01:46:41 -04:00
Shivaram Lingamneni
c5579a6a34
fix #1688
...
* Add ACCEPT-tracking functionality (authorizing users to send DMs
despite +R or other applicable restrictions)
* Sending a DM automatically accepts the recipient
* Add explicit ACCEPT command
2022-05-05 22:34:43 -04:00
Shivaram Lingamneni
077081076c
fix #1941
...
KLINE'd clients would produce a QUIT snotice without a corresponding
CONNECT snotice; explicitly suppress the QUIT snotice.
2022-05-03 13:13:29 -04:00
Shivaram Lingamneni
42883972a8
make quit logging more consistent
...
Log it at level INFO for parity with connect / connect-ip
2022-04-28 14:19:11 -04:00
Shivaram Lingamneni
32f7868bfd
implement draft/read-marker capability
2022-03-30 23:16:09 -04:00
Shivaram Lingamneni
a549827f17
upgrade to go 1.18, use generics
2022-03-30 00:44:51 -04:00
Shivaram Lingamneni
4749d7e776
fix #1676 , take 2
...
Ensure the pagination window is full by making sure that every history item
gets a replay line in CHATHISTORY output, even TAGMSG.
2021-11-01 04:34:59 -04:00
Shivaram Lingamneni
3ec5ffa340
Revert "fix #1676 "
...
This reverts commit 5bbee02fe6 .
2021-11-01 04:34:59 -04:00
Shivaram Lingamneni
5bbee02fe6
fix #1676
...
Fix various pagination issues with CHATHISTORY; also undo #491
(msgid munging).
2021-10-29 04:50:24 -04:00
Shivaram Lingamneni
e0e4791f72
factor out some shared code
2021-09-18 21:28:16 -04:00
Shivaram Lingamneni
9b6ec04ca5
Merge pull request #1761 from delthas/feature-extended-monitor
...
Add support for extended-monitor
2021-08-26 10:14:31 -04:00
Shivaram Lingamneni
26cdb4cf36
fix #1650
...
RPL_WHOISACTUALLY should display some arbitrarily chosen IP address and
hostname.
2021-08-25 22:44:55 -04:00
Shivaram Lingamneni
cf25e894e1
fix incorrect handling of overlong lines when allow-truncation is enabled
2021-08-02 21:49:42 -04:00
Shivaram Lingamneni
e1401934df
implement SCRAM-SHA-256
2021-07-30 12:20:13 -04:00
delthas
7fde04ea94
Add support for extended-monitor
...
See: https://github.com/ircv3/ircv3-specifications/pull/466
2021-07-24 20:52:03 +02:00
Shivaram Lingamneni
fedf4a9176
add a debug logline for client read errors
...
May help clarify TLS configuration issues, possibly others too
2021-07-05 03:30:18 -04:00
Pratyush Desai
99cb1fd02c
DISCONNECT Sno for always-on and/or multiclient
2021-07-03 04:41:42 +05:30
Alex Jaspersen
b6264a43b6
Rename "realIP" to "ip" in WhoWas struct.
...
It could be the real IP or the proxied IP.
2021-06-20 11:13:18 -07:00
Alex Jaspersen
e5c2588eab
Show real IP in WHOWAS to opers with ban capability.
2021-06-20 10:26:30 -07:00
Shivaram Lingamneni
4910aefa37
use ergochat/irc-go instead of goshuirc/irc-go
2021-06-18 02:43:25 -04:00
Shivaram Lingamneni
ac806e5c62
fix znc.in/playback for individual DM targets
...
This is a regression introduced in 0d05ab4ff4 ; playback for an individual
DM target would play all DMs.
2021-05-28 18:07:54 -04:00