About

InspIRCd is a modular Internet Relay Chat (IRC) server written in C++ for Linux, BSD, Windows and Mac OS X systems which was created from scratch to be stable, modern and lightweight.

As InspIRCd is one of the few IRC servers written from scratch, it avoids a number of design flaws and performance issues that plague other more established projects, such as UnrealIRCd, while providing the same level of feature parity.

InspIRCd is one of only a few IRC servers to provide a tunable number of features through the use of an advanced but well documented module system. By keeping core functionality to a minimum we hope to increase the stability, security and speed of InspIRCd while also making it customisable to the needs of many different users.

InspIRCd was designed primarily for use on the ChatSpike IRC Network but has been released under version 2 of the GNU General Public License so that the IRC community as a whole can benefit from our work.

If you have any questions about InspIRCd then you can contact our development team by visiting the #InspIRCd channel on ChatSpike.

To begin, take a look at our installation guide followed by our configuration guide.

News Atom Feed
v2.0.16 released!

InspIRCd v2.0.16 is now available, downloads are here.

This is a bugfix-only release, containing several stability related and correctness improvements. An issue has also been fixed that prevented clients using NSS for SSL/TLS such as Pidgin (via libpurple), ChatZilla, Instantbird, etc. from reconnecting to a server using OpenSSL after disconnection. See this bug report for more information.

Upgrading is strongly recommended.

The example configuration and the helpop text received a huge update as well, hopefully the new explanations will make things easier to understand. Let us know if you find something in the documentation that is unclear to you.

The issue tracker contains a list of the reported bugs which got fixed in this version. View the complete changelog here.

Thanks to the following people for their efforts that made this release possible:

Adam (3):

  • Set a session id on our server ssl context in m_ssl_openssl. It is required for some clients which try to restore SSL sessions.
  • Fix new file descriptor debug log message in socketengine_poll to show the correct events
  • Fix /who on opers incorrectly showing +i opers to users without the privilege to see them

Attila Molnar (22):

  • m_ssl_openssl Fix memory leaks on /rehash ssl, unload and in VerifyCertificate()
  • m_banredirect Fix typo in a message (transfered -> transferred)
  • socketengine_epoll Initialize CurrentSetSize (only used by m_httpd_stats)
  • socketengine_select Reset the values in the timeval struct on *nix before select()
  • Fix NULL dereference on rehash when there is a fatal error in the configuration of connect classes
  • m_spanningtree Don't send snotices to servers about remote servers splitting
  • m_spanningtree Do pointer comparison before deleting one of the pointers in TreeSocket::Squit()
  • Improve detection for non-cidr masks to prevent unwanted matches
  • cmd_names Allow opers having the channels/auspex priv to view the NAMES list of +s channels from outside
  • Backport "Refactor Channel::UserList() to use std::string"
  • Fix NAMES list getting truncated on servers having an excessively long server name
  • m_operprefix Don't set +y on the oper if hideoper is being unset due to deopering
  • m_httpd Fix typo noticed by @SaberUK
  • m_globalload Don't pass a callback to ModuleManager::Reload() if reloading m_globalload
  • m_watch Validate targ before use, noticed while rewriting m_watch for 2.2
  • Major example configuration and helpop update
  • Fix typos and update text in the configure script
  • Add REG_ALL checks to treat unregistered users as nonexistent in more cases
  • Fix snotice about disabled command usage being sent to the wrong snomask
  • Fix typo in helpop-full that prevented it from loading and other minor helpop issues
  • Fix IPv6 address handling in 6aaf7047297b739377e7d509cb914f32447fb281
  • Release 2.0.16

Peter Powell (2):

  • Fix various problems detected by Clang 3.4.
  • Fix Solaris not being able to find modules without pkg-config.

Daniel Vassdal (1):

  • Fix build problem on Solaris
v2.0.15 released!

InspIRCd v2.0.15 is now available, downloads are here.

This is a bugfix release addressing minor issues discovered since 2.0.14.

One notable change is that m_svshold can now be silent, if set in the config; see updated example config for details.

The issue tracker contains a list of the reported bugs which got fixed in this version.

View the complete changelog here.

Thanks to the following people for their efforts that made this release possible:

Adam (3):

  • Fix issue #657, fix sending FNAME with spaces
  • Fix parsing ADDLINE with expiration or creation dates past ~2038 probably
  • Use case insensitive comparison for server names for (auto)connects, issue #662

Attila Molnar (25):

  • Don't CoreExport reference, fixes m_dnsbl on Windows
  • m_spanningtree Fix timestamp in AWAY
  • m_showwhois Require 2 parameters for WHOISNOTICE
  • m_httpd Close all open http sockets on unload
  • Fix ConvToStr(char)
  • Work around STB_GNU_UNIQUE symbols not allowing module unmap
  • m_spanningtree Fix nick TS desync on SVSNICK
  • Show +i users on a channel to opers having the channels/auspex priv who do /NAMES from outside of the chan
  • Fix possible use of invalid iterator on module unload
  • m_mlock Only deny the mlocked mode from being changed instead of denying the entire mode change if it contains a single mlocked mode
  • m_sajoin Send global snotice when the join happens
  • m_alias Fix out of bounds string access that happened with certain replace strings
  • m_dccallow Increase penalty for /DCCALLOW help
  • Use FindNickOnly() in a few more places if a local user is performing an action to prevent UID walking
  • m_joinflood Fix remote joins affecting local joinflood state when the channel is locked
  • m_dnsbl Don't send snotice when the {G|K|Z}line already exists
  • m_services_account Add workaround for wrong host being displayed in numeric when cgiirc users log in using SASL
  • Update example configs/helpop
  • m_httpd Add timeout option; remove timed out connections
  • m_svshold Add config option to hide snotices
  • m_joinflood Unset the mode on unload
  • Increase the penalty for a few core commands
  • m_httpd_stats Be more conservative when escaping data
  • Bump API version because of 3f4d54eb031f1cd6b016dfe1f768ed86303e3856
  • Release 2.0.15

