1
0
mirror of https://github.com/anope/anope.git synced 2026-06-28 09:16:38 +02:00

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
This commit is contained in:
Robin Burchell w00t@inspircd.org
2008-10-01 18:12:23 +00:00
parent a2b5941fc7
commit eca7e89612
13 changed files with 55 additions and 144 deletions
-4
View File
@@ -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);
+5
View File
@@ -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; }
};
/*************************************************************************/
+1 -24
View File
@@ -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;
+4 -15
View File
@@ -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);
}
/**
+2 -2
View File
@@ -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;
+4 -17
View File
@@ -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);
}
/**
+3 -2
View File
@@ -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;
+4 -15
View File
@@ -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);
}
/**
+2 -2
View File
@@ -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;
-9
View File
@@ -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);
}
/**
-2
View File
@@ -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:
+26 -50
View File
@@ -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)
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) != 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;
}
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);
}
/**
+4 -2
View File
@@ -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;