From 4a051a7fe1367874d1dca2206ade5f6f1f7256d6 Mon Sep 17 00:00:00 2001 From: "geniusdex geniusdex@31f1291d-b8d6-0310-a050-a5561fc1590b" Date: Thu, 7 Apr 2005 17:45:03 +0000 Subject: BUILD : 1.7.8 (657) BUGS : 346 351 341 328 345 NOTES : Added channame to XOP/ACCESS/AKICK CLEAR, added checks to /hs off, fixed guest nick to take an unused nick, added SVN revision to win32 versions, fixed /ns alist to not accept invalid access levels, improved Config script, fixed responses for /ns glist/alist -- ty qa ;) git-svn-id: svn://svn.anope.org/anope/trunk@657 31f1291d-b8d6-0310-a050-a5561fc1590b git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@505 5417fbe8-f217-4b02-8779-1006273d7864 --- Changes | 9 +++ Config | 177 ++++++++++++++++++++++++++++++--------------------- include/version.sh.c | 9 ++- lang/cat.l | 10 +-- lang/de.l | 12 ++-- lang/en_us.l | 12 ++-- lang/es.l | 12 ++-- lang/fr.l | 12 ++-- lang/it.l | 12 ++-- lang/nl.l | 12 ++-- lang/pl.l | 10 +-- lang/pt.l | 12 ++-- lang/tr.l | 12 ++-- src/chanserv.c | 6 +- src/hostserv.c | 19 +++++- src/nickserv.c | 23 +++++-- src/shadowircd.c | 11 ++-- version.log | 6 +- 18 files changed, 225 insertions(+), 151 deletions(-) diff --git a/Changes b/Changes index c9a67043e..083dd2c8d 100644 --- a/Changes +++ b/Changes @@ -10,6 +10,9 @@ Provided by Anope Dev. - 2005 02/13 A Internal Event support, see EVENTS in the doc folder for help [ #00] 02/05 A Support for Unreal 3.2 +I channel mode. [ #00] 02/03 A Merged anope-win32 branch into the main, now Win32 ready. [ #00] +04/07 F Added channel names to XOP/ACCESS/AKICK CLEAR [#346] +04/07 F Only users with vHost/vIdent can /hostserv off [#351] +04/07 F Make sure nick isn't in use on nickserv collide [#341] 04/01 F Sync state for leaf-servers not updated correctly. [ #00] 03/30 F ChanServ now sets topic again when channel is re-created. [#339] 03/29 F Changed anoperc script to use kill numerics for compliance. [ #00] @@ -61,13 +64,17 @@ Provided by Anope Dev. - 2005 03/07 R Removed Proxy Detector from core. [ #00] Provided by Trystan - 2005 +04/07 F Win32 now includes SVN revision in version [#328] 03/16 F Shadowircd nick handling and vhost changing [#321] 03/14 R Removed some old irc-services convertor ifdef's [#317] Provided by DrStein - 2005 +04/07 A NickServ's ALIST won't accept invalid access levels for min_level [ #00] 03/22 A Compiling extra tools (db-merger, epona2anope) [ #00] +03/17 A Improvements on Config script. [ #00] 03/17 A OS SET SQL ON shall warn about SQL disabled in services.conf [ #00] 03/15 A ChanServ will now include the channel name in SET's responses [#318] +04/07 F NickServ shall give the correct response to GLIST/ALIST [#345] 03/15 F ChanServ's do_getkey() function is now using notice_lang() [#319] 03/14 F Updated docs/FAQ. [#312] 03/09 F Updated Spanish language file (es.l). [ #00] @@ -86,6 +93,8 @@ Provided by crazytoon - 2005 Provided by BarkerJr - 2005 02/05 A Setting and Removal of SQLINEs on forbid of Channels and Nicks. [ #00] +Provided by nenolod - 2005 +04/07 F Numerous ShadowIRCD fixes [ #00] Anope Version 1.7.8 ------------------- diff --git a/Config b/Config index c93b2c8ff..bb4417927 100755 --- a/Config +++ b/Config @@ -17,6 +17,69 @@ echo2 () { $ECHO2 "$*$ECHO2SUF" # these are defined later } +exists () { # because some shells don't have test -e + if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then + return 0 + else + return 1 + fi +} + +Load_Cache () { + if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then + echo "Using defaults from config.cache. To ignore, ./Config -nocache" + echo "" + . config.cache + CAN_QUICK="yes" + else + CAN_QUICK="no" + fi +} + +Run_Configure () { +WITH_BIN="" +WITH_DATA="" +WITH_ENC="" +WITH_IRCD="" +WITH_RUN="" +WITH_PERM="" +WITH_MYSQL="" + +if [ "$BINDEST" != "" ] ; then + WITH_BIN=" --with-bindir=$BINDEST" + WITH_DATA=" --with-datadir=$DATDEST" +fi + +if [ "$DATDEST" != "" ] ; then + WITH_DATA=" --with-datadir=$DATDEST" +fi + +if [ "$ENCRYPTION" != "" ] ; then + WITH_ENC=" --with-encryption" +fi + +if [ "$IRCTYPE_DEF" != "" ] ; then + WITH_IRCD=" --with-ircd=$IRCTYPE_DEF" +fi + +if [ "$RUNGROUP" != "" ] ; then + WITH_RUN=" --with-rungroup=$RUNGROUP" +fi + +if [ "$UMASK" != "" ] ; then + WITH_PERM=" --with-permissions=$UMASK" +fi + +if [ "$MYSQL" != "yes" ] ; then + WITH_MYSQL=" --without-mysql" +fi + + +echo "./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_IRCD $WITH_RUN $WITH_PERM $WITH_MYSQL" + +./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_IRCD $WITH_RUN $WITH_PERM $WITH_MYSQL +} + ECHO2SUF='' if [ "`echo -n a ; echo -n b`" = "ab" ] ; then ECHO2='echo -n' @@ -30,14 +93,6 @@ else fi export ECHO2 ECHO2SUF -exists () { # because some shells don't have test -e - if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then - return 0 - else - return 1 - fi -} - ########################################################################### # Init values ########################################################################### @@ -48,39 +103,55 @@ RUNGROUP= UMASK= IRCTYPE="no default" ENCRYPTION= +CAN_QUICK="no" ########################################################################### -# Load the cache +# Check out the options ########################################################################### -if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then -cat <name); } else { syntax_error(s_ChanServ, u, xname, xmsgs[0]); } @@ -4293,7 +4293,7 @@ static int do_access(User * u) ci->access = NULL; ci->accesscount = 0; - notice_lang(s_ChanServ, u, CHAN_ACCESS_CLEAR); + notice_lang(s_ChanServ, u, CHAN_ACCESS_CLEAR, ci->name); alog("%s: %s!%s@%s (level %d) cleared access list on %s", s_ChanServ, u->nick, u->username, u->host, get_access(u, ci), chan); @@ -4902,7 +4902,7 @@ static int do_akick(User * u) ci->akick = NULL; ci->akickcount = 0; - notice_lang(s_ChanServ, u, CHAN_AKICK_CLEAR); + notice_lang(s_ChanServ, u, CHAN_AKICK_CLEAR, ci->name); } else { syntax_error(s_ChanServ, u, "AKICK", CHAN_AKICK_SYNTAX); diff --git a/src/hostserv.c b/src/hostserv.c index 38ee8dea7..e6cf50f86 100644 --- a/src/hostserv.c +++ b/src/hostserv.c @@ -1035,8 +1035,23 @@ int do_del(User * u) /*************************************************************************/ int do_off(User * u) { - /* put any generic code here... :) */ - anope_cmd_vhost_off(u); + NickAlias *na; + char *vhost; + char *vident = NULL; + if ((na = findnick(u->nick))) { + if (na->status & NS_IDENTIFIED) { + vhost = getvHost(u->nick); + vident = getvIdent(u->nick); + if (vhost == NULL && vident == NULL) + notice_lang(s_HostServ, u, HOST_NOT_ASSIGNED); + else + anope_cmd_vhost_off(u); + } else { + notice_lang(s_HostServ, u, HOST_ID); + } + } else { + notice_lang(s_HostServ, u, HOST_NOT_REGED); + } return MOD_CONT; } diff --git a/src/nickserv.c b/src/nickserv.c index 54629c9d7..586362c9e 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -1761,8 +1761,11 @@ static void collide(NickAlias * na, int from_timeout) */ if (ircd->svsnick) { - snprintf(guestnick, sizeof(guestnick), "%s%d", NSGuestNickPrefix, - guestnum++); + /* We need to make sure the guestnick is free -- heinz */ + do { + snprintf(guestnick, sizeof(guestnick), "%s%d%d", + NSGuestNickPrefix, getrandom32(), getrandom32()); + } while (finduser(guestnick)); notice_lang(s_NickServ, na->u, FORCENICKCHANGE_CHANGING, guestnick); anope_cmd_svsnick(na->nick, guestnick, time(NULL)); @@ -3777,12 +3780,15 @@ static int do_glist(User * u) char *nick = strtok(NULL, " "); NickAlias *na, *na2; + int is_servadmin = is_services_admin(u); + int nick_ided = nick_identified(u); int i; - if ((nick ? (stricmp(nick, u->nick) ? !is_services_admin(u) - : !nick_identified(u)) - : !nick_identified(u))) { - notice_lang(s_NickServ, u, ACCESS_DENIED); + if ((nick ? (stricmp(nick, u->nick) ? !is_servadmin : !nick_ided) + : !nick_ided)) { + notice_lang(s_NickServ, u, + (nick_ided ? ACCESS_DENIED : + NICK_IDENTIFY_REQUIRED), s_NickServ); } else if ((!nick ? !(na = u->na) : !(na = findnick(nick)))) { notice_lang(s_NickServ, u, (!nick ? NICK_NOT_REGISTERED : NICK_X_NOT_REGISTERED), @@ -3879,11 +3885,14 @@ static int do_alist(User * u) } if (!nick_identified(u)) { - notice_lang(s_NickServ, u, ACCESS_DENIED); + notice_lang(s_NickServ, u, NICK_IDENTIFY_REQUIRED, s_NickServ); } else if (is_servadmin && nick && !na) { notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); + } else if (min_level <= ACCESS_INVALID || min_level >= ACCESS_FOUNDER) { + notice_lang(s_NickServ, u, CHAN_ACCESS_LEVEL_RANGE, + ACCESS_INVALID + 1, ACCESS_FOUNDER - 1); } else { int i, level; int chan_count = 0; diff --git a/src/shadowircd.c b/src/shadowircd.c index 2e4dcd239..c71381782 100644 --- a/src/shadowircd.c +++ b/src/shadowircd.c @@ -519,7 +519,8 @@ void anope_cmd_privmsg(char *source, char *dest, const char *fmt, ...) ud = find_uid(source); ud2 = find_uid(dest); - send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s", ud2->uid, buf); + send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s", + (ud2 ? ud2->uid : dest), buf); } void anope_cmd_privmsg2(char *source, char *dest, char *msg) @@ -529,7 +530,8 @@ void anope_cmd_privmsg2(char *source, char *dest, char *msg) ud = find_uid(source); ud2 = find_uid(dest); - send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s", ud2->uid, msg); + send_cmd((ud ? ud->uid : source), "PRIVMSG %s :%s", + (ud2 ? ud2->uid : dest), msg); } void anope_cmd_serv_notice(char *source, char *dest, char *msg) @@ -772,6 +774,7 @@ void moduleAddIRCDMsgs(void) m = createMessage("JOIN", anope_event_join); addCoreMessage(IRCD,m); m = createMessage("KICK", anope_event_kick); addCoreMessage(IRCD,m); m = createMessage("KILL", anope_event_kill); addCoreMessage(IRCD,m); + m = createMessage("SVSKILL", anope_event_kill); addCoreMessage(IRCD,m); m = createMessage("MODE", anope_event_mode); addCoreMessage(IRCD,m); m = createMessage("TMODE", anope_event_tmode); addCoreMessage(IRCD,m); m = createMessage("MOTD", anope_event_motd); addCoreMessage(IRCD,m); @@ -865,7 +868,7 @@ void anope_cmd_topic(char *whosets, char *chan, char *whosetit, void anope_cmd_vhost_off(User * u) { - send_cmd(NULL, "MODE %s -v", u->uid); + send_cmd(NULL, "MODE %s -v", (u->uid ? u->uid : u->nick)); } void anope_cmd_vhost_on(char *nick, char *vIdent, char *vhost) @@ -1604,7 +1607,7 @@ int anope_event_mode(char *source, int ac, char **av) u = find_byuid(source); u2 = find_byuid(av[0]); av[0] = u2->nick; - do_umode((u ? u->nick : source), ac, av); + do_umode2((u ? u->nick : source), ac, av); } return MOD_CONT; } diff --git a/version.log b/version.log index 105d10b8e..85052ebd4 100644 --- a/version.log +++ b/version.log @@ -8,10 +8,14 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="8" -VERSION_BUILD="656" +VERSION_BUILD="657" # $Log$ # +# BUILD : 1.7.8 (657) +# BUGS : 346 351 341 328 345 +# NOTES : Added channame to XOP/ACCESS/AKICK CLEAR, added checks to /hs off, fixed guest nick to take an unused nick, added SVN revision to win32 versions, fixed /ns alist to not accept invalid access levels, improved Config script, fixed responses for /ns glist/alist -- ty qa ;) +# # BUILD : 1.7.8 (656) # BUGS : 331 # NOTES : (1) Updated de.l (2) mydbgen will now be installed correctly (3) added support for cmodes +SN to solidircd -- cgit