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

6294 Commits

Author SHA1 Message Date
Bram Matthys 29fd2e772a ** UnrealIRCd 6.0.2 ** 2022-01-28 17:02:19 +01:00
Bram Matthys f650239b4f Add "./unrealircd module-status" to show currently loaded modules,
including version, description, author, flags. The output is
pretty much identical to "MODULE -all" on IRC as IRCOp.

Useful for the future if you want to verify a module has been
upgraded from the command line.
2022-01-28 08:45:20 +01:00
Bram Matthys 83e74893da Relookup reputation and geo information when client IP changes due to WEBIRC
or another type of proxy request.
This fixes a problem where ban user { } or except ban { } is not working
for ~country:XX when the request comes via a WEBIRC or other proxy.
Reported by CaoS in https://bugs.unrealircd.org/view.php?id=6058
It should also fix security-group being incorrect for ~security-group bans
or exempts.
2022-01-17 08:09:15 +01:00
Bram Matthys d4f09f8fed HOOKTYPE_*_CHANGED -> HOOKTYPE_*_CHANGE to be a bit more consistent with
the rest of the hooks, most of which do not use the past tense.
Only affects HOOKTYPE_USERHOST_CHANGE / HOOKTYPE_REALNAME_CHANGE.

This does, however, make it inconsistent with the userhost_changed()
call, though :D.
2022-01-17 08:02:18 +01:00
Bram Matthys f3d827c577 Add HOOKTYPE_IP_CHANGE and call it when the IP address changes.
Eg for WEBIRC or other proxy.

This does not yet fix any problem, it just changes the way things are
called. More to follow.
2022-01-17 07:55:45 +01:00
i c1ec164a65 fix flat-map display 2022-01-08 03:46:09 +03:00
Bram Matthys 35c3c87dc4 ** UnrealIRCd 6.0.2-rc1 ** 2022-01-07 14:07:36 +01:00
Bram Matthys 60a70acd86 channeldb: convert letter extbans to named extbans (.db for +P channels) 2022-01-07 12:10:10 +01:00
Bram Matthys 329fd07f3a Revert set::spamfilter::utf8-support from yesterday.
This will be for a later release, needs more thought and work.
2022-01-06 18:03:26 +01:00
Bram Matthys bd05cdf779 Don't do GeoIP lookups for remote users. These are already looked up and
synced by the server the user is on, and this way the country will be
consistently the same on all servers (and not BE on one, and NL on another,
which would be confusing for the ban matching code, giving different
results on each server).
2022-01-06 15:31:54 +01:00
Bram Matthys 7f794aa7d7 Fix log message on vhost-flood 2022-01-06 08:44:59 +01:00
Bram Matthys dedff543b5 Add option set::spamfilter::utf8-support which defaults to 'no' for now.
When you set this to 'yes' you get more options...
See next (modified) copy-paste from April 2020, which had to be reverted
because PCRE2 was broken. Now it's an opt-in and hopefully matured a bit.

This 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. Now, that
version turned out to be buggy. As recent as PCRE 10.36 some major bugs
were fixed. This also means we now require at least PCRE2 10.36 version
so everyone can benefit from this new spamfilter UTF8 feature, IF they
enable set::spamfilter::utf8-support, that is.

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.

