summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes3
-rw-r--r--include/extern.h8
-rw-r--r--src/bahamut.c9
-rw-r--r--src/botserv.c14
-rw-r--r--src/channels.c7
-rw-r--r--src/chanserv.c7
-rw-r--r--src/dreamforge.c10
-rw-r--r--src/hybrid.c9
-rw-r--r--src/memoserv.c2
-rw-r--r--src/ptlink.c10
-rw-r--r--src/rageircd.c10
-rw-r--r--src/ultimate2.c10
-rw-r--r--src/ultimate3.c10
-rw-r--r--src/unreal31.c15
-rw-r--r--src/unreal32.c15
-rw-r--r--src/viagra.c10
-rw-r--r--version.log7
17 files changed, 151 insertions, 5 deletions
diff --git a/Changes b/Changes
index b71c901c5..b13d5db08 100644
--- a/Changes
+++ b/Changes
@@ -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