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
68bd2d87e0
fix #1991
...
WHO <nickname> should not respect +i
2022-08-22 23:03:17 -04:00
Shivaram Lingamneni
8ff5a048f3
Merge pull request #1989 from slingamn/atomic_uint64.1
...
use new aligned atomic types everywhere
2022-08-21 10:02:06 -07:00
df234b842e
uban list explicitly shows indefinite durations
2022-08-11 03:04:20 +05:30
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
a99c8a42f9
remove utils.ConfigStore in favor of atomic.Pointer[T]
2022-08-03 00:59:00 -04:00
Shivaram Lingamneni
5b72cd8622
apply go1.19 gofmt
2022-08-03 00:54:50 -04:00
Shivaram Lingamneni
1d10eb934a
fix #1980
...
Sanitize ::1 to 0::1 in WHOX output
2022-07-14 21:53:36 -04:00
Shivaram Lingamneni
69448b13a1
fix #1969
...
On a 32-bit architecture, 64-bit atomic loads and stores must be aligned to a
64-bit boundary. Since the (mysql.MySQL) struct is directly included in the
Server struct, it is impossible to guarantee this via the standard technique
of putting the 64-bit value at the beginning of the struct definition
(since the point at which it is included in the parent struct may cross a
64-bit boundary).
This optimization is probably pointless anyway, adding an additional
indirection won't make a difference.
2022-06-10 10:35:56 -04:00
Shivaram Lingamneni
86f7668c68
set up new development version
2022-05-29 15:46:36 -04:00
Shivaram Lingamneni
101fd53d6d
bump version and changelog for v2.10.0
2022-05-29 02:24:18 -04:00
Shivaram Lingamneni
acd95b9924
bump version and changelog for v2.10.0-rc2
2022-05-23 15:16:51 -04:00
Shivaram Lingamneni
ef088373a8
only send MARKREAD to sessions with the read-marker cap
2022-05-20 01:58:14 -04:00
Shivaram Lingamneni
2b86660e5c
fix read markers not being reloaded on restart
2022-05-20 01:46:41 -04:00
Shivaram Lingamneni
c3d4be45f1
fix timestamp syntax in MARKREAD
2022-05-20 01:46:41 -04:00
Shivaram Lingamneni
104d0321e8
bump version and changelog for v2.10.0-rc1
2022-05-16 01:25:37 -04:00
Shivaram Lingamneni
6f9e07d2a2
fix #1905
...
NS SAREGISTER should send machine-readable responses. A simple approach:
check if the account-registration cap is enabled, and if so, send the
the same responses that would be sent by the REGISTER command.
2022-05-13 15:35:11 -04:00
Shivaram Lingamneni
737697d1d4
exempt operators from history cutoffs
...
See #1593 ; this enables a client-side implementation of bulk deletion
2022-05-12 16:43:11 -04:00
Shivaram Lingamneni
dd75eb1084
fix incorrect HOSTSERV HELP SET
...
Reported by @Mikaela
2022-05-06 14:48:01 -04:00
Shivaram Lingamneni
a13235880c
Merge pull request #1954 from slingamn/accept.1
...
fix #1688
2022-05-06 11:40:17 -04:00
Shivaram Lingamneni
87789676c0
add tests covering (*AcceptManager).Unaccept
2022-05-05 22:43:33 -04:00
Shivaram Lingamneni
c454c45d6a
Merge pull request #1953 from slingamn/issue1886_unregistered.1
...
fix #1886
2022-05-05 22:40:50 -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
b11dc1c84c
fix #1886
...
Add more clarify in NS INFO and SAREGISTER about unregistered nicknames
2022-05-05 01:04:28 -04:00
Shivaram Lingamneni
78548aa9df
add SAVERIFY command
...
Fixes #1924
2022-05-04 16:41:01 -04:00
Shivaram Lingamneni
d5814c10ab
Merge pull request #1949 from slingamn/generic_config.2
...
genericize atomic config changes
2022-05-04 01:30:52 -04:00
Shivaram Lingamneni
34ad3a2dc1
ConfigStore: clarify intended use
2022-05-03 23:27:24 -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
c603d41d08
genericize atomic config changes
2022-05-03 11:12:11 -04:00
Shivaram Lingamneni
c87dead39b
remove history.ReverseCorrespondents in favor of generics
2022-05-03 02:45:36 -04:00
Shivaram Lingamneni
71fe4ecf48
Merge pull request #1945 from slingamn/generic_reverse
...
use genericized slice-reversing function
2022-04-30 21:29:25 -04:00
Shivaram Lingamneni
2df5fb1956
use genericized slice-reversing function
2022-04-29 13:39:11 -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
5ecba1d40b
use ratified bot mode tag name
2022-04-26 15:43:24 -04:00
Shivaram Lingamneni
5c7df07d91
Merge pull request #1936 from slingamn/nick_empty
...
fix #1933
2022-04-25 18:02:31 -04:00
Shivaram Lingamneni
2b8eb93c00
clean up magic numbers
2022-04-24 11:57:21 -04:00
Shivaram Lingamneni
51cdebf167
fix #1935
...
RPL_WHOISCHANNELS didn't have proper line breaks
2022-04-24 02:47:31 -04:00
Shivaram Lingamneni
61fd7a2534
fix the rest of #1933
...
`NICK :` pre-registration needs to be special-cased to immediately
send ERR_NONICKNAMEGIVEN (unlike erroneous nonempty nicknames,
which are processed when registration is complete)
2022-04-24 01:39:45 -04:00
Shivaram Lingamneni
7201f14b8b
partial fix for #1933
...
If the nickname must equal the account name (because always-on or
force-nick-equals-account), the correct error response to an empty
or otherwise invalid nickname is the usual "You must use your account
name as your nickname".
2022-04-24 00:31:20 -04:00
Val Lorentz
379632a9e6
Fix implementation of LIST <n
2022-04-16 22:55:58 +02:00
Shivaram Lingamneni
1f08c97238
Merge pull request #1926 from slingamn/readmarker.6
...
implement draft/read-marker capability
2022-04-08 01:33:06 -04:00
Shivaram Lingamneni
2fb8b836db
fix #1928
...
LIST should not return ERR_NOSUCHCHANNEL for nonexistent channels
2022-04-07 11:44:23 -04:00
Shivaram Lingamneni
ac2fc0da28
Merge pull request #1927 from FiskFan1999/deletemessagewarn
...
histserv delete now requires two params
2022-04-02 21:27:13 -04:00
William Rehwinkel
934ad1cec2
histserv delete now requires two params
2022-04-01 20:52:09 -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
9f6e26450b
make SAREGISTER override DEFCON
...
DEFCON 4 and lower were blocking SAREGISTER. This is wrong; admins should be
allowed to make new accounts even under DEFCON (this may be needed
specifically to work around the DEFCON restriction).
2022-03-01 07:57:15 -05:00
William Rehwinkel
4010f3fc02
Fix #1911 +s channels don't appear in /list even though on the channel ( #1923 )
...
* Fix #1911 +s channels don't appear in /list even though on the channel
* use channel.HasClient instead of custom iterative checker
2022-02-28 20:31:16 -05:00
Shivaram Lingamneni
197a9d4b5e
use exact integer parsing for znc.in/playback
2022-02-15 10:50:38 -05:00
Shivaram Lingamneni
cba3a2fc10
Merge pull request #1916 from slingamn/issue1895_info
...
fix #1895
2022-02-11 16:27:59 -05:00
Val Lorentz
e7abd93e90
Update help of REGISTER and VERIFY commands
2022-02-08 20:25:41 +01:00
Shivaram Lingamneni
0afa7edffe
fix #1895
...
Include server start time in INFO output.
2022-02-08 07:38:11 -05:00
Shivaram Lingamneni
fcb86c54f7
fix #1906
...
Having the 'samode' capability made all KICK commands privileged. This appears
to have been introduced unintentionally by 42316bc04f
and I can't find
any discussion of a rationale. Since this goes against our policy that all
ircop (as opposed to channel founder) privileges must be invoked explicitly
(e.g. SAJOIN, SAMODE), remove this.
2022-02-07 19:06:31 -05:00
Shivaram Lingamneni
e3e8136f85
update ergo to work with irc-go v0.1.0
2022-01-20 18:00:04 -05:00
Shivaram Lingamneni
e3c9eb8e71
fix #1896
...
Don't allow any new uses of 0 as a nickname, since it conflicts with
the use of 0 as a placeholder for account name in WHOX.
2022-01-19 04:14:00 -05:00
Shivaram Lingamneni
c2bf59ca38
Merge pull request #1897 from slingamn/whox_show_ip
...
show arbitrary IP in WHOX
2022-01-19 02:16:14 -05:00
Shivaram Lingamneni
eb477c3793
fix #1901
...
AMODE +v should allow you to join a +i channel
2022-01-19 00:54:03 -05:00
Shivaram Lingamneni
6dc6abc455
set up new development version (again)
2022-01-10 19:03:54 -05:00
Shivaram Lingamneni
1d8a54289f
bump version to 2.9.1
2022-01-10 02:33:56 -05:00
Shivaram Lingamneni
3162c8a1c8
fix #1898
...
NS SAREGISTER would fail due to a nil dereference of `client`;
add two safeguards against this.
2022-01-10 01:58:05 -05:00
Shivaram Lingamneni
dba5d3faae
show arbitrary IP in WHOX
...
This extends #1650 to cover WHO as well as WHOIS
2022-01-09 17:24:24 -05:00
Shivaram Lingamneni
1953e90720
set up new development version
2022-01-09 16:11:34 -05:00
Shivaram Lingamneni
a0ad42272d
bump version and changelog for v2.9.0
2022-01-09 01:47:27 -05:00
Shivaram Lingamneni
6863d58cab
add a warning about NS UNREGISTER unregistering channels
...
See discussion on #1891
2022-01-05 13:30:36 -05:00
Shivaram Lingamneni
d174b5aad6
add disambiguating numbers in translated strings
2022-01-02 17:36:12 -05:00
Shivaram Lingamneni
abd4cf7d3b
bump version to v2.9.0-rc1
2022-01-02 16:37:22 -05:00
Shivaram Lingamneni
0a59f41cf9
add ip-check-script.exempt-sasl
2022-01-02 01:51:31 -05:00
Shivaram Lingamneni
40bd298a91
fix the reopened #1844
2022-01-02 01:07:37 -05:00
Shivaram Lingamneni
ed75533cb1
optionally protect against multiple starts with flock ( #1873 )
...
* optionally protect against multiple starts with flock
Fixes #1823
* use traditional .lock extension
* move config key to top level
2022-01-01 18:56:40 -05:00
Shivaram Lingamneni
a57bf46e6a
small refactor
2021-12-30 12:59:14 -05:00
William Rehwinkel
b929691470
Fix #1883 Nickserv gives error when user attempt to change password to *
2021-12-30 12:15:30 -05:00
Shivaram Lingamneni
24ad24562e
update help entry for CHATHISTORY
2021-12-29 12:45:29 -05:00
Shivaram Lingamneni
e15c355f18
fix #1876
...
INVITE did not exempt from +b unless the channel was coincidentally also +i.
This was a regression introduced in v2.4.0.
2021-12-19 18:30:18 -05:00
Shivaram Lingamneni
76f7748c8a
correctly account for nickname in CAP LS arithmetic
...
The arithmetic was assuming that the nickname is * (which it is
pre-registration). However, we were sending the actual nickname
post-registration. It would be simpler to always send *, but it
appears that the nickname is actually required by the spec:
>Replies from the server must [sic] contain the client identifier name or
>asterisk if one is not yet available.
2021-12-16 01:59:36 -05:00
Shivaram Lingamneni
ec4fb90d2b
+I should allow unregistered users to join a +R channel
...
See #1858 : this was the intent all along, but I missed this issue.
2021-12-15 22:52:11 -05:00
Shivaram Lingamneni
98e87f6cc0
explicitly close the DB during importdb
...
There is no change in behavior since committing the transaction
already write(2)'s all the data to disk. But let's comply with
the official buntdb API.
2021-12-12 22:27:05 -05:00
Shivaram Lingamneni
9293858ba1
bump database version generated by importer
...
This should have been done in 8b2f6de3e0
, since we updated both
the database schema and the importer then.
2021-12-12 22:09:42 -05:00
Shivaram Lingamneni
f3f805acb8
send *
for WHOX o (oplevel) instead of 0
...
Jobe points out that 0 is a valid oplevel in some contexts,
* is a better placeholder for "unimplemented".
2021-12-12 03:05:56 -05:00
Shivaram Lingamneni
0d0d9e72b4
Merge pull request #1861 from slingamn/issue1860_amode
...
fix #1860
2021-12-09 04:18:14 -05:00
Shivaram Lingamneni
ac17bf0e9d
Merge pull request #1857 from slingamn/dollarsign
...
disallow initial $ in nicknames
2021-12-09 04:17:57 -05:00
Shivaram Lingamneni
9d9ee11224
fix #1860
...
CS AMODE changes should take immediate effect even if the nick
does not match the account.
2021-12-08 23:47:33 -05:00
Shivaram Lingamneni
8be8f0f08d
fix #1858
...
The channel mode +R used to both prevent joins by unregistered users,
and prevent unregistered users who happened to be joined from speaking.
This changes the behavior so that +R only prevents joins:
1. This allows users who were invited or SAJOIN'ed to speak
2. To restore the old semantics, chanops can set +RM
2021-12-07 01:31:07 -05:00
Shivaram Lingamneni
f40d868cf5
disallow initial $ in nicknames
...
It collides with the massmessage mask syntax. Reported by @emersion
2021-12-06 14:17:45 -05:00
Shivaram Lingamneni
cb757c703d
change FAIL AUTHENTICATE VERIFICATION_REQUIRED to be a NOTE
...
See discussion on #1852
2021-12-01 12:16:03 -05:00
Shivaram Lingamneni
72959eb1cf
Merge pull request #1852 from slingamn/fail_authenticate
...
add FAIL AUTHENTICATE VERIFICATION_REQUIRED
2021-11-30 20:35:33 -05:00
Shivaram Lingamneni
7d66368274
add FAIL AUTHENTICATE VERIFICATION_REQUIRED
...
From discussion with @emersion, this will help with UX if people try to
log into their unverified accounts.
2021-11-30 15:27:25 -05:00
Shivaram Lingamneni
645721f97e
fix missing parenthesis in UBAN INFO
2021-11-30 03:40:03 -05:00
Shivaram Lingamneni
fd45529d94
fix #1842
...
Warn about banning a single IPv6 address
2021-11-30 03:27:40 -05:00
Shivaram Lingamneni
eef9753912
reorder imports
2021-11-30 03:18:01 -05:00
Shivaram Lingamneni
9ff4047fa6
fix #1840
...
Account registrations pending verification should produce a logline and
send a sno.
2021-11-30 03:18:01 -05:00
Shivaram Lingamneni
ee720f60e2
fix #1826
...
CS PURGE should send a snomask
2021-11-30 03:18:01 -05:00
Shivaram Lingamneni
c51569420a
fix #1844
...
Send snomasks for HS SET
2021-11-30 03:18:01 -05:00
e0f4fcee61
NS SUSPEND now req 'ban' capabs
2021-11-18 17:11:32 +05:30
Shivaram Lingamneni
ac91beabfd
Merge pull request #1835 from slingamn/who.1
...
fix two WHO bugs
2021-11-16 21:45:40 -05:00
Shivaram Lingamneni
bc5c2a1250
fix casefolding issue in muting RELAYMSG
...
Reported by @mogad0n; the mute mask was being case-canonicalized,
but the RELAYMSG identifier wasn't being case-canonicalized before
the check.
2021-11-16 18:39:38 -05:00
Shivaram Lingamneni
2038763e10
fix #1730
...
`WHO #channel o` is supposed to return only server operators.
This is RFC1459 cruft; just return an empty list in this case.
2021-11-14 15:13:56 -05:00
Shivaram Lingamneni
62b2d0341e
fix #1831
...
RPL_ENDOFWHO should send the original, un-normalized mask
2021-11-14 13:41:27 -05:00
Shivaram Lingamneni
92f6bf2d03
set up new development version
2021-11-14 13:12:58 -05:00
Shivaram Lingamneni
c70e518eed
bump version to v2.8.0
2021-11-14 00:11:19 -05:00