summaryrefslogtreecommitdiff
path: root/src/protocol
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol')
-rw-r--r--src/protocol/bahamut.c2
-rw-r--r--src/protocol/charybdis.c4
-rw-r--r--src/protocol/dreamforge.c2
-rw-r--r--src/protocol/hybrid.c2
-rw-r--r--src/protocol/inspircd10.c2
-rw-r--r--src/protocol/inspircd11.c29
-rwxr-xr-xsrc/protocol/inspircd11.h3
-rw-r--r--src/protocol/plexus2.c2
-rw-r--r--src/protocol/plexus3.c2
-rw-r--r--src/protocol/ptlink.c2
-rw-r--r--src/protocol/rageircd.c2
-rw-r--r--src/protocol/ratbox.c2
-rw-r--r--src/protocol/shadowircd.c2
-rw-r--r--src/protocol/solidircd.c2
-rw-r--r--src/protocol/ultimate2.c2
-rw-r--r--src/protocol/ultimate3.c2
-rw-r--r--src/protocol/unreal31.c2
-rw-r--r--src/protocol/unreal32.c28
-rw-r--r--src/protocol/unreal32.h2
-rw-r--r--src/protocol/viagra.c2
20 files changed, 91 insertions, 5 deletions
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index 5d84590ed..1d3169fed 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -108,6 +108,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c
index 3440b03a3..2ec7d7f05 100644
--- a/src/protocol/charybdis.c
+++ b/src/protocol/charybdis.c
@@ -36,7 +36,7 @@ IRCDVar myIrcd[] = {
"+oiS", /* Global alias mode */
"+oiS", /* Used by BotServ Bots */
2, /* Chan Max Symbols */
- "-cilmnpstrgzQF", /* Modes to Remove */
+ "-cijlmnpstrgzQF", /* Modes to Remove */
"+o", /* Channel Umode used by Botserv bots */
1, /* SVSNICK */
1, /* Vhost */
@@ -105,6 +105,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
1, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j Mode */
}
,
{NULL}
diff --git a/src/protocol/dreamforge.c b/src/protocol/dreamforge.c
index 5dfb1e53d..ba669dd0a 100644
--- a/src/protocol/dreamforge.c
+++ b/src/protocol/dreamforge.c
@@ -106,6 +106,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/hybrid.c b/src/protocol/hybrid.c
index ffea0a085..aa05506f1 100644
--- a/src/protocol/hybrid.c
+++ b/src/protocol/hybrid.c
@@ -106,6 +106,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/inspircd10.c b/src/protocol/inspircd10.c
index 4b7977515..f5644b343 100644
--- a/src/protocol/inspircd10.c
+++ b/src/protocol/inspircd10.c
@@ -125,6 +125,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index 66e64523f..a94c70d7c 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -56,7 +56,7 @@ IRCDVar myIrcd[] = {
"+ioI", /* Global alias mode */
"+sI", /* Used by BotServ Bots */
5, /* Chan Max Symbols */
- "-cilmnpstuzACGHKNOQRSV", /* Modes to Remove */
+ "-cijlmnpstuzACGHKNOQRSV", /* Modes to Remove */
"+ao", /* Channel Umode used by Botserv bots */
1, /* SVSNICK */
1, /* Vhost */
@@ -125,6 +125,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
1, /* CIDR channelbans */
+ 1, /* +j */
+ CMODE_j, /* +j Mode */
}
,
{NULL}
@@ -284,7 +286,7 @@ CBMode myCbmodes[128] = {
{0}, /* g */
{0}, /* h */
{CMODE_i, 0, NULL, NULL},
- {0}, /* j */
+ {CMODE_j, CBM_MINUS_NO_ARG | CBM_NO_MLOCK, chan_set_throttle, cs_set_throttle}, /* j */
{CMODE_k, 0, chan_set_key, cs_set_key},
{CMODE_l, CBM_MINUS_NO_ARG, set_limit, cs_set_limit},
{CMODE_m, 0, NULL, NULL},
@@ -308,6 +310,7 @@ CBModeInfo myCbmodeinfos[] = {
{'f', CMODE_f, 0, NULL, NULL},
{'c', CMODE_c, 0, NULL, NULL},
{'i', CMODE_i, 0, NULL, NULL},
+ {'j', CMODE_j, 0, get_throttle, cs_get_throttle},
{'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},
@@ -1806,6 +1809,27 @@ void inspircd_cmd_ctcp(char *source, char *dest, char *buf)
}
+int inspircd_jointhrottle_mode_check(char *value)
+{
+ char *tempValue, *one, *two;
+ int param1, param2;
+
+ if (!value)
+ return 0;
+
+ tempValue = sstrdup(value);
+ one = strtok(tempValue, ":");
+ two = strtok(NULL, "");
+ if (one && two) {
+ param1 = atoi(one);
+ param2 = atoi(two);
+ }
+ if ((param1 >= 1) && (param1 <= 255) && (param2 >= 1) && (param2 <= 999))
+ return 1;
+ return 0;
+}
+
+
/**
* Tell anope which function we want to perform each task inside of anope.
* These prototypes must match what anope expects.
@@ -1886,6 +1910,7 @@ void moduleAddAnopeCmds()
pmodule_valid_chan(inspircd_valid_chan);
pmodule_cmd_ctcp(inspircd_cmd_ctcp);
pmodule_set_umode(inspircd_set_umode);
+ pmodule_jointhrottle_mode_check(inspircd_jointhrottle_mode_check);
}
/**
diff --git a/src/protocol/inspircd11.h b/src/protocol/inspircd11.h
index 3391db3c0..540fc6394 100755
--- a/src/protocol/inspircd11.h
+++ b/src/protocol/inspircd11.h
@@ -48,6 +48,7 @@
#define CMODE_N 0x01000000
#define CMODE_R 0x00000100 /* Only identified users can join */
#define CMODE_r 0x00000200 /* Set for all registered channels */
+#define CMODE_j 0x02000000
#define DEFAULT_MLOCK CMODE_n | CMODE_t | CMODE_r
@@ -121,6 +122,8 @@ int inspircd_flood_mode_check(char *value);
void inspircd_cmd_jupe(char *jserver, char *who, char *reason);
int inspircd_valid_nick(char *nick);
void inspircd_cmd_ctcp(char *source, char *dest, char *buf);
+int inspircd_jointhrottle_mode_check(char *value);
+
int anope_event_fjoin(char *source, int ac, char **av);
int anope_event_fmode(char *source, int ac, char **av);
int anope_event_ftopic(char *source, int ac, char **av);
diff --git a/src/protocol/plexus2.c b/src/protocol/plexus2.c
index 323482d02..1f01924f5 100644
--- a/src/protocol/plexus2.c
+++ b/src/protocol/plexus2.c
@@ -104,6 +104,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/plexus3.c b/src/protocol/plexus3.c
index 463ae320c..375687ae1 100644
--- a/src/protocol/plexus3.c
+++ b/src/protocol/plexus3.c
@@ -104,6 +104,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/ptlink.c b/src/protocol/ptlink.c
index 6479f8ee4..cd5f57c9c 100644
--- a/src/protocol/ptlink.c
+++ b/src/protocol/ptlink.c
@@ -106,6 +106,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/rageircd.c b/src/protocol/rageircd.c
index 52662ce8b..a6d444db9 100644
--- a/src/protocol/rageircd.c
+++ b/src/protocol/rageircd.c
@@ -106,6 +106,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index 3a43a01dd..5ec2a1919 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -106,6 +106,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/shadowircd.c b/src/protocol/shadowircd.c
index 5dc263c17..c23c51400 100644
--- a/src/protocol/shadowircd.c
+++ b/src/protocol/shadowircd.c
@@ -107,6 +107,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/solidircd.c b/src/protocol/solidircd.c
index f2eccccaa..4c20de1c0 100644
--- a/src/protocol/solidircd.c
+++ b/src/protocol/solidircd.c
@@ -108,6 +108,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/ultimate2.c b/src/protocol/ultimate2.c
index a0839a457..88d7d0a4f 100644
--- a/src/protocol/ultimate2.c
+++ b/src/protocol/ultimate2.c
@@ -106,6 +106,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/ultimate3.c b/src/protocol/ultimate3.c
index 57ea90527..9daaa5bab 100644
--- a/src/protocol/ultimate3.c
+++ b/src/protocol/ultimate3.c
@@ -106,6 +106,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/unreal31.c b/src/protocol/unreal31.c
index 303e90e8a..0159be396 100644
--- a/src/protocol/unreal31.c
+++ b/src/protocol/unreal31.c
@@ -108,6 +108,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
0, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index ed3ea9a98..373a595c8 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -39,7 +39,7 @@ IRCDVar myIrcd[] = {
"+ioS", /* Global alias mode */
"+qS", /* Used by BotServ Bots */
5, /* Chan Max Symbols */
- "-cilmnpstuzACGHKMNOQRSTV", /* Modes to Remove */
+ "-cijlmnpstuzACGKMNOQRSTV", /* Modes to Remove */
"+ao", /* Channel Umode used by Botserv bots */
1, /* SVSNICK */
1, /* Vhost */
@@ -108,6 +108,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 1, /* +j */
+ CMODE_j, /* +j Mode */
}
,
{NULL}
@@ -316,7 +318,7 @@ CBMode myCbmodes[128] = {
{0}, /* g */
{0}, /* h */
{CMODE_i, 0, NULL, NULL},
- {0}, /* j */
+ {CMODE_j, CBM_MINUS_NO_ARG | CBM_NO_MLOCK, chan_set_throttle, cs_set_throttle}, /* j */
{CMODE_k, 0, chan_set_key, cs_set_key},
{CMODE_l, CBM_MINUS_NO_ARG, set_limit, cs_set_limit},
{CMODE_m, 0, NULL, NULL},
@@ -340,6 +342,7 @@ CBModeInfo myCbmodeinfos[] = {
{'c', CMODE_c, 0, NULL, NULL},
{'f', CMODE_f, 0, get_flood, cs_get_flood},
{'i', CMODE_i, 0, NULL, NULL},
+ {'j', CMODE_j, 0, get_throttle, cs_get_throttle},
{'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},
@@ -1854,6 +1857,26 @@ void unreal_cmd_ctcp(char *source, char *dest, char *buf)
free(s);
}
+int unreal_jointhrottle_mode_check(char *value)
+{
+ char *tempValue, *one, *two;
+ int param1, param2;
+
+ if (!value)
+ return 0;
+
+ tempValue = sstrdup(value);
+ one = strtok(tempValue, ":");
+ two = strtok(NULL, "");
+ if (one && two) {
+ param1 = atoi(one);
+ param2 = atoi(two);
+ }
+ if ((param1 >= 1) && (param1 <= 255) && (param2 >= 1) && (param2 <= 999))
+ return 1;
+ return 0;
+}
+
/* *INDENT-OFF* */
void moduleAddIRCDMsgs(void) {
Message *m;
@@ -2192,6 +2215,7 @@ void moduleAddAnopeCmds()
pmodule_valid_chan(unreal_valid_chan);
pmodule_cmd_ctcp(unreal_cmd_ctcp);
pmodule_set_umode(unreal_set_umode);
+ pmodule_jointhrottle_mode_check(unreal_jointhrottle_mode_check);
}
/**
diff --git a/src/protocol/unreal32.h b/src/protocol/unreal32.h
index 72fa091a5..dd09a043a 100644
--- a/src/protocol/unreal32.h
+++ b/src/protocol/unreal32.h
@@ -74,6 +74,7 @@
#define CMODE_N 0x01000000
#define CMODE_T 0x02000000
#define CMODE_M 0x04000000
+#define CMODE_j 0x08000000
/* Default Modes with MLOCK */
@@ -150,4 +151,5 @@ int unreal_flood_mode_check(char *value);
void unreal_cmd_jupe(char *jserver, char *who, char *reason);
int unreal_valid_nick(char *nick);
void unreal_cmd_ctcp(char *source, char *dest, char *buf);
+int unreal_jointhrottle_mode_check(char *value);
diff --git a/src/protocol/viagra.c b/src/protocol/viagra.c
index a536da401..e53d38b2f 100644
--- a/src/protocol/viagra.c
+++ b/src/protocol/viagra.c
@@ -107,6 +107,8 @@ IRCDVar myIrcd[] = {
NULL, /* character set */
1, /* reports sync state */
0, /* CIDR channelbans */
+ 0, /* +j */
+ 0, /* +j mode */
}
,
{NULL}