summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2019-01-28 19:42:02 +0000
committerPeter Powell <petpow@saberuk.com>2019-01-28 19:42:02 +0000
commita032cd90ad5582914759e226085efee5aae1a1ef (patch)
treea201d1aa87e00d89f1c6c25d5c14492f732d4080
parent18678c6a22f72152b7dacc356c791868b4e170c4 (diff)
Allow configuring whether SETNAME sends snotices and is oper-only.
-rw-r--r--docs/conf/modules.conf.example12
-rw-r--r--src/modules/m_setname.cpp17
2 files changed, 28 insertions, 1 deletions
diff --git a/docs/conf/modules.conf.example b/docs/conf/modules.conf.example
index a10f30154..1c219cbd6 100644
--- a/docs/conf/modules.conf.example
+++ b/docs/conf/modules.conf.example
@@ -1925,6 +1925,18 @@
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# SETNAME module: Adds the /SETNAME command.
#<module name="setname">
+#
+#-#-#-#-#-#-#-#-#-#-#-#- SETNAME CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#
+# #
+# operonly - Whether the SETNAME command should only be usable by #
+# server operators. Defaults to no. #
+# #
+# notifyopers - Whether to send a snotice to snomask `a` when the #
+# server operators. Defaults to to yes if oper-only and #
+# no if usable by everyone. #
+# #
+#<setname notifyopers="yes" #
+# operonly="no"> #
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Serverban: Implements extended ban 's', which stops anyone connected
diff --git a/src/modules/m_setname.cpp b/src/modules/m_setname.cpp
index efe7028b7..ae85fc98d 100644
--- a/src/modules/m_setname.cpp
+++ b/src/modules/m_setname.cpp
@@ -26,6 +26,7 @@
class CommandSetname : public Command
{
public:
+ bool notifyopers;
CommandSetname(Module* Creator) : Command(Creator,"SETNAME", 1, 1)
{
allow_empty_last_param = false;
@@ -42,7 +43,9 @@ class CommandSetname : public Command
if (user->ChangeRealName(parameters[0]))
{
- ServerInstance->SNO->WriteGlobalSno('a', "%s used SETNAME to change their real name to '%s'", user->nick.c_str(), parameters[0].c_str());
+ if (notifyopers)
+ ServerInstance->SNO->WriteGlobalSno('a', "%s used SETNAME to change their real name to '%s'",
+ user->nick.c_str(), parameters[0].c_str());
}
return CMD_SUCCESS;
@@ -59,6 +62,18 @@ class ModuleSetName : public Module
{
}
+ void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
+ {
+ ConfigTag* tag = ServerInstance->Config->ConfValue("cgiirc");
+
+ // Whether the module should only be usable by server operators.
+ bool operonly = tag->getBool("operonly");
+ cmd.flags_needed = operonly ? 'o' : 0;
+
+ // Whether a snotice should be sent out when a user changes their real name.
+ cmd.notifyopers = tag->getBool("notifyopers", !operonly);
+ }
+
Version GetVersion() CXX11_OVERRIDE
{
return Version("Provides support for the SETNAME command", VF_VENDOR);