this adds FEAT_LOCAL_CHANNELS, which causes "CHANTYPES" isupport token to be "#&" or 
"#", and allows/disallows creation of &channels.

beware
diff -ur ircu2.10.orig/ChangeLog ircu2.10/ChangeLog
--- ircu2.10.orig/ChangeLog     Tue Jun 17 22:11:59 2003
+++ ircu2.10/ChangeLog  Sun Jun 22 15:05:57 2003
@@ -1,3 +1,8 @@
+2003-06-22  Bas Steendijk  <[EMAIL PROTECTED]>
+
+        * make ability to create local channels a feature which
+        can be disabled
+
 2003-06-17  Alex Badea  <[EMAIL PROTECTED]>
 
        * ircd/res_adns.c: included sys/types.h, for non-Linux
diff -ur ircu2.10.orig/include/ircd_features.h ircu2.10/include/ircd_features.h
--- ircu2.10.orig/include/ircd_features.h       Tue Jan  7 11:06:44 2003
+++ ircu2.10/include/ircd_features.h    Sun Jun 22 14:10:04 2003
@@ -49,6 +49,7 @@
   FEAT_HIDDEN_IP,
   FEAT_AUTOHIDE,
   FEAT_CONNEXIT_NOTICES,
+  FEAT_LOCAL_CHANNELS,
 
   /* features that probably should not be touched */
   FEAT_KILLCHASETIMELIMIT,
diff -ur ircu2.10.orig/include/supported.h ircu2.10/include/supported.h
--- ircu2.10.orig/include/supported.h   Tue Jan  7 11:06:43 2003
+++ ircu2.10/include/supported.h        Sun Jun 22 15:02:10 2003
@@ -58,7 +58,7 @@
                        feature_int(FEAT_MAXBANS), NICKLEN, TOPICLEN, \
                        AWAYLEN, TOPICLEN
 
-#define FEATURESVALUES2 "#&", "(ov)@+", "b,k,l,imnpstr", "rfc1459", \
+#define FEATURESVALUES2 feature_bool(FEAT_LOCAL_CHANNELS) ? "#&" : "#", "(ov)@+", 
"b,k,l,imnpstr", "rfc1459", \
                         feature_str(FEAT_NETWORK)
 
 #endif /* INCLUDED_supported_h */
diff -ur ircu2.10.orig/ircd/ircd_features.c ircu2.10/ircd/ircd_features.c
--- ircu2.10.orig/ircd/ircd_features.c  Sat Jan 11 12:24:22 2003
+++ ircu2.10/ircd/ircd_features.c       Sun Jun 22 14:10:38 2003
@@ -255,6 +255,7 @@
   F_S(HIDDEN_IP, 0, "127.0.0.1", 0),
   F_B(AUTOHIDE, 0, 1, 0),
   F_B(CONNEXIT_NOTICES, 0, 0, 0),
+  F_B(LOCAL_CHANNELS, 0, 1, 0),
 
   /* features that probably should not be touched */
   F_I(KILLCHASETIMELIMIT, 0, 30, 0),
diff -ur ircu2.10.orig/ircd/m_join.c ircu2.10/ircd/m_join.c
--- ircu2.10.orig/ircd/m_join.c Tue Jan  7 11:06:41 2003
+++ ircu2.10/ircd/m_join.c      Sun Jun 22 14:45:59 2003
@@ -229,6 +229,12 @@
     else
       flags = CHFL_CHANOP;
 
+    /* disallow creating local channels */
+    if ((name[0] == '&') && !chptr && !feature_bool(FEAT_LOCAL_CHANNELS)) {
+        send_reply(sptr, ERR_NOSUCHCHANNEL, name);
+        continue;
+    }
+
     if (cli_user(sptr)->joined >= feature_int(FEAT_MAXCHANNELSPERUSER) &&
        !HasPriv(sptr, PRIV_CHAN_LIMIT)) {
       send_reply(sptr, ERR_TOOMANYCHANNELS, chptr ? chptr->chname : name);

Reply via email to