]> jfr.im git - irc/solidircd.git/commitdiff
Started on new ircd.conf implementations.
authorJuan Baez <redacted>
Fri, 26 Jun 2009 22:48:00 +0000 (17:48 -0500)
committerJuan Baez <redacted>
Fri, 26 Jun 2009 22:48:00 +0000 (17:48 -0500)
CHANGES [new file with mode: 0644]
include/confparse.h
include/patchlevel.h
include/struct.h
src/s_conf.c
src/s_user.c

diff --git a/CHANGES b/CHANGES
new file mode 100644 (file)
index 0000000..101747d
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,4 @@
+Changes for 3.6.1
+-----------------
+- Fixed bug in which ircd.conf file descriptors were not closed - 2812688 
+
index f7cc380fbf069a3f527fc21b05ded84cf69f7e8d..065327950449acda032a5e9bae946d6d20c50b5b 100644 (file)
@@ -63,6 +63,8 @@ struct ConfVar
 #define CONFF_PORT                  0x000400
 #define CONFT_MODULES   "MODULES"
 #define CONFF_MODULES               0x000800
+#define CONFT_SOPT      "SOLID_OPTIONS"
+#define CONFF_SOPT                  0x001000
 
 /* subtokens */
 
@@ -168,6 +170,15 @@ struct ConfVar
 #define MBTT_OPTLOAD    "OPTLOAD"
 #define MBTF_OPTLOAD                0x0004
 
+/* solid_options block definitions */
+
+#define SOTT_HOSTIRCOP     "HOSTIRCOP"
+#define SOTF_HOSTIRCOP              0x000001
+#define SOTT_HOSTADMIN     "HOSTADMIN"
+#define SOTF_HOSTADMIN              0x000002
+#define SOTT_HOSTNETADMIN  "HOSTNETADMIN"
+#define SOTF_HOSTNETADMIN           0x000004
+
 /* our variable types */
 
 #define VARTYPE_INT     0x0001  /* integers             */
index 3a0bce71677b38d49298558ea044c5354554efd8..a3661b5eccb4f00f635c6cccd4eec70e186a0420 100644 (file)
 #ifndef __patchlevel_header__
 #define __patchlevel_header__
 
-#define BASENAME "bahamut"
-#define MAJOR 1
-#define MINOR 8
-#define PATCH 6
+#define BASENAME "solid"
+#define MAJOR 3
+#define MINOR 6
+#define PATCH 1
 
 #define PATCHES ""
 
index 8996666deb5d63504a14b0b358a1021aa22929f6..6abb07d5337366e027f8eb1cd4c09bcb6c1ae633 100644 (file)
@@ -309,6 +309,7 @@ typedef struct SAliasInfo AliasInfo;
 #define UMODE_K     0x4000000   /* umode +K - U: lined server kill messages */
 #define UMODE_I     0x8000000   /* umode +I - invisible oper (masked) */
 #define UMODE_S     0x10000000  /* umode +S - User is using SSL */
+#define UMODE_N     0x20000000  /* umode +N - Network Administrator */
 
 /* for sendto_ops_lev */
 
@@ -331,7 +332,7 @@ typedef struct SAliasInfo AliasInfo;
  *  that mode will be 'silent.'
  */
 
-#define SEND_UMODES (UMODE_a|UMODE_i|UMODE_o|UMODE_r|UMODE_A|UMODE_I|UMODE_R|UMODE_S)
+#define SEND_UMODES (UMODE_N|UMODE_a|UMODE_i|UMODE_o|UMODE_r|UMODE_A|UMODE_I|UMODE_R|UMODE_S)
 #define ALL_UMODES (SEND_UMODES|UMODE_b|UMODE_c|UMODE_d|UMODE_e|UMODE_f|\
                     UMODE_g|UMODE_h|UMODE_j|UMODE_k|UMODE_m|UMODE_n|UMODE_s|\
                     UMODE_w|UMODE_y|UMODE_F|UMODE_K|UMODE_O)
@@ -456,6 +457,10 @@ typedef struct SAliasInfo AliasInfo;
 #define        ClearDNS(x)             ((x)->flags &= ~FLAGS_DOINGDNS)
 #define        ClearAuth(x)            ((x)->flags &= ~FLAGS_AUTH)
 
