aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2022-05-10 15:16:21 +0100
committerGravatar Sadie Powell2022-05-12 13:39:24 +0100
commit7922b96408a4908c9ebba363cb9ca63dd195e178 (patch)
tree6fa89c444068697987a41272ed3a14fe9f8080a8 /src/modules
parentMove unistd out of the global compat header. (diff)
Use the servprotect mode to protect services.
Anope and Atheme already set this on their clients so no downstream changes are needed. Closes #781.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_remove.cpp4
-rw-r--r--src/modules/m_sajoin.cpp9
-rw-r--r--src/modules/m_sakick.cpp9
-rw-r--r--src/modules/m_sanick.cpp9
-rw-r--r--src/modules/m_sapart.cpp9
-rw-r--r--src/modules/m_saquit.cpp9
6 files changed, 38 insertions, 11 deletions
diff --git a/src/modules/m_remove.cpp b/src/modules/m_remove.cpp
index 74b4c2992..5b41b1ccf 100644
--- a/src/modules/m_remove.cpp
+++ b/src/modules/m_remove.cpp
@@ -36,6 +36,7 @@ class CommandRemove final
{
private:
ChanModeReference nokicksmode;
+ UserModeReference servprotectmode;
public:
unsigned long protectedrank;
@@ -44,6 +45,7 @@ public:
CommandRemove(Module* Creator)
: Command(Creator, "REMOVE", 2, 3)
, nokicksmode(Creator, "nokick")
+ , servprotectmode(Creator, "servprotect")
{
syntax = { "<channel> <nick> [:<reason>]" };
translation = { TR_TEXT, TR_NICK, TR_TEXT };
@@ -84,7 +86,7 @@ public:
return CmdResult::FAILURE;
}
- if (target->server->IsService())
+ if (target->IsModeSet(servprotectmode))
{
user->WriteNumeric(ERR_RESTRICTED, channame, "Only a service may remove a service from a channel.");
return CmdResult::FAILURE;
diff --git a/src/modules/m_sajoin.cpp b/src/modules/m_sajoin.cpp
index 0e03bbfda..40cb14a81 100644
--- a/src/modules/m_sajoin.cpp
+++ b/src/modules/m_sajoin.cpp
@@ -30,8 +30,13 @@
class CommandSajoin final
: public Command
{
+private:
+ UserModeReference servprotectmode;
+
public:
- CommandSajoin(Module* Creator) : Command(Creator,"SAJOIN", 1)
+ CommandSajoin(Module* Creator)
+ : Command(Creator,"SAJOIN", 1)
+ , servprotectmode(Creator, "servprotect")
{
allow_empty_last_param = false;
access_needed = CmdAccess::OPERATOR;
@@ -57,7 +62,7 @@ public:
return CmdResult::FAILURE;
}
- if (dest->server->IsService())
+ if (dest->IsModeSet(servprotectmode))
{
user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a service");
return CmdResult::FAILURE;
diff --git a/src/modules/m_sakick.cpp b/src/modules/m_sakick.cpp
index 5ba5710d9..7175d5ae2 100644
--- a/src/modules/m_sakick.cpp
+++ b/src/modules/m_sakick.cpp
@@ -27,8 +27,13 @@
class CommandSakick final
: public Command
{
+private:
+ UserModeReference servprotectmode;
+
public:
- CommandSakick(Module* Creator) : Command(Creator,"SAKICK", 2, 3)
+ CommandSakick(Module* Creator)
+ : Command(Creator,"SAKICK", 2, 3)
+ , servprotectmode(Creator, "servprotect")
{
access_needed = CmdAccess::OPERATOR;
syntax = { "<channel> <nick> [:<reason>]" };
@@ -44,7 +49,7 @@ public:
{
const std::string& reason = (parameters.size() > 2) ? parameters[2] : dest->nick;
- if (dest->server->IsService())
+ if (dest->IsModeSet(servprotectmode))
{
user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a service");
return CmdResult::FAILURE;
diff --git a/src/modules/m_sanick.cpp b/src/modules/m_sanick.cpp
index 8854ec699..466856008 100644
--- a/src/modules/m_sanick.cpp
+++ b/src/modules/m_sanick.cpp
@@ -28,8 +28,13 @@
class CommandSanick final
: public Command
{
+private:
+ UserModeReference servprotectmode;
+
public:
- CommandSanick(Module* Creator) : Command(Creator,"SANICK", 2)
+ CommandSanick(Module* Creator)
+ : Command(Creator,"SANICK", 2)
+ , servprotectmode(Creator, "servprotect")
{
allow_empty_last_param = false;
access_needed = CmdAccess::OPERATOR;
@@ -44,7 +49,7 @@ public:
/* Do local sanity checks and bails */
if (IS_LOCAL(user))
{
- if (target && target->server->IsService())
+ if (target && target->IsModeSet(servprotectmode))
{
user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a service");
return CmdResult::FAILURE;
diff --git a/src/modules/m_sapart.cpp b/src/modules/m_sapart.cpp
index d40a58bc6..68399f794 100644
--- a/src/modules/m_sapart.cpp
+++ b/src/modules/m_sapart.cpp
@@ -28,8 +28,13 @@
class CommandSapart final
: public Command
{
+private:
+ UserModeReference servprotectmode;
+
public:
- CommandSapart(Module* Creator) : Command(Creator,"SAPART", 2, 3)
+ CommandSapart(Module* Creator)
+ : Command(Creator,"SAPART", 2, 3)
+ , servprotectmode(Creator, "servprotect")
{
access_needed = CmdAccess::OPERATOR;
syntax = { "<nick> <channel>[,<channel>]+ [:<reason>]" };
@@ -50,7 +55,7 @@ public:
if (parameters.size() > 2)
reason = parameters[2];
- if (dest->server->IsService())
+ if (dest->IsModeSet(servprotectmode))
{
user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a service");
return CmdResult::FAILURE;
diff --git a/src/modules/m_saquit.cpp b/src/modules/m_saquit.cpp
index 6f1a6d687..1b00e5dce 100644
--- a/src/modules/m_saquit.cpp
+++ b/src/modules/m_saquit.cpp
@@ -30,8 +30,13 @@
class CommandSaquit final
: public Command
{
+private:
+ UserModeReference servprotectmode;
+
public:
- CommandSaquit(Module* Creator) : Command(Creator, "SAQUIT", 2, 2)
+ CommandSaquit(Module* Creator)
+ : Command(Creator, "SAQUIT", 2, 2)
+ , servprotectmode(Creator, "servprotect")
{
access_needed = CmdAccess::OPERATOR;
syntax = { "<nick> :<reason>" };
@@ -43,7 +48,7 @@ public:
User* dest = ServerInstance->Users.Find(parameters[0]);
if ((dest) && (dest->registered == REG_ALL))
{
- if (dest->server->IsService())
+ if (dest->IsModeSet(servprotectmode))
{
user->WriteNumeric(ERR_NOPRIVILEGES, "Cannot use an SA command on a service");
return CmdResult::FAILURE;