[IRCServices] Services 5.0pre0 released

Andrew Church achurch at achurch.org
Sun May 26 14:09:00 PDT 2002


     With thanks for everyone's patience, I am pleased to announce that
Services 5.0pre0 has been released, and can be downloaded from:

ftp://ftp.ircservices.za.net/pub/ircservices/beta/ircservices-5.0pre0.tar.gz
ftp://ftp.esper.net/ircservices/beta/ircservices-5.0pre0.tar.gz

The other mirrors should have it shortly.  Note that RPM and Debian
packages for Linux are available from the same locations.

     As a reminder, this is beta-level software; for those who are unsure,
that means that I've fixed all the bugs that I know about, but the software
hasn't been tested enough for me to recommend it for use on production
networks.  Unlike the alpha versions, I won't complain if you _do_ use this
version on your network, but if you do, please be aware that it may crash
occasionally, and please report any trouble you have with it.

     Before getting to the stuff that's in version 5.0, let me start with
the things that _didn't_ make it in:

     - SQL support.  I know there were a number of people asking for this,
but I just didn't have enough time to implement SQL support properly.  (For
that matter, I didn't have enough time to implement the new database format
that I'd wanted to.)  I've most certainly _not_ given up on SQL, but it
will have to wait for a while.

     - Additional protocol (ircd) support.  Aside from modules for the
trircd and Chunky Monkey IRCD servers provided to me by the protocols'
respective authors, no additional protocols are supported in this version.
In particular, I recall several requests for Hybrid support, but the one
patch I received was combined with an incomplete patch for other
functionality, so I had to discard it.  (Hint: if you've made several
changes to Services, don't send them all as a single patch, as I may not
want to--or be able to--integrate all of them.  Send each change as a
separate patch instead.)

     - Extended StatServ support.  One of these days, yes, but again
there just wasn't enough time for me to do this as well.

     That's about all that comes to mind at the moment; see the list of
changes and additions below (excerpted from the WhatsNew file) if you're
wondering about any other features.  If you have additional suggestions,
please suggest them--but in order to get 5.0 to stable status as soon as
possible, I do not plan to add many more features to this version of
Services.

     Once again, thanks for your patience.

What's New in version 5.0:
--------------------------
The single biggest addition to this version of Services is module support.
This allows the various functions of Services to be added to and modified
without having to touch the main source code itself.  Modules also provide
much more flexibility in configuring Services; IRC server support and
database file format can be selected by simply loading the appropriate
module, and you can even choose which of the pseudoclients (NickServ,
ChanServ, etc.) you want available.  See the example configuration files
in the "data" subdirectory for more information.

Services is now capable of sending E-mail.  Currently, this functionality
is used by:
  + The new "authorization" feature of NickServ (in the "nickserv/mail-auth"
    module).  This sends a message to a user upon nick registration or
    E-mail address change, and requires the user to "authorize" their
    nickname with a random numeric code included in the message before it
    is recognized as a valid registered nick by Services/
  + The new SENDPASS command for NickServ and ChanServ (in the
    "nickserv/sendpass" and "chanserv/sendpass" modules, respectively).
    which allows a user to send themselves their nick or channel password.
  + The new memo forwarding function of Services, which allows users to
    have their memos automatically forwarded to their E-mail address.

Services also sports a built-in HTTP server (module "httpd/main"), which
(with the help of additional modules in the "httpd" directory) can be used
for queries about nicknames, channels, and network status.  See the example
configuration files for details on its abilities, and please submit a
feature request if you have any additional ideas for what functionality the
server should provide.

Also, nickname links have been redesigned for simplicity and robustness.
In the new linking system, nicks are organized into "groups" which share
settings the way linked nicks did in previous versions.  The LINK command
has changed as well: instead of creating a link from the current (unlinked
but registered) nick to a registered master nick, the link is made from the
current registered nick to a new (unregistered) nick, to simplify
registration of multiple links at once and to offer slightly better
protection against "rogue links" created by guessing nick passwords (though
as always, the best defense is to use good passwords).  The old behavior of
the LINK command is still available through the "nickserv/oldlink" module,
although this module is deprecated and will be removed in a future version.

Finally, the documentation for Services (what used to be in the README and
FAQ files) has been greatly expanded and rewritten in HTML, and now includes
references for all Services pseudoclient commands and configuration options.
The manual also contains important information for users upgrading from
version 4.x or earlier; if you are already using Services and plan to
upgrade to version 5.0, please read this information before upgrading.

