[IRCServices] Services 5.1.0 released

Andrew Church achurch at achurch.org
Wed Oct 10 19:10:10 PDT 2007


     At long last, development on version 5.1 is complete, and Services
5.1.0 has now been released.  It can be downloaded from the usual sites:

http://www.ircservices.za.net/download/   (Japan)
ftp://ftp.esper.net/ircservices/          (Western USA)

fb679dc9a6214452ba6ddd903ed4f9e5  ircservices-5.1.0.tar.gz
0a3957abe3a937c7b2a2d96b4505339e  ircservices-5.1.0-1.i386.rpm
5093c188c4c68e0f5cc24fdf0a0fbd43  ircservices_5.1.0-1_i386.deb

The mirrors should have it shortly.

     With the release of Services 5.1.0, I have chosen to relicense the
program under the GNU GPL version 2 _or later_, so that future developers
can take advantage of subsequent versions of the GPL, such as the
already-released version 3, if they so choose.  (In fact, I recommend the
use of GPL 3; I have not used it with this release of Services only to
avoid confusion, as essentially the same code has already been published
under GPL 2.)  I have also separately placed the documentation under the
GNU FDL (Free Documentation License) version 1.2 or later.

     As announced with the release of version 5.1pre0, I am ending the
development of Services for IRC Networks as of this release.  I will
continue supporting version 5.1 of Services through December 31, 2009, to
the extent of fixing bugs, updating existing protocol modules, and making
other reasonably small changes to existing features.  I will also maintain
the website and mailing lists through the same date.

     On January 1, 2010, the mailing lists will be disabled, and the
Services website will be replaced with a short message indicating that
Services has reached its end of life and a download link for the latest
version.  I will, however, continue to accept reports of serious bugs--
those which impact security or cause Services to crash--privately through
April 5, 2011.  (For the curious, that day marks the 15th anniversary of
the release of Services 1.0.)

     Of course, none of the above applies if I get run over by a truck.
