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:
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user