1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-05 09:13:16 +02:00
Commit Graph

5224 Commits

Author SHA1 Message Date
Bram Matthys febc4a45f3 Updated labeled-response: drop the draft/ prefix now that the specification
is ratified and also fix a serious flood bug in the implementation.
Oh, and move the loadmodule line to the correct place in modules.default.conf.
2020-02-08 08:09:53 +01:00
Bram Matthys 50f916fcd8 Windows compile fixes 2020-02-02 19:34:44 +01:00
Bram Matthys 9211e105eb Add unrealircd.org/userhost message tag. Similar to previous, so IRCOps
can see the real host of a user in each message.
2020-02-02 18:12:07 +01:00
Bram Matthys 65a5943e97 userip tag: inherit from remote servers, if able. 2020-02-02 16:46:51 +01:00
Bram Matthys a05c187a56 Fixes for HISTORY command: default value not working and error if +H is
not set on the channel. Reported by westor.
2020-02-02 16:17:02 +01:00
Bram Matthys ed6a2cf3e3 Add new message tag "unrealircd.org/userip" which will communicate
the user@ip of users to IRCOps if the message-tags capability is
enabled. Idea from westor. This is work in progress.
2020-02-02 15:49:21 +01:00
Bram Matthys a56e3bee8f Fix double free due to recent changes, now that HOOKTYPE_LOCAL_CHANMODE
and HOOKTYPE_REMOTE_CHANMODE are called from the SJOIN code.
We now set the samode argument to -1 if it is an SJOIN server sync,
so chanmodes/permanent won't destroy the channel while processing
the SJOIN. The SJOIN code already takes care of destroying at the end.
2020-02-02 12:57:10 +01:00
Bram Matthys 43a9e74662 Set version to 5.0.3-git and write some early release notes. 2020-02-02 12:33:46 +01:00
Bram Matthys 1ea8443551 Mark history as official module 2020-02-02 12:23:26 +01:00
Bram Matthys 7a38f485ad It helps if you can compile in non-DEBUGMODE 2020-02-02 12:18:09 +01:00
Bram Matthys a8c191b291 Add new command: HISTORY #chan [lines]. This is meant for end-users
so they can fetch more history than the standard on-join history.

In the future we are also likely to implement IRCv3 CHATHISTORY
once that becomes an official specification. However, until it is
specified and until most major clients support it, several years
are likely to pass. It would be a shame to withhold channel
history to many end-users in the meantime when it takes so little
effort from us to provide an easy command.

See also
https://www.unrealircd.org/docs/Channel_history
And in particular the new section:
https://www.unrealircd.org/docs/Channel_history#Playback_frontends
which explains the relationship between on-join playback,
HISTORY and CHATHISTORY.
2020-02-02 11:57:51 +01:00
Bram Matthys b5a205f4f3 Fix /SQUIT for server 2 hops away not working correctly.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5539
2020-01-31 12:15:36 +01:00
Bram Matthys 63cf5e3d52 Make channeldb/tkldb write errors more uniform.
Use local macro and sendto_realops_and_log()
2020-01-29 09:28:43 +01:00
Bram Matthys 0302ef9733 Operclass permission change: immune:target-limit is now called
immune:max-concurrent-conversations since it bypasses
set::anti-flood::max-concurrent-conversations.
Indirectly reported by westor.
2020-01-29 09:01:25 +01:00
Bram Matthys ead0ad0aa6 Duh.. (fix for previous fixes)
[skip ci]
2020-01-26 10:41:04 +01:00
Bram Matthys 1dc08afa71 Add warning to EventMod() for low every_msec as well. Also, mention the name
of the event to ease debugging.
2020-01-26 10:35:14 +01:00
Bram Matthys eede8d3ff6 Fix warning regarding low ms_every in case of delayed module unloading. 2020-01-26 10:26:07 +01:00
Bram Matthys d482760c6f Fix warning about EventAdd with 2msec value.
Reported by ivanp in https://bugs.unrealircd.org/view.php?id=5540

This cleans things up a bit as well (remove duplicate code).
2020-01-26 10:22:28 +01:00
Bram Matthys 1b07f706bc Remove old STATS Z from stats help. Reported by Lord255 in
https://bugs.unrealircd.org/view.php?id=5541
2020-01-26 10:00:58 +01:00
Bram Matthys c9feaa0b15 Fix : at beginning of gecos being dropped off in intra-WHOIS.
This does NOT "fix" https://bugs.unrealircd.org/view.php?id=5538:
WHOIS nick
:localserver.example.com 311 test nick ident host * :realname
WHOIS nick nick
:remoteserver.example.com 311 test nick ident host * realname
.. because your IRC protocol parser should not care about a :
or a lack of :. For text not containing spaces nor :-prefix there
is no difference in meaning and it should parse to the same.

