diff options
| author | 2022-05-10 15:16:21 +0100 | |
|---|---|---|
| committer | 2022-05-12 13:39:24 +0100 | |
| commit | 7922b96408a4908c9ebba363cb9ca63dd195e178 (patch) | |
| tree | 6fa89c444068697987a41272ed3a14fe9f8080a8 /src/modules | |
| parent | Move 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.cpp | 4 | ||||
| -rw-r--r-- | src/modules/m_sajoin.cpp | 9 | ||||
| -rw-r--r-- | src/modules/m_sakick.cpp | 9 | ||||
| -rw-r--r-- | src/modules/m_sanick.cpp | 9 | ||||
| -rw-r--r-- | src/modules/m_sapart.cpp | 9 | ||||
| -rw-r--r-- | src/modules/m_saquit.cpp | 9 |
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; |
