The InspIRCd Project
Home | Developers | Wiki | Forums | Bug Tracker | SVN | Download | Blog
Personal tools
InspIRCd - 10,000 revisions reached!

1.0

From the makers of InspIRCd.

Jump to: navigation, search
Historical
This page has been marked as Historical. Information posted here may be inaccurate and out of date. This information is kept for sentimental and/or historical reference purposes.


At last, after over three years of development, InspIRCd has finally reached 1.0-Final! The 1.0-Final release marks the point where we consider InspIRCd ready for production use on production networks, with enough features to be usable on any network from one user to ten thousand and above. For those of you who don't know what InspIRCd is yet, it is a scaleable, high performance expandable IRC server package, which offers many of the features of other IRC servers in a well designed modular form.

Contents

When can i get 1.0.0?

The release is going ahead as planned on Wednesday, 1st Feburary 2006. The win32 build may be released later in the day than the *nix build.

What's New In 1.0.0?

  • SSL Support

InspIRCd now has SSL support - SSL in InspIRCd is modular, and can be loaded at runtime, unloaded at runtime and upgraded on the fly. Choose between the high performance GnuTLS library, or the more standard OpenSSL library.

  • SSL-Only Channels

InspIRCd now has SSL-Only channels (channel mode +z) allowing for secure communities.

  • Message/Notice Flood Protection

InspIRCd now has channel mode +f, which can prevent message or notice floods server side, and without needing a bot or services.

  • Join Flood/Cycle Flood Protection

InspIRCd has join-flood protection (channel mode +j), which can prevent join flooding, for example through clone attacks or repeatedly cycling the channel.

  • Server-Side Autorejoin Prevention

Do auto-rejoins annoy you? InspIRCd can now prevent them using channel mode +J, which forbids joins for a specified number of seconds after a kick!

  • Optional SHA-256 Oper Password Hashing

You can now optionally hash your oper passwords using the industry standard SHA-256 hashing algorithm.

  • Ban Exceptions and Invite Exceptions As Standard

The +e and +I channel modes, which were previously third-party modules are now included as standard with InspIRCd.

  • Optional IP-Hiding For Servers

Using IP Hiding, you can hide the IP addresses of your hubs from opers, keeping information on your network in the hands of only those who need to know it.

  • Now With Optional Authenticated Vhosts

Authenticated vhosts allow you to set virtual hosts on users in a similar way to UnrealIRCd's /VHOST command, using a username and password.

  • Can now Change The /VERSION Response!

InspIRCd now allows you to change the second portion of the VERSION text, so you can for example name and version your server configs.


InspIRCd Features

  • Support for modern socket engines such as epoll and kqueue - scales to potentially tens of thousands of clients.
  • Windows and *nix support - works on freebsd, works on windows xp, works on dead badgers.
  • Powerful totally modular design - Dont like it? Dont load it!
  • Modular linking support - Allows for changes to the linking protocol in the future
  • Optional SQL support (SQL authentication, SQL oper, SQL logging) - Centralized management of users and opers
  • Spamfilter support - Block spambots, floodbots, trojans and viruses
  • Support for a large number of modes found in other ircds - You don't need to sacrifice features to migrate your network to InspIRCd!
  • Free versions of the paid modules of other ircds - Other ircd developers might make you pay, but we dont.
  • Host masking/cloaking - Added security for users and opers on your network
  • User parking - Disconnect, then come back later as if you'd never left!
  • Timed bans - Have the server automatically remove bans for you, even if your client does not support it or you arent online
  • Supported by atheme, ircservices, anope, denora etc. - Use the services you want, not the services we want (usually Image:Tongue.gif)
  • Tidy efficient object-oriented codebase - Does the same thing other ircds do, with less!

Where To Get Support

You can get support for inspircd on our irc server, or on our forums.

