summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrystan 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
committertrystan 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
commitb1e78499cbd4e3855c54abc355be19e62502ac52 (patch)
tree978400028654a1fa070770b7fd27274dca5f06d2 /src
parenta7b79e36cd487faad8696a1c4a86e301b5965a74 (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.c24
-rw-r--r--src/chanserv.c33
-rw-r--r--src/dreamforge.c4
-rw-r--r--src/hybrid.c5
-rw-r--r--src/init.c18
-rw-r--r--src/operserv.c20
-rw-r--r--src/ptlink.c7
-rw-r--r--src/rageircd.c7
-rw-r--r--src/ultimate2.c6
-rw-r--r--src/ultimate3.c7
-rw-r--r--src/unreal31.c6
-rw-r--r--src/unreal32.c5
-rw-r--r--src/viagra.c4
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 */