About This File
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.
Useful Links
wiki: http://wiki.inspircd.org
git: https:/github.com/inspircd/inspircd
What's New in Version 3.5.0 See changelog
Released
v3.5.0
-
Added support for the IRCv3 Labeled Response specification.
-
Added support for help topics to the helpop module.
-
Added support for pagination to the index output of the
HELPOPcommand. -
Added support for passing module names to --{disable,enable} using their short names (e.g.
--enable-extras ssl_gnutls). -
Added support for passing space-delimited module names to --{disable,enable}-extras (e.g.
--enable-extras "ssl_gnutls ssl_mbedtls"). -
Added support for the
X-Real-IPandX-Forwarded-Forheaders to the websocket module. -
Added the codepage module — a better solution for custom 8-bit character set support than the incredibly broken and undocumented nationalchars module.
-
Changed the default for
<waitpong:sendsnotice>tono. -
Changed the user count in
LUSERSso that it no longer includes services pseudoclients. -
Developer: add
Channel::WriteRemoteNoticewhich sends a notice to remote users as well as local users. -
Developer: add a status char option to
Channel::WriteNoticefor sending status messages. -
Developer: add the
ClientProtocol::MessageTagEventclass to allow handling message tags easier. -
Developer: added
MessageTarget::GetNameto allow easily getting the name of a message target. -
Developer: added a status char option to the
TagMessageconstructor for sending status messages. -
Developer: added an "oper only" parameter to
Simple{Channel,User}ModeHandler. -
Developer: added empty string checks to the
Numerics::NoSuch{Channel,Nick}constructors. -
Developer: added several variadic overloads of the
IRCv3::Replies::Reply::Sendmethod. -
Developer: added the
OnCommandBlockedevent for when the execution of a command is blocked. -
Developer: added the
UserManager::ULineCountmethod for counting pseudoclients on ulined servers. -
Developer: added the
inspircd.org/poisoncapability which rejects any attempt to request it to avoid clients requesting all available capabilities rather than the ones they support. -
Developer: added the
stdalgo:delete_zeromethod for deleting and zeroing a pointer. -
Developer: deprecated the
ProtocolInterface::Send{Channel,User}Noticemethods in favour ofSendMessage. -
Developer: disabled
CULLLISTlog messages unless the server has been built in debug mode. -
Developer: switched from Travis CI to GitHub Actions.
-
Developer: the
FailedPorttype now contains the config tag that the listener was created from. -
Fix connections to ports which have an invalid I/O hook configured not being rejected.
-
Fix various Perl tools not looking in the right directory for the
make::*modules. -
Fixed a bug in
helpop.conf.examplewhere the SWHOIS key was not using the correct value name. -
Fixed allowing
TAGMSGmessages to be sent without any tags attached. -
Fixed boolean configuration options not being matched in a case insensitive way.
-
Fixed not using case insensitive comparisons for the DCCALLOW subcommands.
-
Fixed not using case insensitive matching when checking if a SSL rehash has been requested.
-
Fixed not using the
ERR_INVALIDMODEPARAMnumeric when not enough parameters are given to thesnomaskmode. -
Fixed not using the
RPL_REHASHINGnumeric for remote rehashes. -
Fixed parsing CTCPs in the dccallow module.
-
Fixed prioritisation of custom events provided by modules.
-
Fixed spamming the log with DNS cache clearing notices when nothing was actually cleared.
-
Fixed status messages not working with the
TAGMSGcommand. -
Fixed the chanhistory module not storing message tags.
-
Fixed the chanhistory module not storing notices.
-
Fixed the chanhistory module storing CTCPs.
-
Fixed the legacy
PROTOCTL NAMESXcommand not using case insensitive matching. -
Fixed the legacy
PROTOCTL UHNAMEScommand not using case insensitive matching. -
Fixed the nationalchars module allowing nicknames which begin with a number.
-
Fixed the nationalchars module not rebuilding the 005 numerics on unload.
-
Fixed the nationalchars module not restoring the previous casemapping name on unload.
-
Fixed the systemd unit file starting InspIRCd before the network is online.
-
Fixed unnecessarily making
N*2-1too many copies of the command arguments when processing a command with multiple targets. -
Improve the warning process when starting InspIRCd as root.
-
Improved the ban message shown to users if they are banned by an extban.
-
Improved the output when a port can not be bound.
-
Removed the preceding
-from the MOTD, server operator MOTD, and any custom MOTDs added with the showfile module. -
Renamed
<chanhistory:notice>to<chanhistory:prefixmsg>so the behaviour is less ambiguous. -
Replace the Windows getopt_long shim with the ya_getopt library.
-
Updated the example MOTD and server operator MOTD to be a bit prettier and show off some of the escape codes.
v3.4.0
-
Added
<alias:stripcolor>to allow stripping formatting codes before matching an alias. -
Added
<cloak:ignorecase>to ignore the case of a FQDN when cloaking. -
Added a check for the
channels/auspexprivilege to the hidemode module. -
Added a workaround for gateway IP addresses being banned by the connectban module.
-
Added more information to timedbans addition/expiry notices.
-
Added support for filtering part messages to the chanfilter module.
-
Developer: added
ConfigStatus::initialto find out if the config is being loaded for the first time. -
Developer: added
Events::ModuleEventProvider::{OnSubscribe,OnUnsubscribe}to allow knowing when a module has subscribed to or unsubscribed from an event. -
Developer: added a parameter to the
OnServerSplitevent which specifies whether the split was intended or not. -
Developer: added an internal serialisation of the dccallow list.
-
Developer: added an internal serialisation of the silence list.
-
Developer: added the
GetIdmethod to theServerclass. -
Developer: added the
GetNumericTokenmethod to theirc::sepstreamclass. -
Developer: added the
GetTypeStrmethod to theDNS::Managerclass. -
Developer: added the
OnServerBurstevent for executing actions after a server has finished bursting. -
Developer: added the
OnShutdownevent for executing actions shortly before shutdown. -
Developer: added the experimental
Serializableclass & API and implemented it in theExtensible,UserandLocalUserclasses. -
Developer: changed
IS_{LOCAL,REMOTE,SERVER}to be capable of handling null pointers. -
Developer: exposed variable list modes via the
VLIST005 token to make things easier for client developers. -
Disabled DNS, DNSBL, and ident lookups for unregistered KiwiIRC.com users in the example provider configs.
-
Documented the
repeatexemption type. -
Exempted the KiwiIRC.com servers from X-lines in the example provider configs.
-
Fixed a bug in the HAProxy module where it would ignore any data received in the same packet as the header when using TCP connections.
-
Fixed a crash on shutdown in the spanningtree module.
-
Fixed linker errors caused by build objects from one compiler being used by another.
-
Fixed not respecting the deprecated
<channels:users>config tag. -
Fixed the DNSBL module banning a user after their IP address has changed.
-
Fixed the IP addresses of the KiwiIRC.com servers in the example provider configs.
-
Fixed the
OnSetUserIPevent being fired before the connect class has changed. -
Fixed the
u_noctcpmode not being respected for CTCPs targeted at a channel. -
Fixed the config example path not being updated when the config path is changed in interactive mode.
-
Fixed the example configs allowing voiced users to voice/devoice other users.
-
Fixed the example provider config files not being installed.
-
Fixed the silence module not being able to add or remove entries in some cases.
-
Fixed various issues relating to hostname resolution.
-
Raised the default value for
<connflood:bootwait>from ten seconds to two minutes. -
Replaced the gdbargs file with the
--eval-commandoption inside the init script. -
Updated the NetBSD
EV_SETworkaround now that upstream have fixed the issue.
v3.3.0
-
Added PackageInfo directives for ArchLinux.
-
Changed the maximum value for
<chanfilter:maxlen>from 100 to 250. -
Developer: added an experimental header which implements the IRCv3 Standard Replies draft.
-
Developer: added the OnConnectionFail event for suspending a user connection which is about to fail.
-
Developer: added the
ExtensionItem::{To,From}{Human,Internal,Network}methods to convert an extension item to and from various string forms. -
Developer: added the
MessageEventListenerclass for adding tags to server messages. -
Developer: added the
{EventHandler,StreamSocket,UserIOHandler}::SwapInternalsmethods to swap the internals of two sockets. -
Developer: deprecated the ServerEventListener clas and split the events contained within it into the `ServerProtocol::{BroadcastEventListener,LinkEventListener,SyncEventListener} classes.
-
Developer: deprecated the
SerializeFormatenum, and theserialize,unserializemethods of theExtensionItemclass, and theLocalExtItemclass. -
Fixed a crash in the MySQL module when built against mariadb-connector-c v3.0.5 or newer.
-
Fixed allowing the
saslcapability to be requested when the SASL server is offline. -
Fixed empty
GLOBOPSandWALLOPSmessages not failing with anERR_NOTEXTTOSENDmessage. -
Fixed listener sockets with
<bind:replace>enabled not being replaced in some circumstances. -
Fixed not applying IRCv3
server-timetimestamps on the server the source is connecting from. -
Fixed not being able to use the
O(oper) extban to server operators with a space in their server operator type. -
Fixed referring to registration timeouts as ping timeouts in the
conn_waitpongmodule. -
Fixed sending IRCv3
account-notifyandchghostmessages to a user who has not sent theNICKandUSERcommands yet. -
Fixed sending IRCv3
cap-notifymessages for capabilities which are not presently visible inCAP LS. -
Fixed the
geo_maxmindmodule trying to interpret anAF_UNIXendpoint as an IP address. -
Improved the message sent to server operators when the maximum connections for a connect class is reached.
-
Updated the vendored
utfcpplibrary to v3.1.
v3.2.0
-
Added a configure option,
--example-dir, which specifies the directory that example config files get installed into. -
Added a flag to the filter module which allows registered users to be exempt from a filter.
-
Added a warning when the user tries to build on OpenBSD as it ships very broken compilers.
-
Added a warning when the user tries to build without SSL support.
-
Added example config files for enabling support for IRCCloud and KiwiIRC.com on your server.
-
Added syntax hints for all modes with parameters to the
ERR_INVALIDMODEPARAMnumeric response. -
Added the ability to include all .conf files in a directory.
-
Added
<bind:permissions>to UNIX socket listeners to set who can access the socket. -
Added
<bind:replace>to UNIX socket listeners to allow replacing existing sockets on boot. -
Added
<messageflood:notice>,<messageflood:privmsg>, and<messageflood:tagmsg>to the messageflood module to specify how many lines individual messages are equivalent to. -
Added
<permchanneldb:saveperiod>to allow customising how often the permchannels module should check whether its database needs to be saved. -
Added
<sslprofile:tlsv11>and<sslprofile:tlsv12>to the ssl_openssl module to easily allow disabling old SSL versions. -
Added
<xlinedb:saveperiod>to allow customising how often the xline_db module should check whether its database needs to be saved. -
All SQL queries are now logged at the debug log level to enable easier debugging of SQL issues.
-
Developer: added support for marking a socket to be closed once it has finished receiving all the data sent to it.
-
Developer: added support for retrieving the end message of a batch.
-
Developer: added the OnUserPreQuit event for changing quit messages before a user disconnects.
-
Developer: added the
FileSystem::GetFileList()function to get a list of files in a directory matching a glob pattern. -
Developer: added the
irc::sockets::isunix()function for checking if a string is a valid UNIX socket path. -
Developer: ignore any
SIGUSR1orSIGUSR2with no handlers instead of killing the process. -
Fixed a misleading debug message in the sslinfo module.
-
Fixed calculating the human-readable version of durations.
-
Fixed closing HTTP connections before the entire http_stats module output had been sent.
-
Fixed linking the spanningtree module on OpenBSD.
-
Fixed modules that are in the process of being unloaded sometimes having events called on them.
-
Fixed not checking if the cap module is enabled before enabling the
NAMESXandUHNAMES005 tokens. -
Fixed outgoing UNIX socket server connections.
-
Fixed routing tags on TAGMSG messages between servers.
-
Fixed server operators with the
channels/auspexprivilege not being able to request the topic of secret/private channels with the/TOPICcommand. -
Fixed the autoop module checking the prefix mode add rank when removing list entries.
-
Fixed the conn_umodes module setting user modes before the MOTD has been sent.
-
Fixed the default log directory in system-wide mode to be
/var/log/inspircd. -
Fixed the denychans module not checking whether the redirect channel is allowed properly.
-
Fixed the exemptchanops module not validating list entries.
-
Fixed the grammar of the error messages sent by the repeat module.
-
Fixed the Perl helper script finding the location of the PID file.
-
Fixed the sslinfo module not being able to place WebIRC users into the appropriate connect classes.
-
Fixed the TAGMSG message forwarding all tags regardless of whether they had been whitelisted.
-
Fixed the
<connect:usests>option being inverted. -
Fixed various harmless compiler warnings in the httpd module.
-
Fixed
<pid:file>not being relative to the data directory as was intended. -
Fixed
server-timetimestamps only being accurate to the second. -
Made the error message sent by the alias module when an alias requires a U-lined target but the target is not U-lined more accurate.
-
Show how many users in a channel are not using SSL in the
ERR_ALLMUSTSSLresponse. -
Updated the Module Manager source list for the new inspircd-contrib repository.
v3.1.0
-
Added a configure option,
--disable-auto-extras, which disables automatically enabling extras for which the dependencies are available. -
Added support for disabling a STS policy for users in specific connect classes.
-
Added support for the IRCv3 Message IDs specification.
-
Developer: added support for modules overriding the default access checks for
NOTICE,PRIVMSG, andTAGMSG. -
Developer: added the
INSPIRCD_VERSION_BEFORE(MAJOR, MINOR)andINSPIRCD_VERSION_SINCE(MAJOR, MINOR)macros for checking the InspIRCd version at compile time. -
Developer: allowed child classes of SSLIOHook to override
GetCertificate()andGetFingerprint(). -
Fixed a crash in the silence module on some older versions of GCC.
-
Fixed linking against v2 servers running the ASCII case mapping module from inspircd-contrib.
-
Fixed an inverted condition in the commonchans module which made the module not work.
-
Fixed configure not failing when invalid options were passed to it.
-
Fixed pending X-lines only being applied to a single user.
-
Fixed servers not specifying whether they are hidden. If no visibility is specified then servers default to the visibility of their parent server.
v3.0.1
-
Documented the anticaps exemption in both the main config and in the example helpop config.
-
Documented user mode
O(override) in the helpop config. -
Fixed building against older versions of glibc.
-
Fixed compiling with the kqueue socket engine on NetBSD.
-
Fixed relying on PWD being set in the makefile.
-
Fixed the
--distribution-labelconfigure option erroneously making the configure script require the--developmentflag to be passed. -
Fixed the example
<wsorigin>tag erroneously suggesting that a path was included. -
Fixed the filesystem permissions that files are installed with.
-
Fixed the MAXLIST 005 token not reflecting the true lower limit.
-
Fixed the parameters for the
/NAMEScommand in the syntax hint and example helpop config. -
Raised the connection timeout in the example configs to 20s. This should give more time for clients on slow connections that want to do a lot of things (request caps, do SASL auth, etc) on connect.
-
Silenced a harmless compiler warning in the pgsql module on newer GCCs.
Recommended Comments
There are no comments to display.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.