For packagers (rpm/deb/ports): if you choose to patch configure to
not require such a recent PCRE2, then please do not allow enabling
of set::spamfilter::utf8-support since it will likely cause crashes
and misbehavior. Check PCRE2 changelog, CTRL+F at PCRE2_MATCH_INVALID_UTF
2022-01-05 18:08:52 +01:00
Bram Matthys d156a18aba Set defaults for vhost-flood
https://www.unrealircd.org/docs/Anti-flood_settings#vhost-flood
2022-01-05 17:26:32 +01:00
Bram Matthys df0884981e Handle empty strings in config_checkval() 2022-01-05 11:36:46 +01:00
i 1c4da04346 add WHO parameter for searching by connect time 2022-01-04 21:25:36 +03:00
i 7430d3718a add support for rate limiting -x/-t (set::anti-flood::<groupname>::vhost-flood) 2022-01-04 21:23:57 +03:00
i d8f440e9e7 add map percentages 2022-01-04 21:21:38 +03:00
Bram Matthys 33dac730c7 When a remote server forgets to send the TS in a MODE message with the
sender being a server, then we now spread it on with a zero TS so we
avoid a potential desync elsewhere, or at least try to limit it.
2022-01-04 11:10:40 +01:00
Bram Matthys 3818b9eb45 Make unrealircdctl spkifp actually work on Windows 2022-01-03 17:49:29 +01:00
Bram Matthys 4d2cefdbed Fix for Windows build (old srandom call). 2022-01-03 17:05:57 +01:00
Bram Matthys 34fda671f8 And some more config priorities (not important yet) 2022-01-03 17:01:56 +01:00
Bram Matthys 8e7eacadfe Swap order of config_run_blocks() and config_test_blocks() since that
makes more sense when reading the source code.
2022-01-03 16:56:25 +01:00
Bram Matthys 9fef375d0a Make reading priority of config blocks a simple array. 2022-01-03 16:55:47 +01:00
Bram Matthys 92c81b194f Move "spkifp" to unrealircdctl, so it is available for Windows users.
For *NIX users no visible change.
2022-01-03 14:48:00 +01:00
Bram Matthys 3dd7c19c77 Move "gencloak" to unrealircdctl, so it is available for Windows users.
For *NIX users no visible change.
2022-01-03 14:28:10 +01:00
Bram Matthys e35c29f3d5 Move mkpasswd operation to unrealircdctl. For *NIX users no change as this
is done behind-the-scenes (the command is still ./unrealircd mkpasswd).
For Windows users it finally means they can generate passwords via the CLI
using: unrealircdctl mkpasswd pwdhere
2022-01-03 14:14:12 +01:00
Bram Matthys 243c6635da Update /STATS P output a little (since it shows the control channel). 2022-01-03 13:51:46 +01:00
Bram Matthys 5425c8fbb6 Don't fail on versions older than Windows 10 version 1803.
And be a bit more informative on why unrealircdctl fails on those.
2022-01-03 13:31:24 +01:00
Bram Matthys c02eb3f16c Windows code cleanup: WSAStartup() -> init_winsock() 2022-01-03 13:19:22 +01:00
Bram Matthys 98c0e786b5 Make UnrealIRCd compile on Windows again.
Updated the makefile to build unrealircdctl.exe etc.
2022-01-03 13:10:53 +01:00
Bram Matthys c0c265baee Fix some (totally unimportant) resource leaks and fix a case where,
if UnrealIRCd hung up on client communication without saying goodbye,
we would return a 0 exit code (success).
2022-01-03 09:03:23 +01:00
Bram Matthys a4af100ca8 Memory isn't initialized to zero by dbuf_queue_init(), causing
dbuf->length to be unitialized.
This wasn't an actual problem until yesterday in UnrealIRCd code,
since the whole client struct was initialized to zero, including
client->local->sendQ(->length) etc.
However, now we use the dbuf code elsewhere too (on the stack) and
3rd party modules can use it too, so fix this bug.
2022-01-03 09:02:54 +01:00
Bram Matthys 75a2fde672 Merge branch 'unreal60_dev' of github.com:unrealircd/unrealircd into unreal60_dev 2022-01-02 20:19:21 +01:00
Bram Matthys 39688517b0 Make "./unrealircd rehash" show output on the terminal, same for
"./unrealircd reloadtls" and there is now also a "./unrealircd status"

The output is colorized if the terminal supports it (just like on the
boot screen) and also the exit status is 0 for success and non-0 for
failure. The purpose of all this is that you can easily detect rehash
errors on the command line.

These three commands communicate to UnrealIRCd via the new control
UNIX socket, which is in ~/data/unrealircd.ctl.
This also does a lot of other stuff because we now have an internal
tool called bin/unrealircdctl which is called by ./unrealircd for
some of the commands to communicate to the unrealircd.ctl socket.
Later on more of the existing functionality may be moved to that
tool and we may also provide it on Windows in CLI mode so people
have more of the same functionality as on *NIX.
2022-01-02 20:17:36 +01:00
k4be d8bb78677f Add TS to s2s MODE messages generated by SVS(2)MODE
(if the source is a server).
2022-01-02 20:09:57 +01:00
Bram Matthys 834736070e Make "SVS(2)MODE -b user" work properly for extended bans.
It was missing for a lot of extbans (removing too little) and
for ~t it was removing too much (eg quiet bans).
Bug reported and changes suggested by k4be.

