FAQ/Compilation And Configuration

From the makers of InspIRCd.
Jump to: navigation, search

How do i configure/set up inspircd

There are entire sections dedicated to this exact question. Please see the Configuration and Installation sections of this wiki for more information as a proper description of what is involved is past the scope of this FAQ.

Why do i get an error about '__i686.get_pc_thunk.bx+0x0'?

This is a bug known to occur on debian with certain pre-release builds of GCC. Usually, upgrading the version of GCC you are using (and therefore G++) and rebuilding from clean solves the issue.

I G-Lined myself from my own network, how do i unban myself?

Aside from being a dumbass thing to do, you should either get another oper to unban you or wait out the gline time.

If you are unable to do either of these you must go to your shell, and add an exception for your host in your conf. After adding an exception for yourself, rehash that IRCd either by connecting via localhost and issuing a /REHASH, getting someone else to rehash, or sending it a SIGHUP from the shell.

It's your fault for banning yourself really.

How do i disable /MAP and /LINKS (or any other command for that matter)

Add the following tag to your Configuration file:

<disabled commands="MAP LINKS">

My ircd STILL will not start, or it will load up but then i cant connect to it!

Go through your Configuration and look especially at the <bind> tags. Check that you are binding to the correct ip addresses (sometimes you may not be able to bind to all ip addresses on the machine) and also check that the ports you are trying to bind are available for your use.

My server tells me that there is a user error and i should replace the user when i try and start it?

Read the Configuration file more closely.

Will InspIRCd compile using my compiler?

InspIRCd is tested regularly on GCC 4.x and Clang 3.x. ICC has been tested in the past and is known to work but it is not a regular test target.

Can i configure InspIRCd as root?

Yes, for the purposes of compiling InspIRCd system-wide, but you cannot run the ircd as root. The original ircd once ran as root, and even under inetd, and installed itself systemwide, but times have changed, and the ways ircds are ran have changed too, so InspIRCd has done away with antiquated setups where one ircd always ran on one physical server as such setups are unfriendly to shell hosting.

Why does InspIRCd take so long to compile compared to other ircds?

Short (but technical) answer: Templates.

Long (and easier to understand) answer: C++ is a much more complex language than C. It is more difficult for the compiler to optimize and to parse, and takes more cpu time and memory for it to do so. However, when written properly, well-written C++ code can perform equally to, or even outperform, C code designed to do the same task. In short, wait a little longer for your program to build, and it might just run a bit faster.

Why does configure hang when generating a private key with GnuTLS?

Occasionally, the SSL certificate generation during configure ('generating your private key') will take an unreasonably long time when you're using gnutls, but it happens almost instantly using openssl. This is due to some differences in how the two SSL libraries generate keys.

When using SSL, the private key is what proves that your server is who it claims to be and is vital to the security of the SSL connection. Anyone who can guess your private key can imitate your server. As such, they're very important. When generating them, the SSL tool will gather random numbers based on the least predictable data it can find (called entropy).

When generating a private key, OpenSSL will read 1024 bytes of permanently saved random data from a file called '.rnd', and it will use 32 bytes of random data from a less reliable source (/dev/urandom), as well as some other relatively predictable facts about it's environment. The result is that your certificates are generated very quickly, but with very little unpredictable random data.

GnuTLS, however, will use a combination of 600 bytes of random data from a quick source (/dev/urandom), and 300 bytes from a very secure source (/dev/random). /dev/random gives very random numbers, but is often very slow if there isn't much activity on your system. This is what most of the time spent in gnutls is doing - waiting for more random data. The end result is a certificate that is extremely hard to predict, much more so than with openssl.

While you're waiting (if it's not done by the time you've read this), you can help generate more entropy to make the process go quicker with any harddrive or network activity. The command 'find / -ls' will often help, and any others you can think of.