diff -uNr ircservices-5.0.12/Changes ircservices-5.0.13/Changes --- ircservices-5.0.12/Changes 2003-02-25 21:47:37.000000000 +0900 +++ ircservices-5.0.13/Changes 2003-03-03 15:49:17.000000000 +0900 @@ -1,5 +1,24 @@ Version 5.0 ----------- +2003/03/03 .13 Build number is no longer updated if no files have changed + (this avoids "make ; make install" incrementing the value + twice). Reported by Craig McLure +2003/03/03 Users are no longer collided if they have identified but + need to set an E-mail address. Reported by Andrew + Kempe +2003/03/03 Nicknames awaiting E-mail authorization now always use the + regular 60-second timeout regardless of the KILL + setting. Suggested by Andrew Kempe +2003/03/03 Added new section (3-1-2) on netsplit recovery to the manual. +2003/03/03 Added workaround for broken browsers that don't handle + backslashes properly. Reported by +2003/02/26 Outgoing mail now includes a Date: header, to avoid some + MTAs inserting a date of 1970/1/1. Reported by Mattias + Karlsson +2003/02/26 Added support for channel mode +M in Unreal (3.2 beta). +2003/02/26 MemoServ SEND now requires identification for the nickname + instead of just an access list match. Reported by + Rafael Stuhr 2003/02/25 .12 ChanServ no longer gives +o to random users in channels on startup. Reported by Matthew Hodgson @@ -82,7 +101,7 @@ messages for unknown command-line options. 2002/11/21 NickServ ACCESS ADD now warns of inappropriate syntax for masks which contain "!". Suggested by Panagiotis - Kefalidis + Kefalidis 2002/11/19 The configure script now correctly creates parent directories for the data directory if it does not exist. 2002/11/19 Fixed configure check for socklen_t on FreeBSD. Repoted by @@ -207,7 +226,7 @@ 2002/08/12 Fixed bug causing autokill exclusions to not work on Unreal 3.1. Reported by 2002/08/11 Fixed crash on database update with forbidden nicknames. - Reported by Craig McLure + Reported by Craig McLure 2002/08/10 pre7 Brought the example HelpServ help text (data/helpfiles/help) slightly more up to date. 2002/08/10 Added SQlineIgnoreOpers directive. Suggested by Ekim Engin @@ -337,7 +356,7 @@ Reported by Romek Krisztian 2002/05/14 Services admins can now modify channel access lists without identifying for the channel. Suggested by Panagiotis - Kefalidis + Kefalidis 2002/05/14 Rewrote database saving routines to avoid data loss. 2002/05/14 a33 Log filename may now contain %y, %m, or %d (replaced by the current year, month, or day) for automatic log rotation. @@ -378,7 +397,7 @@ to handle OpenBSD correctly. Suggested by Chris Plant 2002/05/08 Changed init.c to avoid a compilation warning under GCC 3. - Reported by Craig McLure + Reported by Craig McLure 2002/05/07 StatServ SERVERS DELETE and other root-only commands now say "permission denied" instead of "syntax error" when used by a non-root IRC operator. @@ -403,17 +422,16 @@ 2002/04/30 Fixed spurious WALLOPS messages when server socket is closed. 2002/04/30 Merged common code for akills/etc in httpd/dbaccess module. 2002/04/30 Fixed incorrect nick-kill warning messages with forced nick - changing. Reported by Panagiotis Kefalidis - + changing. Reported by Panagiotis Kefalidis 2002/04/24 Fixed failure to set user mode +a for Services admins on Bahamut and trircd. Reported by Panagiotis Kefalidis - + 2002/04/24 Added back missing NetworkDomain directive to modules.conf. Reported by Yusuf Iskenderoglu 2002/04/24 Removed EsperNet protocol module as development on that server has stopped. 2002/04/24 Fixed bug causing crashes on NickServ SET with no parameters. - Reported by Panagiotis Kefalidis + Reported by Panagiotis Kefalidis 2002/04/17 a29 Fixed a warning in modules/nickserv/main.c. 2002/04/17 NickServ AUTH now keeps track of bad authorization codes, and kills users for multiple attempts as with passwords. diff -uNr ircservices-5.0.12/Makefile ircservices-5.0.13/Makefile --- ircservices-5.0.12/Makefile 2003-02-25 21:57:59.000000000 +0900 +++ ircservices-5.0.13/Makefile 2003-03-03 15:54:48.000000000 +0900 @@ -41,12 +41,10 @@ CFLAGS = $(CDEFS) $(BASE_CFLAGS) $(MORE_CFLAGS) -OBJS = version.o \ - actions.o channels.o commands.o compat.o conffile.o encrypt.o \ +OBJS = actions.o channels.o commands.o compat.o conffile.o encrypt.o \ ignore.o init.o language.o log.o main.o memory.o messages.o misc.o \ modes.o modules.o process.o send.o servers.o signals.o sockets.o \ timeout.o users.o $(VSNPRINTF_O) -SRCS = $(OBJS:.o=.c) .c.o: $(CC) $(CFLAGS) -c $< -o $@ @@ -54,7 +52,7 @@ ########################################################################### .PHONY: default config-check all myall myclean clean spotless distclean \ - install instbin instmod insttools modules languages tools version.c + install instbin instmod insttools modules languages tools ########################################################################### @@ -62,7 +60,7 @@ @if ! ./configure -check ; then \ echo 'Either you have not yet run the "configure" script, or the script has been' ; \ echo 'updated since you last ran it. Please run "./configure" before running' ; \ - echo '"make".' ; \ + echo '"$(MAKE)".' ; \ exit 1 ; \ fi @@ -111,8 +109,8 @@ ########################################################################### -$(PROGRAM): $(OBJS) modules - $(CC) $(LFLAGS) $(OBJS) $(MODLIB) $(LIBS) -o $@ +$(PROGRAM): $(OBJS) modules version.o + $(CC) $(LFLAGS) $(OBJS) version.o $(MODLIB) $(LIBS) -o $@ ifneq ($(STATIC_MODULES),) modules: @@ -165,7 +163,7 @@ modes.h users.h channels.h servers.h extern.h -touch $@ -version.c: +version.c: $(OBJS) modules/.stamp sh version.sh language.h: langstrs.h diff -uNr ircservices-5.0.12/TODO ircservices-5.0.13/TODO --- ircservices-5.0.12/TODO 2003-01-23 16:31:01.000000000 +0900 +++ ircservices-5.0.13/TODO 2003-02-27 18:48:13.000000000 +0900 @@ -42,6 +42,8 @@ Things to think about: +** Option/module to log all WALLOPS/GLOBOPS + [Andrew Kempe ] CS VERBOSE option: like OPNOTICE but for everything (ACCESS etc.) [Martin ] MS Remove discrepancy between nick and channel memo handling with diff -uNr ircservices-5.0.12/data/example-ircservices.conf ircservices-5.0.13/data/example-ircservices.conf --- ircservices-5.0.12/data/example-ircservices.conf 2003-02-25 21:57:59.000000000 +0900 +++ ircservices-5.0.13/data/example-ircservices.conf 2003-03-03 15:54:47.000000000 +0900 @@ -221,7 +221,7 @@ # if the timestamps match. Enabling this directive will force all # users to re-identify after a netsplit. # -# Normally, it's easier on users to leave this disabled, but if you +# It's generally easier on users to leave this disabled, but if you # suspect one of your servers has been hacked to send false timestamps # (or you suspect a bug in Services itself) enabling this directive # will eliminate the possibility of one user "stealing" another's nick @@ -236,7 +236,8 @@ # networks, Services takes advantage of an IRC server feature to assign # each user a permanent ID number, which significantly enhances the # security of this check. On such networks, you should almost always -# leave this directive commented out. +# leave this directive commented out. See section 3-1-2 of the manual +# for details. #NoSplitRecovery diff -uNr ircservices-5.0.12/docs/2.html ircservices-5.0.13/docs/2.html --- ircservices-5.0.12/docs/2.html 2003-01-16 12:22:07.000000000 +0900 +++ ircservices-5.0.13/docs/2.html 2003-03-03 10:46:19.000000000 +0900 @@ -98,6 +98,10 @@ ircu (Undernet) [coder-com.undernet.org] 2.9.x undernet-p9 +PTlink IRCd + [www.ptlink.net] 6.10.0 and above + <(experimental) + ptlink tr-ircd [tr-ircd.sourceforge.net] 4.0, 5.0 and above @@ -111,8 +115,7 @@ unreal
Table 2-1. Supported IRC server types -
(servers listed in italics have not been tested and are listed -based on user reports) +
(servers listed in italics are listed based on user reports, but are not supported)

