1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-04 09:43:12 +02:00
Commit Graph

5288 Commits

Author SHA1 Message Date
Bram Matthys 30acfcc8c5 UnrealIRCd 5.0.5-rc1 (internal RC, will not be published on site) 2020-05-18 19:28:28 +02:00
Bram Matthys 3bb044dc1c Update a comment
[skip ci]
2020-05-18 15:49:39 +02:00
Bram Matthys 528783a2fd Now that we have clienttags, fix this FIXME.
Also, remove unnecessary comment about calling lr_post_command() with
the last two arguments being NULL. We don't use these two variables
inside lr_post_command() after this change anyway.
2020-05-17 08:49:58 +02:00
k4bek4be 0aa5fb6e7c Add CLIENTTAGDENY module. (#108)
It implements the current version of CLIENTTAGDENY isupport token, as defined by IRCv3.
2020-05-16 10:04:33 +02:00
k4bek4be d533483a43 Support both +typing and +draft/typing mtags. (#109) 2020-05-16 09:57:23 +02:00
Bram Matthys 81c7e6ca05 Merge branch 'unreal50' of github.com:unrealircd/unrealircd into unreal50 2020-05-14 09:15:24 +02:00
Bram Matthys 941b745be2 Give an error when trying to place an *LINE that already exists.
Then the oper may decide if the original entry should indeed be
removed and re-added, or if (s)he should not touch it. These are
usually done by mistake anyway.
Updating existing entries by end-users was never intended and did
not work properly anyway (see bug comments). Issue reported by
Le_Coyote and armyn in https://bugs.unrealircd.org/view.php?id=5603
2020-05-14 09:13:49 +02:00
k4bek4be ec39d3c15b Remove unused message tag handlers on rehash (#106) 2020-05-13 19:19:06 +02:00
Bram Matthys 7a4832d337 Fix missing ERROR when using a @label, reported by k4be.
This had to do with the queued packet (in the labeled-response module)
not being sent because the client was freed before the
post packet hook was called.
2020-05-11 19:18:41 +02:00
Bram Matthys 8d2e05f5ef Fix crash when combining +P with a 3rd party module, or actually
any parameter channel mode module loaded after channeldb.
Reported by GaMbiTo, with help from PeGaSuS, Gottem and k4be
in https://bugs.unrealircd.org/view.php?id=5669

It is not safe to call channel mode parameter functions when
unloading modules. Makes sense I think.

We now no longer write the db on rehash, which is something i
didn't like anyway (wasted CPU cycles). The problem was that
one could not just scratch the write db call, as otherwise if
someone rehashes every minute would cause the db never to
be saved. This is because on each rehash the event to write
the db gets rescheduled to +5 minutes in the future.
We now work around that in the same way as connthrottle does.
Obviously it would be better to make the event system itself
deal with this, but that is (way) too much for now.
2020-05-09 11:58:26 +02:00
Bram Matthys 606a35bed0 Fix crash when using deny link::rule with oversized argument.
Reported by moody in https://bugs.unrealircd.org/view.php?id=5667
2020-05-08 14:58:49 +02:00
Bram Matthys 6a3a2530b1 Fix echo-message not working for TAGMSG. Reported by k4be. 2020-05-08 11:12:48 +02:00
Bram Matthys ae9f06ebae Fix TAGMSG in the user-to-user case being delivered to clients with
an argument too many (" :"). Reported by k4be.
2020-05-08 11:09:31 +02:00
Bram Matthys 666d5631fe Send TAGMSG only to message-tags people. Duh. 2020-05-07 10:54:38 +02:00
Bram Matthys 45624ff2ab Set TARGMAX= for TAGMSG to 1 (same setting as we have for NOTICE). 2020-05-06 16:51:05 +02:00
LeCoyote 8c2df61725 Improve antimixedutf8: detect CJK and other scripts (#105) 2020-05-06 12:39:00 +02:00
Bram Matthys 98930785e5 Copy-paste error which turned NOTICEs into PRIVMSGs. -grin- 2020-05-06 11:26:39 +02:00
Bram Matthys 31d3af22e2 Don't make channel mode +f 't' and 'm' act on TAGMSG...
otherwise people get kicked just for typing :D

We may add a new +f type later on, if there is a need for it.
2020-05-06 10:53:13 +02:00
Bram Matthys a259227424 New feature set::anti-flood::target-flood, provided by targetfloodprot module.
This limits X per Y messages for targets, regardless of sender. See docs:
https://www.unrealircd.org/docs/Set_block#set%3A%3Aanti-flood%3A%3Atarget-flood
2020-05-06 10:43:26 +02:00
Bram Matthys 2a093bb150 Moved CheckNull() to individual set::anti-flood::xx tests and
HOOK_CONFIGTEST with CONFIG_SET_ANTI_FLOOD, rather than a generic
one before processing these. Needed for set::anti-flood::target-limit.
2020-05-06 10:28:37 +02:00
Bram Matthys b8d4cf7763 Actually call moddata_free_channel(channel);
This was a FIXME item that should have been addressed earlier.
We didn't use any MODDATATYPE_CHANNEL in the core up to now so
this was overlooked. We do use it from now on, though, and it
may very well have been used in 3rd party modules already.
2020-05-06 09:04:43 +02:00
Bram Matthys 4e3817b4d5 Initial version of set::anti-flood::target-flood 2020-05-05 20:27:53 +02:00
Bram Matthys 57f524cbed Support for +draft/typing
This is the work from May 3rd.. need to commit it so i can merge the
flood protection that is related to this...
The final implementation will still need tweaking before pushed.
[skip ci]
2020-05-05 20:16:56 +02:00
Bram Matthys 166a772951 Fix except ban without type not exempting gline due to wrong character
being used ('g' instead of 'G'). Reported by DeviL.
https://bugs.unrealircd.org/view.php?id=5555
2020-05-03 09:41:32 +02:00
Bram Matthys aba3c8e53f Fix set::who-limit documentation and make IRCOps exempt from this limit.
reported by patphobos in https://bugs.unrealircd.org/view.php?id=5657
2020-04-29 16:30:24 +02:00
Bram Matthys 2c703eba6e Make it possible to restrict a command to identified users only, with
no connect-delay restriction. Also remove the 'disable' option since
it is unneeded. You now simply use:
set {
    restrict-commands {
        somecommand {
        }
    }
}
...and the command is disabled.
And you add exempt-identified or exempt-reputation-score if needed.

See https://www.unrealircd.org/docs/Set_block#set%3A%3Arestrict-commands

Note that this also changes some command blocking logic, so I hope
I made no mistake there... only testing will tell.
2020-04-26 16:04:26 +02:00
delthas 0c3b8e5d28 Fix trailing space in RPL_NAMREPLY (#100) 2020-04-26 09:00:09 +02:00
Bram Matthys edb0f16942 Make /INVITE bypass ~f:#forward:*!*@* bans. Suggested by Balthazar
in https://bugs.unrealircd.org/view.php?id=5634
2020-04-25 17:06:01 +02:00
Bram Matthys ca2ba56d82 Add is_invited(client, channel) function. 2020-04-25 17:01:41 +02:00
Bram Matthys 0902ed7a99 Fix channel mode +L redirecting even if joining with correct channel key.
Reported by Balthazar in https://bugs.unrealircd.org/view.php?id=5644
2020-04-25 16:43:32 +02:00
Bram Matthys 0c080b3982 Fix crash in tkldb on 32 bit systems. Reported by k4be.
Also, get rid of compiler warnings (we can use C99 types now).
2020-04-25 09:27:31 +02:00
Bram Matthys bc70882bd3 UTF8 support in spamfilter. We now ship with PCRE2 10.34 and require this
version or newer on the sytem, otherwise we fall back to shipped version.

This fixes https://bugs.unrealircd.org/view.php?id=5187 among others.
It means:
* Case insensitive matches work better in UTF8 now, such as extended Latin.
  For example, a spamfilter on "ę" now also matches "Ę", while previously
  it did not catch this.
* Other PCRE2 features such as https://www.pcre.org/current/doc/html/pcre2syntax.html#SEC5
  are now available. For example you can now set a spamfilter with the regex
  \p{Arabic} to block all Arabic script, or
  \p{Cyrillic} to block all Cyrillic script (such as Russian)
  Use these new tools with care, of course. Blocking an entire language,
  or script, is quite a drastic measure.

All of this was possible because of the new PCRE2_MATCH_INVALID_UTF
compile time option which was introduced in PCRE2 10.34.
This also means we now require at least that PCRE2 version so
everyone can benefit from this new spamfilter UTF8 feature.
Many systems come with older PCRE2 versions so this means we will
fall back to the shipped PCRE2 version in UnrealIRCd. This means
./Config will take a little longer to compile things.

Although there is no indication as of now, but if this feature would
break things heavily then it might get reverted or configurable.
This is also why it was added just after 5.0.4 release and not right
before it, it needs some heavy testing.
2020-04-19 17:45:38 +02:00
Bram Matthys 4d85e162aa Bump git version to 5.0.5-dev. 2020-04-19 17:42:43 +02:00
Bram Matthys a8a8196147 *** UnrealIRCd 5.0.4 *** 2020-04-19 14:14:03 +02:00
Bram Matthys f419a61f94 Ubuntu 20.04 needs this change in order to still allow you to enable
TLSv1.0 or TLSv1.1. Otherwise it is impossible to enable by the application.

We are still going to turn off TLSv1.0 and TLSv1.1 by the end of this year
by default. Ubuntu 20.04 is just a couple of months too early. See also
the various browsers who postponed disabling TLSv1.0/TLSv1.1.

Also, regardless of the above, we want the admins running the IRC server
be able to control this and not having such a breaking change be dependant
on some distro default settings.
2020-04-18 12:40:45 +02:00
Bram Matthys 49d595f60c On *LINE removal it showed the wrong person in the notice sent to IRCOps
(on remote servers). It showed the originally setter and not the remover.
Reported by k4be in https://bugs.unrealircd.org/view.php?id=5629
2020-04-17 09:30:59 +02:00
k4bek4be 26c58dce47 Don't suggest old "posix" spamfilter to opers. (#101) 2020-04-16 19:18:37 +02:00
Bram Matthys a3784479a1 UnrealIRCd 5.0.4-rc1 (internal release candidate) 2020-04-15 17:45:17 +02:00
k4bek4be 1b7c03df94 Send RPL_LOGGEDIN numeric to the user on post-registration SASL too (#97) 2020-04-15 09:04:31 +02:00
Bram Matthys 9fab197021 Bump version to 5.0.4-dev. 2020-04-15 08:56:57 +02:00
Bram Matthys 349ee964cc Make the whox module use ModData. 2020-04-15 08:22:55 +02:00
Bram Matthys a6e6e44103 Set default permission for hide-idle-time back to IRCOps only for now.
We will extend the option later in UnrealIRCd 5.0.5.
This purely has to do with keeping the changes for 5.0.4 small and
contained since that will be mostly a bug fix release.
Since 5.0.5 will have more configurable options for hide-idle-time, I
have already renamed the single option that is exposed in 5.0.4
to set::hide-idle-time::policy since set::hide-idle-time is a
configuration block now, see docs at:
https://www.unrealircd.org/docs/Set_block#set%3A%3Ahide-idle-time
2020-04-15 08:17:53 +02:00
Bram Matthys f437593b8d Rewrite and expand notices+logging with regards to server linking / lost link.
When connecting, use slightly different wording (and use it consistently):
"Trying to activate link with server xyz"

When the connection is lost before synced:
"Unable to link with server xyz"

When the connection is lost after fully synced (eg: minutes later):
"Lost server link to xyz"

Important small changes (other than text):
* Log ERRORs from remote servers to the log (previously only shown to ircops)
* Some link errors could have been previously suppressed due to
  old code assuming other parts of the code would send or log the error
  (this would be the case for an error when calling SSL/TLS write functions)
* More?
2020-04-13 13:36:58 +02:00
Bram Matthys 177d017b06 Tiny code cleanup in conf to use allowed_channelchars_strtoval() 2020-04-13 10:06:11 +02:00
Bram Matthys d25f6f6759 Make set::hide-idle-time 'usermode' the default (regular users can set +I).
I think nowadays, with more attention to privacy, we should make this
option settable by users.

See previous commit for more information, or just visit the doc page at
https://www.unrealircd.org/docs/Set_block#set%3A%3Ahide-idle-time
if you want to use a different setting.
2020-04-13 10:02:05 +02:00
Bram Matthys 5dc1502119 New option set::hide-idle-time which configures when/if idle time should
be hidden. The options are: never, always, usermode, oper-usermode.
See https://www.unrealircd.org/docs/Set_block#set::hide-idle-time for
full documentation.

Suggested by Koragg, via https://bugs.unrealircd.org/view.php?id=5355

Module coders: before disclosing idle time, please call this function:
int hide_idle_time(Client *client, Client *target);
In UnrealIRCd we use it from WHOIS and WHO.
2020-04-13 10:00:27 +02:00
Bram Matthys 55ecfee0a4 Show in /WHOIS if a user is currently shunned. Only works for locally
connected users for technical reasons, so you will have to use double
whois to see it for remotes (/WHOIS Nick Nick) just like with idle time.

Suggested in https://bugs.unrealircd.org/view.php?id=5519
2020-04-13 08:50:18 +02:00
Bram Matthys c5ba66fbf6 UnrealIRCd was ignoring set::ident::read-timeout and using
set::ident::connect-timeout for the read timeout also.
This could lead to failed ident lookups on higher latency connections
because it only gave 3 seconds for the entire ident lookup rather than
the (max) 10 seconds that was intended.
Now both values are properly obeyed (3 for connect, 7 for read
timeouts, by default).
2020-04-12 17:46:23 +02:00
Bram Matthys a992b30a6a Fix for previous commit... -grin- 2020-04-12 17:08:33 +02:00
Bram Matthys 9887ef6955 Fix possible crash when unloading a module with moddata.
This only happens in some circumstances.

From now on EventDel() will simply mark the event as deleted.
The actual freeing is started in DoEvents() after the event loop.
This makes it safe to use EventDel() everywhere.

The previous attempt to fix that issue was
d29a55a8db but it introduced a
new crash issue for a slightly different case, as mentioned in
https://bugs.unrealircd.org/view.php?id=5553
2020-04-12 16:52:43 +02:00