diff options
author | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-07 05:32:21 +0000 |
---|---|---|
committer | trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b <trystan trystan@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864> | 2004-10-07 05:32:21 +0000 |
commit | b1e78499cbd4e3855c54abc355be19e62502ac52 (patch) | |
tree | 978400028654a1fa070770b7fd27274dca5f06d2 /src | |
parent | a7b79e36cd487faad8696a1c4a86e301b5965a74 (diff) |
BUILD : 1.7.5 (376) BUGS : N/A NOTES : CS INFO - DrStein, init.c typo - DrStein, Bahamut +j support - TSL, more protocol clean up
git-svn-id: svn://svn.anope.org/anope/trunk@376 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@246 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r-- | src/bahamut.c | 24 | ||||
-rw-r--r-- | src/chanserv.c | 33 | ||||
-rw-r--r-- | src/dreamforge.c | 4 | ||||
-rw-r--r-- | src/hybrid.c | 5 | ||||
-rw-r--r-- | src/init.c | 18 | ||||
-rw-r--r-- | src/operserv.c | 20 | ||||
-rw-r--r-- | src/ptlink.c | 7 | ||||
-rw-r--r-- | src/rageircd.c | 7 | ||||
-rw-r--r-- | src/ultimate2.c | 6 | ||||
-rw-r--r-- | src/ultimate3.c | 7 | ||||
-rw-r--r-- | src/unreal31.c | 6 | ||||
-rw-r--r-- | src/unreal32.c | 5 | ||||
-rw-r--r-- | src/viagra.c | 4 |
13 files changed, 112 insertions, 34 deletions
diff --git a/src/bahamut.c b/src/bahamut.c index 032268aae..e9e395293 100644 --- a/src/bahamut.c +++ b/src/bahamut.c @@ -20,6 +20,10 @@ const char version_protocol[] = "BahamutIRCd 1.4.*/1.8.*"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = "+j"; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = "-j"; /* mode char for FLOOD mode on remove */ + IRCDVar ircd[] = { {"BahamutIRCd 1.4.*/1.8.*", /* ircd name */ "+o", /* nickserv mode */ @@ -42,7 +46,7 @@ IRCDVar ircd[] = { "+io", /* Global alias mode */ "+", /* Used by BotServ Bots */ 2, /* Chan Max Symbols */ - "-ciklmnpstOR", /* Modes to Remove */ + "-cilmnpstOR", /* Modes to Remove */ "+o", /* Channel Umode used by Botserv bots */ 1, /* SVSNICK */ 0, /* Vhost */ @@ -84,9 +88,9 @@ IRCDVar ircd[] = { 0, /* Admin Only */ DEFAULT_MLOCK, /* Default MLOCK */ 0, /* Vhost Mode */ - 0, /* +f */ + 1, /* +f */ 0, /* +L */ - 0, /* Mode */ + CMODE_j, /* Mode */ 0, /* Mode */ 1, 1, /* No Knock requires +i */ @@ -347,7 +351,7 @@ CBMode cbmodes[128] = { {0}, /* g */ {0}, /* h */ {CMODE_i, 0, NULL, NULL}, - {0}, /* j */ + {CMODE_j, 0, set_flood, cs_set_flood}, /* j */ {CMODE_k, 0, set_key, cs_set_key}, {CMODE_l, CBM_MINUS_NO_ARG, set_limit, cs_set_limit}, {CMODE_m, 0, NULL, NULL}, @@ -370,6 +374,7 @@ CBMode cbmodes[128] = { CBModeInfo cbmodeinfos[] = { {'c', CMODE_c, 0, NULL, NULL}, {'i', CMODE_i, 0, NULL, NULL}, + {'j', CMODE_j, 0, get_flood, cs_get_flood}, {'k', CMODE_k, 0, get_key, cs_get_key}, {'l', CMODE_l, CBM_MINUS_NO_ARG, get_limit, cs_get_limit}, {'m', CMODE_m, 0, NULL, NULL}, @@ -1572,7 +1577,16 @@ int anope_event_admin(char *source, int ac, char **av) int anope_flood_mode_check(char *value) { - return 0; + 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; + } } diff --git a/src/chanserv.c b/src/chanserv.c index 731e5262c..bddb03483 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -4815,6 +4815,7 @@ static int do_info(User * u) const char *commastr = getstring(u->na, COMMA_SPACE); int is_servadmin = is_services_admin(u); int show_all = 0; + time_t expt; if (!chan) { syntax_error(s_ChanServ, u, "INFO", CHAN_INFO_SYNTAX); @@ -4953,8 +4954,18 @@ static int do_info(User * u) } - if ((ci->flags & CI_NO_EXPIRE) && show_all) + if ((ci->flags & CI_NO_EXPIRE) && show_all) { notice_lang(s_ChanServ, u, CHAN_INFO_NO_EXPIRE); + } else { + if (is_servadmin) { + expt = ci->last_used + CSExpire; + tm = localtime(&expt); + strftime_lang(buf, sizeof(buf), u, + STRFTIME_DATE_TIME_FORMAT, tm); + notice_lang(s_ChanServ, u, CHAN_INFO_EXPIRE, buf); + } + } + if (ci->flags & CI_SUSPENDED) { notice_lang(s_ChanServ, u, CHAN_X_SUSPENDED, ci->forbidby, (ci->forbidreason ? ci-> @@ -5727,8 +5738,7 @@ static int do_clear(User * u) if (c->mode) { /* Clear modes the bulk of the modes */ - anope_cmd_mode(s_ChanServ, c->name, "%s %s", - ircd->modestoremove); + anope_cmd_mode(s_ChanServ, c->name, "%s", ircd->modestoremove); argv[0] = sstrdup(ircd->modestoremove); chan_set_modes(s_ChanServ, c, 1, argv, 0); free(argv[0]); @@ -5750,11 +5760,18 @@ static int do_clear(User * u) free(argv[0]); } if (ircd->fmode && c->flood) { - anope_cmd_mode(s_ChanServ, c->name, "-f %s", c->flood); - argv[0] = sstrdup("-f"); - argv[1] = c->flood; - chan_set_modes(s_ChanServ, c, 2, argv, 0); - free(argv[0]); + if (flood_mode_char_remove) { + anope_cmd_mode(s_ChanServ, c->name, "%s %s", + flood_mode_char_remove, c->flood); + argv[0] = sstrdup(flood_mode_char_remove); + argv[1] = c->flood; + chan_set_modes(s_ChanServ, c, 2, argv, 0); + free(argv[0]); + } else { + if (debug) { + alog("debug: flood_mode_char_remove was not set unable to remove flood/throttle modes"); + } + } } } diff --git a/src/dreamforge.c b/src/dreamforge.c index 91c23239b..43cd4532a 100644 --- a/src/dreamforge.c +++ b/src/dreamforge.c @@ -18,6 +18,10 @@ const char version_protocol[] = "DreamForge 4.6.7"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ + IRCDVar ircd[] = { {"DreamForge 4.6.7", /* ircd name */ "+o", /* nickserv mode */ diff --git a/src/hybrid.c b/src/hybrid.c index 7947173e2..637c05db0 100644 --- a/src/hybrid.c +++ b/src/hybrid.c @@ -18,6 +18,11 @@ const char version_protocol[] = "Hybrid IRCd 7.0"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ + + IRCDVar ircd[] = { {"HybridIRCd 7.*", /* ircd name */ "+o", /* nickserv mode */ diff --git a/src/init.c b/src/init.c index 486c54e82..7843e9d77 100644 --- a/src/init.c +++ b/src/init.c @@ -591,35 +591,35 @@ int init(int ac, char **av) if (!skeleton) { load_ns_dbase(); if (debug) - alog("debug: Loaded %s database (1/9)", s_NickServ); + alog("debug: Loaded %s database (1/8)", s_NickServ); if (s_HostServ) { load_hs_dbase(); if (debug) - alog("debug: Loaded %s database (2/9)", s_HostServ); + alog("debug: Loaded %s database (2/8)", s_HostServ); } if (s_BotServ) { load_bs_dbase(); if (debug) - alog("debug: Loaded %s database (3/9)", s_BotServ); + alog("debug: Loaded %s database (3/8)", s_BotServ); } else if (debug) - alog("debug: BotServ database (4/9) not loaded because BotServ is disabled"); + alog("debug: BotServ database (3/8) not loaded because BotServ is disabled"); load_cs_dbase(); if (debug) - alog("debug: Loaded %s database (5/9)", s_ChanServ); + alog("debug: Loaded %s database (4/8)", s_ChanServ); } load_os_dbase(); if (debug) - alog("debug: Loaded %s database (6/9)", s_OperServ); + alog("debug: Loaded %s database (5/8)", s_OperServ); load_news(); if (debug) - alog("debug: Loaded news database (7/9)"); + alog("debug: Loaded news database (6/8)"); load_exceptions(); if (debug) - alog("debug: Loaded exception database (8/9)"); + alog("debug: Loaded exception database (7/8)"); if (PreNickDBName) { load_ns_req_db(); if (debug) - alog("debug: Loaded PreNick database (9/9)"); + alog("debug: Loaded PreNick database (8/8)"); } #ifdef USE_RDB } diff --git a/src/operserv.c b/src/operserv.c index aa92125b2..7e3864539 100644 --- a/src/operserv.c +++ b/src/operserv.c @@ -1670,8 +1670,7 @@ static int do_clearmodes(User * u) if (c->mode) { /* Clear modes the bulk of the modes */ - anope_cmd_mode(s_OperServ, c->name, "%s %s", - ircd->modestoremove); + anope_cmd_mode(s_OperServ, c->name, "%s", ircd->modestoremove); argv[0] = sstrdup(ircd->modestoremove); chan_set_modes(s_OperServ, c, 1, argv, 0); free(argv[0]); @@ -1693,11 +1692,18 @@ static int do_clearmodes(User * u) free(argv[0]); } if (ircd->fmode && c->flood) { - anope_cmd_mode(s_OperServ, c->name, "-f %s", c->flood); - argv[0] = sstrdup("-f"); - argv[1] = c->flood; - chan_set_modes(s_OperServ, c, 2, argv, 0); - free(argv[0]); + if (flood_mode_char_remove) { + anope_cmd_mode(s_ChanServ, c->name, "%s %s", + flood_mode_char_remove, c->flood); + argv[0] = sstrdup(flood_mode_char_remove); + argv[1] = c->flood; + chan_set_modes(s_ChanServ, c, 2, argv, 0); + free(argv[0]); + } else { + if (debug) { + alog("debug: flood_mode_char_remove was not set unable to remove flood/throttle modes"); + } + } } } diff --git a/src/ptlink.c b/src/ptlink.c index ef4dfe42c..acab8a7a0 100644 --- a/src/ptlink.c +++ b/src/ptlink.c @@ -18,6 +18,11 @@ const char version_protocol[] = "PTlink 6.14.5+"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ + + IRCDVar ircd[] = { {"PTlinkIRCd 6.14.*", /* ircd name */ "+o", /* nickserv mode */ @@ -40,7 +45,7 @@ IRCDVar ircd[] = { "+io", /* Global alias mode */ "+", /* Used by BotServ Bots */ 2, /* Chan Max Symbols */ - "-inpsmtCRKOASdcqBNfkl", /* Modes to Remove */ + "-inpsmtCRKOASdcqBNl", /* Modes to Remove */ "+ao", /* Channel Umode used by Botserv bots */ 1, /* SVSNICK */ 1, /* Vhost */ diff --git a/src/rageircd.c b/src/rageircd.c index 6d67bfa2a..555cf58db 100644 --- a/src/rageircd.c +++ b/src/rageircd.c @@ -18,6 +18,11 @@ const char version_protocol[] = "RageIRCd 2.0.x"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ + + IRCDVar ircd[] = { {"RageIRCd 2.0.*", /* ircd name */ "+d", /* nickserv mode */ @@ -40,7 +45,7 @@ IRCDVar ircd[] = { "+io", /* Global alias mode */ "+", /* Used by BotServ Bots */ 3, /* Chan Max Symbols */ - "-iklmnpRstcOACNM", /* Modes to Remove */ + "-ilmnpRstcOACNM", /* Modes to Remove */ "+o", /* Channel Umode used by Botserv bots */ 1, /* SVSNICK */ 1, /* Vhost */ diff --git a/src/ultimate2.c b/src/ultimate2.c index 51cb1bed0..267c60ca3 100644 --- a/src/ultimate2.c +++ b/src/ultimate2.c @@ -18,6 +18,10 @@ const char version_protocol[] = "UltimateIRCd 2.8.2+"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ + IRCDVar ircd[] = { {"UltimateIRCd 2.8.*", /* ircd name */ "+S", /* nickserv mode */ @@ -40,7 +44,7 @@ IRCDVar ircd[] = { "+ioS", /* Global alias mode */ "+pS", /* Used by BotServ Bots */ 3, /* Chan Max Symbols */ - "-kiflmnpstxAIKLORS", /* Modes to Remove */ + "-ilmnpstxAIKORS", /* Modes to Remove */ "+ao", /* Channel Umode used by Botserv bots */ 1, /* SVSNICK */ 1, /* Vhost */ diff --git a/src/ultimate3.c b/src/ultimate3.c index 792db3902..dcde5b3a3 100644 --- a/src/ultimate3.c +++ b/src/ultimate3.c @@ -18,6 +18,11 @@ const char version_protocol[] = "UltimateIRCd 3.0.0.a26+"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ + + IRCDVar ircd[] = { {"UltimateIRCd 3.0.*", /* ircd name */ "+S", /* nickserv mode */ @@ -40,7 +45,7 @@ IRCDVar ircd[] = { "+io", /* Global alias mode */ "+S", /* Used by BotServ Bots */ 5, /* Chan Max Symbols */ - "-iklmnpqstRKAO", /* Modes to Remove */ + "-ilmnpqstRKAO", /* Modes to Remove */ "+ao", /* Channel Umode used by Botserv bots */ 1, /* SVSNICK */ 1, /* Vhost */ diff --git a/src/unreal31.c b/src/unreal31.c index d948c09a4..89aca79d6 100644 --- a/src/unreal31.c +++ b/src/unreal31.c @@ -20,6 +20,10 @@ const char version_protocol[] = "UnrealIRCd 3.1.1+"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ + IRCDVar ircd[] = { {"UnrealIRCd 3.1.x", /* ircd name */ "+oS", /* nickserv mode */ @@ -42,7 +46,7 @@ IRCDVar ircd[] = { "+ioS", /* Global alias mode */ "+qS", /* Used by BotServ Bots */ 5, /* Chan Max Symbols */ - "-ckiflmnpstuzACGHKLNOQRSV", /* Modes to Remove */ + "-cilmnpstuzACGHKNOQRSV", /* Modes to Remove */ "+ao", /* Channel Umode used by Botserv bots */ 1, /* SVSNICK */ 1, /* Vhost */ diff --git a/src/unreal32.c b/src/unreal32.c index 062a57caf..43054628e 100644 --- a/src/unreal32.c +++ b/src/unreal32.c @@ -20,6 +20,10 @@ const char version_protocol[] = "UnrealIRCd 3.2+"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = "+f"; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = "-f"; /* mode char for FLOOD mode on remove */ + IRCDVar ircd[] = { {"UnrealIRCd 3.2.x", /* ircd name */ "+oS", /* nickserv mode */ @@ -452,6 +456,7 @@ void moduleAddIRCDMsgs(void) { m = createMessage("401", NULL); addCoreMessage(IRCD,m); m = createMessage("436", anope_event_436); addCoreMessage(IRCD,m); + m = createMessage("451", anope_event_null); addCoreMessage(IRCD,m); m = createMessage("AWAY", anope_event_away); addCoreMessage(IRCD,m); if (UseTokens) { m = createMessage("6", anope_event_away); addCoreMessage(IRCD,m); diff --git a/src/viagra.c b/src/viagra.c index a9f621888..260915c09 100644 --- a/src/viagra.c +++ b/src/viagra.c @@ -18,6 +18,10 @@ const char version_protocol[] = "ViagraIRCd 1.3.x"; +/* Not all ircds use +f for their flood/join throttle system */ +const char flood_mode_char_set[] = ""; /* mode char for FLOOD mode on set */ +const char flood_mode_char_remove[] = ""; /* mode char for FLOOD mode on remove */ + IRCDVar ircd[] = { {"ViagraIRCd 1.3.*", /* ircd name */ "+oS", /* nickserv mode */ |