It seems there is often a lot of confusion when it comes to getting UnrealIRCd to link with your preferred services package, so I have put together some examples on helping you get everything put together.
UnrealIRCd Configuration
The first step is to add your linking configuration to Unreal. In this example I have provided the options to include the aliases configuration by uncommenting the appropriate include line. Change all the services.example.net server names to the proper services server name for your network. I recommend keeping all your server names lowercase to avoid confusion and conflicts later.
I recommend always connecting services on the 127.0.0.1 (localhost) interface to assist in keeping weirdos away from your packets.
The set, ulines, and alias configuration must be done on all servers in your network.
// UnrealIRCd :: http://unrealircd.org
// unrealircd.conf
# include aliases/anope.conf;
# include aliases/atheme.conf;
listen 127.0.0.1:6667;
ulines { services.example.net; };
link services.example.net
{
username *;
hostname 127.0.0.1;
port 6667;
password-connect *;
password-receive "password";
class servers;
};
set {
services-server services.example.net;
# ...
};
Services Configuration
Here are the configuration snippets that go into your services configuration file for the settings related to connecting to your server. Remember to rename services.example.net to the proper name of your services server. Again, I recommend keeping the names of your services all lowercase to avoid confusion and conflicts later.
Anope
// Anope :: http://anope.org // services.conf RemoteServer 127.0.0.1 6667 "password" ServerName "services.example.net" ServerDesc "Example Services"
Atheme
// Atheme :: http://atheme.org
// atheme.conf
serverinfo
{
name = services.example.net;
desc = "Example Services";
# ...
};
uplink irc.example.net
{
host = 127.0.0.1;
password = "password";
port = 6667;
};
Common Problems
I get unknown command when trying to use services.
You likely have not included or created the proper aliases blocks. The easiest thing to do would be to uncomment the proper include line for your services in the UnrealIRCd portion of this example.
Services are currently down…
There are a few causes to this:
- Your services are not connected.
- You didn’t change the servernames in the examples.
- Your services aren’t u:lined (check the ulines block).
Nothing happens at all when I use services commands.
This commonly happens when you mix upper and lowercase server names. Make sure all your services server names are exactly the same in every configuration!
You will need to specify a class block for the “class servers” line to rehash successfully:
class servers {
pingfreq 120;
maxclients 2;
sendq 102400;
recvq 4096;
};
Full docs can be found here:
http://www.unrealircd.com/files/docs/unreal32docs.html#classblock
I believe “class servers;” in the example link block above implies there is a class block for servers.
A sendq of 100 kilobytes for a server is rather low.
I don’t recommend setting a recvq for the server class. A server should be able to receive as much as is sent to it from a linked server.
Keep in mind that “maxclients 2;” in your example, will only permit 2 links in that class. This is fine if that’s what you want.
As long as the total maxclients of all class blocks is less than FD_SETSIZE minus x (where x represents the fds used for normal operation such as logging and other file handles, DNS lookups, IDENTd checks, etc.) then all is well. (I look forward to UnrealIRCd supporting poll(), epoll(), kqueue() and not only select()).
In addition to your appreciated link to the official UnrealIRCd documentation, our support leader, Stealth, has great addendum material at http://unreal.x-tab.org/.
Thanks for your comment.