ChrisTX (3):

  • Improve support for rarely used compilers, EKOPath in this case.
  • Fix a crash when running as systemd service
  • Fix a shadow warning created by ConfigTag::create

Daniel Vassdal (5):

  • Fix remote /MODULES bug
  • Fix ACCEPT propagation bug when it got a nick prefixed with +
  • Fix m_override refusing to override modes if the user holds halfop or higher in the channel
  • Allow ranges beginning with 0 in m_channames
  • Fix OOB error in sa2cidr()

Mantas Mikul─Śnas (3):

  • Handle SASL failures during SASL_INIT (wrong mechanism, etc.)
  • Support SASL messages other than 'C' and 'D'
  • Use standard example addresses in configs

Peter Powell (5):

  • Improve error reporting for <security:runas{user,group}>.
  • Fix m_silence looking for maxentries in instead of .
  • Fix various problems with ModuleManager.
  • Fix the HELPOP database being destroyed when a rehash fails.
  • Fix some logically dead code which was found by Coverity.
v2.0.14 released!

InspIRCd v2.0.14 has been released, downloads are here.

This is mostly a bugfix-only release, the only new feature is that m_permchannels is now able to save list modes (see the updated example config).

The issue tracker contains a list of the reported bugs which got fixed in this version.

View the complete changelog here.

v2.0.13 released!

InspIRCd v2.0.13 has been released, downloads are here.

This version fixes a couple of problems on Windows, mostly related to IPv6 and GnuTLS. Stability problems in extra modules have also been fixed.

The USERIP command (provided by m_userip) has been changed to allow non-opers to query their own IP. Additionally, opers now require the users/auspex privilige to query the IP of other users (which is the same privilige that is needed to see real IPs in /WHOIS).

You can check out the issue tracker for the list of reported and fixed bugs (and enhancements) in this version.

View the complete changelog here.

v2.0.12 released!

InspIRCd v2.0.12 has been released, you can download it here.

This version brings major performance and stability improvements, upgrading is strongly recommended.

A slowdown issue has been fixed that caused problems mainly on big servers with a large number of clients. However, smaller servers will also benefit from the fix.

To reduce load time, m_ssl_gnutls is now also able to load DH parameters from a file. Specify the filename in the <gnutls> tag, e.g.: <gnutls dhfile="conf/dhparams.pem"> You can generate the primes using the following command: certtool --generate-dh-params --bits 2048 --outfile dhparams.pem

Git shortlog:

Adam (1): Fix m_ssl_gnutls and perhaps some other things on Windows by recognizing WSAEWOULDBLOCK

Peter Powell (1): Fix ModuleManager error caused by a lack of arguments.

attilamolnar (30): Minor update to example configs cmd_invite Check if the inviting user is on the channel before potentially telling him the target is already on it cmd_stats List opers without iterating the whole userlist Fix LUSERS not working in a PURE_STATIC build Don't attempt to unload or reload modules that are waiting to be unloaded Remove some uline checks that ran after an IS_LOCAL() check m_spanningtree Create new TreeServers for incoming connections only when they've accepted our credentials, not when they send SERVER Do not enable SO_LINGER on our sockets Close listening sockets regardless of the return value of shutdown() m_kicknorejoin Minor improvements m_kicknorejoin Limit time to 30m by default m_kicknorejoin Store and compare uuids instead pointers m_callerid Fix bookkeeping error introduced when unserializing callerid_data m_callerid Ignore duplicate entries when unserializing callerid_data m_spanningtree Fix IS_LOCAL() check in OnRehash handler m_callerid Allow messaging yourself while +g regardless of the ACCEPT list m_ident Invalidate cache after changing User::ident Fix uuids getting truncated in the nick hash in UserManager::AddUser() if nickmax is < 9 Immediately stop processing whenever we detect and handle a RecvQ overrun Don't crop the channel name if it's too long in Channel::Channel() m_permchannels Workaround for alphabetical module initialization order Log some internal errors on DEFAULT loglevel instead of DEBUG, log detected errors in m_callerid m_filter Fix memory leak on unload m_filter, m_rline Remove rlines and filters when the regex engine changes or becomes unavailable m_rline Switch to OnUserRegister hook to disconnect banned users earlier Add config option to disable somaxconn range() check m_spanningtree Fix crash when connecting to a remote server that has the same name as we do and also there is a link block with our server name and their password m_ssl_gnutls Add ability to load DH params from file Move SocketEngine::IgnoreError() code into socketengine.h and add test for EWOULDBLOCK Release 2.0.12

« Previous
Next »
Page 1 of 4