Back to top diff -uNr ircservices-5.0.12/docs/3.html ircservices-5.0.13/docs/3.html --- ircservices-5.0.12/docs/3.html 2003-02-25 21:09:54.000000000 +0900 +++ ircservices-5.0.13/docs/3.html 2003-03-03 11:22:14.000000000 +0900 @@ -13,10 +13,11 @@

3-1. Nickname management (NickServ)
    3-1-1. Core NickServ features -
    3-1-2. Nickname linking -
    3-1-3. E-mail authorization -
    3-1-4. Access lists -
    3-1-5. Miscellaneous functions +
    3-1-2. Netsplit recovery +
    3-1-3. Nickname linking +
    3-1-4. E-mail authorization +
    3-1-5. Access lists +
    3-1-6. Miscellaneous functions
3-2. Channel management (ChanServ)
    3-2-1. Core ChanServ features
    3-2-2. Channel access lists @@ -222,7 +223,84 @@

Back to top -

3-1-2. Nickname linking

+

3-1-2. Netsplit recovery

+ +

One additional feature of NickServ is "netsplit recovery". Normally, if +a netsplit (i.e., the breaking of a server-server link) occurs, or +if Services itself is terminated or otherwise disconnected from the +network, all users on and behind the disconnected server will appear to +Services to have left IRC. When the server (or Services) is reconnected, +those users will appear as new users, and normally Services would then +require each user to re-identify to Services; users who are away from their +computers could even be disconnected from the network, depending on their +nickname settings. + +

