Tip of the day: Use set::restrict-commands to prevent new users from executing certain commands like LIST. Useful against drones/spam.

What's new in UnrealIRCd 4

From UnrealIRCd documentation wiki
Jump to navigation Jump to search
Other languages:

This lists the main benefits of UnrealIRCd 4 over UnrealIRCd 3.2.

NOTE: UnrealIRCd 4 is no longer supported. If you read this article then you may also be interested in What's new in UnrealIRCd 5.

  • You decide what to load. We have moved as much functionality as possible to 150+ individually loadable modules (commands, user modes, channel modes, extbans, snomasks, ..). You decide which features your UnrealIRCd should have.
  • Fine-grained IRCOp privileges. The way IRCOp privileges are granted has been redone entirely. This allows you to configure oper privileges on a very detailed level. You don't want OperOverride? You don't want opers to see secret channels? Or you want an oper with a very minimal set of privileges? This is all possible.
  • Wiki. Documentation has been moved to a wiki. It's even better than before and more accessible to people who are new to IRCd's. The wiki also allows easy translation by community members.
  • New directory structure. On *NIX the IRCd is now always installed to a different directory than where you compile from (~/unrealircd by default). No more mess. On both *NIX and Windows configuration files go in conf/, modules go in modules/, etc.. Configuration files can be identical on Windows and *NIX. This new directory structure also allows more easy packaging.
  • New I/O system using kqueue & epoll. The IRCd can now handle thousands of users more easily.
  • Improved SSL/TLS support. UnrealIRCd has SSL support since the year 2000 but takes it to another level with version 4.0. The server is now always built with SSL support, it is no longer optional. SSL client certificate fingerprints are visible in /WHOIS. A new certfp extban (~S:certificatefingerprint). Better defaults including 4096 bit keys and Perfect forward secrecy. Support for Transport Security (STS) forcing your users to use SSL/TLS. Support for Server Name Indication (SNI). And more.
  • DNS Blacklist support (DNSBL/RBL). Great for combating drones and other abusers.
  • Better and more helpful error messages. Especially regarding the configuration file.
  • More modern server-to-server protocol. Such as using UID/SID's. Resulting in less desynch. issues.
  • Lowering the bar for Spamfilter. You can now choose between 'regex' and 'simple' matching. Simple matching allows using the usual '?' and '*' wildcards that everyone knows about. The regex engine has been moved from TRE to PCRE and is now about twice as fast.
  • Configuration is more logical. Around 30% of the configuration blocks have been restructured. Don't worry, we include an UnrealIRCd 3.2.x to UnrealIRCd 4 configuration file converter.
  • Easier 3rd party module management. On *NIX you now just put your 3rd party modules in src/modules/third and then each time you run 'make' they will be compiled if needed.
  • Easier upgrading. On *NIX, when upgrading to a new version, ./Config will ask you to import settings from a previous installation, remembering your installation directory and other settings. It will also copy the 3rd party modules from the old to the new installation and re-compile them.
  • More secure. Even better secure defaults, more warnings about insecure behavior, ..
  • IPv6 now also on Windows

For developers:

  • Easier source navigation. Because we moved almost everything to modules, it's now much easier to see all the code of one particular feature.
  • Cleaner code. There have been a lot of source code cleanups. Code has been restructured or rewritten. Old irrelevant code has been deleted.
  • Development documentation can be found on the wiki. We explain how to write a module in C and list all the details on the various Module API's such as how to write commands, channel modes, plug-in by using Hooks, etc...