(yet another) how-to on compiling Unreal IRCd on Linux. I’m using Debian Etch, but compiling from source anywhere is just a matter of installing the required libraries, getting the source, and typing some standard commands.
Unreal IRCd
First get the programs necessary to compile, then the libraries needed:
$ sudo aptitude install build-essential
$ sudo aptitude install openssl zlib1g-dev
I already had every library I needed, so that list may be incomplete, but I know you at least need openssl (for SSL support) and zlib-dev for ZIPlinks support.
Give your IRCd its own user, for better separation of roles and security. I disable its password because I use SSH keys instead.
$ sudo adduser --disabled-password scnet
Log in as the user however you want. (su, ssh, …)
Get the sources and start configuring:
$ wget "http://www.blurryfox.com/unreal/Unreal3.2.7.tar.gz"
$ tar xvzf Unreal3.2.7.tar.gz && cd Unreal3.2.7/
$ ./Config
Note that this Config script does deviate from the normal “download, untar, configure, make” routine. We’ll see how to avoid this interactive script later.
Do you want to enable the server anti-spoof protection? Yes. It stops certain types of HTTP POST proxies.
What directory are all the server configuration files in? I like moving this to ~/ircd/ to keep it out of the source tree.
What is the path to the ircd binary including the name of the binary? Then this goes at ~/ircd/ircd .
Would you like to compile as a hub or as a leaf? Hub. Why not?
What is the hostname of the server running your IRCd? Should autodetect, if so take it. Default (hit Enter).
What should the default permissions for your configuration files be? Default.
Do you want to support SSL (Secure Sockets Layer) connections? Yes!
If you know the path to OpenSSL on your system, enter it here. Default (blank)
Do you want to enable IPv6 support? Up to you. For me, No, not at this time.
Do you want to enable ziplinks support? Got more than one server, Yes.
If you know the path to zlib on your system, enter it here. Default.
Do you want to enable remote includes? No, I don’t use them.
Do you want to enable prefixes for chanadmin and chanowner? Yes, I do.
What listen() backlog value do you wish to use? The listen backlog allows connection queuing until the server gets around to accepting the connection. I have a modern system, no harm in upping it a bit. 20
How far back do you want to keep the nickname history? This is for /whowas. I like /whowas! Quintuple it to 10000. More if you have busier IRC servers, default if you don’t care.
What is the maximum sendq length you wish to have? Default.
How many buffer pools would you like? Default.
How many file descriptors (or sockets) can the IRCd use? This is aka the max number of connections (clients and servers) you can accept. Default is fine for me, increase if you need it.
Would you like any more parameters to configure? default, blank.
If you don’t have one already, this script will generate and self-sign an SSL key for you, prompting you for some input. By the way, that Config script generated and used a ./configure line, which we can extract, and with some minor changes for portability, use in the future instead of the interactive Config:
./configure --with-showlistmodes --enable-nospoof --enable-hub --enable-ssl --enable-ziplinks --enable-prefixaq --with-listen=20 --with-dpath=$HOME/ircd --with-spath=$HOME/ircd/ircd --with-nick-history=10000 --with-sendq=3000000 --with-bufferpool=18 --with-hostname=`hostname` --with-permissions=0600 --with-fd-setsize=1024 --enable-dynamic-linking
Now, type
$ make
and pray.
And once that’s done,
$ make install
Modules
Many modules are available to extend and enhance Unreal IRCd. I use several, including:
- nocolorumode – (color stripping usermode)
- m_silencenotify – (Send message to source if blocked.)
- ircops – (command /ircops to list ircops)
- rmtkl (command /rmtkl for more powerful/easier ban removing)
- m_nocodes – (makes chan modes +S/+c strip/block bold/underline/reverse in addition to color codes)
- m_securequery – (Secure Query (user mode Z))
- textban – (ExtBan ~T (textban))
- m_jumpserver – (/jumpserver command for kicking people off one server and onto another)
- operpasswd – (Failed OPER attempts notifier)
- m_privdeaf – (private messages deaf (+D))
Module compliation help can be found here. Once done, go back to ~/Unreal3.2.7 and run again:
make install
Next post will be how I configure Unreal.
Comment
Commenting is closed for this article.
Restoring a Debian system from scratch Clean URLs in Textpattern on Lighttpd