In order to avoid this hassle, Services remembers information about the +last user who identified for each nickname. When a new user connects to +the network, Services compares the information for the new user to that for +the last user who identified for the nickname, and if they match, Services +allows the user to continue using the nickname as if they had identified +again. + +

Obviously, this can lead to security problems depending on the +information used to make this check. Unfortunately, the standard IRC +protocol definition (as defined in RFC 14591) +only includes the username and hostname in the information sent to other +servers about each user; since users can usually set their own username, +and since there are ways, albeit difficult ones, to fool an IRC server into +using an arbitrary hostname, checking this information alone is not very +secure. Fortunately, various IRC server implementors have developed their +own methods of including such information, and Services can take advantage +of these as well. In decreasing order of security, these are: + +

+
Services stamp (available in the bahamut, + dreamforge, monkey, trircd, and + unreal modules) +
The most secure way to check whether a user is new or not. These + servers allow Services to set a "Services stamp", a unique number, + for each user; the server remembers the number until the user + leaves IRC, so even if the server splits from the network, Services + will be able to tell that it's the same user when the server + reconnects. The number has a range from 1 to over 2,000,000,000, + making it practically impossible for a malicious user to obtain the + same Services stamp as a user already on the network, given current + technology. (As an example, on a network of 30 servers, an attack + introducing 50 new clients every second on every server, requiring + at least 10-15 megabits of bandwidth, would need to be sustained + for over 16 days to cause the stamp to roll over.) Unless you have + concerns about the security of your servers themselves, this method + can be considered 100% safe for all practical purposes. +
User timestamp (available in the dalnet, + ptlink, ts8, and undernet-p9 modules) +
A number recorded by each server for each user, representing the time + at which the user connected to the server. Since this value + increases every second, it is difficult to obtain the same + timestamp as a user connected to the network, but it may still be + possible if your servers' clocks are not all synchronized. For + small- to medium-size networks, this method is reasonably secure. +
Username and hostname only (the rfc1459 module) +
As described above, checking only the username and hostname is not very + secure, and you may want to disable netsplit recovery, as described + below. +
+ +

If you are concerned about the security of the check, you can disable +netsplit recovery by using the +NoSplitRecovery option in +ircservices.conf. + + +

1"RFC" is short for "Request For Comments", +the name given to documents describing Internet protocols and other +Internet-related information. See +http://www.rfc-editor.org/ +for more information. + +

Back to top + + +

3-1-3. Nickname linking

Several additional functions are available through add-on modules. Chief among these is "nickname linking", available with the @@ -276,8 +354,8 @@

Back to top - -

3-1-3. E-mail authorization

+ +

3-1-4. E-mail authorization

In order to help enforce accountability for registered nicknames, Services can require users to "authorize" their nickname registration using @@ -370,8 +448,8 @@

Back to top - -

