summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Sadie Powell2026-03-08 20:27:46 +0000
committerGravatar Sadie Powell2026-03-08 20:27:46 +0000
commit4b6ec1c0af69394cc5f0d880df7408df145a3bc2 (patch)
tree6b870d5d32e0ad692b4144b997f38cd8dbb6a4f5 /src
parentFix some minor doxygen warnings. (diff)
Respect <security:restrictbannedusers> in setname.
Diffstat (limited to 'src')
-rw-r--r--src/modules/m_setname.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/modules/m_setname.cpp b/src/modules/m_setname.cpp
index 442bd0315..2b3ec46a5 100644
--- a/src/modules/m_setname.cpp
+++ b/src/modules/m_setname.cpp
@@ -53,6 +53,24 @@ public:
return CmdResult::FAILURE;
}
+ // Disallow the real name change if <security:restrictbannedusers> is on and there is a ban
+ // matching this user in one of the channels they are on.
+ if (ServerInstance->Config->RestrictBannedUsers != ServerConfig::BUT_NORMAL)
+ {
+ for (const auto* memb : user->chans)
+ {
+ if (memb->chan->GetPrefixValue(user) < VOICE_VALUE && memb->chan->IsBanned(user))
+ {
+ if (ServerInstance->Config->RestrictBannedUsers == ServerConfig::BUT_RESTRICT_NOTIFY)
+ {
+ fail.SendIfCap(user, &cap, this, "CANNOT_CHANGE_REALNAME", INSP_FORMAT("Cannot change nickname while on {} (you're banned)",
+ memb->chan->name));
+ }
+ return CmdResult::FAILURE;
+ }
+ }
+ }
+
user->ChangeRealName(parameters[0]);
if (notifyopers)
ServerInstance->SNO.WriteGlobalSno('a', "{} used SETNAME to change their real name to '{}'",