However, this DOES fix an issue if the realname itself started
with a colon, such as "USER x x x ::something":
WHOIS nick
:localserver.example.com 311 test nick ident host * ::something
WHOIS nick nick
:remoteserver.example.com 311 test nick ident host * :something
.. because that does not have the same meaning and is a real
incorrect drop of a character.
Yeah, I took into account spaces, but not a word starting with :, my bad.
2020-01-26 09:54:54 +01:00
Bram Matthys 6fa7dd8b88 Fix (SA)PART and KICK not being shown to chanops in +D channels for invisible
users (users that have not talked or been otherwise exposed).
Reported by PeGaSuS and LesterClayton in
https://bugs.unrealircd.org/view.php?id=5521 and
https://bugs.unrealircd.org/view.php?id=5542

Bug was due to use of 'CHFL_CHANOP' instead of 'PREFIX_OP' in
the 'prefix' argument of sendto_channel().... fun.
2020-01-26 09:35:04 +01:00
Bram Matthys 65afb71111 Fix channel history using the wrong time unit. It is really +H lines:minutes
Release notes:
+* [Channel history](https://www.unrealircd.org/docs/Channel_history) used
+incorrect time internally, resulting in messages expiring too soon.
+The syntax is now really ```/MODE #chan +H lines:time-in-minutes```.
+To make clear that the time is in minutes, an 'm' will be added
+automatically by the server (eg ```+H 15:1440m```).

Bug reported by k4be.
2020-01-21 13:44:51 +01:00
Bram Matthys 8a6968c933 UnrealIRCd 5.0.2 2020-01-20 17:28:56 +01:00
Bram Matthys d30f7e006d Specifying multiple channels ("#one,#two") in set::auto-join,
set::oper-auto-join or tld::channel was broken. It worked for the
very first user since boot or rehash, but after that only the
first channel was joined. Reported by PeGaSuS in
https://bugs.unrealircd.org/view.php?id=5535
2020-01-20 15:41:12 +01:00
Bram Matthys c65f7101f9 Update ./unrealircd genlinkblock output 2020-01-20 13:46:59 +01:00
Bram Matthys 5b8eba750f Make set::tls::outdated-protocols and set::tls::outdated-ciphers work
again. This ports change 96ee7083c8
from UnrealIRCd 4.x to 5.x. Reported by HeXiLeD.
2020-01-20 13:26:37 +01:00
Bram Matthys 870057d4f3 Add "./unrealircd genlinkblock" which spits out a link { } block. Hmm...
we'll see later if this is a good idea or not.. it has pros and cons.
2020-01-19 19:34:11 +01:00
Bram Matthys ca22b6282e Fix bounce modes raising a warning to ircops (Unknown channel mode +& from ..)
reported by k4be.
2020-01-18 16:52:01 +01:00
westor 48faed6938 Add information about type on spamfilter add (#90)
On spamfilter add, add  [type: simple] or [type: regex] in the snomask notice and log.
2020-01-17 07:19:13 +01:00
westor abeb5f50d0 Fixes two wrong /ELINE examples bantype (#92)
This should be 'G' and not 'g' :) :D
2020-01-17 07:16:18 +01:00
Bram Matthys 094c444250 1) Fix incorrect ELINE documentation for types: gline (G, not g),
spamfilter (F, not f) and qline (Q, not q).
2) Error out when invalid ban exception types are given, so such errors
   don't go undetected anymore. Eg it will now print:
   "ERROR: bantype 'f' is unrecognized (in 'fgkz'). Note that the bantypes are case sensitive. Type /ELINE to see a list of all possible bantypes."
Reported by westor and Mi_01 in https://bugs.unrealircd.org/view.php?id=5528

Also, when at it:
3) Remove type 't' from ELINE syntax docs, which is in fact 'c'
   (which is already present in the list)
2020-01-12 13:19:37 +01:00
Bram Matthys 3456a5f90e Make /ELINE use set::manual-ban-target as well.
(just like KLINE GLINE etc)
2020-01-10 16:16:29 +01:00
Bram Matthys ef9506b95f Add set::manual-ban-target as well (affects /KLINE nick, etc).
Requested by marco500 in https://bugs.unrealircd.org/view.php?id=5029
For more information, see:
https://www.unrealircd.org/docs/Set_block#set::manual-ban-target
2020-01-10 15:54:04 +01:00
Bram Matthys 639c96cc84 https://www.unrealircd.org/docs/Set_block#set::automatic-ban-target
Remove old option set::ban-include-username and replace it with a more
generic option which defines what target a ban should apply to.

Also add some parts of set::manual-ban-target which will follow soon.
2020-01-10 15:43:23 +01:00
Bram Matthys 75eb509344 Make the new extended server bans feature also work in configuration file
Eg:
except ban {
        mask ~S:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef;
};
And also in ban user { }

