diff options
-rw-r--r-- | Changes | 3 | ||||
-rw-r--r-- | include/extern.h | 8 | ||||
-rw-r--r-- | src/bahamut.c | 9 | ||||
-rw-r--r-- | src/botserv.c | 14 | ||||
-rw-r--r-- | src/channels.c | 7 | ||||
-rw-r--r-- | src/chanserv.c | 7 | ||||
-rw-r--r-- | src/dreamforge.c | 10 | ||||
-rw-r--r-- | src/hybrid.c | 9 | ||||
-rw-r--r-- | src/memoserv.c | 2 | ||||
-rw-r--r-- | src/ptlink.c | 10 | ||||
-rw-r--r-- | src/rageircd.c | 10 | ||||
-rw-r--r-- | src/ultimate2.c | 10 | ||||
-rw-r--r-- | src/ultimate3.c | 10 | ||||
-rw-r--r-- | src/unreal31.c | 15 | ||||
-rw-r--r-- | src/unreal32.c | 15 | ||||
-rw-r--r-- | src/viagra.c | 10 | ||||
-rw-r--r-- | version.log | 7 |
17 files changed, 151 insertions, 5 deletions
@@ -33,6 +33,8 @@ Provided by Trystan <trystan@nomadirc.net> - 2004 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/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] @@ -66,6 +68,7 @@ Provided by Trystan <trystan@nomadirc.net> - 2004 Provided by DrStein <gacevedo@anope.org> - 2004 10/05 A CS/NS INFO shows the expire time. [ #00] 10/05 A NS GLIST shows the expire time. [ #00] +10/27 F MS CHECK to look for the correct sender value. [#200] 10/21 F Updated Spanish language file. [ #00] 10/15 F More Check and trap for forbidden nicks on HS. [#183] 10/07 F NEWS reordering issue [ #00] diff --git a/include/extern.h b/include/extern.h index 748a9b18a..9c72ba5cc 100644 --- a/include/extern.h +++ b/include/extern.h @@ -27,6 +27,12 @@ E IRCDCAPAB ircdcap[]; E const char flood_mode_char_set[]; E const char flood_mode_char_remove[]; E int UseTSMODE; /* hack to get around bahamut clones that don't send TSMODE */ +extern unsigned long umodes[128]; +extern char csmodes[128]; +extern CMMode cmmodes[128]; +extern CBMode cbmodes[128]; +extern CBModeInfo cbmodeinfos[]; +extern CUMode cumodes[128]; /**** actions.c ****/ @@ -1094,6 +1100,8 @@ extern void anope_cmd_jupe(char *jserver, char *who, char *reason); extern void anope_cmd_global_legacy(char *source, char *fmt); extern void wallops(char *source, const char *fmt, ...); +extern int anope_valid_nick(char *nick); + extern char *common_get_vident(User *u); extern char *common_get_vhost(User *u); extern char *send_token(char *token1, char *token2); diff --git a/src/bahamut.c b/src/bahamut.c index e7cfe222c..64623ddd1 100644 --- a/src/bahamut.c +++ b/src/bahamut.c @@ -1613,5 +1613,14 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} #endif diff --git a/src/botserv.c b/src/botserv.c index fdee40b6f..a23616521 100644 --- a/src/botserv.c +++ b/src/botserv.c @@ -1227,6 +1227,13 @@ static int do_bot(User * u) return MOD_CONT; } } + + /* check for hardcored ircd forbidden nicks */ + if (!anope_valid_nick(nick)) { + notice_lang(s_BotServ, u, BOT_BAD_NICK); + return MOD_CONT; + } + if (!isValidHost(host, 3)) { notice_lang(s_BotServ, u, BOT_BAD_HOST); return MOD_CONT; @@ -1331,6 +1338,13 @@ static int do_bot(User * u) return MOD_CONT; } } + + /* check for hardcored ircd forbidden nicks */ + if (!anope_valid_nick(nick)) { + notice_lang(s_BotServ, u, BOT_BAD_NICK); + return MOD_CONT; + } + if (!isValidHost(host, 3)) { notice_lang(s_BotServ, u, BOT_BAD_HOST); return MOD_CONT; diff --git a/src/channels.c b/src/channels.c index dc6290986..94cc880f8 100644 --- a/src/channels.c +++ b/src/channels.c @@ -929,9 +929,12 @@ void do_topic(const char *source, int ac, char **av) time_t topic_time; if (ircd->sjb64) { - ts = base64dects(av[0]); + ts = base64dects(av[2]); + if (debug) { + alog("debug: encoded TOPIC TS %s converted to %d", av[2], ts); + } } else { - ts = strtoul(av[0], NULL, 10); + ts = strtoul(av[2], NULL, 10); } topic_time = ts; diff --git a/src/chanserv.c b/src/chanserv.c index da135d748..b18fac1c7 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -1801,7 +1801,12 @@ int check_topiclock(Channel * c, time_t topic_time) strscpy(c->topic_setter, ci->last_topic_setter, NICKMAX); if (ircd->topictsforward) { /* Because older timestamps are rejected */ - c->topic_time = topic_time + 1; + /* Some how the topic_time from do_topic is 0 set it to current + 1 */ + if (!topic_time) { + c->topic_time = time(NULL) + 1; + } else { + c->topic_time = topic_time + 1; + } } else { c->topic_time = ci->last_topic_time; } diff --git a/src/dreamforge.c b/src/dreamforge.c index 062b3373b..0d3e272e3 100644 --- a/src/dreamforge.c +++ b/src/dreamforge.c @@ -1362,4 +1362,14 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} + #endif diff --git a/src/hybrid.c b/src/hybrid.c index 68fad43f7..3945cb315 100644 --- a/src/hybrid.c +++ b/src/hybrid.c @@ -1485,5 +1485,14 @@ void anope_cmd_jupe(char *jserver, char *who, char *reason) new_server(me_server, jserver, rbuf, SERVER_JUPED, NULL); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} #endif diff --git a/src/memoserv.c b/src/memoserv.c index 5b031d373..e9e86f66c 100644 --- a/src/memoserv.c +++ b/src/memoserv.c @@ -1393,7 +1393,7 @@ static int do_memocheck(User * u) have to loop backwards */ for (i = (mi->memocount - 1); i >= 0; i--) { - if (!stricmp(mi->memos[i].sender, u->nick)) { + if (!stricmp(mi->memos[i].sender, u->na->nc->display)) { found = 1; /* Yes, we've found the memo */ tm = localtime(&mi->memos[i].time); diff --git a/src/ptlink.c b/src/ptlink.c index 30d9b4576..2a35cd1cc 100644 --- a/src/ptlink.c +++ b/src/ptlink.c @@ -1669,4 +1669,14 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} + #endif diff --git a/src/rageircd.c b/src/rageircd.c index e3fbf8653..3a470be7a 100644 --- a/src/rageircd.c +++ b/src/rageircd.c @@ -1605,4 +1605,14 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} + #endif diff --git a/src/ultimate2.c b/src/ultimate2.c index 10324ee6b..1f9563138 100644 --- a/src/ultimate2.c +++ b/src/ultimate2.c @@ -1708,4 +1708,14 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} + #endif diff --git a/src/ultimate3.c b/src/ultimate3.c index c6cb5ad11..e70daeb72 100644 --- a/src/ultimate3.c +++ b/src/ultimate3.c @@ -1772,4 +1772,14 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} + #endif diff --git a/src/unreal31.c b/src/unreal31.c index ebe476a6d..af642d385 100644 --- a/src/unreal31.c +++ b/src/unreal31.c @@ -1561,4 +1561,19 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_token("GLOBOPS", "]"), fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + if (!stricmp("ircd", nick)) { + return 0; + } + if (!stricmp("irc", nick)) { + return 0; + } + return 1; +} + #endif diff --git a/src/unreal32.c b/src/unreal32.c index 439313ff6..35316351e 100644 --- a/src/unreal32.c +++ b/src/unreal32.c @@ -2136,4 +2136,19 @@ void anope_cmd_jupe(char *jserver, char *who, char *reason) new_server(me_server, jserver, rbuf, SERVER_JUPED, NULL); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + if (!stricmp("ircd", nick)) { + return 0; + } + if (!stricmp("irc", nick)) { + return 0; + } + return 1; +} + #endif diff --git a/src/viagra.c b/src/viagra.c index d204f9d8a..34ef38fba 100644 --- a/src/viagra.c +++ b/src/viagra.c @@ -1681,4 +1681,14 @@ void anope_cmd_global_legacy(char *source, char *fmt) send_cmd(source ? source : ServerName, "GLOBOPS :%s", fmt); } +/* + 1 = valid nick + 0 = nick is in valid +*/ +int anope_valid_nick(char *nick) +{ + /* no hard coded invalid nicks */ + return 1; +} + #endif diff --git a/version.log b/version.log index 4ae23112b..a331de000 100644 --- a/version.log +++ b/version.log @@ -8,10 +8,15 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="5" -VERSION_BUILD="424" +VERSION_BUILD="426" # $Log$ # +# BUILD : 1.7.5 (426) +# BUGS : 133, 196, 200 +# NOTES : Add method to deal with hardcored sqline in the ircd (133), fixes timestamp errors with TOPIC (196), modes +# structs externed so mod coders can get to them easier (N/A), MS CHECK now checks the right value (200) +# # BUILD : 1.7.5 (424) # BUGS : N/A # NOTES : Updated de.l per crazytoon |