[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.