diff --git a/doc/conf/operclass.default.conf b/doc/conf/operclass.default.conf index c5bc54cd3..9d0057034 100644 --- a/doc/conf/operclass.default.conf +++ b/doc/conf/operclass.default.conf @@ -25,7 +25,7 @@ operclass locop { client; immune; notice { local; }; - server { dns; rehash; }; + server { rping; dns; rehash; }; route { local; }; kill { local; }; tkl { @@ -45,7 +45,7 @@ operclass globop { client; immune; notice; - server { dns; rehash; }; + server { rping; dns; rehash; }; route; kill; tkl { shun; zline; kline; gline; }; @@ -65,7 +65,7 @@ operclass admin { client; immune; notice; - server { dns; addline; rehash; description; addmotd; addomotd; tsctl; }; + server { rping; dns; addline; rehash; description; addmotd; addomotd; tsctl; }; route; kill; tkl { shun; zline; kline; gline; }; @@ -85,7 +85,7 @@ operclass services-admin { client; immune; notice; - server { dns; addline; rehash; description; addmotd; addomotd; tsctl; }; + server { rping; dns; addline; rehash; description; addmotd; addomotd; tsctl; }; route; kill; tkl { shun; zline; kline; gline; }; @@ -108,7 +108,7 @@ operclass netadmin { client; immune; notice; - server { dns; addline; rehash; description; addmotd; addomotd; tsctl; }; + server { rping; dns; addline; rehash; description; addmotd; addomotd; tsctl; }; kill; tkl { shun; zline; kline; gline; }; route; diff --git a/include/struct.h b/include/struct.h index 76df0ddec..922cdcd47 100644 --- a/include/struct.h +++ b/include/struct.h @@ -368,7 +368,6 @@ typedef OperPermission (*OperClassEntryEvalCallback)(OperClassACLEntryVar* varia #define IsRegNick(x) ((x)->umodes & UMODE_REGNICK) #define IsLoggedIn(x) (IsRegNick(x) || (x->user && (*x->user->svid != '*') && !isdigit(*x->user->svid))) /* registered nick (+r) or just logged into services (may be -r) */ #define IsPerson(x) ((x)->user && IsClient(x)) -#define IsPrivileged(x) (IsAnOper(x) || IsServer(x)) #define SendWallops(x) (!IsMe(x) && IsPerson(x) && ((x)->umodes & UMODE_WALLOP)) #define SendServNotice(x) (((x)->user) && ((x)->user->snomask & SNO_SNOTICE)) #define IsListening(x) ((x)->flags & FLAGS_LISTEN) diff --git a/src/modules/m_connect.c b/src/modules/m_connect.c index e60895e43..e2e2abba6 100644 --- a/src/modules/m_connect.c +++ b/src/modules/m_connect.c @@ -86,19 +86,13 @@ DLLFUNC CMD_FUNC(m_connect) aClient *acptr; - if (!IsPrivileged(sptr)) - { - sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); - return -1; - } - - if (MyClient(sptr) && !OperClass_evaluateACLPath("route:global",sptr,NULL,NULL,NULL) && parc > 3) + if (!IsServer(sptr) && MyClient(sptr) && !OperClass_evaluateACLPath("route:global",sptr,NULL,NULL,NULL) && parc > 3) { /* Only allow LocOps to make */ /* local CONNECTS --SRB */ sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); return 0; } - if (MyClient(sptr) && !OperClass_evaluateACLPath("route:local",sptr,NULL,NULL,NULL) && parc <= 3) + if (!IsServer(sptr) && MyClient(sptr) && !OperClass_evaluateACLPath("route:local",sptr,NULL,NULL,NULL) && parc <= 3) { sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); return 0; diff --git a/src/modules/m_kill.c b/src/modules/m_kill.c index af1dda686..b79fb3dba 100644 --- a/src/modules/m_kill.c +++ b/src/modules/m_kill.c @@ -110,7 +110,7 @@ DLLFUNC int m_kill(aClient *cptr, aClient *sptr, int parc, char *parv[]) *s = '\0'; /* Truncate at first "." */ #endif - if (!IsPrivileged(cptr)) + if (!IsServer(cptr) && !OperClass_evaluateACLPath("kill:global",sptr,NULL,NULL,NULL) && !OperClass_evaluateACLPath("kill:local",sptr,NULL,NULL,NULL)) { sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); return 0; diff --git a/src/modules/m_rping.c b/src/modules/m_rping.c index b6f675d95..7c629aa85 100644 --- a/src/modules/m_rping.c +++ b/src/modules/m_rping.c @@ -99,7 +99,7 @@ DLLFUNC int m_rping(aClient *cptr, aClient *sptr, int parc, char *parv[]) { aClient *acptr; - if (!IsPrivileged(sptr)) + if (!IsServer(sptr) && !OperClass_evaluateACLPath("server:rping",sptr,NULL,NULL,NULL)) { sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); return 0; diff --git a/src/modules/m_squit.c b/src/modules/m_squit.c index bde26e3d9..c28028ea3 100644 --- a/src/modules/m_squit.c +++ b/src/modules/m_squit.c @@ -85,7 +85,7 @@ CMD_FUNC(m_squit) parv[parc - 1] : cptr->name; - if (!IsPrivileged(sptr)) + if (!IsServer(sptr) && !OperClass_evaluateACLPath("route:local",sptr,NULL,NULL,NULL)) { sendto_one(sptr, err_str(ERR_NOPRIVILEGES), me.name, parv[0]); return 0;