]> jfr.im git - irc/quakenet/newserv.git/commitdiff
Add relay access level to noperserv.
authorChris Porter <redacted>
Wed, 12 Mar 2008 17:32:57 +0000 (17:32 +0000)
committerChris Porter <redacted>
Wed, 12 Mar 2008 17:32:57 +0000 (17:32 +0000)
control/control.h
noperserv/noperserv.c
noperserv/noperserv_policy.c
noperserv/noperserv_policy.h

index bf8ed03a675756dd9de73888d07f7cf488e8b238..65a414aa31401302a8b88362b381206612e35375 100644 (file)
@@ -45,6 +45,7 @@ struct specialsched {
 #define __NO_OPER        0x040 /* +O */
 #define __NO_SEC         0x080 /* +w */
 #define __NO_DEVELOPER   0x100 /* +d */
+#define __NO_RELAY       0x200 /* +Y */
 
 /* These are dangerous, they don't include requiring /OPER or STAFF status, be careful */
 #define NOD_ACCOUNT   __NO_ACCOUNT | NO_AUTHED /* must contain authed else account won't be checked */
@@ -53,6 +54,7 @@ struct specialsched {
 #define NOD_OPER      __NO_OPER | NOD_ACCOUNT
 #define NOD_SEC       __NO_SEC | NOD_ACCOUNT
 #define NOD_DEVELOPER __NO_DEVELOPER | NOD_ACCOUNT
+#define NOD_RELAY     __NO_RELAY | NOD_ACCOUNT
 
 /* These ones are safe to use */
 #define NO_ANYONE       __NO_ANYONE                /* don't have to be authed to Q, or us, or opered or anything */
@@ -66,8 +68,9 @@ struct specialsched {
 #define NO_TRUST_OPER   NO_OPER | NOD_TRUST        /* must be authed to Q, /opered, and have trust and oper levels on bot */
 #define NO_SEC_STAFF    NO_STAFF | NOD_SEC         /* must be authed to Q, and have staff and sec level on bot */
 #define NO_SEC_OPER     NO_OPER | NOD_SEC          /* must be authed to Q, /opered, and have sec and oper levels on bot */
+#define NO_RELAY        NO_OPERED | NOD_RELAY      /* must be authed to Q, /opered, and have the relay level on bot */
 
-#define NO_ALL_FLAGS    __NO_STAFF | __NO_TRUST | __NO_OPER | __NO_SEC | __NO_DEVELOPER
+#define NO_ALL_FLAGS    __NO_STAFF | __NO_TRUST | __NO_OPER | __NO_SEC | __NO_DEVELOPER | __NO_RELAY
 #define NO_OPER_FLAGS   __NO_STAFF
 #define NO_DEV_FLAGS    NO_ALL_FLAGS
 
index dc706934dc49ffe5d64e5b7924445c1b3ac986db..f473485af2e0fe67f5b886d386a9fdbaa86d70ff 100644 (file)
@@ -36,6 +36,7 @@ const flag no_commandflags[] = {
     { 'O', __NO_OPERED },
     { 'r', __NO_AUTHED },
     { 'R', __NO_ACCOUNT },
+    { 'Y', __NO_RELAY },
     { '\0', 0 }
   }; 
 
@@ -45,6 +46,7 @@ const flag no_userflags[] = {
     { 's', __NO_STAFF },
     { 'S', __NO_SEC },
     { 'd', __NO_DEVELOPER },
+    { 'Y', __NO_RELAY },
     { '\0', 0 }
   }; 
 
@@ -95,6 +97,7 @@ void _init() {
     "  +S: Security team member\n"
     "  +d: NOperserv developer\n"
     "  +t: Trust queue worker\n"
+    "  +Y: Relay\n"
     " Additional flags may show up in SHOWCOMMANDS but are not userflags as such:\n"
     "  +r: Authed user\n"
     "  +R: Registered NOperserv user\n"
index c7fdffeb7f8b7bde4ca642e11af0515648c3e414..b80ac1edfc17cb60989b912613ec6bec08df715d 100644 (file)
@@ -27,6 +27,8 @@ int noperserv_policy_command_permitted(flag_t level, nick *user) {
         return 0;
       if ((level & __NO_TRUST) && !NOIsLeastTrust(au))
         return 0;
+      if ((level & __NO_RELAY) && !NOIsLeastRelay(au))
+        return 0;
     }
   }
 
index 9c5279b2660a7cc35550d4b36b2ebe707795b537..ccda48aaf661987607b031a967c2bc9f88093a84 100644 (file)
@@ -16,11 +16,13 @@ flag_t noperserv_policy_permitted_modifications(no_autheduser *au, no_autheduser
 #define NOIsSec(user)          (NOGetAuthLevel(user) & __NO_SEC)
 #define NOIsOper(user)         (NOGetAuthLevel(user) & __NO_OPER)
 #define NOIsDeveloper(user)    (NOGetAuthLevel(user) & __NO_DEVELOPER)
+#define NOIsRelay(user)        (NOGetAuthLevel(user) & __NO_RELAY)
 
 #define NOIsLeastStaff(user)   (NOGetAuthLevel(user) & (__NO_DEVELOPER | __NO_OPER | __NO_STAFF))
 #define NOIsLeastOper(user)    (NOGetAuthLevel(user) & (__NO_OPER | __NO_DEVELOPER))
 #define NOIsLeastTrust(user)   (NOGetAuthLevel(user) & (__NO_DEVELOPER | __NO_TRUST))
 #define NOIsLeastSec(user)     (NOGetAuthLevel(user) & (__NO_DEVELOPER | __NO_SEC))
+#define NOIsLeastRelay(user)   (NOGetAuthLevel(user) & (__NO_DEVELOPER | __NO_RELAY))
 
 #define NL_PEONIC_FLAGS NL_NOTICES
 #define NL_ALL          NL_MANAGEMENT | NL_TRUSTS | NL_KICKKILLS | NL_MISC | NL_GLINES | NL_HITS | NL_CLONING | NL_CLEARCHAN | NL_FAKEUSERS | NL_BROADCASTS | NL_OPERATIONS | NL_OPERING | NL_ALL_COMMANDS