summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/extern.h4
-rw-r--r--include/services.h5
-rw-r--r--src/ircd.c25
-rw-r--r--src/protocol/bahamut.c19
-rw-r--r--src/protocol/bahamut.h4
-rw-r--r--src/protocol/charybdis.c21
-rw-r--r--src/protocol/charybdis.h5
-rw-r--r--src/protocol/inspircd11.c19
-rwxr-xr-xsrc/protocol/inspircd11.h4
-rw-r--r--src/protocol/ratbox.c9
-rw-r--r--src/protocol/ratbox.h2
-rw-r--r--src/protocol/unreal32.c78
-rw-r--r--src/protocol/unreal32.h6
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;