diff options
-rw-r--r-- | Changes | 29 | ||||
-rw-r--r-- | Changes.lang | 2 | ||||
-rw-r--r-- | lang/Makefile | 34 | ||||
-rw-r--r-- | lang/cat.l | 4 | ||||
-rw-r--r-- | lang/de.l | 4 | ||||
-rw-r--r-- | lang/en_us.l | 26 | ||||
-rw-r--r-- | lang/es.l | 4 | ||||
-rw-r--r-- | lang/fr.l | 4 | ||||
-rw-r--r-- | lang/gr.l | 4 | ||||
-rw-r--r-- | lang/hun.l | 4 | ||||
-rw-r--r-- | lang/it.l | 4 | ||||
-rw-r--r-- | lang/nl.l | 4 | ||||
-rw-r--r-- | lang/pl.l | 4 | ||||
-rw-r--r-- | lang/pt.l | 4 | ||||
-rw-r--r-- | lang/ru.l | 4 | ||||
-rw-r--r-- | lang/tr.l | 4 | ||||
-rw-r--r-- | src/channels.c | 30 | ||||
-rw-r--r-- | src/chanserv.c | 13 | ||||
-rw-r--r-- | src/nickserv.c | 20 | ||||
-rw-r--r-- | src/proxy.c | 2 | ||||
-rw-r--r-- | src/servers.c | 4 | ||||
-rw-r--r-- | src/sessions.c | 2 | ||||
-rw-r--r-- | src/timeout.c | 11 | ||||
-rw-r--r-- | version.log | 10 |
24 files changed, 173 insertions, 58 deletions
@@ -28,21 +28,24 @@ Provided by Trystan <trystan@nomadirc.net> - 2004 10/05 A Globalized CS/NS STATUS messages [ #00] 10/02 A Added NewsCount as new feature in services.conf [ #00] 08/28 A CSupport for +I channel mode. [ #00] -08/28 A Complete support for Unreal3.2 [ #00] +08/28 A Complete support for Unreal3.2. [ #00] 08/28 A New BASE64 general library. [ #00] 09/07 A Unreal32 channel mode +T support. [ #00] 09/07 A Ircd CHANMODE now trapped and stored. [ #00] 08/23 A New protocol independent design (aka anope-capab). [ #00] 08/28 A New IRCD document for adding new ircd support to new design. [ #00] -10/31 F Fixes configure warning on BSD systems [#160] -10/30 F Fixed OS CLEARMODE, so the correct messages are sent [#207] -10/30 F Fixed MS INFO using the correct message [#205] -10/29 F Fixed CS CLEAR MODES not resetting the modes [#182] -10/29 F Fixed LogUser message, now normalizes the "realname" for display [#199] -10/29 F Fixed BS ACT, if the string contained control character 1 [#193] -10/27 F Fixed hardcored ircd sqlines from taking out services [#133] -10/27 F Fixed TOPIC timestamp not being read correctly [#196] -10/24 F Fixed OPNOTICE when doing /CS OP [#198] +11/06 F Fixed syntax error when NSForceEmail is disabled [ #00] +11/06 F Fixed using "make" under some BSD systems [ #00] +11/06 F Chanserv taking modes more than once. [ #68] +10/31 F Fixes configure warning on BSD systems. [#160] +10/30 F Fixed OS CLEARMODE, so the correct messages are sent. [#207] +10/30 F Fixed MS INFO using the correct message. [#205] +10/29 F Fixed CS CLEAR MODES not resetting the modes. [#182] +10/29 F Fixed LogUser message, now normalizes the "realname" for display. [#199] +10/29 F Fixed BS ACT, if the string contained control character 1. [#193] +10/27 F Fixed hardcored ircd sqlines from taking out services. [#133] +10/27 F Fixed TOPIC timestamp not being read correctly. [#196] +10/24 F Fixed OPNOTICE when doing /CS OP. [#198] 10/20 F Updated Base64 Lib to fix Unreal NICKIP. [ #00] 10/16 F Fixed BS TTB. [#185] 10/16 F RestrictOperNicks is no longer case sensitive. [#190] @@ -73,8 +76,10 @@ Provided by Trystan <trystan@nomadirc.net> - 2004 08/28 F Buffer preparation for vsnprintf() call. [#158] Provided by DrStein <gacevedo@anope.org> - 2004 +11/06 A NS ACCESS LIST reports correctly that the list is empty [ #00] 10/05 A CS/NS INFO shows the expire time. [ #00] 10/05 A NS GLIST shows the expire time. [ #00] +11/06 F Service Admins can now modify the XOP list [#170] 10/29 F ChanServ XOP reordering fix [#187] 10/29 F ChanServ AKICK reordering fix [#201] 10/29 F ChanServ now requires a more obscure password [#202] @@ -89,6 +94,10 @@ Provided by DrStein <gacevedo@anope.org> - 2004 Provided by crazytoon <da.crew@gmx.net> - 2004 10/24 A Updated German language file [ #00] +Provided by Miles Nordin <carton@Ivy.NET> - 2004 +11/06 F Fixes segfault under NetBSD with channel names using i18n symbols [ #00] + + Anope Version 1.7.5 ------------------- Provided by Anope Dev. <dev@anope.org> - 2004 diff --git a/Changes.lang b/Changes.lang index e6611b8e7..627329b07 100644 --- a/Changes.lang +++ b/Changes.lang @@ -23,6 +23,8 @@ Anope Version 1.7.6 NICK_GLIST_REPLY NICK_GLIST_REPLY_ADMIN CHAN_INFO_EXPIRE + NICK_ACCESS_LIST_EMPTY + NICK_ACCESS_LIST_X_EMPTY *** Mod Strings: diff --git a/lang/Makefile b/lang/Makefile index 3c7849284..a302e6d9a 100644 --- a/lang/Makefile +++ b/lang/Makefile @@ -18,22 +18,24 @@ all: $(LANGOBJS) distclean: clean spotless install: all - mkdir -p $(DATDEST)/languages -ifdef RUNGROUP - chgrp $(RUNGROUP) $(DATDEST)/languages - chmod 770 $(DATDEST)/languages -else - chmod 700 $(DATDEST)/languages -endif - cp $(LANGOBJS) $(DATDEST)/languages -ifdef RUNGROUP - chgrp $(RUNGROUP) $(DATDEST)/languages/* - chmod 660 $(DATDEST)/languages/* -else - chmod 600 $(DATDEST)/languages/* -endif - - + test -d $(DATDEST)/languages || mkdir $(DATDEST)/languages + @if [ "$(RUNGROUP)" ] ; then \ + echo chgrp -R $(RUNGROUP) $(DATDEST)/languages ; \ + chgrp -R $(RUNGROUP) $(DATDEST)/languages ; \ + echo chmod -R g+rw $(DATDEST)/languages ; \ + chmod -R g+rw $(DATDEST)/languages ; \ + $(CP) $(LANGOBJS) $(DATDEST)/languages ; \ + echo chgrp -R $(RUNGROUP) $(DATDEST)/languages ; \ + chgrp -R $(RUNGROUP) $(DATDEST)/languages/* ; \ + echo chmod -R g+rw $(DATDEST)/languages/* ; \ + chmod -R g+rw $(DATDEST)/languages/* ; \ + fi + @if [ ! "$(RUNGROUP)" ] ; then \ + chmod 700 $(DATDEST)/languages/ ; \ + $(CP) $(LANGOBJS) $(DATDEST)/languages ; \ + chmod 600 $(DATDEST)/languages/* ; \ + fi + clean: rm -f $(LANGOBJS) langcomp diff --git a/lang/cat.l b/lang/cat.l index ff9590dff..d17bea766 100644 --- a/lang/cat.l +++ b/lang/cat.l @@ -550,6 +550,10 @@ NICK_ACCESS_LIST Lllista d'accés: NICK_ACCESS_LIST_X Lllista d'accés per %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -570,6 +570,10 @@ NICK_ACCESS_LIST Access-Liste: NICK_ACCESS_LIST_X Access-List von %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 diff --git a/lang/en_us.l b/lang/en_us.l index 291e89301..251eeee47 100644 --- a/lang/en_us.l +++ b/lang/en_us.l @@ -540,6 +540,10 @@ NICK_ACCESS_LIST Access list: NICK_ACCESS_LIST_X Access list for %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -589,7 +593,7 @@ NICK_INFO_GREET NICK_INFO_OPTIONS Options: %s NICK_INFO_EXPIRE - Expires in: %s + Expires on: %s # These strings MUST NOT be empty NICK_INFO_OPT_KILL Protection @@ -1394,7 +1398,7 @@ CHAN_INFO_OPT_NONE CHAN_INFO_MODE_LOCK Mode lock: %s CHAN_INFO_EXPIRE - Expires in: %s + Expires on: %s CHAN_INFO_NO_EXPIRE This channel will not expire. @@ -2573,29 +2577,29 @@ OPER_SET_IGNORE_OFF OPER_SET_IGNORE_ERROR Setting for IGNORE must be ON or OFF. OPER_SET_READONLY_ON - Services is now in read-only mode. + Services are now in read-only mode. OPER_SET_READONLY_OFF - Services is now in read-write mode. + Services are now in read-write mode. OPER_SET_READONLY_ERROR Setting for READONLY must be ON or OFF. OPER_SET_LOGCHAN_ON - Services is now reporting log messages to %s. + Services are now reporting log messages to %s. OPER_SET_LOGCHAN_OFF - Services is no longer reporting log messages to a channel. + Services are no longer reporting log messages to a channel. OPER_SET_LOGCHAN_ERROR Setting for LOGCHAN must be ON or OFF and LogChannel must be defined. OPER_SET_DEBUG_ON - Services is now in debug mode. + Services are now in debug mode. OPER_SET_DEBUG_OFF - Services is now in non-debug mode. + Services are now in non-debug mode. OPER_SET_DEBUG_LEVEL - Services is now in debug mode (level %d). + Services are now in debug mode (level %d). OPER_SET_DEBUG_ERROR Setting for DEBUG must be ON, OFF, or a positive number. OPER_SET_NOEXPIRE_ON - Services is now in no expire mode. + Services are now in no expire mode. OPER_SET_NOEXPIRE_OFF - Services is now in expire mode. + Services are now in expire mode. OPER_SET_NOEXPIRE_ERROR Setting for NOEXPIRE must be ON or OFF. OPER_SET_UNKNOWN_OPTION @@ -554,6 +554,10 @@ NICK_ACCESS_LIST Lista de acceso: NICK_ACCESS_LIST_X Lista de acceso para %s: +NICK_ACCESS_LIST_EMPTY + Tu lista de acceso esta vacia. +NICK_ACCESS_LIST_X_EMPTY + La lista de acceso para %s esta vacia. # Status messages NICK_STATUS_0 @@ -552,6 +552,10 @@ NICK_ACCESS_LIST Liste d'accès: NICK_ACCESS_LIST_X Liste d'accès de %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -548,6 +548,10 @@ NICK_ACCESS_LIST Ëßóôá ðñüóâáóçò: NICK_ACCESS_LIST_X Ëßóôá ðñüóâáóçò ãéá %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 diff --git a/lang/hun.l b/lang/hun.l index 2ee18e29a..3f31a8010 100644 --- a/lang/hun.l +++ b/lang/hun.l @@ -547,6 +547,10 @@ NICK_ACCESS_LIST Hozzáférési lista: NICK_ACCESS_LIST_X %s hozzáférési listája: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -549,6 +549,10 @@ NICK_ACCESS_LIST Lista di accesso: NICK_ACCESS_LIST_X Lista di accesso di %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -551,6 +551,10 @@ NICK_ACCESS_LIST Toegangslijst: NICK_ACCESS_LIST_X Toegangslijst voor %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -601,6 +601,10 @@ NICK_ACCESS_LIST Lista dostêpu: NICK_ACCESS_LIST_X Lista dostêpu dla %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -548,6 +548,10 @@ NICK_ACCESS_LIST Lista de acesso: NICK_ACCESS_LIST_X Lista de acesso para %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -548,6 +548,10 @@ NICK_ACCESS_LIST Ñïèñîê äîñòóïà: NICK_ACCESS_LIST_X Ñïèñîê äîñòóïà äëÿ %s: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 @@ -554,6 +554,10 @@ NICK_ACCESS_LIST Access listesi: NICK_ACCESS_LIST_X %s nickinin access listesi: +NICK_ACCESS_LIST_EMPTY + Your access list is empty. +NICK_ACCESS_LIST_X_EMPTY + Access list for %s is empty. # Status messages NICK_STATUS_0 diff --git a/src/channels.c b/src/channels.c index 94cc880f8..eff7b5f96 100644 --- a/src/channels.c +++ b/src/channels.c @@ -235,10 +235,32 @@ void chan_set_modes(const char *source, Channel * chan, int ac, char **av, mode, chan->name, user->nick); if (add) { - if (check && cum->is_valid - && !cum->is_valid(user, chan, servermode)) - continue; - chan_set_user_status(chan, user, cum->status); + /* Fixes bug #68 + - might be a bit ugly but it works, the idea is that since the + is_valid function strips out all of the modes there is no point + in sending it over and over again + */ + if (check) { + if (check == 2 && cum->is_valid) { + if (debug) { + alog("debug: Modes already removed, calling remove_user_status() to clean up"); + } + chan_remove_user_status(chan, user, cum->status); + continue; + } else if (cum->is_valid + && !cum->is_valid(user, chan, servermode)) { + if (debug) { + alog("debug: Modes already sent calling remove_user_status() to clean up"); + } + chan_remove_user_status(chan, user, cum->status); + check = 2; + continue; + } else { + chan_set_user_status(chan, user, cum->status); + } + } else { + chan_set_user_status(chan, user, cum->status); + } } else { chan_remove_user_status(chan, user, cum->status); } diff --git a/src/chanserv.c b/src/chanserv.c index 46c06b930..8bdfed631 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -1971,7 +1971,8 @@ ChannelInfo *cs_findchan(const char *chan) return NULL; } - for (ci = chanlists[tolower(chan[1])]; ci; ci = ci->next) { + for (ci = chanlists[(unsigned char) tolower(chan[1])]; ci; + ci = ci->next) { if (stricmp(ci->name, chan) == 0) return ci; } @@ -2035,13 +2036,13 @@ void alpha_insert_chan(ChannelInfo * ci) chan = ci->name; - for (prev = NULL, ptr = chanlists[tolower(chan[1])]; + for (prev = NULL, ptr = chanlists[(unsigned char) tolower(chan[1])]; ptr != NULL && stricmp(ptr->name, chan) < 0; prev = ptr, ptr = ptr->next); ci->prev = prev; ci->next = ptr; if (!prev) - chanlists[tolower(chan[1])] = ci; + chanlists[(unsigned char) tolower(chan[1])] = ci; else prev->next = ci; if (ptr) @@ -2126,7 +2127,7 @@ int delchan(ChannelInfo * ci) if (ci->prev) ci->prev->next = ci->next; else - chanlists[tolower(ci->name[1])] = ci->next; + chanlists[(unsigned char) tolower(ci->name[1])] = ci->next; if (ci->desc) free(ci->desc); if (ci->mlock_key) @@ -3700,7 +3701,7 @@ static int do_xop(User * u, char *xname, int xlev, int *xmsgs) ulev = get_access(u, ci); - if (xlev >= ulev || ulev < ACCESS_AOP) { + if ((xlev >= ulev || ulev < ACCESS_AOP) && !is_servadmin) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); return MOD_CONT; } @@ -3721,7 +3722,7 @@ static int do_xop(User * u, char *xname, int xlev, int *xmsgs) /** * Patch provided by PopCorn to prevert AOP's reducing SOP's levels **/ - if ((access->level >= ulev) && (!u->isSuperAdmin)) { + if ((access->level >= ulev) && (!is_servadmin)) { notice_lang(s_ChanServ, u, PERMISSION_DENIED); return MOD_CONT; } diff --git a/src/nickserv.c b/src/nickserv.c index 65ee90489..87a2228dc 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -2044,9 +2044,13 @@ static int do_register(User * u) } } - if (!pass || (NSForceEmail && !email)) { - syntax_error(s_NickServ, u, "REGISTER", - NICK_REGISTER_SYNTAX_EMAIL); + if (!pass) { + if (NSForceEmail && !email) { + syntax_error(s_NickServ, u, "REGISTER", + NICK_REGISTER_SYNTAX_EMAIL); + } else { + syntax_error(s_NickServ, u, "REGISTER", NICK_REGISTER_SYNTAX); + } } else if (time(NULL) < u->lastnickreg + NSRegDelay) { notice_lang(s_NickServ, u, NICK_REG_PLEASE_WAIT, NSRegDelay); } else if (u->na) { /* i.e. there's already such a nick regged */ @@ -3247,6 +3251,11 @@ static int do_access(User * u) if (cmd && stricmp(cmd, "LIST") == 0 && mask && is_services_admin(u) && (na = findnick(mask))) { + if (na->nc->accesscount == 0) { + notice_lang(s_NickServ, u, NICK_ACCESS_LIST_X_EMPTY, na->nick); + return MOD_CONT; + } + if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); return MOD_CONT; @@ -3326,6 +3335,11 @@ static int do_access(User * u) na->nc->access = NULL; } } else if (stricmp(cmd, "LIST") == 0) { + if (na->nc->accesscount == 0) { + notice_lang(s_NickServ, u, NICK_ACCESS_LIST_EMPTY, u->nick); + return MOD_CONT; + } + notice_lang(s_NickServ, u, NICK_ACCESS_LIST); for (access = na->nc->access, i = 0; i < na->nc->accesscount; access++, i++) { diff --git a/src/proxy.c b/src/proxy.c index 757bf2bd9..0a6ff0d84 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -234,7 +234,7 @@ int proxy_check(char *nick, char *host, uint32 ip) for (message = ProxyMessage, i = 0; i < 8 && *message && **message; message++, i++) - notice(s_GlobalNoticer, nick, *message); + notice(s_GlobalNoticer, nick, "%s", *message); hc = proxy_cache_add(host); if (ircd->nickip) { diff --git a/src/servers.c b/src/servers.c index c32aadac0..d77dc4713 100644 --- a/src/servers.c +++ b/src/servers.c @@ -183,6 +183,10 @@ Server *findserver(Server * s, const char *name) { Server *sl; + if (!name || !*name) { + return NULL; + } + if (debug >= 3) alog("debug: findserver(%p)", name); while (s && (stricmp(s->name, name) != 0)) { diff --git a/src/sessions.c b/src/sessions.c index 37744a967..30edad494 100644 --- a/src/sessions.c +++ b/src/sessions.c @@ -240,7 +240,7 @@ int add_session(char *nick, char *host) if (SessionLimitExceeded) notice(s_OperServ, nick, SessionLimitExceeded, host); if (SessionLimitDetailsLoc) - notice(s_OperServ, nick, SessionLimitDetailsLoc); + notice(s_OperServ, nick, "%s", SessionLimitDetailsLoc); /* We don't use kill_user() because a user stucture has not yet * been created. Simply kill the user. -TheShadow diff --git a/src/timeout.c b/src/timeout.c index f71e16cac..bd7af4c8c 100644 --- a/src/timeout.c +++ b/src/timeout.c @@ -27,14 +27,15 @@ int send_timeout_list(User * u) { Timeout *to, *last; - notice(s_OperServ, u->nick, "Now: %ld", time(NULL)); + notice(s_OperServ, u->nick, "Now: %ld", (long int) time(NULL)); for (to = timeouts, last = NULL; to; last = to, to = to->next) { - notice(s_OperServ, u->nick, "%p: %ld: %p (%p)", - to, to->timeout, to->code, to->data); + notice(s_OperServ, u->nick, "0x%p: %ld: 0x%p (0x%p)", + (void *) to, (long int) to->timeout, (void *) to->code, + (void *) to->data); if (to->prev != last) notice(s_OperServ, u->nick, - " to->prev incorrect! expected=%p seen=%p", - last, to->prev); + " to->prev incorrect! expected=0x%p seen=0x%p", + (void *) last, (void *) to->prev); } return MOD_CONT; } diff --git a/version.log b/version.log index 921e89895..44730dba8 100644 --- a/version.log +++ b/version.log @@ -8,10 +8,18 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="6" -VERSION_BUILD="438" +VERSION_BUILD="439" # $Log$ # +# BUILD : 1.7.6 (439) +# BUGS : 68, 170, 209 +# NOTES : 1. DrSteins XOP patch (bug# 170), 2. Cleaned up the English language file for grammar (bug# 209), +# 3. Patch that fixes segfaults under NetBSD, 4. Cleaned up some places that could lead to segfaults, +# 5. DrSteins patch for NS ACCESS LIST, 6. Chanserv taking modes more than once (bug #68), +# 7. Fixed errors when doing "make" under some BSD systems, 8. Fixed syntax error when NSForceEmail is disabled +# +# # BUILD : 1.7.6 (438) # BUGS : 160 # NOTES : configure warning about sysproto.h resolved |