diff options
author | Sadie Powell <sadie@witchery.services> | 2024-06-22 17:46:03 +0100 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2024-06-22 17:46:42 +0100 |
commit | 8c0edef714a358cbc3fcc57dc02745bea6f76869 (patch) | |
tree | 534df560164b1ad716668c2dbfbce7e15081581d | |
parent | c3efd9426d0ea88febf7904c15ce2bcd6a3516a0 (diff) |
Split nickserv/{sa,}set/language out to its own module.
-rw-r--r-- | data/nickserv.example.conf | 14 | ||||
-rw-r--r-- | modules/nickserv/ns_set.cpp | 118 | ||||
-rw-r--r-- | modules/nickserv/ns_set_language.cpp | 149 |
3 files changed, 159 insertions, 122 deletions
diff --git a/data/nickserv.example.conf b/data/nickserv.example.conf index 1191bd045..31e1a2d50 100644 --- a/data/nickserv.example.conf +++ b/data/nickserv.example.conf @@ -506,7 +506,6 @@ command { service = "NickServ"; name = "RESETPASS"; command = "nickserv/resetpas * nickserv/set/email, nickserv/saset/email - Used for setting a users email address. * nickserv/set/keepmodes, nickserv/saset/keepmodes - Configure whether or not services should retain a user's modes across sessions. * nickserv/set/kill, nickserv/saset/kill - Used for configuring nickname protection. - * nickserv/set/language, nickserv/saset/language - Used for configuring what language services use. * nickserv/set/message, nickserv/saset/message - Used to configure how services send messages to you. * nickserv/set/neverop, nickserv/saset/neverop - Used to configure whether a user can be added to access lists * nickserv/saset/noexpire - Used for configuring noexpire, which prevents nicks from expiring. @@ -542,9 +541,6 @@ command { service = "NickServ"; name = "SASET KEEPMODES"; command = "nickserv/sa command { service = "NickServ"; name = "SET KILL"; command = "nickserv/set/kill"; } command { service = "NickServ"; name = "SASET KILL"; command = "nickserv/saset/kill"; permission = "nickserv/saset/kill"; } -command { service = "NickServ"; name = "SET LANGUAGE"; command = "nickserv/set/language"; } -command { service = "NickServ"; name = "SASET LANGUAGE"; command = "nickserv/saset/language"; permission = "nickserv/saset/language"; } - command { service = "NickServ"; name = "SET MESSAGE"; command = "nickserv/set/message"; } command { service = "NickServ"; name = "SASET MESSAGE"; command = "nickserv/saset/message"; permission = "nickserv/saset/message"; } @@ -556,6 +552,16 @@ command { service = "NickServ"; name = "SASET NEVEROP"; command = "nickserv/sase command { service = "NickServ"; name = "SASET NOEXPIRE"; command = "nickserv/saset/noexpire"; permission = "nickserv/saset/noexpire"; } +/* + * ns_set_language + * + * Provides the command nickserv/set/language and nickserv/saset/language. + * + * Allows configuring the language that services uses. + */ +module { name = "ns_set_language" } +command { service = "NickServ"; name = "SET LANGUAGE"; command = "nickserv/set/language"; } +command { service = "NickServ"; name = "SASET LANGUAGE"; command = "nickserv/saset/language"; permission = "nickserv/saset/language"; } /* * ns_set_misc diff --git a/modules/nickserv/ns_set.cpp b/modules/nickserv/ns_set.cpp index 6467ed311..5bd3a4d3d 100644 --- a/modules/nickserv/ns_set.cpp +++ b/modules/nickserv/ns_set.cpp @@ -892,120 +892,6 @@ public: } }; -class CommandNSSetLanguage - : public Command -{ -public: - CommandNSSetLanguage(Module *creator, const Anope::string &sname = "nickserv/set/language", size_t min = 1) : Command(creator, sname, min, min + 1) - { - this->SetDesc(_("Set the language services will use when messaging you")); - this->SetSyntax(_("\037language\037")); - } - - void Run(CommandSource &source, const Anope::string &user, const Anope::string ¶m) - { - if (Anope::ReadOnly) - { - source.Reply(READ_ONLY_MODE); - return; - } - - const NickAlias *na = NickAlias::Find(user); - if (!na) - { - source.Reply(NICK_X_NOT_REGISTERED, user.c_str()); - return; - } - NickCore *nc = na->nc; - - EventReturn MOD_RESULT; - FOREACH_RESULT(OnSetNickOption, MOD_RESULT, (source, this, nc, param)); - if (MOD_RESULT == EVENT_STOP) - return; - - if (param != "en_US") - for (unsigned j = 0; j < Language::Languages.size(); ++j) - { - if (Language::Languages[j] == param) - break; - else if (j + 1 == Language::Languages.size()) - { - this->OnSyntaxError(source, ""); - return; - } - } - - Log(nc == source.GetAccount() ? LOG_COMMAND : LOG_ADMIN, source, this) << "to change the language of " << nc->display << " to " << param; - - nc->language = param; - if (source.GetAccount() == nc) - source.Reply(_("Language changed to \002English\002.")); - else - source.Reply(_("Language for \002%s\002 changed to \002%s\002."), nc->display.c_str(), Language::Translate(param.c_str(), _("English"))); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶m) override - { - this->Run(source, source.nc->display, param[0]); - } - - bool OnHelp(CommandSource &source, const Anope::string &) override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Changes the language services uses when sending messages to\n" - "you (for example, when responding to a command you send).\n" - "\037language\037 should be chosen from the following list of\n" - "supported languages:")); - - source.Reply(" en_US (English)"); - for (const auto &language : Language::Languages) - { - const Anope::string &langname = Language::Translate(language.c_str(), _("English")); - if (langname == "English") - continue; - source.Reply(" %s (%s)", language.c_str(), langname.c_str()); - } - - return true; - } -}; - -class CommandNSSASetLanguage final - : public CommandNSSetLanguage -{ -public: - CommandNSSASetLanguage(Module *creator) : CommandNSSetLanguage(creator, "nickserv/saset/language", 2) - { - this->ClearSyntax(); - this->SetSyntax(_("\037nickname\037 \037language\037")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override - { - this->Run(source, params[0], params[1]); - } - - bool OnHelp(CommandSource &source, const Anope::string &) override - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Changes the language services uses when sending messages to\n" - "the given user (for example, when responding to a command they send).\n" - "\037language\037 should be chosen from the following list of\n" - "supported languages:")); - source.Reply(" en (English)"); - for (const auto &language : Language::Languages) - { - const Anope::string &langname = Language::Translate(language.c_str(), _("English")); - if (langname == "English") - continue; - source.Reply(" %s (%s)", language.c_str(), langname.c_str()); - } - return true; - } -}; - class CommandNSSetMessage : public Command { @@ -1189,9 +1075,6 @@ class NSSet final CommandNSSetKill commandnssetkill; CommandNSSASetKill commandnssasetkill; - CommandNSSetLanguage commandnssetlanguage; - CommandNSSASetLanguage commandnssasetlanguage; - CommandNSSetMessage commandnssetmessage; CommandNSSASetMessage commandnssasetmessage; @@ -1262,7 +1145,6 @@ public: commandnssetemail(this), commandnssasetemail(this), commandnssetkeepmodes(this), commandnssasetkeepmodes(this), commandnssetkill(this), commandnssasetkill(this), - commandnssetlanguage(this), commandnssasetlanguage(this), commandnssetmessage(this), commandnssasetmessage(this), commandnssetpassword(this), commandnssasetpassword(this), commandnssasetnoexpire(this), diff --git a/modules/nickserv/ns_set_language.cpp b/modules/nickserv/ns_set_language.cpp new file mode 100644 index 000000000..1d73a5cbd --- /dev/null +++ b/modules/nickserv/ns_set_language.cpp @@ -0,0 +1,149 @@ +/* NickServ core functions + * + * (C) 2003-2024 Anope Team + * Contact us at team@anope.org + * + * Please read COPYING and README for further details. + * + * Based on the original code of Epona by Lara. + * Based on the original code of Services by Andy Church. + */ + +#include "module.h" + +class CommandNSSetLanguage + : public Command +{ +public: + CommandNSSetLanguage(Module *creator, const Anope::string &sname = "nickserv/set/language", size_t min = 1) + : Command(creator, sname, min, min + 1) + { + this->SetDesc(_("Set the language services will use when messaging you")); + this->SetSyntax(_("\037language\037")); + } + + void Run(CommandSource &source, const Anope::string &user, const Anope::string ¶m) + { + if (Anope::ReadOnly) + { + source.Reply(READ_ONLY_MODE); + return; + } + + const NickAlias *na = NickAlias::Find(user); + if (!na) + { + source.Reply(NICK_X_NOT_REGISTERED, user.c_str()); + return; + } + NickCore *nc = na->nc; + + EventReturn MOD_RESULT; + FOREACH_RESULT(OnSetNickOption, MOD_RESULT, (source, this, nc, param)); + if (MOD_RESULT == EVENT_STOP) + return; + + if (param != "en_US") + { + for (unsigned j = 0; j < Language::Languages.size(); ++j) + { + if (Language::Languages[j] == param) + break; + else if (j + 1 == Language::Languages.size()) + { + this->OnSyntaxError(source, ""); + return; + } + } + } + + Log(nc == source.GetAccount() ? LOG_COMMAND : LOG_ADMIN, source, this) << "to change the language of " << nc->display << " to " << param; + + nc->language = param; + if (source.GetAccount() == nc) + source.Reply(_("Language changed to \002English\002.")); + else + source.Reply(_("Language for \002%s\002 changed to \002%s\002."), nc->display.c_str(), Language::Translate(param.c_str(), _("English"))); + } + + void Execute(CommandSource &source, const std::vector<Anope::string> ¶m) override + { + this->Run(source, source.nc->display, param[0]); + } + + bool OnHelp(CommandSource &source, const Anope::string &) override + { + this->SendSyntax(source); + source.Reply(" "); + source.Reply(_("Changes the language services uses when sending messages to\n" + "you (for example, when responding to a command you send).\n" + "\037language\037 should be chosen from the following list of\n" + "supported languages:")); + + source.Reply(" en_US (English)"); + for (const auto &language : Language::Languages) + { + const Anope::string &langname = Language::Translate(language.c_str(), _("English")); + if (langname != "English") + source.Reply(" %s (%s)", language.c_str(), langname.c_str()); + } + + return true; + } +}; + +class CommandNSSASetLanguage final + : public CommandNSSetLanguage +{ +public: + CommandNSSASetLanguage(Module *creator) + : CommandNSSetLanguage(creator, "nickserv/saset/language", 2) + { + this->ClearSyntax(); + this->SetSyntax(_("\037nickname\037 \037language\037")); + } + + void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) override + { + this->Run(source, params[0], params[1]); + } + + bool OnHelp(CommandSource &source, const Anope::string &) override + { + this->SendSyntax(source); + source.Reply(" "); + source.Reply(_("Changes the language services uses when sending messages to\n" + "the given user (for example, when responding to a command they send).\n" + "\037language\037 should be chosen from the following list of\n" + "supported languages:")); + source.Reply(" en_US (English)"); + for (const auto &language : Language::Languages) + { + const Anope::string &langname = Language::Translate(language.c_str(), _("English")); + if (langname != "English") + source.Reply(" %s (%s)", language.c_str(), langname.c_str()); + } + return true; + } +}; + +class NSSetLanguage final + : public Module +{ +private: + CommandNSSetLanguage commandnssetlanguage; + CommandNSSASetLanguage commandnssasetlanguage; + +public: + NSSetLanguage(const Anope::string &modname, const Anope::string &creator) + : Module(modname, creator, VENDOR) + , commandnssetlanguage(this) + , commandnssasetlanguage(this) + { +#ifndef HAVE_LOCALIZATION + throw ModuleException("Anope was not built with localization support"); +#endif + } +}; + +MODULE_INIT(NSSetLanguage) |