+#define IsNAdmin(x)           ((x)->umode & UMODE_N)
+#define SetNAdmin(x)          ((x)->umode |= UMODE_N)
+#define ClearNAdmin(x)        ((x)->umode &= ~UMODE_N)
+
 /* Oper flags */
 
 /* defined operator access levels */ 
@@ -483,6 +488,7 @@ typedef struct SAliasInfo AliasInfo;
 #define OFLAG_UMODEd    0x00400000  /* Oper can set umode +d : debug */
 #define OFLAG_UMODEb    0x00800000  /* Oper can set umode +b : chatops */
 #define OFLAG_UMODEF   0x01000000  /* Oper can set umode +F : no flood throttling */
+#define OFLAG_NADMIN   0x02000000  /* Network Admin */
 #define OFLAG_LOCAL    (OFLAG_REHASH|OFLAG_HELPOP|OFLAG_GLOBOP|OFLAG_WALLOP|\
                          OFLAG_LOCOP|OFLAG_LROUTE|OFLAG_LKILL|OFLAG_KLINE|\
                          OFLAG_UNKLINE|OFLAG_LNOTICE|OFLAG_UMODEc|OFLAG_UMODEf|OFLAG_UMODEd|\
@@ -538,6 +544,9 @@ typedef struct SAliasInfo AliasInfo;
 #define OPClearZLine(x)                ((x)->oflag &= ~OFLAG_ZLINE)
 #define OPClearUModeF(x)       ((x)->oflag &= ~OFLAG_UMODEF)
 
+#define OPIsNAdmin(x)         ((x)->oflag & OFLAG_NADMIN)
+#define OPClearNAdmin(x)        ((x)->oflag &= ~OFLAG_NADMIN)
+
 /* defined debugging levels */
 #define        DEBUG_FATAL  0
 #define        DEBUG_ERROR  1 /* report_error() and other errors that are found */
index 19ee1e98aef373ce8ef20ef712d9761a0e57f6ae..51d1953f37912073d31cc69632ac8d0aba680eaf 100644 (file)
@@ -581,6 +581,7 @@ static int oper_access[] =
     OFLAG_GNOTICE, 'N',
     OFLAG_ADMIN,   'A',
     OFLAG_SADMIN,  'a',
+    OFLAG_NADMIN,  'Z',
     OFLAG_UMODEc,  'u',
     OFLAG_UMODEf,  'f',
     OFLAG_UMODEF,  'F',
index 6e98aa696dd352db0124b435df9bcfa1a12ec155..312630d14b4d87441e07903c844f8d5cff3389f7 100644 (file)
@@ -1992,11 +1992,14 @@ m_whois(aClient *cptr, aClient *sptr, int parc, char *parv[])
         
         buf[0] = '\0';
         if (IsAnOper(acptr))
-            strcat(buf, "an IRC Operator");
+            strcat(buf, "an \2IRC Operator\2");
         if (IsAdmin(acptr))
-            strcat(buf, " - Server Administrator");
+            strcat(buf, " - \2Server Administrator\2");
         else if (IsSAdmin(acptr))
-            strcat(buf, " - Services Administrator");
+            strcat(buf, " - \2Services Administrator\2");
+        else if (IsNAdmin(acptr))
+            strcat(buf, " - \2Network Administrator\2");
+
         if (buf[0])
             sendto_one(sptr, rpl_str(RPL_WHOISOPERATOR), me.name, parv[0], 
                        name, buf);
@@ -3082,6 +3085,7 @@ m_umode(aClient *cptr, aClient *sptr, int parc, char *parv[])
     {
         if (IsAdmin(sptr) && !OPIsAdmin(sptr)) ClearAdmin(sptr);
         if (IsSAdmin(sptr) && !OPIsSAdmin(sptr)) ClearSAdmin(sptr);
+        if (IsNAdmin(sptr) && !OPIsNAdmin(sptr)) ClearNAdmin(sptr);
         if (IsUmodef(sptr) && !OPCanUModef(sptr)) ClearUmodef(sptr);
         if (IsUmodec(sptr) && !OPCanUModec(sptr)) ClearUmodec(sptr);
         if (IsUmodej(sptr) && !OPCanUModec(sptr)) ClearUmodej(sptr);