3-1-4. Access lists

+ +

3-1-5. Access lists

Normally, when a user connects to the IRC network, the user must identify to NickServ with their password before Services will recognize @@ -425,14 +503,14 @@ ppp16.city.example.com would need to use an access mask of at least ppp*.city.example.com, which would allow another user of the same provider to impersonate the nickname owner by setting the username sent by -the impersonator's IRC client and/or RFC1413 ident server. Such users +the impersonator's IRC client and/or RFC 1413 ident server. Such users should always set the SECURE option on their nicknames to avoid having an impersonator improperly obtain channel or other privileges.

Back to top - -

3-1-5. Miscellaneous functions

+ +

3-1-6. Miscellaneous functions

Two other additional functions are available via separate NickServ modules: @@ -458,7 +536,7 @@ when a user forgets their password.

As with the GETPASS command, this command may not be usable when encryption is enabled. This module will also refuse to - load if E-mail authorization (section 3-1-3) is + load if E-mail authorization (section 3-1-4) is not in use, to prevent users from sending mail to arbitrary addresses.

Note that this module requires a mail module (section @@ -570,8 +648,8 @@ channel should be shown in the results for a LIST command; and SECURE, to enforce nickname password security for the channel even for nicknames that don't have the -SECURE option set (as described in section -3-1-4). +SECURE option set (as described in section +3-1-5).

To assist a channel founder in recovering control from a malicious user or out-of-control script, the CLEAR @@ -618,7 +696,7 @@

Finally, note that the channel "#" (a single "#" character with no name following) is treated specially by Services. While -this channel is legal according to the IRC protocol (RFC1459) and in fact +this channel is legal according to the IRC protocol (RFC 1459) and in fact supported by most, if not all, IRC servers, it requires special treatment for use with a number of Services functions, and in fact bugs in previous versions of Services as well as other Services-like programs have allowed @@ -653,7 +731,7 @@

Access levels are integral numbers between -999 and 999 inclusive, with higher values meaning greater privilege; a user whose nickname are not on the access list, or who has not identified for their nickname (except as -described for nickname access lists in section 3-1-4), +described for nickname access lists in section 3-1-5), has an access level of 0 (zero). A user with a given access level has all privileges listed in Table 3-1 with a lesser or equal minimum access level. (The "name" column in the table refers to privilege names for the @@ -871,7 +949,7 @@ LIST to display all or part of the list, and COUNT to display the number of entries in the list. When a nickname is added to the access list, all nicknames in the same group (see -section 3-1-2 on nickname linking) receive the same +section 3-1-3 on nickname linking) receive the same privileges; the nickname displayed when using the LIST command is the one marked as the "main nickname" for the group (set using the NickServ SET MAINNICK command). @@ -974,7 +1052,7 @@

One additional ChanServ module is available: the chanserv/sendpass module, which provides a SENDPASS command similar to the -NickServ command of the same name. See section 3-1-5 +NickServ command of the same name. See section 3-1-6 for additional discussion.