For more information see commit 596cf8e7de
and https://www.unrealircd.org/docs/Extended_server_bans
2020-01-10 13:09:16 +01:00
Bram Matthys bfed0893a9 Nothing important: in eline_type_requires_ip() add 'd'.
Although not entirely true, exempting a user from 'd' when using
an extended server ban or IP or ident is not recommended.
The information needed to exempt the user may not be available
at the time of the flood. Better to reject it than have it partially work.
2020-01-10 11:57:34 +01:00
Bram Matthys 596cf8e7de New: extended server bans: exempt by certificate fingerprint and SASL account.
See https://www.unrealircd.org/docs/Extended_server_bans

Examples with ELINE:
/ELINE ~a:TrustedAccount kg 0 This user can bypass kline/gline when using SASL
/ELINE ~S:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef kgf 0 Trusted user with this certificate fingerprint
It also works with bans, although this would be less common:
/GLINE ~a:EvilAccount
A more useful purpose would be to use ~r (realname):
/GLINE ~r:*some*stupid*real*name*
(Although you could already ban realnames via spamfilter 'u')

For third party module coders:
If you have an extban in group 3 (a "matcher"-extban) then you
can opt-in to support this. You do so at extban registration time:
req.options = EXTBOPT_TKL;
or, if you already had another flag set, like for +I, then:
req.options = EXTBOPT_INVEX|EXTBOPT_TKL;
In any case, you set the .options before you call ExtbanAdd().

Note that if you do indicate support then your is_ok function
will be called like:
extban->is_ok(client, NULL, mask, EXBCHK_PARAM, MODE_ADD, EXBTYPE_TKL);
Important here is the NULL channel (since there is none)

Similarly your is_banned function will be called with BANCHK_CONNECT:
extban->is_banned(client, NULL, banstr, BANCHK_JOIN, &msg, &errmsg);
Here too, it is important to note that channel is NULL.
2020-01-10 11:45:25 +01:00
Bram Matthys d4826bd5c0 except throttle { } was not working, reported by LesterClayton in
https://bugs.unrealircd.org/view.php?id=5524

On a side note, the new method did work OK:
except ban { mask 127.0.0.1; type connect-flood; }
2020-01-09 18:23:27 +01:00
Bram Matthys edb4bd8cf2 Fix incorrect calls to HOOKTYPE_TKL_DEL causing crashes in modules
that use the parameters of this hook. Reported by Gottem.
2020-01-07 12:34:43 +01:00
westor 11ff177558 Add new option set::connthrottle::webirc-bypass
When set to 'yes' then when ConnThrottle detects a flood it will still
allow WEBIRC users in. The default is 'no'.
Suggested in https://bugs.unrealircd.org/view.php?id=5506
2020-01-05 17:27:11 +01:00
Bram Matthys 07753d112e Update for previous commit. See https://github.com/unrealircd/unrealircd/pull/87 2020-01-05 10:00:34 +01:00
k4bek4be cdea885b32 For ./unrealircd module parse-c-file use real line counts within the C file instead of within the special block 2020-01-05 09:57:29 +01:00
westor 2fa0edf599 Add support for "exempt-webirc" (#88)
Add new config option "exempt-webirc yes;" in set::restrict-commands::<commandname> in order to give exceptions in all WEBIRC user. This closes one of the 3 suggestions in https://bugs.unrealircd.org/view.php?id=5506
2020-01-04 17:39:38 +01:00
Bram Matthys d29a55a8db Update DoEvents() so it is safe to call EventDel() from within
an event handler. Until now it was NOT safe. Now it is.
2020-01-04 16:54:48 +01:00
Bram Matthys bb82138466 UnrealIRCd 5.0.1 2020-01-03 09:38:28 +01:00
Bram Matthys 27ae0fa340 Fix "ERROR renaming 'data/reputation.db.tmp'" on Windows.
Reported by hc2995, notipa and floffy.
2020-01-02 16:35:24 +01:00
Bram Matthys eca761fcb9 Remove some unused vars in cmd_nick_remote and cmd_nick_local 2020-01-02 15:47:23 +01:00
Bram Matthys d7d673faf2 Multiple fixes related to ban actions:
1) Fix issue if HOOKTYPE_IS_HANDSHAKE_FINISHED rejects the user
2) Fix authprompt issue. We now allow adding the TKL in
   place_ban_host() for soft-kline/etc. Previously all the
   soft-kline/gline/zline/gzline acted like soft-kill.
3) The blacklist module did not allow clients in with action 'warn',
   reported by westor in https://bugs.unrealircd.org/view.php?id=5501
2020-01-02 15:36:42 +01:00
Bram Matthys 7278c9c8f4 @if causes miscounting of line numbers shown in config errors.
Reported by Gottem in https://bugs.unrealircd.org/view.php?id=5509
2020-01-02 13:05:26 +01:00
Bram Matthys b4fb4568fc Possibly fix a hang issue. Reported by westor. 2020-01-02 12:46:37 +01:00