60 Commits

Author SHA1 Message Date
Falk Rund
ad6a397ca4 Welcome to 2026
[skip ci]
2026-01-01 13:44:32 +01:00
RealKindOne
b61e21e079 Fix AwayNotify test. 2025-07-06 23:02:10 -04:00
RealKindOne
106a9fcbb4 Make account, away-notify, and chghost only send to client if attached into a channel. 2025-06-26 10:15:13 -04:00
Alexey Sokolov
4b12c0dc3c Fix nullptr dereference
If client sends TAGMSG while server is not connected
2025-06-23 22:52:34 +01:00
Alexey Sokolov
7b7f691213 Don't store "this" in static variable
Fix #1960

This could also cause use-after-free if the first connected socket disconnects
2025-06-23 22:41:08 +01:00
Alexey Sokolov
b32d3dbbc9 Fix test on cygwin
Depending on timing between client and server, the initial JOIN can come in either order - in one case forwarding directly from client, in another joining the channels after client disconnected.
2025-06-09 20:20:50 +01:00
Alexey Sokolov
aaeab22ea3 Fix processing of multi-token CAP ACK
I broke it in 5943bc9ed9 while fixing #1950
2025-05-11 18:49:35 +01:00
Alexey Sokolov
3d1551b7f2 Don't forward client JOINs during registration
ZNC remembers that it should join these channels, and will join them after registration. But if client automatically joins some channels, we don't want it to be added to send queue before parts of registration itself (CAP, AUTHENTICATE), because server will just disconnect with "Registration timeout". After registration is complete, using /join still joins the channel immediately.

Only limiting this to joins, because server may request some input from user to finish registration, and joins are the ones which are prone to be sent automatically by client to cause issues.

Fix #1949
2025-05-10 20:09:25 +01:00
Alexey Sokolov
5943bc9ed9 Send several caps in the same CAP REQ
If they got NAKed, then retry them one by one

This should speed up the usual case

Fix #1950
2025-05-09 23:46:11 +01:00
Alexey Sokolov
c2f299abdf Filter out server-dependent caps in CAP NEW using blacklist too 2025-05-08 23:25:58 +01:00
Alexey Sokolov
1c197a5508 Add a way to disable certain capabilities
This is a way for admins to mitigate some issues caused by caps if such issues ever arise.

E.g. add this to global level in znc.conf:

DisableClientCap = sasl
DisableServerCap = chghost
DisableServerCap = message-tags

Then these caps will be NAKed to client / not requested from server.

Note that this mechanism doesn't fully prevent a cap from being activated, e.g. one could use *send_raw module to request it from server even when disabled.
2025-05-08 21:55:40 +01:00
Alexey Sokolov
2f02a9ea00 Merge branch 'master' into unix 2025-05-01 22:41:27 +01:00
Alexey Sokolov
b642d92ce7 Switch integration test to mostly use unix sockets
By not using the same hardcoded number for every test, we can parallelize the test now.