Back to top @@ -1135,7 +1213,7 @@ their nicknames, and will convert each memo to the user into an E-mail message sent to the E-mail address registered with the nickname. (To prevent spamming, this module requires that nickname E-mail authorization -be active; see section 3-1-3 for details.) Note that +be active; see section 3-1-4 for details.) Note that this module requires a mail module (section 3-8) to be loaded in order to function. @@ -1431,7 +1509,7 @@ AutokillReason option in modules.conf. Additionally, for servers supporting a "network K-line" mechanism, which includes every supported server except -for classic RFC1459 and TS8-based servers, Services will send out a K-line +for classic RFC 1459 and TS8-based servers, Services will send out a K-line for the username and hostname which the user matched; this directs the servers to immediately disconnect any user matching that username and hostname mask. (If more than one autokill mask matches, then the first one @@ -2013,8 +2091,8 @@

Services has the ability to send E-mail to users outside of the IRC protocol. This ability is used, for example, by the NickServ E-mail -authorization (section 3-1-3) and SENDPASS -(section 3-1-5) modules. E-mail functionality is split +authorization (section 3-1-4) and SENDPASS +(section 3-1-6) modules. E-mail functionality is split into two parts: a main module, which provides an interface for other modules to use, and method modules, which actually implement the E-mail functions at the system level. diff -uNr ircservices-5.0.12/docs/a.html ircservices-5.0.13/docs/a.html --- ircservices-5.0.12/docs/a.html 2003-01-07 17:12:27.000000000 +0900 +++ ircservices-5.0.13/docs/a.html 2003-03-03 11:18:48.000000000 +0900 @@ -254,7 +254,7 @@ if the timestamps match. Enabling this directive will force all users to re-identify after a netsplit. -

Normally, it's easier on users to leave this disabled, but if you +

It's generally easier on users to leave this disabled, but if you suspect one of your servers has been hacked to send false timestamps (or you suspect a bug in Services itself) enabling this directive will eliminate the possibility of one user "stealing" another's nick @@ -265,11 +265,12 @@ the greater the possibility of someone "taking over" another person's nick when a server with a fast clock splits. -

NOTE: On DALnet 4.4.15+, Dreamforge, Bahamut and compatible networks, -Services takes advantage of an IRC server feature to assign each user -a permanent ID number, which enhances the security of this check; on -such networks, you should almost always leave this directive -commented out. +

NOTE: On DALnet 4.4.15+, Dreamforge, Bahamut, Unreal, and compatible +networks, Services takes advantage of an IRC server feature to assign +each user a permanent ID number, which significantly enhances the +security of this check. On such networks, you should almost always +leave this directive commented out. See section 3-1-2 of the manual +for details.

Example: NoSplitRecovery @@ -1331,11 +1332,13 @@

Sets the default expiry time and recovery grace period for nickname suspensions. (The expiry time can be set individually for each suspension; the grace period cannot.) -The recovery grace period is the length of time a nick must exist + +

The recovery grace period is the length of time a nick must exist for, after being unsuspended, before it is allowed to expire. -This gives the owner a chance to reclaim the nick. It is -enforced, if necessary, by adjusting the "last seen time" value -when the nick is unsuspended. If set to zero, nicknames that are +This gives the owner a chance to reclaim the nick. It is +enforced, if necessary, by adjusting the "last seen time" value, +as well as the AUTH timeout when the mail-auth module is in use, +when the nick is unsuspended. If set to zero, nicknames that are suspended for longer than "NSExpire" will be expired (dropped) during the next check for nickname expiration, giving the owners very little time to identify for their nicknames and prevent diff -uNr ircservices-5.0.12/modules/Makefile ircservices-5.0.13/modules/Makefile --- ircservices-5.0.12/modules/Makefile 2003-02-25 21:57:59.000000000 +0900 +++ ircservices-5.0.13/modules/Makefile 2003-03-03 15:54:48.000000000 +0900 @@ -18,6 +18,10 @@ all-dynamic: @set -e ; for i in $(SUBDIRS) ; do \ $(MAKE) -C $$i $@ DIRNAME="$$i" CFLAGS="$(CFLAGS)" ; \ + if [ "$$i/.stamp" -nt .stamp ] ; then \ + echo "touch .stamp" ; \ + touch .stamp ; \ + fi ; \ done all-static: @@ -31,6 +35,10 @@ cat $$i/.modext-*.h >>modext.h ; \ cat $$i/.modsyms-*.c >>modsyms.c ; \ cat $$i/.modlist-*.c >>modlist.c ; \ + if [ "$$i/.stamp" -nt .stamp ] ; then \ + echo "touch .stamp" ; \ + touch .stamp ; \ + fi ; \ done @echo '{0}};' >>modlist.c $(CC) -c modlist.c -o modlist.o @@ -45,7 +53,7 @@ @set -e ; for i in $(SUBDIRS) ; do \ $(MAKE) -C $$i $@ DIRNAME="$$i" ; \ done - rm -f modext.h modsyms.c modlist.c *.[oa] + rm -f modext.h modsyms.c modlist.c *.[oa] .stamp */.stamp # Remove modules.a (for recompilation) if the top-level Makefile changed modules.a: ../Makefile ../Makefile.inc diff -uNr ircservices-5.0.12/modules/Makerules ircservices-5.0.13/modules/Makerules --- ircservices-5.0.12/modules/Makerules 2003-02-20 09:26:14.000000000 +0900 +++ ircservices-5.0.13/modules/Makerules 2003-03-03 11:56:01.000000000 +0900 @@ -89,7 +89,7 @@ else -# Compile one or more objects into a dynamic module +# Compile one or more objects into a dynamic module. $(TARGET).so: $(TARGET).o $(OBJECTS) $(OTHEROBJ) $(CC_SHARED) $^ -o $@ @@ -134,8 +134,16 @@ $(TARGET)_static.o: FRC @$(MAKE) --no-print-directory $@ TARGET=$(@:_static.o=) INCLUDES2="$(INCLUDES-$(@:_static.o=.o))" REALLY_COMPILE=2 + @if [ "$@" -nt .stamp ] ; then \ + echo "touch .stamp" ; \ + touch .stamp ; \ + fi $(TARGET).o $(OBJECTS): FRC @$(MAKE) --no-print-directory $@ TARGET=$(@:.o=) INCLUDES2="$(INCLUDES-$@)" REALLY_COMPILE=2 + @if [ "$@" -nt .stamp ] ; then \ + echo "touch .stamp" ; \ + touch .stamp ; \ + fi else diff -uNr ircservices-5.0.12/modules/httpd/util.c ircservices-5.0.13/modules/httpd/util.c --- ircservices-5.0.12/modules/httpd/util.c 2003-02-25 21:58:00.000000000 +0900 +++ ircservices-5.0.13/modules/httpd/util.c 2003-03-03 15:54:48.000000000 +0900 @@ -249,10 +249,10 @@ /*************************************************************************/ -/* URL-quote (%nn) any special characters (",',%, and if slash_question is +/* URL-quote (%nn) any special characters (",',%,\, and if slash_question is * non-zero, /,?) in `str', and place * the result in `outbuf', truncating to `outsize' bytes (including trailing - * null). %nn toiken inserted by this routine will never be truncated. + * null). %nn tokens inserted by this routine will never be truncated. * Returns `outbuf' on success, NULL on error (invalid parameter). */ @@ -283,6 +283,7 @@ case '%': case '"': case '\'': + case '\\': if (outsize < 4) { outsize = 0; break; diff -uNr ircservices-5.0.12/modules/mail/sendmail.c ircservices-5.0.13/modules/mail/sendmail.c --- ircservices-5.0.12/modules/mail/sendmail.c 2003-02-25 21:58:00.000000000 +0900 +++ ircservices-5.0.13/modules/mail/sendmail.c 2003-03-03 15:54:48.000000000 +0900 @@ -34,6 +34,7 @@ char cmd[PATH_MAX+4]; char buf[BUFSIZE], *s; int res; + time_t t; snprintf(cmd, sizeof(cmd), "%s -t", SendmailPath); pipe = popen(cmd, "w"); @@ -55,7 +56,11 @@ } else { fprintf(pipe, "From: %s\n", from); } - fprintf(pipe, "To: %s\nSubject: %s\n\n%s\n", to, subject, body); + time(&t); + if (!strftime(buf, sizeof(buf), "%a, %d %b %Y %H:%M:%S", gmtime(&t))) + strscpy(buf, "Thu, 1 Jan 1970 00:00:00", sizeof(buf)); + fprintf(pipe, "To: %s\nSubject: %s\nDate: %s +0000\n\n%s\n", + to, subject, buf, body); res = pclose(pipe); if (res == -1) { module_log_perror("pclose() failed"); diff -uNr ircservices-5.0.12/modules/mail/smtp.c ircservices-5.0.13/modules/mail/smtp.c --- ircservices-5.0.12/modules/mail/smtp.c 2003-02-25 21:58:00.000000000 +0900 +++ ircservices-5.0.13/modules/mail/smtp.c 2003-03-03 15:54:48.000000000 +0900 @@ -223,10 +223,15 @@ case ST_RCPT: smtp_writeline(sock, "DATA"); break; - case ST_DATA: + case ST_DATA: { + time_t t; + time(&t); + if (!strftime(buf, sizeof(buf), "%a, %d %b %Y %H:%M:%S", gmtime(&t))) + strscpy(buf, "Thu, 1 Jan 1970 00:00:00", sizeof(buf)); smtp_writeline(sock, "From: \"%s\" <%s>", si->fromname, si->from); smtp_writeline(sock, "To: <%s>", si->to); smtp_writeline(sock, "Subject: %s", si->subject); + smtp_writeline(sock, "Date: %s +0000", buf); /* writeline(sock,"") makes GCC warn about an empty format string */ smtp_writeline(sock, "%s", ""); for (s = strtok(si->body, "\r\n"); s; s = strtok(NULL, "\r\n")) { @@ -234,6 +239,7 @@ } smtp_writeline(sock, "."); break; + } /* ST_DATA */ default: module_log("BUG: bad state %d for socket %p", si->state-1, sock); /* fall through */ diff -uNr ircservices-5.0.12/modules/memoserv/main.c ircservices-5.0.13/modules/memoserv/main.c --- ircservices-5.0.12/modules/memoserv/main.c 2003-02-25 21:58:00.000000000 +0900 +++ ircservices-5.0.13/modules/memoserv/main.c 2003-03-03 15:54:48.000000000 +0900 @@ -677,7 +677,7 @@ } else if (!text) { syntax_error(s_MemoServ, u, "SEND", MEMO_SEND_SYNTAX); - } else if (!user_recognized(u)) { + } else if (!user_identified(u)) { notice_lang(s_MemoServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ); } else if (!(mi = get_memoinfo(name, &owner, &ischan, &error))) { diff -uNr ircservices-5.0.12/modules/nickserv/collide.c ircservices-5.0.13/modules/nickserv/collide.c --- ircservices-5.0.12/modules/nickserv/collide.c 2003-02-25 21:58:00.000000000 +0900 +++ ircservices-5.0.13/modules/nickserv/collide.c 2003-03-03 15:54:49.000000000 +0900 @@ -101,7 +101,7 @@ } rem_ns_timeout(ni, TO_COLLIDE, 0); /* If they identified or don't exist anymore, don't kill them. */ - if ((ngi && nick_identified(ni)) + if ((ngi && (nick_identified(ni) || nick_ident_nomail(ni))) || !ni->user || ni->user->my_signon > t->settime ) { @@ -144,7 +144,7 @@ } rem_ns_timeout(ni, TO_SEND_433, 0); /* If they identified or don't exist anymore, don't send the 433. */ - if (nick_identified(ni) + if ((nick_identified(ni) || nick_ident_nomail(ni)) || !(u = get_user(ni->nick)) || u->my_signon > t->settime) return; diff -uNr ircservices-5.0.12/modules/nickserv/util.c ircservices-5.0.13/modules/nickserv/util.c --- ircservices-5.0.12/modules/nickserv/util.c 2003-02-25 21:58:00.000000000 +0900 +++ ircservices-5.0.13/modules/nickserv/util.c 2003-03-03 15:54:49.000000000 +0900 @@ -384,9 +384,9 @@ } if ((ngi->flags & NF_KILLPROTECT) && !is_recognized) { - if (NSAllowKillImmed && (ngi->flags & NF_KILL_IMMED)) { + if (!ngi->authcode && NSAllowKillImmed && (ngi->flags&NF_KILL_IMMED)) { collide(ni, 0); - } else if (ngi->flags & NF_KILL_QUICK) { + } else if (!ngi->authcode && (ngi->flags & NF_KILL_QUICK)) { notice_lang(s_NickServ, u, DISCONNECT_IN_20_SECONDS); add_ns_timeout(ni, TO_COLLIDE, 20); add_ns_timeout(ni, TO_SEND_433, 10); diff -uNr ircservices-5.0.12/modules/protocol/unreal.c ircservices-5.0.13/modules/protocol/unreal.c --- ircservices-5.0.12/modules/protocol/unreal.c 2003-02-25 21:58:00.000000000 +0900 +++ ircservices-5.0.13/modules/protocol/unreal.c 2003-03-03 15:54:49.000000000 +0900 @@ -194,6 +194,7 @@ {'u', {0x00400000,0,0}}, /* Auditorium mode */ {'f', {0x00800000,1,0}}, /* Flood limit */ {'L', {0x01000000,1,0}}, /* Channel link */ + {'M', {0x02000000,0,0}}, /* Moderated to unregged nicks */ {'e', {0x80000000,1,1,0,MI_MULTIPLE}}, /* Ban exceptions */ }; diff -uNr ircservices-5.0.12/version.sh ircservices-5.0.13/version.sh --- ircservices-5.0.12/version.sh 2003-02-25 21:47:45.000000000 +0900 +++ ircservices-5.0.13/version.sh 2003-03-03 11:33:49.000000000 +0900 @@ -3,7 +3,7 @@ # Build the version.c file which contains all the version related info and # needs to be updated on a per-build basis. -VERSION=5.0.12 +VERSION=5.0.13 # Increment Services build number if [ -f version.c ] ; then