Unreal 3.4-alpha3 released

News about the UnrealIRCd project, including release announcements
Post Reply
UnrealIRCd head coder
Posts: 2089
Joined: Sat Mar 06, 2004 8:57 pm
Location: .nl

Unreal 3.4-alpha3 released

Post by Syzop »

Development of 3.4.x is going well ! Previous alpha version was released only a month ago but all the changes since then warrant a 3.4-alpha3 release. In 1-2 months we plan to move 3.4.x to 'beta' stage so we can have a 'stable' release by the end of this year (2015).

Notable changes in alpha3 are in the /SPAMFILTER command (also supports non-regex, simple '?' and '*' matching), the move to PCRE regex engine which uses a slightly different syntax but is considerably faster, bcrypt password hashing support (very secure, now the default), more secure defaults and warnings when doing something insecure, etc.

There have been many changes in the configuration file (compared to 3.2.x and previous alpha) so we now provide an easy to use tool which will convert your existing configuration file to the new style in 3.4-alpha3.

Full release notes:

Code: Select all

Unreal3.4-alpha3 Release Notes

This is the third 'alpha' version of UnrealIRCd 3.4. We plan to move to
'beta' stage in 1-2 months and have a stable 3.4.x release later in 2015.

IMPORTANT REMARKS as long as UnrealIRCd 3.4.x is in alpha stage:
* Because this is an alpha version it is far more likely to crash or hang.
* Security issues are handled as regular issues (no security advisories!)
* Linking with 3.2.x servers is supported but highly untested.
* Things are likely to change between alpha versions. Including but not
  limited to: configuration, command syntax, location of files, etc.

* You should never run 3.4-alpha3 as a production server
* You should not link 3.4-alpha3 with a production 3.2.x network

Please do:
* Install 3.4-alpha3 to play around, show to your friends, have fun with
  the latest features and improvements, test things.
* Report any problems, bugs, issues and other feedback on
  https://bugs.unrealircd.org/ so we can improve 3.4.x!
  During alpha stage we are still very flexible so feedback is really helpful.

* If you are moving from 3.2.x then be sure to read 'CONFIGURATION CHANGES'!
* The documentation has not been updated to reflect the changes in 3.4.x.

* Documentation is still in doc\unreal32docs.html but - as said - is not
  up to date for 3.4.x. FAQ is on: http://www.unrealircd.com/faq
* Please report bugs at http://bugs.unrealircd.org/
* Below you will see a summary of all changes. Changes may be tagged when
  a change was made in a specific version, e.g. "(A3)" means 3.4-alpha3.
  For a complete list of changes (500+) use 'git log' or have a look at

UnrealIRCd 3.4.x comes with an easy to use tool to upgrade your configuration
file from the 3.2.x syntax to 3.4.x. If you already have a good working
3.2.x configuration file then this should make it very easy to move to 3.4.x.

After UnrealIRCd is compiled/installed you copy your unrealircd.conf over
from 3.2.x (along with any other custom .conf's).
Then, on *NIX run './unreal upgrade-conf'.
On Windows simply try to boot and watch all the errors, click OK and
you will be asked if UnrealIRCd should upgrade your configuration file.

UnrealIRCd will go through your unrealircd.conf and any other files that
are included from there and upgrade the files one by one.

For both *NIX and Windows, after running the step from above, simply
start UnrealIRCd (again) and it should boot up fine with your freshly
converted configuration file(s).

Note: UnrealIRCd can only convert *working* 3.2.x configuration files!
If your 3.2.x configuration contains mistakes or errors then the upgrade
process will likely fail or the resulting config file will fail to load.

You may still be interested in the configuration changes, they are
listed on: https://www.unrealircd.org/docs/Upgrading_from_3.2.x

==[ NEW ]==
* We moved a lot of channel and user modes to modules. These are all
  loaded by modules.conf, but if you don't want to load a certain module
  you can now simply comment them out or remove that line.
  Since a lot of code has been moved from the core to these modules it
  makes it A) easier for coders to see all source code related to a
  specific feature, and B) makes it possible to fix something and reload
  the module rather than restart the IRCd.
* Entirely rewritten I/O and event loop. This allows the IRCd to scale
  more easily to tens of thousands of clients by using kernel-evented I/O
  mechanisms such as epoll and kqueue.
* Memory pooling has been added to improve memory allocation efficiency
  and performance.
* The local nickname length can be modified without recompiling the IRCd
* Channel Mode +d: This will hide joins/parts for users who don't say
  anything in a channel. Whenever a user speaks for the first time they
  will appear to join. Chanops will still see everyone joining normally
  as if there was no +d set.