1.0 Full Changelog

  • Optimized WriteServ - why use %s!%s@%s when we have the more optimal userrec::GetFullHost() ?
  • Added new event into m_spanningtree, event id send_metadata, which allows arbitary posting of metadata outside of the netburst, see line 529 of m_ssl_gnutls for an example of how to use it.
  • Added check that forbids configuration as root >:-)
  • Major updates to CBANs...like they're reasonably functional
  • Added support for TYPE_OTHER metadata, where void* target will be NULL, e.g. its not bound to a user or a nick
  • Fix to send 403 on invalid channel name
  • Moved Write() call so that it can send the NICK message properly and force the client to change
  • Allow ulines to still notice the channel regardless of +T
  • Created OnPostOper that can be gauranteed to be called *after* opering (by ALL modules) is done
  • "Oper of unknown type" -> "313 %s %s :is an IRC operator"
  • Auto-assume "+" on the start of opermode block if not included
  • Removed example commands that never actually existed
  • OpenSSL detection and cert generation in ./configure
  • Changed length of password field to 64, giving us a maximum password length of 63 plus null terminator
  • Fixed uninitialized ExtMode::list
  • Added some extra debug
  • Make m_services use InsertMode (are we done yet?)
  • Changed On005Numeric to use InsertMode (we left one out?)
  • Deleted the semicolon that had half the dev team wondering...
  • Incorporated Craig's friendlier SQL class (documentation to come later)
  • m_sqlauth: Fix small memory leaks in some cases (bad password, bad query, lost mysql server connection etc..)
  • Correctly initialize userrec::password (should fix a few m_sql issues)
  • Add m_conn_waitpong, require clients to reply with a correct PONG to a server PING before they can connect
  • Remove unused includes and rename classes from ModuleSSL to ModuleSSLGnuTLS so we can be consistent across multiple SSL modules
  • Added warnings to opers when session limits are exceeded
  • Improved IP handling. Now uses in_addr to store client ip, not char[16]!, Added global and local session limits
  • Problems removing +t due to wrong bit-value being used in comparison
  • Altered so that if running in -debug mode, will not erase its .so files from /tmp to allow a clean backtrace
  • Removed unneccessary strlcpy
  • Removed a load of unneeded includes (poll.h etc)
  • Added <ident:timeout> example so that people remember to set this when using m_ident.so
  • Default ident timeout to 1 sec if not defined (a bit low, but better than 0!)
  • Updated m_ident to use inspsocket, should be more reliable
  • Added missing modules (newer ones)
  • Removed excessive debug for something thats now fixed
  • Merged Andy Church's isnick() and isident() patches - faster, more efficient, and doesnt accidentally allow "-" as the first character of a nickname, Also adapted to iterate over a char* pointer rather than using unsigned int for the for() loops
  • Added m_opersha256 module created by Special
  • Add module for anti-autorejoin channel mode +J
  • Changes to INVEX and EXCEPTS 005 tokens
  • Changed +l to drop the mode if the limit is same as current., Optimized check on numeric chars
  • Remove last relic of last goto in inspircd (an unused label)
  • Fixed to not have ohv in CHANMODES type A,, Added proper MAXMODES output in 005 instead of hard coded '13'
  • One goto is now no gotos.
  • Change m_redirect, m_joinflood and m_messageflood to put their modes in the correct section and to use InsertMode()
  • Add InsertMode function to helperfuncs.(cpp|h) for easily adding modes to the CHANMODES section of the 005 numeric
  • Added patch from Andy Church re spaces in SETNAME
  • Fixed line endings when skipping ssl cert generation
  • Documented some functions that were missing comments
  • Properly check that existing key resides in conf/ and not current dir
  • Added PRIORITY_BEFORE and PRIORITY_AFTER (see src/modules/m_hostchange.cpp for how it works, function Prioritize())
  • Added -modupdate to regenerate modules makefile, Added SSL option, as well as a 'Build Certificate' section (If avaliable)
  • Adding the +e and +I modules m_banexception and m_inviteexception, also adding their shared utility header
  • Added trick to allow local server to unset -r only in one specific condition (the nickchange)
  • Added joinflood +j
  • Made bans check both real and fake host
  • Patched to allow FTOPIC from users (so that chanserv can update the settime and the topic still come from chanserv)
  • Added <link:hidden> to docs
  • Optional IP-Hiding for servers
  • Use libgnutls-config --libs to configure linker options
  • Make relative paths in the config file tags be relative to the insp config directory
  • Change 974 numeric to 490 to avoid collision with Insp's failed to load module error
  • Make m_sslmodes messages appear in the channel window
  • Updated with new docs for maxtargets
  • Updated 005 to show changeable MAXTARGETS
  • Allowed for configuration of maxtargets in <options:maxtargets>
  • Wrong nicklen is shown in the 005 numeric, fixed (noticed by ThaPrince)
  • Initial commit of m_sslmodes, supplying chanmode +z
  • Allow for <bind> tags with no or empty type, as well as 'clients' ones
  • Set vendor and static module flags...even though the booms from trying to unload it would be fun :(
  • Make errors loading certificates DEFAULT level
  • Inital commit of the first SSL module \o/ \o/ \o/ Also Ommeh's first official svn commit \o/
  • Added MakeWildHost to userrec (*!*@dhost), Added ban stuff to messageflood
  • Fixes to server kick (i hope)
  • And yae, the compiler sayeth to brain, fix thine warning. and thou warning art fixeth.
  • Made '*' ban-specifier work
  • Added OnChannelDelete() method (called on KICK, PART or QUIT where a channel is deleted for cleanup of metadata), Added m_messageflood.so
  • Tweaks for openssl compatibility
  • Stopped lines longer than 512b from being killed, instead, warning sent and dropped.
  • Fix to m_redirect to prevent circular link to self
  • Added <allowchannel:name> to allow specific channels
  • Test-fix for crazy's bug (/who 0 * as oper while on no channels)
  • Tony hart stars in a new show, to replace hart attack. YES, ITS CRAQ ATTACK! Now starring the cmd_invite 401 numeric fuckup! :D
  • Umode +R was broken (only worked for channels) -- fixed
  • Removed all strncpy() calls and replaced with strlcpy()
  • strncpy sucks ass! -- Old code was using strncpy which doesnt null terminate a string if the string fills a buffer (!!!) - our strlcpy implementation fixes this.
  • Added unlink() to tidy up /tmp after each dlopen()
  • Added support for part messages in the module API (and therefore between servers too)
  • Fixed bug with {} -> [] etc in NICK where nick == newnick apart from irc-case:, [15:41] --- Brain is now known as [Brain], [15:41] --- {Brain} is now known as {Brain}, Now correct:, [15:41] --- Brain is now known as [Brain], [15:41] --- [Brain] is now known as {Brain}, Was just a strlcpy BEFORE the NICK output instead of AFTER.
  • Fixed so that ONLY ports of type "" or type "clients" are bound by the core, *everything else* is passed over now, not just "servers" type.
  • Changed lots of icky #define's to enums
  • Made <disabled> non-manditory, added check for when singular tags arent defined at all
  • Fixed SIGHUP rehash to actually send rehash event to modules
  • Added checks to forbid declaring certain config tags twice (ones which should only exist once like <server> and <admin>)
  • Added m_vhost, authenticated vhosts from the conf similar to unrealircd's way, requested by PinkFreud
  • Changed some .cpp to .so in the this->source field
  • Removed deprecated default= for bind tags
  • Removed deprecated LocalOp type
  • Added support for <options customversion> to customize the second part of VERSION
  • Bug found by PinkFreud - If an oper deopers themselves by removing the +o mode, their userrec::oper field isnt cleared. Clear it forcibly before DeleteOper.
  • Updated copyrights in headers etc using perl inplace edit
  • Made inspircd close and reopen its log on rehash
  • Removed some redundant (and commented out) functions
  • Made InspSocket::Read return an empty but non-NULL string when it receives EAGAIN (this method didnt know how to cope with EAGAIN before, may be causing random splits?)
  • Extra m_sql field checking
  • Fixed 'stops responding after server pingout, while using select' bug as found by merwin
  • Added RemoveSocket as a test fix for merwins bug
  • Replaced some 'n' with '*n' that was breaking userrec::MakeHost
  • Added extra safety check for a condition that should NOT happen (in theory, but still)
  • xline tweaks
  • Replaced sprintf's with some char* voodoo
  • Changed channel user lists from vector to map
  • Changed makefile to use 'install'