There are several cases remaining where we can't easily use unix sockets (e.g. QSslSocket or imapauth module), for that ask kernel what port number is currently free to use. This is a bit racy though.
2025-04-21 00:19:46 +01:00
Alexey Sokolov
5d6aceac79 Add test for OnInvite()+OnInviteMessage() 2025-04-18 22:36:53 +01:00
Alexey Sokolov
5befe2f7f8 Implement invite-notify 2025-04-18 22:23:01 +01:00
Alexey Sokolov
ef4b59005c CTCP sent to *status shouldn't reach server 2025-04-11 21:45:45 +01:00
Alexey Sokolov
f93829e3b3 Implement message-tags spec
Message tags were supported already, but not arbitrary tags, and not
TAGMSG
2025-04-11 21:28:10 +01:00
Alexey Sokolov
ce47e7ea3d Fix sending server passwords with spaces in them
Fix #1928
Fix #1899
2025-03-16 21:31:34 +00:00
Alexey Sokolov
89e6d58d5a SASL: Move tests which are not about modules
from modules.cpp to core.cpp
2025-03-16 09:46:10 +00:00
Alexey Sokolov
fc0dd1431f fix flaky chghost test 2025-02-25 18:41:02 +00:00
Peter
44e4b95a20 Welcome to 2025 (#1929) 2025-02-07 23:23:45 +00:00
Alexey Sokolov
dd99d3e950 simplify test 2024-12-29 15:16:27 +00:00
Alexey Sokolov
579906d686 Don't send emulated chghost-JOIN to channels where the nick wasn't
Fix #1924
2024-12-29 14:54:20 +00:00
Alexey Sokolov
20c540af7d Make CHGHOST work with detached channels 2024-10-15 17:16:32 +01:00
Alexey Sokolov
d49399bbca Implement chghost capability
Interaction with extended-join doesn't yet work correctly, because ZNC
doesn't keep track of everyone's real names
2024-10-15 13:26:20 +01:00
Alexey Sokolov
f8552fc814 Skip modperl/modpython tests cleaner 2024-02-25 14:13:32 +00:00
Alexey Sokolov
1c9638a586 Fix bad copy paste in the test 2024-02-11 10:04:59 +00:00
Alexey Sokolov
ca3b76368d Suspend registration on CAP REQ
Fix #1820
2024-02-10 00:53:44 +00:00
Alexey Sokolov
2b3b224bca Make modperl support AddServerDependentCapability 2024-01-14 12:11:00 +00:00
Alexey Sokolov
efd136c01c Make modpython work with server-dependent caps 2024-01-14 11:12:32 +00:00
Alexey Sokolov
4b1a524a72 Move extended-join test to integration test
Fix build of modperl/modpython
2024-01-14 01:46:12 +00:00
Alexey Sokolov
b1009bd809 Code cleanup
Since now there are no server-dependent caps defined in the core
2024-01-14 00:27:21 +00:00
Alexey Sokolov
da3919245b Improve test 2024-01-13 22:07:40 +00:00
Alexey Sokolov
99e6869b28 Add CCapability 2024-01-13 21:22:42 +00:00
Alexey Sokolov
236755444b in theory support non-network modules too 2024-01-09 02:02:42 +00:00
Alexey Sokolov
b5a6ff528b The test is now working 2024-01-07 22:55:52 +00:00
Alexey Sokolov
7ee389278f Progress: CAP NEW is sent to client 2024-01-07 10:53:51 +00:00
Alexey Sokolov
1d3b33354f Merge branch 'master' into cap302 2024-01-06 20:36:24 +00:00
Alexey Sokolov
66137bd89a Progress 2024-01-05 00:45:41 +00:00
Falk Rund
17a004aa0b Welcome to 2024
[skip ci]
2023-12-31 21:09:25 +01:00
Alexey Sokolov
4cbccac707 Merge branch 'master' into cap302 2023-11-19 10:53:47 +00:00
Alexey Sokolov
a1a254bef1 Update password hashes from SHA-256 to Argon2id
These days salted SHA-256 is considered quite weak for passwords.

Transparently upgrade existing hashes upon login.

Bump cmake requirement to able to use IMPORTED_TARGET, this will allow
further cleanup in next commits.
2023-09-27 01:11:07 +01:00
KindOne
ee9ad2ff8e Use module names as the module ident.
Some clients will reuse query windows as the client thinks its just a
nick change if you have a existing query window with a module and a different one messages you.

Fix that by using the modules name as the ident.

Update tests to match new modules ident.
2023-09-08 07:21:31 -04:00
Alexey Sokolov
d532dcbd5c cygwin qt doesn't know qsizetype yet 2023-01-09 01:47:03 +00:00
Alexey Sokolov
c15fc63c55 Implement cap negotiation 3.2 on server side
Used for "server-dependent" caps which already rely on sending NEW and
DEL to client. This functionality is not yet available for caps added by
modules.
2023-01-09 01:08:04 +00:00
Alexey Sokolov
d49168b93f Make it possible for modules to send values in CAP LS 2023-01-08 15:46:21 +00:00
Alexey Sokolov
b57d794aaf Send multiline CAP LS response for IRCv3.2 clients 2023-01-08 15:32:27 +00:00
Falk Rund
f9fd05c307 Welcome to 2023 2023-01-01 06:49:00 +01:00
Falk Rund
6402d241ac Welcome to 2022
The same procedure as last year, Miss Sophie?
Same procedure as every year, James.
2022-01-01 14:05:32 +01:00
Bradley Shaw
8a9423d34b Add tests for deny options 2021-07-03 19:59:58 +01:00