Other changes:
  + Nicknames now have an "Information" line, similar to a channel's
        description, which can be set freely for each group of nicks.
  + The number of nicknames that can be registered per E-mail address can
        now be limited (NSRegMaxEmail configuration directive).
  + The default options for newly registered channels can now be set in the
        configuration file.
  + Identifies for nicknames are now recorded, removing the necessity to
        re-identify after every nick change.
  + The Services stamp of the last user to identify for a nick is now
        recorded on disk, removing the need for users to re-identify when
        Services is restarted.
  + A timezone can be set for each registered nick, to allow users to get
        information from Services in their own time zones.
  + Nicknames can be listed by E-mail address with the new LISTEMAIL command.
  + Users can set channels to automatically join whenever they identify for
        their nickname (nickserv/autojoin module) on IRC servers supporting
        the SVSJOIN command (such as Unreal or trircd).
  + The NickServ and ChanServ REGISTER and GETPASS commands can now be
        (separately) disabled via the configuration file.
  + Users must now identify for their nickname before registering a channel.
  + Users with auto-op access for a channel will now be opped when they
        identify for their nickname even if they are already in the channel.
  + Channel access levels are now limited to -999..999; default levels have
        been rescaled to make better use of the available range (in
        particular, levels -25..25 have been multiplied by 10).
  + The ChanServ OP, VOICE, etc. commands now default to the person sending
        the command if a target nick is not specified (e.g. "OP #channel").
  + ChanServ now has a KICK command.
  + Channel information can now be hidden with the new ChanServ SET HIDE
        command, similar to the NickServ command of the same name.
  + The ChanServ STATUS command is now available to normal (non-admin) users
        with sufficient privileges on the target channel.
  + Users can prevent certain other users from sending memos to them
        (memoserv/ignore module).
  + Autokill exclusions (exceptions to autokill masks) are now supported
        through the EXCLUDE command (operserv/akill module).
  + S-lines (SGLINE/SQLINE/SZLINE) are now supported (operserv/sline
        module), and can even be used (except SZLINE) on servers which do
        not support S-lines natively.
  + Services now records the last time an autokick or autokill was
        triggered, as well as the set time for autokicks.
  + The maximum expiry time for autokills set by Services operators (as
        opposed to Services admins) can now be limited.
  + Support for the Chunky Monkey and trircd IRC servers is now available.
  + Services can now synchronize the clocks of all servers on the network
        for IRC server types which support this feature (Unreal).
  + Configuration files can now be re-read (rehashed) while Services is
        running, using either an OperServ command or kill -HUP.
  + The log file can now be rotated automatically based on the date.
  + Databases can now be imported (merged) and exported in XML format.
  + A sample crontab script is now included in the distribution.
  * The configuration file has been changed to accommodate modules;
        ircservices.conf (formerly services.conf) now contains only options
        related to core Services functionality, while module-related
        options (including NickServ, ChanServ, etc. settings) are in a new
        file called "modules.conf".  Many options have been added, changed,
        or removed; see the example configuration files for details.
  * The network I/O subsystem has been completely redesigned for robustness
        and ease of use; multiple sockets (including listener sockets) can
        be used simultaneously via read/write callbacks, and sockets now
        have variable buffer sizes, allowing more efficient use of memory.
  * Database handling has been improved to avoid database corruption on
        power outage or process termination/crash.
  * The "do not abuse NickServ" warning in the main NickServ help message
        is now optional, to allow networks more freedom in writing their
        own policies.
  * Passwords, URLs, and E-mail addresses are now shared by each group of
        linked nicks.
  * NickServ DROP now requires a password to avoid accidental use, and
        drops all linked nicks in a group at once.  The command for
        Services administrators to drop a nick is now DROPNICK.
  * The channel "#", which has been known to cause problems with both IRC
        servers and Services-like programs, is now explicitly not
        supported; Services will refuse to register, forbid, or import it.
  * Channel autokicks specified by nickname will now work for that nick
        only, not for any nicks linked to it.
  * The CSRestrictDelay option now works correctly and is enabled by default.
  * Newly-registered nicks will now always use the default language set in
        config.h, even if that language is changed after registration.
  * The database conversion utility (convert-db) now outputs an XML
        database file, which can be used with the XML import feature,
        rather than writing databases directly.
  * The configuration script "configure" now asks fewer questions, and can
        be completely automated if the "-prefix" option is used.
  * "configure" now understands GNU-style long options, e.g.: --prefix=/usr
  - The deprecated CheckClones functionality has been removed in favor of
        session limiting.
  - The IrcIIHelp pseudoclient (online help for the ircII client) has been
        removed.
  - The "listnicks" and "listchans" programs have been removed in favor of
        the built-in HTTP server.

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