* If you connect with SSL/TLS then your SSL Fingerprint (SHA256 hash) can
  be seen by yourself and others through /WHOIS. The fingerprint is also
  shared (broadcasted) with all servers on the network. In alpha3 we
  will add more features that will use SSL fingerprints. (A2)
* bcrypt has been added as a password hashing algorithm and is now the
  preferred algorithm (A3)
* './unreal mkpasswd' will now prompt you for the password to hash (A3)
* Protection against SSL renegotiation attacks (A3)
* When you link two servers the current timestamp is exchanged. If the
  time differs more than 60 seconds then servers won't link and it will
  show a message that you should fix your clock(s). This requires
  version 3.4-alpha3 (or later) on both ends of the link (A3)
* Configuration file converter that will upgrade your 3.2.x conf to 3.4.x.
  On *NIX run './unreal upgrade-conf'. On Windows simply try to boot and
  after the config errors screen UnrealIRCd offers the conversion. (A3)

==[ CHANGED ]==
* Numerics have been removed. Instead we now use SIDs (Server ID's) and
  UIDs (User ID's). SIDs work very similar to server numerics and UIDs
  help us to fix a number of lag-related race conditions / bugs.
* The module commands.so / commands.dll has been removed. All commands
  (those that are modular) are now in their own module.
* Self-signed certificates are now generated using 4096 bits, a SHA256
  hash and validity of 10 years. (A2)
* Building with SSL (OpenSSL) is now mandatory (A2)
* The link { } block has been restructured, see
  https://www.unrealircd.org/docs/Upgrading_from_3.2.x#Link_block (A3)
* Better yet, check out our secure server linking tutorial:
* If you have no set::throttle block you now get a default of 3:60 (A3)
* password entries in the conf no longer require specifying an auth-type
  like password "..." { md5; };. UnrealIRCd will now auto-detect. (A3)
* You will now see a warning when you link to a non-SSL server. (A3)
* Previously we used POSIX Regular expressions in spamfilters and at
  some other places. We have now moved to PCRE Regular expressions.
  They look very similar, but PCRE is a lot faster.
  For backwards-compatibility we still compile with both regex engines. (A3)
* Spamfilter command syntax has been changed, it now has an extra option
  to indicate the matching method:
  /SPAMFILTER [add|del|remove|+|-] [method] [type] ....
  Where 'method' can be one of:
  * -regex: this is the new fast PCRE2 regex engine
  * -simple: supports just strings and ? and * wildcards (super fast)
  * -posix: the old regex engine for compatibility with 3.2.x.  (A3)
* If you have both 3.2.x and 3.4.x servers on your network then the
  3.4.x server will only send spamfilters of type 'posix' to the 3.2.x
  servers because 3.2.x servers don't support the other two types.
  So in a mixed network you probably want to keep using 'posix' for
  a while until all your UnrealIRCd servers are on 3.4.x. (A3)
* set::oper-only-stats now defaults to "*"
* oper::from::userhost and vhost::from::userhost are now called
  oper::mask and vhost::mask. The usermask@ part is now optional and
  it supports two syntaxes. For one entry you can use: mask 1.2.3.*;
  For multiple entries the syntax is: mask { 192.168.*; 10.*; };
* Because having both allow::ip and allow::hostname in the same allow
  block was highly confusing (it was an OR-match) you must now choose
  between either allow::ip OR allow::hostname. (A3)

* A lot of technical documentation for module coders has been added
  at https://www.unrealircd.org/docs/ describing things like how to
  write a module from scratch, the User & Channel Mode System, Commands,
  Command Overrides, Hooks, attaching custom-data to users/channels,
  and more. (A2+)
* Added MOD_OPT_PERM_RELOADABLE which permits reloading (eg: upgrades)
  but disallows unloading of a module (A3)
* There have been *a lot* of source code cleanups (ALL)

* Crash bug on-boot in alpha1 (A2)
* IRCOp commands such as /GLINE were not always working (A2)
* This is still an alpha release, so likely contains major issues

* Errors in example configuration files (A2)
* Some fixes in delayjoin (Channel mode +d) (A2)
* Deal with services who allow you to log in by account name (A3)

* Numeric server IDs, see above. (A1)
* PROTOCTL TOKEN and SJB64 are no longer implemented. (A1)
* Ziplinks have been removed. (A1)
* WebTV support. (A3)

* Documentation has NOT been updated to reflect 3.4.x features!!!
Post Reply