2022-01-14 21:16:34 -08:00
|
|
|
UnrealIRCd 6.0.1.1
|
|
|
|
===================
|
|
|
|
If you are already running UnrealIRCd 6 then read below on the
|
|
|
|
changes between 6.0.0 and 6.0.1(.1). Otherwise, jump straight to the
|
|
|
|
[summary about UnrealIRCd 6](#Summary) to learn more about UnrealIRCd 6.
|
2021-03-21 10:05:35 -07:00
|
|
|
|
|
|
|
Fixes:
|
2022-01-14 21:16:34 -08:00
|
|
|
* In 6.0.1.1: extended bans were not properly synced between U5 and U6.
|
|
|
|
This caused missing extended bans on the U5 side (MODE was working OK,
|
|
|
|
this only happened when linking servers)
|
|
|
|
* Text extbans did not have any effect (`+b ~text:censor:*badword*`)
|
|
|
|
* Timed bans were not expiring if all servers on the network were on U6
|
|
|
|
* Channel mode `+f` could place a timed extban with `~t` instead of `~time`
|
|
|
|
* Crash when unloading any of the vhoaq modules at runtime
|
|
|
|
* `./unrealircd upgrade` not working on FreeBSD and not with self-compiled cURL
|
|
|
|
* Some log messages being wrong (`CHGIDENT`, `CHGNAME`)
|
|
|
|
* Remove confusing high cpu load warning
|
2020-07-16 15:06:52 -07:00
|
|
|
|
|
|
|
Enhancements:
|
2022-01-14 21:16:34 -08:00
|
|
|
* Error on unknown snomask in set::snomask-on-oper and oper::snomask.
|
|
|
|
* TKL add/remove/expire messages now show `[duration: 60m]` instead of
|
|
|
|
the `[expires: ZZZ GMT]` string since that is what people are more
|
|
|
|
interested in and is not affected by time zones. The format in all the
|
|
|
|
3 notices is also consistent now.
|
2020-07-16 15:06:52 -07:00
|
|
|
|
2022-01-14 21:16:34 -08:00
|
|
|
UnrealIRCd 6.0.0
|
2020-07-16 15:06:52 -07:00
|
|
|
-----------------
|
|
|
|
|
2022-01-14 21:16:34 -08:00
|
|
|
Many thanks to k4be for his help during development, other contributors for
|
|
|
|
their feedback and patches, the people who tested the beta's and release
|
|
|
|
candidates, translators and everyone else who made this release happen!
|
2020-03-29 02:16:53 -07:00
|
|
|
|
|
|
|
Summary
|
|
|
|
--------
|
2022-01-14 21:16:34 -08:00
|
|
|
UnrealIRCd 6 comes with a completely redone logging system (with optional
|
|
|
|
JSON support), named extended bans, four new IRCv3 features,
|
|
|
|
geoip support and remote includes support built-in.
|
|
|
|
|
|
|
|
Additionally, things are more customizable such as what gets sent to
|
|
|
|
which snomask. All the +vhoaq channel modes are now modular as well,
|
|
|
|
handy for admins who don't want or need halfops or +q/+a.
|
|
|
|
For WHOIS it is now customizable in detail who gets to see what.
|
|
|
|
|
|
|
|
A summary of the features is available at
|
|
|
|
[What's new in UnrealIRCd 6](https://www.unrealircd.org/docs/What's_new_in_UnrealIRCd_6).
|
|
|
|
For complete information, continue reading the release notes below.
|
|
|
|
The sections below contain all the details.
|
|
|
|
|
|
|
|
Upgrading from UnrealIRCd 5
|
|
|
|
----------------------------
|
|
|
|
The previous stable series, UnrealIRCd 5, will no longer get any new features.
|
|
|
|
We still do bug fixes until July 1, 2022. In the 12 months after that, only
|
|
|
|
security issues will be fixed. Finally, after July 1, 2023,
|
|
|
|
[all support will stop](https://www.unrealircd.org/docs/UnrealIRCd_5_EOL).
|
|
|
|
|
|
|
|
If you want to hold off for a while because you are cautious or if you
|
|
|
|
depend on 3rd party modules (which may not have been upgraded yet by their
|
|
|
|
authors) then feel free to wait a while.
|
|
|
|
|
|
|
|
If you are upgrading from UnrealIRCd 5 to 6 then you can use your existing
|
|
|
|
configuration and files. There's no need to start from scratch.
|
|
|
|
However, you will need to make a few updates, see
|
|
|
|
[Upgrading from 5.x to 6.x](https://www.unrealircd.org/docs/Upgrading_from_5.x).
|
2020-03-29 02:16:53 -07:00
|
|
|
|
|
|
|
Enhancements
|
|
|
|
-------------
|
2022-01-14 21:16:34 -08:00
|
|
|
* Completely new log system and snomasks overhaul
|
|
|
|
* Both logging and snomask sending is done by a single logging function
|
|
|
|
* Support for [JSON logging](https://www.unrealircd.org/docs/JSON_logging)
|
|
|
|
to disk, instead of the default text format.
|
|
|
|
JSON logging adds lot of detail to log messages and consistently
|
|
|
|
expands things like *client* with properties like *hostname*,
|
|
|
|
*connected_since*, *reputation*, *modes*, etc.
|
|
|
|
* The JSON data is also sent to all IRCOps who request the
|
|
|
|
`unrealircd.org/json-log` capability. The data is then sent in
|
|
|
|
a message-tag called `unrealircd.org/json-log`. This makes it ideal
|
|
|
|
for client scripts and bots to do automated things.
|
|
|
|
* A new style log { } block is used to map what log messages should be
|
|
|
|
logged to disk, and which ones should be sent to snomasks.
|
|
|
|
* The default logging to snomask configuration is in `snomasks.default.conf`
|
|
|
|
which everyone should include from unrealircd.conf. That is, unless you
|
|
|
|
wish to completely reconfigure which logging goes to which snomasks
|
|
|
|
yourself, which is also an option now.
|
|
|
|
* See [Snomasks](https://www.unrealircd.org/docs/Snomasks#UnrealIRCd_6)
|
|
|
|
on the new snomasks - lots of letters changed!
|
|
|
|
* See [FAQ: Converting log { } block](https://www.unrealircd.org/docs/FAQ#old-log-block)
|
|
|
|
on how to change your existing log { } blocks for disk logging.
|
|
|
|
* We now have a consistent log format and log messages can be multiline.
|
|
|
|
* Colors are enabled by default in snomask server notices, these can be disabled via
|
|
|
|
[set::server-notice-colors](https://www.unrealircd.org/docs/Set_block#set::server-notice-colors)
|
|
|
|
and also in [oper::server-notice-colors](https://www.unrealircd.org/docs/Oper_block)
|
|
|
|
* Almost all channel modes are modularized
|
|
|
|
* Only the three list modes (+b/+e/+I) are still in the core
|
|
|
|
* The five [level modes](https://www.unrealircd.org/docs/Channel_Modes#Access_levels)
|
|
|
|
(+vhoaq) are now also modular. They are all loaded by default but you can
|
|
|
|
blacklist one or more if you don't want them. For example to disable halfop:
|
|
|
|
`blacklist-module chanmodes/halfop;`
|
|
|
|
* Support for compiling without PREFIX_AQ has been removed because
|
|
|
|
people often confused it with disabling +a/+q which is something
|
|
|
|
different.
|
|
|
|
* Named extended bans
|
|
|
|
* Extbans now no longer show up with single letters but with names.
|
|
|
|
For example `+b ~c:#channel` is now `+b ~channel:#channel`.
|
|
|
|
* Extbans are automatically converted from the old to the new style,
|
|
|
|
both from clients and from/to older UnrealIRCd 5 servers.
|
|
|
|
The auto-conversion also works fine with complex extbans such as
|
|
|
|
`+b ~t:5:~q:nick!user@host` to `+b ~time:5:~quiet:nick!user@host`.
|
|
|
|
* New IRCv3 features:
|
|
|
|
* [MONITOR](https://ircv3.net/specs/extensions/monitor.html): an
|
|
|
|
alternative for `WATCH` to monitor other users ("notify list").
|
|
|
|
* draft/extended-monitor: extensions for MONITOR, still in draft.
|
|
|
|
* [invite-notify](https://ircv3.net/specs/extensions/invite-notify):
|
|
|
|
report channel invites to other chanops (or users) in a machine
|
|
|
|
readable way.
|
|
|
|
* [setname](https://ircv3.net/specs/extensions/setname.html):
|
|
|
|
notify clients about realname (gecos) changes.
|
|
|
|
* GeoIP lookups are now done by default
|
|
|
|
* This shows the country of the user to IRCOps in `WHOIS` and in the
|
|
|
|
"user connecting" line.
|
|
|
|
* By default the `geoip_classic` module is loaded, for which we
|
|
|
|
provide a mirror of database updates at unrealircd.org. This uses
|
|
|
|
the classic geolite library that is now shipped with UnrealIRCd
|
|
|
|
* Other options are the `geoip_maxmind` and `geoip_csv` modules.
|
|
|
|
* Configure `WHOIS` output in a very precise way
|
|
|
|
* You can now decide which fields (eg modes, geo, certfp, etc) you want
|
|
|
|
to expose to who (everyone, self, oper).
|
|
|
|
* See [set::whois-details](https://www.unrealircd.org/docs/Set_block#set::whois-details)
|
|
|
|
for more details.
|
|
|
|
* We now ship with 3 cloaking modules and you need to load 1 explicitly
|
|
|
|
via `loadmodule`:
|
|
|
|
* `cloak_sha256`: the recommended module for anyone starting a *new*
|
|
|
|
network. It uses the SHA256 algorithm under the hood.
|
|
|
|
* `cloak_md5`: for anyone who is upgrading their network from older
|
|
|
|
UnrealIRCd versions. Use this so your cloaked host bans remain the same.
|
|
|
|
* `cloak_none`: if you don't want any cloaking, not even as an option
|
|
|
|
to your users (rare)
|
|
|
|
* Remote includes are now supported everywhere in the config file.
|
|
|
|
* Support for `https://` fetching is now always available, even
|
|
|
|
if you don't compile with libcurl support.
|
|
|
|
* Anywhere an URL is encountered on its own, it will be fetched
|
|
|
|
automatically. This makes it work not only for includes and motd
|
|
|
|
(which was already supported) but also for any other file.
|
|
|
|
* To prevent something from being interpreted as a remote include
|
|
|
|
URL you can use 'value' instead of "value".
|
|
|
|
* Invite notification: set `set::normal-user-invite-notification yes;` to make
|
|
|
|
chanops receive information about normal users inviting someone to their channel.
|
|
|
|
The name of this setting may change in a later version.
|
|
|
|
* Websocket: you can add a `listen::options::websocket::forward 1.2.3.4` option
|
|
|
|
to make unrealircd accept a `Forwarded` (RFC 7239) header from a reverse proxy
|
|
|
|
connecting from `1.2.3.4` (plans to accept legacy `X-Forwarded-For` and a proxy
|
|
|
|
password too). This feature is currently experimental.
|
|
|
|
|
|
|
|
Changes
|
2020-03-29 02:16:53 -07:00
|
|
|
--------
|
2022-01-14 21:16:34 -08:00
|
|
|
* TLS cipher and some other information is now visible for remote
|
|
|
|
clients as well, also in `[secure: xyz]` connect line.
|
|
|
|
* Error messages in remote includes use the url instead of a temporary file
|
|
|
|
* Downgrading from UnrealIRCd 6 is only supported down to 5.2.0 (so not
|
|
|
|
lower like 5.0.x). If this is a problem then make a copy of your db files
|
|
|
|
(eg: reputation.db).
|
2020-03-29 02:16:53 -07:00
|
|
|
|
|
|
|
Removed
|
|
|
|
--------
|
2022-01-14 21:16:34 -08:00
|
|
|
* /REHASH -motd and -opermotd are gone, just use /REHASH
|
2020-03-29 02:16:53 -07:00
|
|
|
|
2022-01-14 21:16:34 -08:00
|
|
|
Breaking changes
|
|
|
|
-----------------
|
|
|
|
See https://www.unrealircd.org/docs/Upgrading_from_5.x, but in short:
|
|
|
|
|
|
|
|
You can use the unrealircd.conf from UnrealIRCd 5, but you need to make
|
|
|
|
a few changes:
|
|
|
|
* You need to add `include "snomasks.default.conf";`
|
|
|
|
* You need to load a cloaking module explicitly. Assuming you already
|
|
|
|
have a network then add: `loadmodule "cloak_md5";`
|
|
|
|
* The log block(s) need to be updated, use something like:
|
|
|
|
```
|
|
|
|
log {
|
|
|
|
source {
|
|
|
|
!debug;
|
|
|
|
all;
|
|
|
|
}
|
|
|
|
destination {
|
|
|
|
file "ircd.log" { maxsize 100M; }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Module coders (API changes)
|
|
|
|
----------------------------
|
|
|
|
* Be sure to bump the version in the module header from `unrealircd-5` to `unrealircd-6`
|
|
|
|
* We use a lot more `const char *` now (instead of `char *`). In particular `parv`
|
|
|
|
is const now and so are a lot of arguments to hooks. This will mean that in your
|
|
|
|
module you have to use more const too. The reason for this change is to indicate
|
|
|
|
that certain strings should not be touched, as doing so is dangerous or could
|
|
|
|
have had side-effects that were unpredictable.
|
|
|
|
* Logging has been completely redone. Don't use `ircd_log()`, `sendto_snomask()`,
|
|
|
|
`sendto_ops()` and `sendto_realops()` anymore. Instead use `unreal_log()` which
|
|
|
|
handles both logging to disk and notifying IRCOps.
|
|
|
|
* Various struct member names changed, in particular in `ConfigEntry` and `ConfigFile`,
|
|
|
|
but also `channel->chname` is `channel->name` now.
|
|
|
|
* get_channel() is now make_channel() and creates if needed, otherwise use find_channel()
|
|
|
|
* The Extended Ban API has been changed a lot. We use a `BanContext` struct now
|
|
|
|
that we pass around a lot. You also don't need to do `+3` magic anymore on the
|
|
|
|
string as it is handled in another layer. When registering the extended ban,
|
|
|
|
`.flag` is now `.letter`, and you also need to set a `.name` to a string due
|
|
|
|
to named extended bans. Have a look at the built-in extban modules to see
|
|
|
|
how to handle the changes.
|
|
|
|
* ModData now has an option `MODDATA_SYNC_EARLY`. See under *Server protocol*.
|
|
|
|
* If you want to lag someone up, don't touch `client->since`, but instead use:
|
|
|
|
`add_fake_lag(client, msec)`
|
|
|
|
* Some client/user struct changes, with `client->user->account` (instead of svid)
|
|
|
|
and `client->uplink->name` being the most important ones.
|
|
|
|
* Possibly more, but above is like 90%+ of the changes that you will encounter.
|
2020-03-29 02:16:53 -07:00
|
|
|
|
|
|
|
Server protocol
|
|
|
|
----------------
|
2022-01-14 21:16:34 -08:00
|
|
|
* When multiple related `SJOIN` messages are generated for the same channel
|
|
|
|
then we now only send the current channel modes (eg `+sntk key`) in the
|
|
|
|
first SJOIN and not in the other ones as they are unneeded for the
|
|
|
|
immediate followup SJOINs, they waste unnecessary bytes and CPU.
|
|
|
|
Such messages may be generated when syncing a channel that has dozens
|
|
|
|
of users and/or bans/exempts/invexes. Ideally this should not need any
|
|
|
|
changes in other software, since we already supported such messages in the
|
|
|
|
past and code for handling it exists way back to 3.2.x, but you better
|
|
|
|
check to be sure!
|
|
|
|
* If you send `PROTOCTL NEXTBANS` then you will receive extended bans
|
|
|
|
with Named EXTended BANs instead of letters (eg: `+b ~account:xyz`),
|
|
|
|
otherwise you receive them with letters (eg: `+b ~a:xyz`).
|
|
|
|
* Some ModData of users is (also) communicated in the `UID` message while
|
|
|
|
syncing using a message tag that only appears in server-to-server traffic,
|
|
|
|
`s2s-md/moddataname=value`. Thus, data such as operinfo, tls cipher,
|
|
|
|
geoip, certfp, sasl and webirc is communicated at the same time as when
|
|
|
|
a remote connection is added.
|
|
|
|
This makes it that a "connecting from" server notice can include all this
|
|
|
|
information and also so code can make an immediate decission on what to do
|
|
|
|
with the user in hooks. ModData modules need to set
|
|
|
|
`mreq.sync = MODDATA_SYNC_EARLY;` if they want this.
|
|
|
|
Servers of course need to enable `MTAGS` in PROTOCTL to see this.
|
|
|
|
* The `SLOG` command is used to broadcast logging messages. This is done
|
|
|
|
for log::destination remote, as used in doc/conf/snomasks.default.conf,
|
|
|
|
for example for link errors, oper ups, flood messages, etc.
|
|
|
|
It also includes all JSON data in a message tag when `PROTOCTL MTAGS` is used.
|
|
|
|
* Bounced modes are gone: these were MODEs that started with a `&` which
|
|
|
|
servers were to act on with reversed logic (add becoming remove and
|
|
|
|
vice versa) and never to send something back to that server.
|
|
|
|
In practice this was almost never used and complicated the code (way)
|
|
|
|
too much.
|
2020-03-29 02:16:53 -07:00
|
|
|
|
|
|
|
Client protocol
|
|
|
|
----------------
|
2022-01-14 21:16:34 -08:00
|
|
|
* Extended bans now have names instead of letters. If a client sends the
|
|
|
|
old format with letters (eg `+b ~a:XYZ`) then the server will
|
|
|
|
convert it to the new format with names (eg: `+b ~account:XYZ`)
|
|
|
|
* Support for `MONITOR` and the other IRCv3 features (see *Enhancements*)
|