diff options
author | Robin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-10-01 18:12:23 +0000 |
---|---|---|
committer | Robin Burchell w00t@inspircd.org <Robin Burchell w00t@inspircd.org@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-10-01 18:12:23 +0000 |
commit | eca7e896120cd57fe877a49ec9a3290760403cf2 (patch) | |
tree | 8dfa3700b1538c43d34c61d8c85ef2428dd6d234 | |
parent | a2b5941fc71853582a4ac70ce243c433240f7241 (diff) |
Added flood_mode_check() function to IRCDProtoNew class.
Conflicts:
include/extern.h
include/services.h
src/ircd.c
src/protocol/bahamut.c
src/protocol/bahamut.h
src/protocol/charybdis.c
src/protocol/charybdis.h
src/protocol/inspircd11.c
src/protocol/inspircd11.h
src/protocol/ratbox.c
src/protocol/ratbox.h
src/protocol/unreal32.c
src/protocol/unreal32.h
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1288 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r-- | include/extern.h | 4 | ||||
-rw-r--r-- | include/services.h | 5 | ||||
-rw-r--r-- | src/ircd.c | 25 | ||||
-rw-r--r-- | src/protocol/bahamut.c | 19 | ||||
-rw-r--r-- | src/protocol/bahamut.h | 4 | ||||
-rw-r--r-- | src/protocol/charybdis.c | 21 | ||||
-rw-r--r-- | src/protocol/charybdis.h | 5 | ||||
-rw-r--r-- | src/protocol/inspircd11.c | 19 | ||||
-rwxr-xr-x | src/protocol/inspircd11.h | 4 | ||||
-rw-r--r-- | src/protocol/ratbox.c | 9 | ||||
-rw-r--r-- | src/protocol/ratbox.h | 2 | ||||
-rw-r--r-- | src/protocol/unreal32.c | 78 | ||||
-rw-r--r-- | src/protocol/unreal32.h | 6 |
13 files changed, 56 insertions, 145 deletions
diff --git a/include/extern.h b/include/extern.h index 07ca159da..26ec8b538 100644 --- a/include/extern.h +++ b/include/extern.h @@ -621,10 +621,6 @@ E void pmodule_cmd_318(void (*func) (const char *source, const char *who)); E void pmodule_cmd_242(void (*func) (const char *buf)); E void pmodule_cmd_243(void (*func) (const char *buf)); E void pmodule_cmd_211(void (*func) (const char *buf)); -E void pmodule_set_umode(void (*func) (User * user, int ac, const char **av)); -E void pmodule_valid_nick(int (*func) (const char *nick)); -E void pmodule_valid_chan(int (*func) (const char *chan)); -E void pmodule_flood_mode_check(int (*func) (const char *value)); E void pmodule_ircd_var(IRCDVar * ircdvar); E void pmodule_ircd_cap(IRCDCAPAB * cap); E void pmodule_ircd_version(const char *version); diff --git a/include/services.h b/include/services.h index 5da4b777a..cf2dfff12 100644 --- a/include/services.h +++ b/include/services.h @@ -1381,6 +1381,11 @@ class IRCDProtoNew { cmd_server(jserver, 2, rbuf); new_server(me_server, jserver, rbuf, SERVER_JUPED, NULL); } + + virtual void set_umode(User *, int, const char **) = 0; + virtual int valid_nick(const char *) { return 1; } + virtual int valid_chan(const char *) { return 1; } + virtual int flood_mode_check(const char *) { return 0; } }; /*************************************************************************/ diff --git a/src/ircd.c b/src/ircd.c index e74af5422..a49f79b7d 100644 --- a/src/ircd.c +++ b/src/ircd.c @@ -61,9 +61,6 @@ void initIrcdProto() ircdproto.ircd_cmd_242 = NULL; ircdproto.ircd_cmd_243 = NULL; ircdproto.ircd_cmd_211 = NULL; - ircdproto.ircd_flood_mode_check = NULL; - ircdproto.ircd_valid_nick = NULL; - ircdproto.ircd_valid_chan = NULL; } void anope_set_umode(User *user, int ac, const char **av) @@ -541,7 +538,7 @@ void anope_cmd_eob() int anope_flood_mode_check(const char *value) { - return ircdproto.ircd_flood_mode_check(value); + return ircdprotonew->flood_mode_check(value); } void anope_cmd_jupe(const char *jserver, const char *who, const char *reason) @@ -662,26 +659,6 @@ void pmodule_cmd_211(void (*func) (const char *buf)) ircdproto.ircd_cmd_211 = func; } -void pmodule_set_umode(void (*func) (User * user, int ac, const char **av)) -{ - ircdproto.ircd_set_umode = func; -} - -void pmodule_valid_nick(int (*func) (const char *nick)) -{ - ircdproto.ircd_valid_nick = func; -} - -void pmodule_valid_chan(int (*func) (const char *chan)) -{ - ircdproto.ircd_valid_chan = func; -} - -void pmodule_flood_mode_check(int (*func) (const char *value)) -{ - ircdproto.ircd_flood_mode_check = func; -} - void pmodule_ircd_var(IRCDVar * ircdvar) { ircd = ircdvar; diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c index 5caca909b..c72e802cd 100644 --- a/src/protocol/bahamut.c +++ b/src/protocol/bahamut.c @@ -1266,18 +1266,11 @@ int anope_event_admin(const char *source, int ac, const char **av) return MOD_CONT; } -int bahamut_flood_mode_check(const char *value) +int BahamutIRCdProto::flood_mode_check(const char *value) { - char *dp, *end; - - if (value && *value != ':' - && (strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0) - && (*dp == ':') && (*(++dp) != 0) && (strtoul(dp, &end, 10) > 0) - && (*end == 0)) { - return 1; - } else { - return 0; - } + char *dp, *end; + if (value && *value != ':' && strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0 && *dp == ':' && *(++dp) && strtoul(dp, &end, 10) > 0 && !*end) return 1; + else return 0; } /* @@ -1332,10 +1325,6 @@ void moduleAddAnopeCmds() pmodule_cmd_242(bahamut_cmd_242); pmodule_cmd_243(bahamut_cmd_243); pmodule_cmd_211(bahamut_cmd_211); - pmodule_flood_mode_check(bahamut_flood_mode_check); - pmodule_valid_nick(bahamut_valid_nick); - pmodule_valid_chan(bahamut_valid_chan); - pmodule_set_umode(bahamut_set_umode); } /** diff --git a/src/protocol/bahamut.h b/src/protocol/bahamut.h index bc470fc7a..509965a1c 100644 --- a/src/protocol/bahamut.h +++ b/src/protocol/bahamut.h @@ -76,8 +76,6 @@ void bahamut_cmd_318(const char *source, const char *who); void bahamut_cmd_242(const char *buf); void bahamut_cmd_243(const char *buf); void bahamut_cmd_211(const char *buf); -int bahamut_flood_mode_check(const char *value); -int bahamut_valid_nick(const char *nick); class BahamutIRCdProto : public IRCDProtoNew { public: @@ -110,4 +108,6 @@ class BahamutIRCdProto : public IRCDProtoNew { void cmd_svid_umode3(User *, const char *); void cmd_eob(); void cmd_server(const char *, int, const char *); + void set_umode(User *, int, const char **); + int flood_mode_check(const char *); } ircd_proto; diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c index 2593b6016..b3e2337f7 100644 --- a/src/protocol/charybdis.c +++ b/src/protocol/charybdis.c @@ -1468,20 +1468,11 @@ int anope_event_bmask(const char *source, int ac, const char **av) return MOD_CONT; } -int charybdis_flood_mode_check(const char *value) +int CharybdisProto::flood_mode_check(const char *value) { - char *dp, *end; - - if (value && *value != ':' - && (strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0) - && (*dp == ':') && (*(++dp) != 0) && (strtoul(dp, &end, 10) > 0) - && (*end == 0)) { - return 1; - } else { - return 0; - } - - return 0; + char *dp, *end; + if (value && *value != ':' && strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0 && *dp == ':' && *(++dp) && strtoul(dp, &end, 10) > 0 && !*end) return 1; + else return 0; } int anope_event_error(const char *source, int ac, const char **av) @@ -1558,10 +1549,6 @@ void moduleAddAnopeCmds() pmodule_cmd_242(charybdis_cmd_242); pmodule_cmd_243(charybdis_cmd_243); pmodule_cmd_211(charybdis_cmd_211); - pmodule_flood_mode_check(charybdis_flood_mode_check); - pmodule_valid_nick(charybdis_valid_nick); - pmodule_valid_chan(charybdis_valid_chan); - pmodule_set_umode(charybdis_set_umode); } /** diff --git a/src/protocol/charybdis.h b/src/protocol/charybdis.h index c2e276e25..6df395c73 100644 --- a/src/protocol/charybdis.h +++ b/src/protocol/charybdis.h @@ -64,8 +64,6 @@ void charybdis_cmd_318(const char *source, const char *who); void charybdis_cmd_242(const char *buf); void charybdis_cmd_243(const char *buf); void charybdis_cmd_211(const char *buf); -int charybdis_flood_mode_check(const char *value); -int charybdis_valid_nick(const char *nick); class CharybdisProto : public IRCDProtoNew { public: @@ -99,4 +97,7 @@ class CharybdisProto : public IRCDProtoNew { void cmd_unsgline(const char *); void cmd_sgline(const char *, const char *); void cmd_server(const char *, int, const char *); + void set_umode(User *, int, const char **); + int valid_nick(const char *); + int flood_mode_check(const char *); } ircd_proto; diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c index a0bbcb12c..e86724526 100644 --- a/src/protocol/inspircd11.c +++ b/src/protocol/inspircd11.c @@ -1514,18 +1514,11 @@ int anope_event_admin(const char *source, int ac, const char **av) return MOD_CONT; } -int inspircd_flood_mode_check(const char *value) +int InspIRCdProto::flood_mode_check(const char *value) { - char *dp, *end; - - if (value && *value != ':' - && (strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0) - && (*dp == ':') && (*(++dp) != 0) && (strtoul(dp, &end, 10) > 0) - && (*end == 0)) { - return 1; - } else { - return 0; - } + char *dp, *end; + if (value && *value != ':' && strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0 && *dp == ':' && *(++dp) && strtoul(dp, &end, 10) > 0 && !*end) return 1; + else return 0; } int inspircd_valid_nick(const char *nick) @@ -1562,10 +1555,6 @@ void moduleAddAnopeCmds() pmodule_cmd_242(inspircd_cmd_242); pmodule_cmd_243(inspircd_cmd_243); pmodule_cmd_211(inspircd_cmd_211); - pmodule_flood_mode_check(inspircd_flood_mode_check); - pmodule_valid_nick(inspircd_valid_nick); - pmodule_valid_chan(inspircd_valid_chan); - pmodule_set_umode(inspircd_set_umode); } /** diff --git a/src/protocol/inspircd11.h b/src/protocol/inspircd11.h index 11ece0177..bd6311ca7 100755 --- a/src/protocol/inspircd11.h +++ b/src/protocol/inspircd11.h @@ -69,8 +69,6 @@ void inspircd_cmd_318(const char *source, const char *who); void inspircd_cmd_242(const char *buf); void inspircd_cmd_243(const char *buf); void inspircd_cmd_211(const char *buf); -int inspircd_flood_mode_check(const char *value); -int inspircd_valid_nick(const char *nick); int anope_event_fjoin(const char *source, int ac, const char **av); int anope_event_fmode(const char *source, int ac, const char **av); int anope_event_ftopic(const char *source, int ac, const char **av); @@ -113,4 +111,6 @@ class InspIRCdProto : public IRCDProtoNew { void cmd_svspart(const char *, const char *, const char *); void cmd_eob(); void cmd_server(const char *, int, const char *); + void set_umode(User *, int, const char **); + int flood_mode_check(const char *); } ircd_proto; diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c index 879a3f2e8..f27c8d821 100644 --- a/src/protocol/ratbox.c +++ b/src/protocol/ratbox.c @@ -1374,11 +1374,6 @@ int anope_event_bmask(const char *source, int ac, const char **av) return MOD_CONT; } -int ratbox_flood_mode_check(const char *value) -{ - return 0; -} - int anope_event_error(const char *source, int ac, const char **av) { if (ac >= 1) { @@ -1435,10 +1430,6 @@ void moduleAddAnopeCmds() pmodule_cmd_242(ratbox_cmd_242); pmodule_cmd_243(ratbox_cmd_243); pmodule_cmd_211(ratbox_cmd_211); - pmodule_flood_mode_check(ratbox_flood_mode_check); - pmodule_valid_nick(ratbox_valid_nick); - pmodule_valid_chan(ratbox_valid_chan); - pmodule_set_umode(ratbox_set_umode); } /** diff --git a/src/protocol/ratbox.h b/src/protocol/ratbox.h index 34d65e812..028248126 100644 --- a/src/protocol/ratbox.h +++ b/src/protocol/ratbox.h @@ -63,8 +63,6 @@ void ratbox_cmd_318(const char *source, const char *who); void ratbox_cmd_242(const char *buf); void ratbox_cmd_243(const char *buf); void ratbox_cmd_211(const char *buf); -int ratbox_flood_mode_check(const char *value); -int ratbox_valid_nick(const char *nick); class RatboxProto : public IRCDProtoNew { public: diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c index 8a0422b08..ad8a3f968 100644 --- a/src/protocol/unreal32.c +++ b/src/protocol/unreal32.c @@ -1523,53 +1523,33 @@ void unreal_cmd_svswatch(const char *sender, const char *nick, const char *parm) /* check if +f mode is valid for the ircd */ /* borrowed part of the new check from channels.c in Unreal */ -int unreal_flood_mode_check(const char *value) -{ - char *dp, *end; - /* NEW +F */ - char xbuf[256], *p, *p2, *x = xbuf + 1; - int v; - - if (!value) { - return 0; - } - - if (*value != ':' - && (strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0) - && (*dp == ':') && (*(++dp) != 0) && (strtoul(dp, &end, 10) > 0) - && (*end == 0)) { - return 1; - } else { - /* '['<number><1 letter>[optional: '#'+1 letter],[next..]']'':'<number> */ - strncpy(xbuf, value, sizeof(xbuf)); - p2 = strchr(xbuf + 1, ']'); - if (!p2) { - return 0; - } - *p2 = '\0'; - if (*(p2 + 1) != ':') { - return 0; - } - for (x = strtok(xbuf + 1, ","); x; x = strtok(NULL, ",")) { - /* <number><1 letter>[optional: '#'+1 letter] */ - p = x; - while (isdigit(*p)) { - p++; - } - if ((*p == '\0') - || !((*p == 'c') || (*p == 'j') || (*p == 'k') - || (*p == 'm') || (*p == 'n') || (*p == 't'))) { - continue; /* continue instead of break for forward compatability. */ - } - *p = '\0'; - v = atoi(x); - if ((v < 1) || (v > 999)) { - return 0; - } - p++; - } - return 1; - } +int UnrealIRCdProto::flood_mode_check(const char *value) +{ + char *dp, *end; + /* NEW +F */ + char xbuf[256], *p, *p2, *x = xbuf + 1; + int v; + if (!value) return 0; + if (*value != ':' && strtoul((*value == '*' ? value + 1 : value), &dp, 10) > 0 && *dp == ':' && *(++dp) && strtoul(dp, &end, 10) > 0 && !*end) return 1; + else { + /* '['<number><1 letter>[optional: '#'+1 letter],[next..]']'':'<number> */ + strncpy(xbuf, value, sizeof(xbuf)); + p2 = strchr(xbuf + 1, ']'); + if (!p2) return 0; + *p2 = '\0'; + if (*(p2 + 1) != ':') return 0; + for (x = strtok(xbuf + 1, ","); x; x = strtok(NULL, ",")) { + /* <number><1 letter>[optional: '#'+1 letter] */ + p = x; + while (isdigit(*p)) ++p; + if (!*p || !(*p == 'c' || *p == 'j' || *p == 'k' || *p == 'm' || *p == 'n' || *p == 't')) continue; /* continue instead of break for forward compatability. */ + *p = '\0'; + v = atoi(x); + if (v < 1 || v > 999) return 0; + ++p; + } + return 1; + } } /* @@ -1875,10 +1855,6 @@ void moduleAddAnopeCmds() pmodule_cmd_242(unreal_cmd_242); pmodule_cmd_243(unreal_cmd_243); pmodule_cmd_211(unreal_cmd_211); - pmodule_flood_mode_check(unreal_flood_mode_check); - pmodule_valid_nick(unreal_valid_nick); - pmodule_valid_chan(unreal_valid_chan); - pmodule_set_umode(unreal_set_umode); } /** diff --git a/src/protocol/unreal32.h b/src/protocol/unreal32.h index b094a3ece..4880809af 100644 --- a/src/protocol/unreal32.h +++ b/src/protocol/unreal32.h @@ -98,8 +98,6 @@ void unreal_cmd_318(const char *source, const char *who); void unreal_cmd_242(const char *buf); void unreal_cmd_243(const char *buf); void unreal_cmd_211(const char *buf); -int unreal_flood_mode_check(const char *value); -int unreal_valid_nick(const char *nick); class UnrealIRCdProto : public IRCDProtoNew { public: @@ -139,4 +137,8 @@ class UnrealIRCdProto : public IRCDProtoNew { void cmd_swhois(const char *, const char *, const char *); void cmd_eob(); void cmd_server(const char *, int, const char *); + void set_umode(User *, int, const char **); + int valid_nick(const char *); + int valid_chan(const char *); + int flood_mode_check(const char *); } ircd_proto; |