Upgrading from 3.2.x

This page describes the necessary changes if you are upgrading from version 3.2.x to 3.4.x

Note that starting with 3.4-alpha3 UnrealIRCd can convert your existing 3.2.x configuration files to the 3.4.x format. Simply copy your 3.2.x unrealircd.conf (and related files, if any) to your Unreal3.4 directory and run ./unreal upgrade-conf (*NIX). On Windows just launch UnrealIRCd and after you see the list of configuration errors click OK and in next screen you will be asked if you want your configuration files to be upgraded.

Me block
In your me { } block, change your "numeric" to "sid", and change the value as follows: pick a 3 character Server ID that starts with a digit. Example: me { numeric "1"; .. Becomes: me { sid "001"; ..

loadmodule
There have been two major changes with regards to loading modules:
 * The "commands" module is gone and has been replaced with 100+ individual modules
 * 1) Remove the loadmodule lines for commands.so & cloak.so (or commands.dll & cloak.dll)
 * 2) Add the following line to your unrealircd.conf: include "modules.conf";
 * For any remaining loadmodule lines you can (and should!) now use the shorter syntax which is OS-neutral. Instead of: loadmodule "src/modules/somemodule.so"; You should now use: loadmodule "modules/somemodule"; UnrealIRCd will then figure out the exact name of the module. It no longer matters if you are on Windows or *NIX and whether your modules are in src/modules/ or in modules/.

Link block
UnrealIRCd 3.4.x has a new link block. We nowadays recommend linking with SSL/TLS and using SSL Fingerprints for authentication between the two servers. We have written a Tutorial: Linking servers to show just that and it also shows you how to link 3.2.x with 3.4.x. Instead of trying to upgrade your existing link block we suggest following that tutorial and it's best-practices. Yes, even if you have been linking UnrealIRCd servers for over 10 years. If you insist, though, or are just curious about what exactly changed in the link block then see below.

UnrealIRCd 3.2.x link block: link  { username ; hostname ; bind-ip ; port ; password-connect ; password-receive  { ; }; hub ; leaf ; leafdepth ; class ; ciphers ; options { ;       ;        ...    }; };

New block in UnrealIRCd 3.4.x: link  { /* Below, often you will have both an incoming { } and outcoming { } sub-block. * However you may also choose to have only 1 of them if you always link in the same direction. */   incoming { mask 1.2.3.*; };   outgoing { bind-ip ; /* optional now */ hostname irc1.some.net; /* may also be an IP */ port 6697; /* or move the hostname & ip into one item ? irc1.some.net:6697 */ options { ssl; autoconnect; }; /* optional, but recommended */ };   password "some-password"; /* either a plaintext password that's the same for both sides or an SSL fingerprint (or certificate) */ hub ; /* optional */ leaf ; /* optional */ leaf-depth ; /* optional */ class ; ciphers ; /* optional */ options { quarantine; /* is a generic option. optional. */   }; };

As you can see, some directives remain the same, while others have been moved to either the incoming or outgoing section which refer to the incoming side of the link (receiving end) and the outgoing side (the one doing the outside connect) respectively. The reason for this is that the old link block was highly confusing as to whether settings applied to incoming, outgoing or both. Also, when it applied to both it actually prevented you from doing some things, such as: specifying a DNS name to connect to outgoing (eg: now link::outgoing::hostname blah.dyndns.org) and to still restrict the IP incoming (eg: link::incoming::mask *@93.17.*). Now you can still have an IP (mask) restriction while connecting via DNS.

Other than the incoming::mask and outgoing::hostname split (and move of other items), another major change is password. There's now only a single password item and no longer two, as this provided very little benefit. We now recommend the use of SSL fingerprints for authentication which can be used as a password (this was also possible in 3.2.x). If you don't want to use that and prefer to ignore our Tutorial: Linking servers then you can just set a plaintext password instead.

Finally, with the new link block a lot of it is made optional. You may leave out the whole outgoing part if you only accept the link as incoming, for example for a services link block. Similarly, you may leave out incoming if you have an outgoing block. Within the outgoing block only hostname and port are mandatory (though you probably want to enable ssl via options there as well, and possibly autoconnect). Outside incoming and/or outgoing only password and class are mandatory, all the rest is optional. If you don't specify any of the hub or leaf options we assume hub *; (in other words: link may introduce any other servers).

Spamfilter
TODO!!


 * spamfilter::regex is now spamfilter::mask
 * you need to explicitly set spamfilter::mask-type to one of: posix for old 3.2.x style regexes, regex for fast PCRE regexes (new in 3.4.x) or simple for ultra-fast regular matching which only supports the ? and * wildcards.