But let's hope that doesn't happen. (:

     Once again, thank you all for your support of Services for IRC
Networks.  I wish the best for each of you in your future endeavors.

  --Andrew Church
    achurch at achurch.org
    http://achurch.org/

---------------------------------------------------------------------------

                         What's New in Version 5.1
                         =========================

Database handling, the one aspect of Services which has remained
essentially unchanged since version 1.0, has finally undergone a fairly
significant redesign.  Rather than using specialized data load and save
routines tailored for the core Services pseudoclients, Services now
implements a generic database table system, which has the dual benefits of
separating the data storage system from the rest of Services (allowing
alternative storage methods to be implemented easily) and allowing third-
party modules and extensions to create their own non-volatile databases
without resorting to custom load/save routines.  The default database file
format has also been changed to be more flexible and error-resilient than
the old format (which admittedly isn't saying much); see the "upgrading"
section of the manual for instructions on switching your databases to the
new format.

The often-criticized channel memo system has also been redesigned for this
version.  Instead of storing channel memos with the channel, memos are now
sent to the founder and all users on the channel with a particular access
level (by default level 100, or SOP level).  These memos are distinguished
from ordinary memos by text that says "(for #channel)" when reading the
memo.  As a result of this change, users will be notified about new channel
memos in the same way as ordinary user-to-user memos.

NOTICE: When loading databases from version 5.0 or earlier, all channel
        memos will be deleted.

Encryption support has also been improved.  Encryption is no longer an
all-or-nothing affair; the encryption method is stored with each password,
so that enabling or disabling encryption will have no effect on passwords
that were previously set.  The "encryption/unix-crypt" module has been
added, allowing the use of the Unix crypt() function to encrypt passwords.

The NickServ and ChanServ SENDPASS commands added in version 5.0 have been
removed in favor of the new NickServ REAUTH command.  This command
generates an authentication code which the user can use once to identify to
their nickname in place of the password, and then change the password as
needed.  Channel passwords can always be changed by the founder after
nickname identification, rendering ChanServ SENDPASS unnecessary.

Long LIST/VIEW responses are now handled more cleanly.  Except for NickServ
ACCESS LIST (since nickname access lists are generally short) and MemoServ
LIST (since memos are numbered), every list now includes an "end of list"
message indicating both the number of entries displayed and the total
number of entries in the list; the configuration directive ListMax,
replacing NSListMax and CSListMax, sets the maximum number of entries
displayed for any of these commands.  It is also possible to skip a certain
number of entries by adding a "+NNN" after the command, allowing all of the
entries in a long list to be viewed bit by bit.

At the development level, handling of module compilation has been improved,
allowing third-party modules to be simply "dropped in" without requiring
changes to Makefiles or other Services distribution files.  An extension
interface has been added to Services' multilingual support as well,
allowing modules to add their own language strings and load their own
language files.

Other changes:
  + Command aliases can now be added for NickServ, ChanServ, and MemoServ
        commands via the NSAlias, CSAlias, and MSAlias directives.
  + Notices are now sent to the user when sending of a mail authentication
        code message fails.  (However, errors after the message has been
        handed off to the mail server cannot be detected.)
  + A new configuration directive, RejectEmail, now allows selected E-mail
        addresses to be rejected by NickServ and ChanServ commands.
  + NickServ has a new option, NOOP, which prevents nicknames from being
        added to channel access lists.  (It does not prevent the nickname
        from being opped when already present on an access list.)
  + NickServ INFO will now indicate when a nickname's user is using a
        different linked nickname if the nickname group's PRIVATE option
        is not set.
  + NickServ now has a RESTOREMAIL command (in the nickserv/mail-auth
        module), which allows a user to restore their nickname's last
        authenticated E-mail address if, for example, SET EMAIL is used
        with an incorrect address.
  + NickServ SET/UNSET by Services administrators for others' nicknames is
        now done by putting a "!" before the nick to avoid ambiguity; for
        example, "SET !nick NOEXPIRE ON" instead of "SET nick NOEXPIRE ON".
  + ChanServ REGISTER and SET PASSWORD now check for and disallow easily
        guessable passwords.
  + ChanServ has a new option, MEMO-RESTRICTED, which prevents users
        without the channel MEMO privilege from sending memos to the
        channel.
  + ChanServ ACCESS now includes a LISTLEVEL subcommand to list access
        entries with a given level or within a given level range.
  + ChanServ AKICK and MemoServ IGNORE now support matching by IP address
        (on servers which support client IP address information).
  + ChanServ OP, VOICE, and similar commands can now be used with multiple
        nicknames.
  + MemoServ now has a RENUMBER command to remove "holes" in the memo
        number sequence.
  + MemoServ FORWARD now sends all selected memos in a single E-mail
        message, rather than sending each memo in a separate message.
  + OperServ AKILL and related commands now have a CHECK subcommand which
        can be used to find all masks that match a given user/hostname.
  + SQlines are no longer applied to IRC operators during Services startup
        or netjoins if the IRC protocol in use supports sending user modes
        with the NICK message.  This includes the bahamut, hybrid,
        inspircd, monkey, ptlink, ratbox, solid-ircd, trircd, and unreal
        protocol modules.
  + The ignore system has been redesigned, and now keeps better track of
        how much load each user is putting on Services.  The ignorance
        threshold can be fine-tuned via the configuration file.
  + A new "unsorted list" mode has been added to improve Services'
        performance on large networks.  By giving the -no-sorted-list
        option to the configure script, Services will not try to keep
        nicknames and channels in alphabetical order; this means that
        commands such as NickServ LIST will no longer return nicknames in
        order, but Services will run significantly faster.
  + Support has been added for the InspIRCd, ircd-ratbox, and solid-ircd
        IRC servers.
  + Unreal's NICKCHARS protocol option, allowing non-ASCII characters in
        nicknames, is now supported.
  + The name of the Services executable can now be changed, using the
        -prefix option to the configure script.  The name given will also
        be used in the main configuration filename (normally
        ircservices.conf) and cron script (ircservices-chk), as well as
        default filenames in the configuration file.
  * ChanServ DROP now behaves like NickServ DROP: dropping a channel now
        requires the channel password to be entered with the DROP command,
        and DROPCHAN has been added as a separate command for Services
        administrators to drop arbitrary channels.
  * The ChanServ ACCESS, XOP, and AKICK commands no longer use entry
        numbers; the DEL and LIST subcommands now work with nicknames
        (hostmasks for the AKICK command) only.
  * The binary distributions (RPM and Debian packages) now install into
        /opt/ircservices and /var/opt/ircservices, rather than /usr/sbin
        and /usr/lib/ircservices.
  * Tab characters are no longer used (or allowed) in the source code.
  - The deprecated nickserv/oldlink module, which provided support for the
        format of the LINK command used in version 4 of Services, has been
        removed.
  - Support for "modeless channels", with names of the form "+name", has
        been removed.  (Support for registering such channels was removed
        in version 5.0.0; this version removes the special handling for
        such channels in other parts of the program.)
  - Support for the "channel owner" mode present in the PTlink (+a),
        trircd (+u), and Unreal (+q) IRC servers has been removed, as there
        are too many differing opinions on its proper use.
  - Language support for Italian and Portuguese has been removed, due to
        the lack of volunteers to maintain them.
  - Support for old versions of GCC (anything before GCC 3.2) has been
        removed.
Configuration file changes:
  + IncludeFile has been added to allow configuration directives to be
        split up into multiple files, and may be used in both
        ircservices.conf and modules.conf.
  + LoadLanguageText (ircservices.conf) has been added to allow replacement
        of Services text strings at runtime.
  + RejectEmail (ircservices.conf) has been added to allow rejection of
        selected E-mail addresses.
  + NSAlias (module nickserv/main), CSAlias (module chanserv/main), and
        MSAlias (module memoserv/main) have been added to allow creation of
        command aliases.
  + NSRegDenyIfSuspended (module nickserv/main) has been added to prevent
        registration of new nicknames by users with suspended nicknames.
  + NSSetEmailDelay (module nickserv/main) has been added to enforce a
        delay between consecutive uses of the SET EMAIL command, thereby
        reducing the potential for sending mailbombs.
  + CSDefModeLock (module chanserv/main) has been added to allow the
        default mode lock for newly registered channels to be changed.
  + CSSkipModeRCheck (module chanserv/main) has been added to allow the
        check of a nickname's registration status at channel join time
        (used to kick unregistered nicknames from channels locked +R) to
        be skipped.
  + MSExpireDelay (module memoserv/main) has been added to allow memo
        expiration to be delayed until a certain time after the memo is
        first read.
  + MaxMessages (module mail/main) has been added to allow a limit to be
        placed on the total number of messages in transit.
  * ListMax (ircservices.conf) has been added in place of NSListMax and
        CSListMask to set a limit on the number of entries displayed for
        all LIST-like commands.
  * WallAdminPrivs (ircservices.conf) has been added in place of
        WallGetpass and WallSetpass to cause a WALLOPS/GLOBOPS to be sent
        on all NickServ and ChanServ commands that use Services
        administrator privileges.
  * The database name configuration directives (NickServDB, ChanServDB,
        etc.) have been moved from the various pseudoclient module sections
        to the database/version4 module section, and now explicitly specify
        filenames.
  - The nickserv/sendpass and chanserv/sendpass modules (and therefore
        their respective configuration sections) have been removed.
  - CSAutokickReason (module chanserv/main) has been removed, as the
        built-in reason prefix "AKICK by <nick>" makes it unnecessary.
  - MSExpireUnread (module memoserv/main) has been removed, since it
        results in silent data loss.
  - MSNotifyAll (module memoserv/main) has been removed, since it is
        required for channel memos.  MemoServ will now always behave as if
        MSNotifyAll was set.
  - MaxSockets (module mail/smtp) has been removed, since MaxMessages now
        performs the same function.