From: Chris Porter Date: Wed, 12 Mar 2008 17:32:57 +0000 (+0000) Subject: Add relay access level to noperserv. X-Git-Url: https://jfr.im/git/irc/quakenet/newserv.git/commitdiff_plain/3f5ead93b358dc198ea31d9d98694d5a3a4086a9 Add relay access level to noperserv. --- diff --git a/control/control.h b/control/control.h index bf8ed03a..65a414aa 100644 --- a/control/control.h +++ b/control/control.h @@ -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 diff --git a/noperserv/noperserv.c b/noperserv/noperserv.c index dc706934..f473485a 100644 --- a/noperserv/noperserv.c +++ b/noperserv/noperserv.c @@ -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" diff --git a/noperserv/noperserv_policy.c b/noperserv/noperserv_policy.c index c7fdffeb..b80ac1ed 100644 --- a/noperserv/noperserv_policy.c +++ b/noperserv/noperserv_policy.c @@ -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; } } diff --git a/noperserv/noperserv_policy.h b/noperserv/noperserv_policy.h index 9c5279b2..ccda48aa 100644 --- a/noperserv/noperserv_policy.h +++ b/noperserv/noperserv_policy.h @@ -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