summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-03-11 22:59:43 +0000
committerAdam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864>2010-03-11 22:59:43 +0000
commit5a51984db1796220d1dfcaf2797940b1efc100df (patch)
tree6448a3fdae7b8d24f4721249b96723ee36a98a41
parentb75abf9ba3c220d52033b866c15ef7e6f9c0a3b8 (diff)
Added support for tracking permanent channels
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/stable@2807 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--Changes1
-rw-r--r--include/extern.h4
-rw-r--r--include/services.h1
-rw-r--r--src/channels.c4
-rw-r--r--src/ircd.c11
-rw-r--r--src/protocol/bahamut.c1
-rw-r--r--src/protocol/charybdis.c1
-rw-r--r--src/protocol/dreamforge.c1
-rw-r--r--src/protocol/hybrid.c1
-rw-r--r--src/protocol/inspircd11.c1
-rw-r--r--src/protocol/inspircd12.c1
-rw-r--r--src/protocol/plexus2.c1
-rw-r--r--src/protocol/plexus3.c1
-rw-r--r--src/protocol/ptlink.c1
-rw-r--r--src/protocol/rageircd.c1
-rw-r--r--src/protocol/ratbox.c1
-rw-r--r--src/protocol/shadowircd.c1
-rw-r--r--src/protocol/solidircd.c1
-rw-r--r--src/protocol/ultimate2.c1
-rw-r--r--src/protocol/ultimate3.c1
-rw-r--r--src/protocol/unreal31.c1
-rw-r--r--src/protocol/unreal32.c1
-rw-r--r--src/protocol/viagra.c1
-rw-r--r--version.log3
24 files changed, 40 insertions, 2 deletions
diff --git a/Changes b/Changes
index 122eee91e..54a30429b 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,6 @@
Anope Version 1.8 - SVN
-----------------------
+3/10 F Added support for tracking permanent channels [ #00]
Anope Version 1.8.3
-------------------
diff --git a/include/extern.h b/include/extern.h
index a504e1227..d236fa1e8 100644
--- a/include/extern.h
+++ b/include/extern.h
@@ -696,6 +696,7 @@ E void pmodule_set_umode(void (*func) (User * user, int ac, char **av));
E void pmodule_valid_nick(int (*func) (char *nick));
E void pmodule_valid_chan(int (*func) (char *chan));
E void pmodule_flood_mode_check(int (*func) (char *value));
+E void pmodule_jointhrottle_mode_check(int (*func) (char *value));
E void pmodule_ircd_var(IRCDVar * ircdvar);
E void pmodule_ircd_cap(IRCDCAPAB * cap);
E void pmodule_ircd_version(char *version);
@@ -714,7 +715,7 @@ E void pmodule_secret_cmode(int mode);
E void pmodule_private_cmode(int mode);
E void pmodule_key_mode(int mode);
E void pmodule_limit_mode(int mode);
-E void pmodule_jointhrottle_mode_check(int (*func) (char *value));
+E void pmodule_permchan_mode(int mode);
E int anope_get_secret_mode();
E int anope_get_invite_mode();
@@ -723,6 +724,7 @@ E int anope_get_limit_mode();
E int anope_get_private_mode();
E int anope_get_invis_mode();
E int anope_get_oper_mode();
+E int anope_get_permchan_mode();
/**** language.c ****/
diff --git a/include/services.h b/include/services.h
index fc7ea044b..666f25225 100644
--- a/include/services.h
+++ b/include/services.h
@@ -1231,6 +1231,7 @@ typedef struct ircd_modes_ {
int chan_private;
int chan_key;
int chan_limit;
+ int chan_perm;
} IRCDModes;
diff --git a/src/channels.c b/src/channels.c
index c7b96a860..aa7ed4712 100644
--- a/src/channels.c
+++ b/src/channels.c
@@ -52,6 +52,10 @@ void chan_deluser(User * user, Channel * c)
anope_cmd_part(c->ci->bi->nick, c->name, NULL);
}
+ /* Channel is permament and shouldn't be deleted */
+ if (anope_get_permchan_mode() && c->mode & anope_get_permchan_mode())
+ return;
+
if (!c->users)
chan_delete(c);
}
diff --git a/src/ircd.c b/src/ircd.c
index 987333a24..8d7bb04b9 100644
--- a/src/ircd.c
+++ b/src/ircd.c
@@ -1203,6 +1203,11 @@ void pmodule_limit_mode(int mode)
ircd_modes.chan_limit = mode;
}
+void pmodule_permchan_mode(int mode)
+{
+ ircd_modes.chan_perm = mode;
+}
+
int anope_get_invis_mode()
{
return ircd_modes.user_invis;
@@ -1237,3 +1242,9 @@ int anope_get_limit_mode()
{
return ircd_modes.chan_limit;
}
+
+int anope_get_permchan_mode()
+{
+ return ircd_modes.chan_perm;
+}
+
diff --git a/src/protocol/bahamut.c b/src/protocol/bahamut.c
index 65dc176d3..5afcb0cbe 100644
--- a/src/protocol/bahamut.c
+++ b/src/protocol/bahamut.c
@@ -1678,6 +1678,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/charybdis.c b/src/protocol/charybdis.c
index fb51fdcfb..7a3898f54 100644
--- a/src/protocol/charybdis.c
+++ b/src/protocol/charybdis.c
@@ -1989,6 +1989,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/dreamforge.c b/src/protocol/dreamforge.c
index c8095d0f0..178287adc 100644
--- a/src/protocol/dreamforge.c
+++ b/src/protocol/dreamforge.c
@@ -1385,6 +1385,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/hybrid.c b/src/protocol/hybrid.c
index ef183a63e..be3ab6841 100644
--- a/src/protocol/hybrid.c
+++ b/src/protocol/hybrid.c
@@ -1574,6 +1574,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/inspircd11.c b/src/protocol/inspircd11.c
index 830685992..0cd011304 100644
--- a/src/protocol/inspircd11.c
+++ b/src/protocol/inspircd11.c
@@ -1958,6 +1958,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/inspircd12.c b/src/protocol/inspircd12.c
index 12244f5cd..a815a3455 100644
--- a/src/protocol/inspircd12.c
+++ b/src/protocol/inspircd12.c
@@ -2672,6 +2672,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(CMODE_P);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/plexus2.c b/src/protocol/plexus2.c
index 3c15e1c9b..bc1611911 100644
--- a/src/protocol/plexus2.c
+++ b/src/protocol/plexus2.c
@@ -1880,6 +1880,7 @@ AnopeInit (int argc, char **argv)
pmodule_private_cmode (CMODE_p);
pmodule_key_mode (CMODE_k);
pmodule_limit_mode (CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds ();
moduleAddIRCDMsgs ();
diff --git a/src/protocol/plexus3.c b/src/protocol/plexus3.c
index 073784521..c42af5f5e 100644
--- a/src/protocol/plexus3.c
+++ b/src/protocol/plexus3.c
@@ -1857,6 +1857,7 @@ AnopeInit (int argc, char **argv)
pmodule_private_cmode (CMODE_p);
pmodule_key_mode (CMODE_k);
pmodule_limit_mode (CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds ();
moduleAddIRCDMsgs ();
diff --git a/src/protocol/ptlink.c b/src/protocol/ptlink.c
index 28623aed1..4e23cdd74 100644
--- a/src/protocol/ptlink.c
+++ b/src/protocol/ptlink.c
@@ -1798,6 +1798,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/rageircd.c b/src/protocol/rageircd.c
index 513e7dd81..ac7b25625 100644
--- a/src/protocol/rageircd.c
+++ b/src/protocol/rageircd.c
@@ -1678,6 +1678,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/ratbox.c b/src/protocol/ratbox.c
index 17e6f3516..d5dc33fc0 100644
--- a/src/protocol/ratbox.c
+++ b/src/protocol/ratbox.c
@@ -1883,6 +1883,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/shadowircd.c b/src/protocol/shadowircd.c
index 161a0aaaa..e9a3da012 100644
--- a/src/protocol/shadowircd.c
+++ b/src/protocol/shadowircd.c
@@ -1834,6 +1834,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/solidircd.c b/src/protocol/solidircd.c
index a138454b7..578c33b49 100644
--- a/src/protocol/solidircd.c
+++ b/src/protocol/solidircd.c
@@ -1706,6 +1706,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/ultimate2.c b/src/protocol/ultimate2.c
index 47072761e..9b409b37e 100644
--- a/src/protocol/ultimate2.c
+++ b/src/protocol/ultimate2.c
@@ -1735,6 +1735,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/ultimate3.c b/src/protocol/ultimate3.c
index 9eb625bc7..4c308d49b 100644
--- a/src/protocol/ultimate3.c
+++ b/src/protocol/ultimate3.c
@@ -1819,6 +1819,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/unreal31.c b/src/protocol/unreal31.c
index 36b572158..b48db601e 100644
--- a/src/protocol/unreal31.c
+++ b/src/protocol/unreal31.c
@@ -1600,6 +1600,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 44b3df282..083e64615 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -2256,6 +2256,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/src/protocol/viagra.c b/src/protocol/viagra.c
index 76783ee7d..9a10ae908 100644
--- a/src/protocol/viagra.c
+++ b/src/protocol/viagra.c
@@ -1717,6 +1717,7 @@ int AnopeInit(int argc, char **argv)
pmodule_private_cmode(CMODE_p);
pmodule_key_mode(CMODE_k);
pmodule_limit_mode(CMODE_l);
+ pmodule_permchan_mode(0);
moduleAddAnopeCmds();
moduleAddIRCDMsgs();
diff --git a/version.log b/version.log
index 479d28d7c..40203b59c 100644
--- a/version.log
+++ b/version.log
@@ -9,10 +9,11 @@ VERSION_MAJOR="1"
VERSION_MINOR="8"
VERSION_PATCH="3"
VERSION_EXTRA="-svn"
-VERSION_BUILD="2801"
+VERSION_BUILD="2807"
# $Log$ # Changes since 1.8.3 Release
+#Revision 2807 - Added support for tracking permanent channels
#Revision 2801 - Fixed some memory leaks in ns_register
#Revision 2800 - Fixed a bug that would cause users access in channels to seemingly disappear. Introduced in release 1.8.3, revision 2667
#Revision 2792 - Documented /nickserv list's ability to accept ranges