Coders:
Setting extban.options to EXTBOPT_CHSVSMODE has no effect anymore,
just didn't want to remove it so modules would still compile.
We now purely match based on .is_banned_events including BANCHK_JOIN.
2022-01-02 13:12:33 +01:00
Bram Matthys 46bdc1c5e1 Print message about outdated release if automatically rejected by crash handler. 2022-01-02 09:32:33 +01:00
Bram Matthys dbef19cd7a Add initial implementation of UNIX domain sockets (listen::file).
Various things still need to be done: a lot more testing, ability to
set permissions on the file, #ifdef's because of lack of support
on Windows (currently won't compile), etc.

One thing that I don't intend to change is that I chose not to display
the socket in the host but have clients show up as 'localhost' (and
ip '127.0.0.1'). Doing it this way keeps things easy, otherwise we risk
a lot of breakage for nearly nothing gained, really.

Things can be tested via:
listen {
        file "/tmp/listen";
}

and then with netcat:
nc -U /tmp/listen
USER x x x x
NICK hai
etc...
2022-01-01 18:48:17 +01:00
Bram Matthys 40c528acde Add missing space in spamfilter log message.
This is a fix-for-fix b98d02817a.

Reported by armyn in https://bugs.unrealircd.org/view.php?id=6049
2021-12-30 16:42:29 +01:00
Bram Matthys 4e209968fe Fix hang on "Loading IRCd configuration" if DNS is not working correctly.
For example if the 1st DNS resolver is refusing or ignoring requests.
We forgot to call unrealdns_timeout() in the waiting loop, so DNS requests
never timed out and c-ares didn't try the 2nd/3rd server either.

Issue reported by Elodie.
2021-12-30 14:49:29 +01:00
Bram Matthys c5c17f2ccf Include "client_port" (eg 6697) and "server_port" (eg 55123) in JSON
output for local clients.
2021-12-30 13:20:37 +01:00
Bram Matthys 4ca9e9b3c2 Also support show-event in log::destination::channel. 2021-12-30 11:39:51 +01:00
Bram Matthys d677ce04de New option set::server-notice-show-event which, if set to 'no', can be used
to hide the event information (eg. connect.LOCAL_CLIENT_CONNECT) in
server notices. This can be overriden in oper::server-notice-show-event.

See https://www.unrealircd.org/docs/Set_block#set::server-notice-show-event
2021-12-30 11:29:30 +01:00
Bram Matthys 0f52ff76e8 Add link to https://www.unrealircd.org/docs/Log_block#Logging_to_a_channel
in the release notes.
Also add the sub-options: color, json-message-tag and oper-only.
2021-12-30 10:40:01 +01:00
Bram Matthys 4cb708117a Initial version of snomask logging to channels (more to follow) 2021-12-30 08:59:00 +01:00
Bram Matthys a35e9f7af9 Bump version to 6.0.2-git (start of dev for next version) 2021-12-30 08:58:08 +01:00
Bram Matthys 34c7727eb1 Error on unknown items in log block, eg a leftover log::flags or log::maxsize
from UnrealIRCd 5, or just some incorrect item that does not exist.
2021-12-30 08:16:01 +01:00
Bram Matthys cdc433f8c0 ** UnrealIRCd 6.0.1.1 ** 2021-12-29 19:30:49 +01:00
Bram Matthys 0242b509b8 Fix compatibility between U5 and U6 for named extended bans in SJOIN
when SJSBY is enabled. This caused named bans not to show up properly
(or not at all) on the U5 side when syncing servers.
2021-12-29 19:21:02 +01:00
Bram Matthys faab128472 Bump version to 6.0.1 and create draft release notes (unreleased yet!) 2021-12-29 12:02:57 +01:00