From d646d455e2655be59f6d5bcc56710ac70548ca37 Mon Sep 17 00:00:00 2001 From: Adam Date: Sun, 26 Sep 2010 02:33:01 -0400 Subject: Changed the language system to use gettext --- modules/extra/cs_appendtopic.cpp | 102 +-------- modules/extra/cs_enforce.cpp | 278 +++-------------------- modules/extra/cs_set_misc.cpp | 8 +- modules/extra/cs_tban.cpp | 167 ++++---------- modules/extra/db_mysql.cpp | 8 +- modules/extra/hs_request.cpp | 478 ++++++--------------------------------- modules/extra/ns_maxemail.cpp | 153 ++++--------- modules/extra/ns_set_misc.cpp | 8 +- 8 files changed, 212 insertions(+), 990 deletions(-) (limited to 'modules/extra') diff --git a/modules/extra/cs_appendtopic.cpp b/modules/extra/cs_appendtopic.cpp index 09ab3b481..e8ccde22b 100644 --- a/modules/extra/cs_appendtopic.cpp +++ b/modules/extra/cs_appendtopic.cpp @@ -41,14 +41,6 @@ /* DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING */ /* ---------------------------------------------------------------------- */ -enum -{ - LNG_CHAN_HELP, - LNG_CHAN_HELP_APPENDTOPIC, - LNG_APPENDTOPIC_SYNTAX, - LNG_NUM_STRINGS -}; - static Module *me; class CommandCSAppendTopic : public Command @@ -66,9 +58,9 @@ class CommandCSAppendTopic : public Command Channel *c = ci ? ci->c : NULL; if (!c) - notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str()); + u->SendMessage(ChanServ, CHAN_X_NOT_IN_USE, chan.c_str()); else if (!check_access(u, ci, CA_TOPIC)) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); else { Anope::string topic; @@ -94,21 +86,23 @@ class CommandCSAppendTopic : public Command bool OnHelp(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_ChanServ, u, LNG_APPENDTOPIC_SYNTAX); + me->SendMessage(ChanServ, u, _("Syntax: APPENDTOPIC channel text")); u->SendMessage(Config->s_ChanServ, " "); - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_HELP_APPENDTOPIC); + me->SendMessage(ChanServ, u, _("This command allows users to append text to a currently set\n" + "channel topic. When TOPICLOCK is on, the topic is updated and\n" + "the new, updated topic is locked.")); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_ChanServ, u, LNG_APPENDTOPIC_SYNTAX); + me->SendMessage(ChanServ, u, _("Syntax: APPENDTOPIC channel text")); } void OnServHelp(User *u) { - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_HELP); + me->SendMessage(ChanServ, u, _(" APPENDTOPIC Add text to a channels topic")); } }; @@ -125,86 +119,6 @@ class CSAppendTopic : public Module this->SetType(SUPPORTED); this->AddCommand(ChanServ, &commandcsappendtopic); - - /* English (US) */ - const char *langtable_en_us[] = { - /* LNG_CHAN_HELP */ - " APPENDTOPIC Add text to a channels topic", - /* LNG_CHAN_HELP_APPENDTOPIC */ - "This command allows users to append text to a currently set\n" - "channel topic. When TOPICLOCK is on, the topic is updated and\n" - "the new, updated topic is locked.", - /* LNG_APPENDTOPIC_SYNTAX */ - "Syntax: APPENDTOPIC channel text\n" - }; - - /* Dutch (NL) */ - const char *langtable_nl[] = { - /* LNG_CHAN_HELP */ - " APPENDTOPIC Voeg tekst aan een kanaal onderwerp toe", - /* LNG_CHAN_HELP_APPENDTOPIC */ - "Dit command stelt gebruikers in staat om text toe te voegen\n" - "achter het huidige onderwerp van een kanaal. Als TOPICLOCK aan\n" - "staat, zal het onderwerp worden bijgewerkt en zal het nieuwe,\n" - "bijgewerkte topic worden geforceerd.", - /* LNG_APPENDTOPIC_SYNTAX */ - "Gebruik: APPENDTOPIC kanaal tekst\n" - }; - - /* German (DE) */ - const char *langtable_de[] = { - /* LNG_CHAN_HELP */ - " APPENDTOPIC Fьgt einen Text zu einem Channel-Topic hinzu.", - /* LNG_CHAN_HELP_APPENDTOPIC */ - "Dieser Befehl erlaubt Benutzern, einen Text zu dem vorhandenen Channel-Topic\n" - "hinzuzufьgen. Wenn TOPICLOCK gesetzt ist, wird das Topic aktualisiert\n" - "und das neue, aktualisierte Topic wird gesperrt.", - /* LNG_APPENDTOPIC_SYNTAX */ - "Syntax: APPENDTOPIC Channel Text\n" - }; - - /* Portuguese (PT) */ - const char *langtable_pt[] = { - /* LNG_CHAN_HELP */ - " APPENDTOPIC Adiciona texto ao tуpico de um canal", - /* LNG_CHAN_HELP_APPENDTOPIC */ - "Este comando permite aos usuбrios anexar texto a um tуpico de canal\n" - "jб definido. Quando TOPICLOCK estб ativado, o tуpico й atualizado e\n" - "o novo tуpico й travado.", - /* LNG_APPENDTOPIC_SYNTAX */ - "Sintaxe: APPENDTOPIC canal texto\n" - }; - - /* Russian (RU) */ - const char *langtable_ru[] = { - /* LNG_CHAN_HELP */ - " APPENDTOPIC Добавляет текст к топику канала", - /* LNG_CHAN_HELP_APPENDTOPIC */ - "Данная команда позволяет добавить текст к топику, который установлен на указанном\n" - "канале. Если активирован режим TOPICLOCK, топик будет обновлен и заблокирован.\n" - "Примечание: текст будет ДОБАВЛЕН к топику, то есть старый топик удален НЕ БУДЕТ.\n", - /* LNG_APPENDTOPIC_SYNTAX */ - "Синтаксис: APPENDTOPIC #канал текст\n" - }; - - /* Italian (IT) */ - const char *langtable_it[] = { - /* LNG_CHAN_HELP */ - " APPENDTOPIC Aggiunge del testo al topic di un canale", - /* LNG_CHAN_HELP_APPENDTOPIC */ - "Questo comando permette agli utenti di aggiungere del testo ad un topic di un canale\n" - "giа impostato. Se TOPICLOCK и attivato, il topic viene aggiornato e il nuovo topic\n" - "viene bloccato.", - /* LNG_APPENDTOPIC_SYNTAX */ - "Sintassi: APPENDTOPIC canale testo\n" - }; - - this->InsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us); - this->InsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl); - this->InsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de); - this->InsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt); - this->InsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru); - this->InsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it); } }; diff --git a/modules/extra/cs_enforce.cpp b/modules/extra/cs_enforce.cpp index 5541aa5ca..2d65422c6 100644 --- a/modules/extra/cs_enforce.cpp +++ b/modules/extra/cs_enforce.cpp @@ -15,19 +15,6 @@ #include "module.h" -#define AUTHOR "Anope" - -enum -{ - LNG_CHAN_HELP, - LNG_ENFORCE_SYNTAX, - LNG_CHAN_HELP_ENFORCE, - LNG_CHAN_HELP_ENFORCE_R_ENABLED, - LNG_CHAN_HELP_ENFORCE_R_DISABLED, - LNG_CHAN_RESPONSE, - LNG_NUM_STRINGS -}; - static Module *me; class CommandCSEnforce : public Command @@ -87,7 +74,6 @@ class CommandCSEnforce : public Command ChannelInfo *ci; int16 old_nojoin_level; Anope::string mask; - const char *reason; if (!(ci = c->ci)) return; @@ -103,9 +89,9 @@ class CommandCSEnforce : public Command if (check_access(uc->user, ci, CA_NOJOIN)) { get_idealban(ci, uc->user, mask); - reason = getstring(uc->user, CHAN_NOT_ALLOWED_TO_JOIN); + Anope::string reason = GetString(uc->user, CHAN_NOT_ALLOWED_TO_JOIN); c->SetMode(NULL, CMODE_BAN, mask); - c->Kick(NULL, uc->user, "%s", reason); + c->Kick(NULL, uc->user, "%s", reason.c_str()); } } @@ -127,7 +113,7 @@ class CommandCSEnforce : public Command if (!uc->user->IsIdentified()) { get_idealban(ci, uc->user, mask); - Anope::string reason = getstring(uc->user, CHAN_NOT_ALLOWED_TO_JOIN); + Anope::string reason = GetString(uc->user, CHAN_NOT_ALLOWED_TO_JOIN); if (!c->HasMode(CMODE_REGISTERED)) c->SetMode(NULL, CMODE_BAN, mask); c->Kick(NULL, uc->user, "%s", reason.c_str()); @@ -150,35 +136,35 @@ class CommandCSEnforce : public Command ci = c->ci; if (!c) - notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str()); + u->SendMessage(ChanServ, CHAN_X_NOT_IN_USE, chan.c_str()); else if (!check_access(u, ci, CA_AKICK)) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); + u->SendMessage(ChanServ, ACCESS_DENIED); else { if (what.empty() || what.equals_ci("SET")) { this->DoSet(c); - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_RESPONSE, !what.empty() ? what.c_str() : "SET"); + me->SendMessage(ChanServ, u, _("Enforced %s"), !what.empty() ? what.c_str() : "SET"); } else if (what.equals_ci("MODES")) { this->DoModes(c); - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_RESPONSE, what.c_str()); + me->SendMessage(ChanServ, u, _("Enforced %s"), what.c_str()); } else if (what.equals_ci("SECUREOPS")) { this->DoSecureOps(c); - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_RESPONSE, what.c_str()); + me->SendMessage(ChanServ, u, _("Enforced %s"), what.c_str()); } else if (what.equals_ci("RESTRICTED")) { this->DoRestricted(c); - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_RESPONSE, what.c_str()); + me->SendMessage(ChanServ, u, _("Enforced %s"), what.c_str()); } else if (what.equals_ci("+R")) { this->DoCModeR(c); - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_RESPONSE, what.c_str()); + me->SendMessage(ChanServ, u, _("Enforced %s"), what.c_str()); } else this->OnSyntaxError(u, ""); @@ -189,26 +175,44 @@ class CommandCSEnforce : public Command bool OnHelp(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_ChanServ, u, LNG_ENFORCE_SYNTAX); - u->SendMessage(Config->s_ChanServ, " "); - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_HELP_ENFORCE); - u->SendMessage(Config->s_ChanServ, " "); + me->SendMessage(ChanServ, u, _("Syntax: \002ENFORCE \037channel\037 [\037what\037]\002")); + me->SendMessage(ChanServ, u, " "); + me->SendMessage(ChanServ, u, _("Enforce various channel modes and set options. The \037channel\037\n" + "option indicates what channel to enforce the modes and options\n" + "on. The \037what\037 option indicates what modes and options to\n" + "enforce, and can be any of SET, SECUREOPS, RESTRICTED, MODES,\n" + "or +R. When left out, it defaults to SET.\n" + " \n" + "If \037what\037 is SET, it will enforce SECUREOPS and RESTRICTED\n" + "on the users currently in the channel, if they are set. Give\n" + "SECUREOPS to enforce the SECUREOPS option, even if it is not\n" + "enabled. Use RESTRICTED to enfore the RESTRICTED option, also\n" + "if it's not enabled.")); + me->SendMessage(ChanServ, u, " "); if (ModeManager::FindChannelModeByName(CMODE_REGISTERED)) - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_HELP_ENFORCE_R_ENABLED); + me->SendMessage(ChanServ, u, _("If \037what\037 is MODES, it will enforce channelmode +R if it is\n" + "set. If +R is specified for \037what\037, the +R channelmode will\n" + "also be enforced, but even if it is not set. If it is not set,\n" + "users will be banned to ensure they don't just rejoin.")); else - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_HELP_ENFORCE_R_DISABLED); + me->SendMessage(ChanServ, u, _("If \037what\037 is MODES, nothing will be enforced, since it would\n" + "enforce modes that the current ircd does not support. If +R is\n" + "specified for \037what\037, an equalivant of channelmode +R on\n" + "other ircds will be enforced. All users that are in the channel\n" + "but have not identified for their nickname will be kicked and\n" + "banned from the channel.")); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_ChanServ, u, LNG_ENFORCE_SYNTAX); + me->SendMessage(ChanServ, u, _("Syntax: \002ENFORCE \037channel\037 [\037what\037]\002")); } void OnServHelp(User *u) { - me->NoticeLang(Config->s_ChanServ, u, LNG_CHAN_HELP); + me->SendMessage(ChanServ, u, _(" ENFORCE Enforce various channel modes and set options")); } }; @@ -221,218 +225,10 @@ class CSEnforce : public Module { me = this; - this->SetAuthor(AUTHOR); + this->SetAuthor("Anope"); this->SetType(SUPPORTED); this->AddCommand(ChanServ, &commandcsenforce); - - /* English (US) */ - const char *langtable_en_us[] = { - /* LNG_CHAN_HELP */ - " ENFORCE Enforce various channel modes and set options", - /* LNG_ENFORCE_SYNTAX */ - "Syntax: \002ENFORCE \037channel\037 [\037what\037]\002", - /* LNG_CHAN_HELP_ENFORCE */ - "Enforce various channel modes and set options. The \037channel\037\n" - "option indicates what channel to enforce the modes and options\n" - "on. The \037what\037 option indicates what modes and options to\n" - "enforce, and can be any of SET, SECUREOPS, RESTRICTED, MODES,\n" - "or +R. When left out, it defaults to SET.\n" - " \n" - "If \037what\037 is SET, it will enforce SECUREOPS and RESTRICTED\n" - "on the users currently in the channel, if they are set. Give\n" - "SECUREOPS to enforce the SECUREOPS option, even if it is not\n" - "enabled. Use RESTRICTED to enfore the RESTRICTED option, also\n" - "if it's not enabled.", - /* LNG_CHAN_HELP_ENFORCE_R_ENABLED */ - "If \037what\037 is MODES, it will enforce channelmode +R if it is\n" - "set. If +R is specified for \037what\037, the +R channelmode will\n" - "also be enforced, but even if it is not set. If it is not set,\n" - "users will be banned to ensure they don't just rejoin.", - /* LNG_CHAN_HELP_ENFORCE_R_DISABLED */ - "If \037what\037 is MODES, nothing will be enforced, since it would\n" - "enforce modes that the current ircd does not support. If +R is\n" - "specified for \037what\037, an equalivant of channelmode +R on\n" - "other ircds will be enforced. All users that are in the channel\n" - "but have not identified for their nickname will be kicked and\n" - "banned from the channel.", - /* LNG_CHAN_RESPONSE */ - "Enforced %s" - }; - - /* Dutch (NL) */ - const char *langtable_nl[] = { - /* LNG_CHAN_HELP */ - " ENFORCE Forceer enkele kanaalmodes en set-opties", - /* LNG_ENFORCE_SYNTAX */ - "Syntax: \002ENFORCE \037kanaal\037 [\037wat\037]\002", - /* LNG_CHAN_HELP_ENFORCE */ - "Forceer enkele kannalmodes en set-opties. De \037kanaal\037 optie\n" - "geeft aan op welk kanaal de modes en opties geforceerd moeten\n" - "worden. De \037wat\037 optie geeft aan welke modes en opties\n" - "geforceerd moeten worden; dit kan SET, SECUREOPS, RESTRICTED,\n" - "MODES, of +R zijn. Indien weggelaten is dit standaard SET.\n" - " \n" - "Als er voor \037wat\037 SET wordt ingevuld, zullen SECUREOPS en\n" - "RESTRICTED geforceerd worden op de gebruikers in het kanaal,\n" - "maar alleen als die opties aangezet zijn voor het kanaal. Als\n" - "SECUREOPS of RESTRICTED wordt gegeven voor \037wat\037 zal die optie\n" - "altijd geforceerd worden, ook als die niet is aangezet.", - /* LNG_CHAN_HELP_ENFORCE_R_ENABLED */ - "Als er voor \037wat\037 MODES wordt ingevuld, zal kanaalmode +R worden\n" - "geforceerd, als die op het kanaal aan staat. Als +R wordt ingevuld,\n" - "zal kanaalmode +R worden geforceerd, maar ook als die niet aan" - "staat voor het kanaal. Als +R niet aan staat, zullen alle ook\n" - "gebanned worden om te zorgen dat ze niet opnieuw het kanaal binnen\n" - "kunnen komen.", - /* LNG_CHAN_HELP_ENFORCE_R_DISABLED */ - "Als er voor \037wat\037 MODES wordt ingevuld, zal er niks gebeuren.\n" - "Normaal gesproken wordt er een kanaalmode geforceerd die op deze\n" - "server niet ondersteund wordt. Als +R wordt ingevuld voor \037wat\037\n" - "zullen alle gebruikers die in het kanaal zitten maar zich niet\n" - "hebben geidentificeerd voor hun nick uit het kanaal gekicked en\n" - "verbannen worden.", - /* LNG_CHAN_RESPONSE */ - "Enforced %s" - }; - - /* German (DE) */ - const char *langtable_de[] = { - /* LNG_CHAN_HELP */ - " ENFORCE Erzwingt verschieden Modes und SET Optionen", - /* LNG_ENFORCE_SYNTAX */ - "Syntax: \002ENFORCE \037Channel\037 [\037was\037]\002", - /* LNG_CHAN_HELP_ENFORCE */ - "Erzwingt verschieden Modes und SET Optionen. Die \037Channel\037\n" - "Option zeigt dir den Channel an, indem Modes und Optionen\n" - "zu erzwingen sind. Die \037was\037 Option zeigt dir welche Modes\n" - "und Optionen zu erzwingen sind. Die kцnnen nur SET, SECUREOPS,\n" - "RESTRICTED, MODES oder +R sein.Default ist SET.\n" - " \n" - "Wenn \037was\037 SET ist, wird SECUREOPS und RESTRICTED\n" - "auf die User die z.Z.in Channel sind erzwungen, wenn sie AN sind.\n" - "Benutze SECUREOPS oder RESTRICTED , um die Optionen einzeln\n" - "zu erzwingen, also wenn sie nicht eingeschaltet sind.", - /* LNG_CHAN_HELP_ENFORCE_R_ENABLED */ - "Wenn \037was\037 MODES ist, wird das ChannelMode +R erzwungen\n" - "falls an. Wenn \037was\037 +R ist, wird +R erzwungen aber eben\n" - "wenn noch nicht als Channel-Mode ist. Wenn +R noch nicht als\n" - "Channel-Mode war werden alle User aus den Channel gebannt um\n" - "sicher zu sein das sie nicht rejoinen.", - /* LNG_CHAN_HELP_ENFORCE_R_DISABLED */ - "Wenn \037was\037 MODES ist, wird nichts erzwungen weil es MODES seine\n" - "kцnnen die dein IRCD nicht unterstьtzt. Wenn \037was\037 +R ist\n" - "oder ein Modes was auf ein anderen IRCD gleich +R ist, wird es\n" - "erzwungen. Alle User die nicht fьr deren Nicknamen identifiziert\n" - "sind werden aus den Channel gekickt und gebannt.", - /* LNG_CHAN_RESPONSE */ - "Erzwungen %s" - }; - - /* Portuguese (PT) */ - const char *langtable_pt[] = { - /* LNG_CHAN_HELP */ - " ENFORCE Verifica o cumprimento de vбrios modos de canal e opзхes ajustadas", - /* LNG_ENFORCE_SYNTAX */ - "Sintaxe: \002ENFORCE \037canal\037 [\037opзгo\037]\002", - /* LNG_CHAN_HELP_ENFORCE */ - "Verifica o cumprimento de vбrios modos de canal e opзхes ajustadas.\n" - "O campo \037canal\037 indica qual canal deve ter os modos e opзхes verificadas\n" - "O campo \037opзгo\037 indica quais modos e opзхes devem ser verificadas,\n" - "e pode ser: SET, SECUREOPS, RESTRICTED, MODES ou +R\n" - "Quando deixado em branco, o padrгo й SET.\n" - " \n" - "Se \037opзгo\037 for SET, serгo verificadas as opзхes SECUREOPS e RESTRICTED\n" - "para usuбrios que estiverem no canal, caso elas estejam ativadas. Use\n" - "SECUREOPS para verificar a opзгo SECUREOPS, mesmo que ela nгo esteja ativada\n" - "Use RESTRICTED para verificar a opзгo RESTRICTED, mesmo que ela nгo esteja\n" - "ativada.", - /* LNG_CHAN_HELP_ENFORCE_R_ENABLED */ - "Se \037opзгo\037 for MODES, serб verificado o modo de canal +R caso ele\n" - "esteja ativado. Se +R for especificado para \037opзгo\037, o modo de canal\n" - "+R tambйm serб verificado, mesmo que ele nгo esteja ativado. Se ele nгo\n" - "estiver ativado, os usuбrios serгo banidos para evitar que reentrem no canal.", - /* LNG_CHAN_HELP_ENFORCE_R_DISABLED */ - "Se \037opзгo\037 for MODES, nada serб verificado, visto que isto poderia\n" - "verificar modos que o IRCd atual nгo suporta. Se +R for especificado\n" - "para \037opзгo\037, um equivalente ao modo de canal +R em outros IRCds\n" - "serб verificado. Todos os usuбrios que estгo no canal, mas nгo estejam\n" - "identificados para seus nicks serгo kickados e banidos do canal.", - /* LNG_CHAN_RESPONSE */ - "Verificado %s" - }; - - /* Russian (RU) */ - const char *langtable_ru[] = { - /* LNG_CHAN_HELP */ - " ENFORCE Перепроверка и установка различных режимов и опций канала", - /* LNG_ENFORCE_SYNTAX */ - "Синтаксис: \002ENFORCE \037#канал\037 \037параметр\037\002", - /* LNG_CHAN_HELP_ENFORCE */ - "Перепроверка и установка различных режимов и опций канала.\n" - "\037Параметр\037 указывает какие опции или режимы канала должны быть\n" - "перепроверены. В качестве параметра могут быть указаны: SET, SECUREOPS,\n" - "RESTRICTED, MODES, или +R. Если параметр не указан, по-умолчанию будет SET.\n" - " \n" - "Если в качестве \037параметра\037 указано SET, будут перепроверены опции\n" - "SECUREOPS и RESTRICTED относительно пользователей на указанном канале\n" - "(при условии, что опции включены). Отдельно указанный параметр SECUREOPS\n" - "применит опцию SECUREOPS (даже если она \037НЕ\037 установлена). Параметр\n" - "RESTRICTED применит опцию RESTRICTED (даже если она \037НЕ\037 установлена)", - /* LNG_CHAN_HELP_ENFORCE_R_ENABLED */ - "Если в качестве \037параметра\037 указано MODES, будет перепроверен режим +R\n" - "(если он установлен). Отдельно указанный параметр \037+R\037 применит\n" - "канальный режим +R, даже если он не установлен, и забанит всех пользователей,\n" - "которые не идентифицировались к своему нику или не имеют зарегистрированного ника.", - /* LNG_CHAN_HELP_ENFORCE_R_DISABLED */ - "Если в качестве \037параметра\037 указано MODES, перепроверка осуществлена\n" - "НЕ БУДЕТ, так как текущий IRCD не поддерживает необходимые режимы.\n" - "Отдельно указанный параметр \037+R\037 применит канальный режим, эквивалентный\n" - "режиму +R и забанит всех пользователей, которые не идентифицировались к своему\n" - "нику или не имеют зарегистрированного ника.", - /* LNG_CHAN_RESPONSE */ - "Перепроверено: %s" - }; - - /* Italian (IT) */ - const char *langtable_it[] = { - /* LNG_CHAN_HELP */ - " ENFORCE Forza diversi modi di canale ed opzioni SET", - /* LNG_ENFORCE_SYNTAX */ - "Sintassi: \002ENFORCE \037canale\037 [\037cosa\037]\002", - /* LNG_CHAN_HELP_ENFORCE */ - "Forza diversi modi di canale ed opzioni SET. Il parametro \037canale\037\n" - "indica il canale sul quale forzare i modi e le opzioni. Il parametro\n" - "\037cosa\037 indica i modi e le opzioni da forzare, e possono essere\n" - "qualsiasi delle opzioni SET, SECUREOPS, RESTRICTED, MODES, o +R.\n" - "Se non specificato, viene sottointeso SET.\n" - " \n" - "Se \037cosa\037 и SET, forzerа SECUREOPS e RESTRICTED sugli utenti\n" - "attualmente nel canale, se sono impostati. Specifica SECUREOPS per\n" - "forzare l'opzione SECUREOPS, anche se non и attivata. Specifica\n" - "RESTRICTED per forzare l'opzione RESTRICTED, anche se non и\n" - "attivata.", - /* LNG_CHAN_HELP_ENFORCE_R_ENABLED */ - "Se \037cosa\037 и MODES, forzerа il modo del canale +R se и impostato.\n" - "Se +R и specificato per \037cosa\037, il modo del canale +R verrа\n" - "forzato, anche se non и impostato. Se non и impostato, gli utenti\n" - "verranno bannati per assicurare che non rientrino semplicemente.", - /* LNG_CHAN_HELP_ENFORCE_R_DISABLED */ - "Se \037cosa\037 и MODES, niente verrа forzato, siccome forzerebbe\n" - "dei modi che l'ircd in uso non supporterebbe. Se +R и specificato\n" - "per \037cosa\037, un modo equivalente a +R sui altri ircd verrа\n" - "forzato. Tutti gli utenti presenti nel canale ma non identificati\n" - "per il loro nickname verranno bannati ed espulsi dal canale.\n", - /* LNG_CHAN_RESPONSE */ - "Forzato %s" - }; - - this->InsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us); - this->InsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl); - this->InsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de); - this->InsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt); - this->InsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru); - this->InsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it); } }; diff --git a/modules/extra/cs_set_misc.cpp b/modules/extra/cs_set_misc.cpp index 8b4395043..e72fdec03 100644 --- a/modules/extra/cs_set_misc.cpp +++ b/modules/extra/cs_set_misc.cpp @@ -30,17 +30,17 @@ class CommandCSSetMisc : public Command if (params.size() > 1) { ci->Extend("chanserv:" + this->name, new ExtensibleItemRegular(params[1])); - notice_lang(Config->s_ChanServ, u, CHAN_SETTING_CHANGED, this->name.c_str(), ci->name.c_str(), params[1].c_str()); + u->SendMessage(ChanServ, CHAN_SETTING_CHANGED, this->name.c_str(), ci->name.c_str(), params[1].c_str()); } else - notice_lang(Config->s_ChanServ, u, CHAN_SETTING_UNSET, this->name.c_str(), ci->name.c_str()); + u->SendMessage(ChanServ, CHAN_SETTING_UNSET, this->name.c_str(), ci->name.c_str()); return MOD_CONT; } void OnSyntaxError(User *u, const Anope::string &) { - syntax_error(Config->s_ChanServ, u, "SET", CHAN_SET_SYNTAX); + SyntaxError(ChanServ, u, "SET", CHAN_SET_SYNTAX); } void OnServHelp(User *u) @@ -58,7 +58,7 @@ class CommandCSSASetMisc : public CommandCSSetMisc void OnSyntaxError(User *u, const Anope::string &) { - syntax_error(Config->s_ChanServ, u, "SASET", CHAN_SASET_SYNTAX); + SyntaxError(ChanServ, u, "SASET", CHAN_SASET_SYNTAX); } }; diff --git a/modules/extra/cs_tban.cpp b/modules/extra/cs_tban.cpp index 32bcd4add..444681262 100644 --- a/modules/extra/cs_tban.cpp +++ b/modules/extra/cs_tban.cpp @@ -17,25 +17,39 @@ #include "module.h" -#define AUTHOR "Rob" +static Module *me; -void mySendResponse(User *u, const Anope::string &channel, const Anope::string &mask, const Anope::string &time); - -void addBan(Channel *c, time_t timeout, const Anope::string &banmask); -int canBanUser(Channel *c, User *u, User *u2); +class TempBan : public CallBack +{ + private: + dynamic_reference chan; + Anope::string mask; -void mAddLanguages(); + public: + TempBan(time_t seconds, Channel *c, const Anope::string &banmask) : CallBack(me, seconds), chan(c), mask(banmask) { } -static Module *me = NULL; + void Tick(time_t ctime) + { + if (chan && chan->ci) + chan->RemoveMode(NULL, CMODE_BAN, mask); + } +}; -enum +static bool CanBanUser(Channel *c, User *u, User *u2) { - TBAN_HELP, - TBAN_SYNTAX, - TBAN_HELP_DETAIL, - TBAN_RESPONSE, - LANG_NUM_STRINGS -}; + ChannelInfo *ci = c->ci; + bool ok = false; + if (!check_access(u, ci, CA_BAN)) + u->SendMessage(ChanServ, ACCESS_DENIED); + else if (is_excepted(ci, u2)) + u->SendMessage(ChanServ, CHAN_EXCEPTED, u2->nick.c_str(), ci->name.c_str()); + else if (u2->IsProtected()) + u->SendMessage(ChanServ, ACCESS_DENIED); + else + ok = true; + + return ok; +} class CommandCSTBan : public Command { @@ -55,15 +69,16 @@ class CommandCSTBan : public Command Anope::string time = params[2]; if (!(c = findchan(chan))) - notice_lang(Config->s_ChanServ, u, CHAN_X_NOT_IN_USE, chan.c_str()); + u->SendMessage(ChanServ, CHAN_X_NOT_IN_USE, chan.c_str()); else if (!(u2 = finduser(nick))) - notice_lang(Config->s_ChanServ, u, NICK_X_NOT_IN_USE, nick.c_str()); + u->SendMessage(ChanServ, NICK_X_NOT_IN_USE, nick.c_str()); else - if (canBanUser(c, u, u2)) + if (CanBanUser(c, u, u2)) { get_idealban(c->ci, u2, mask); - addBan(c, dotime(time), mask); - mySendResponse(u, chan, mask, time); + c->SetMode(NULL, CMODE_BAN, mask); + new TempBan(dotime(time), c, mask); + me->SendMessage(ChanServ, u, _("%s banned from %s, will auto-expire in %s"), mask.c_str(), c->name.c_str(), time.c_str()); } return MOD_CONT; @@ -72,20 +87,21 @@ class CommandCSTBan : public Command bool OnHelp(User *u, const Anope::string &subcommand) { this->OnSyntaxError(u, ""); - u->SendMessage(Config->s_ChanServ, " "); - me->NoticeLang(Config->s_ChanServ, u, TBAN_HELP_DETAIL); + me->SendMessage(ChanServ, u, " "); + me->SendMessage(ChanServ, u, _("Bans the given user from a channel for a specified length of\n" + "time. If the ban is removed before by hand, it will NOT be replaced.")); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_ChanServ, u, TBAN_SYNTAX); + me->SendMessage(ChanServ, u, _("Syntax: TBAN channel nick time")); } void OnServHelp(User *u) { - me->NoticeLang(Config->s_ChanServ, u, TBAN_HELP); + me->SendMessage(ChanServ, u, _(" TBAN Bans the user for a given length of time")); } }; @@ -100,112 +116,9 @@ class CSTBan : public Module this->AddCommand(ChanServ, &commandcstban); - this->SetAuthor(AUTHOR); + this->SetAuthor("Anope"); this->SetType(SUPPORTED); - - const char *langtable_en_us[] = { - " TBAN Bans the user for a given length of time", - "Syntax: TBAN channel nick time", - "Bans the given user from a channel for a specified length of\n" - "time. If the ban is removed before by hand, it will NOT be replaced.", - "%s banned from %s, will auto-expire in %s" - }; - - const char *langtable_nl[] = { - " TBAN Verban een gebruiker voor een bepaalde tijd", - "Syntax: TBAN kanaal nick tijd", - "Verbant de gegeven gebruiken van het gegeven kanaal voor de\n" - "gegeven tijdsduur. Als de verbanning eerder wordt verwijderd,\n" - "zal deze NIET worden vervangen.", - "%s verbannen van %s, zal verlopen in %s" - }; - - const char *langtable_de[] = { - " TBAN Bant ein User fьr eine bestimmte Zeit aus ein Channel", - "Syntax: TBAN Channel Nickname Zeit", - "Bant ein User fьr eine bestimmte Zeit aus ein Channel\n" - "Wenn der Ban manuell entfernt wird, wird es NICHT ersetzt.", - "%s gebannt von %s, wird auto-auslaufen in %s" - }; - - const char *langtable_pt[] = { - " TBAN Bane o usuбrio por um determinado perнodo de tempo", - "Sintaxe: TBAN canal nick tempo", - "Bane de um canal o usuбrio especificado por um determinado perнodo de\n" - "tempo. Se o ban for removido manualmente antes do tempo, ele nгo serб recolocado.", - "%s foi banido do %s, irб auto-expirar em %s" - }; - - const char *langtable_ru[] = { - " TBAN Банит пользователя на указанный промежуток времени", - "Синтаксис: TBAN #канал ник время", - "Банит пользователя на указанный промежуток времени в секундах\n" - "Примечание: удаленный вручную (до своего истечения) бан НЕ БУДЕТ\n" - "переустановлен сервисами автоматически!", - "Установленный бан %s на канале %s истечет через %s секунд" - }; - - const char *langtable_it[] = { - " TBAN Banna l'utente per un periodo di tempo specificato", - "Sintassi: TBAN canale nick tempo", - "Banna l'utente specificato da un canale per un periodo di tempo\n" - "specificato. Se il ban viene rimosso a mano prima della scadenza, NON verrа rimpiazzato.", - "%s bannato da %s, scadrа automaticamente tra %s" - }; - - this->InsertLanguage(LANG_EN_US, LANG_NUM_STRINGS, langtable_en_us); - this->InsertLanguage(LANG_NL, LANG_NUM_STRINGS, langtable_nl); - this->InsertLanguage(LANG_DE, LANG_NUM_STRINGS, langtable_de); - this->InsertLanguage(LANG_PT, LANG_NUM_STRINGS, langtable_pt); - this->InsertLanguage(LANG_RU, LANG_NUM_STRINGS, langtable_ru); - this->InsertLanguage(LANG_IT, LANG_NUM_STRINGS, langtable_it); } }; -void mySendResponse(User *u, const Anope::string &channel, const Anope::string &mask, const Anope::string &time) -{ - me->NoticeLang(Config->s_ChanServ, u, TBAN_RESPONSE, mask.c_str(), channel.c_str(), time.c_str()); -} - -class TempBan : public CallBack -{ - private: - Anope::string chan; - Anope::string mask; - - public: - TempBan(time_t seconds, const Anope::string &channel, const Anope::string &banmask) : CallBack(me, seconds), chan(channel), mask(banmask) { } - - void Tick(time_t ctime) - { - Channel *c; - - if ((c = findchan(chan)) && c->ci) - c->RemoveMode(NULL, CMODE_BAN, mask); - } -}; - -void addBan(Channel *c, time_t timeout, const Anope::string &banmask) -{ - c->SetMode(NULL, CMODE_BAN, banmask); - - new TempBan(timeout, c->name, banmask); -} - -int canBanUser(Channel *c, User *u, User *u2) -{ - ChannelInfo *ci = c->ci; - int ok = 0; - if (!check_access(u, ci, CA_BAN)) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); - else if (is_excepted(ci, u2)) - notice_lang(Config->s_ChanServ, u, CHAN_EXCEPTED, u2->nick.c_str(), ci->name.c_str()); - else if (u2->IsProtected()) - notice_lang(Config->s_ChanServ, u, ACCESS_DENIED); - else - ok = 1; - - return ok; -} - MODULE_INIT(CSTBan) diff --git a/modules/extra/db_mysql.cpp b/modules/extra/db_mysql.cpp index eb55a3952..b15ce4de4 100644 --- a/modules/extra/db_mysql.cpp +++ b/modules/extra/db_mysql.cpp @@ -291,13 +291,13 @@ class CommandSQLSync : public Command bool OnHelp(User *u, const Anope::string &subcommand) { - notice_help(Config->s_OperServ, u, OPER_HELP_SYNC); + u->SendMessage(OperServ, OPER_HELP_SYNC); return true; } void OnServHelp(User *u) { - notice_lang(Config->s_OperServ, u, OPER_HELP_CMD_SQLSYNC); + u->SendMessage(OperServ, OPER_HELP_CMD_SQLSYNC); } }; @@ -429,7 +429,7 @@ class DBMySQL : public Module } } - nc->language = r.Get(i, "language").is_number_only() ? convertTo(r.Get(i, "language")) : LANG_EN_US; + nc->language = r.Get(i, "language"); nc->channelcount = r.Get(i, "channelcount").is_number_only() ? convertTo(r.Get(i, "channelcount")) : 0; nc->memos.memomax = r.Get(i, "memomax").is_number_only() ? convertTo(r.Get(i, "memomax")) : 20; } @@ -1533,7 +1533,7 @@ static void SaveDatabases() CommandReturn CommandSQLSync::Execute(User *u, const std::vector ¶ms) { SaveDatabases(); - notice_lang(Config->s_OperServ, u, OPER_SYNC_UPDATED); + u->SendMessage(OperServ, OPER_SYNC_UPDATED); return MOD_CONT; } diff --git a/modules/extra/hs_request.cpp b/modules/extra/hs_request.cpp index edca02ade..9ae097d27 100644 --- a/modules/extra/hs_request.cpp +++ b/modules/extra/hs_request.cpp @@ -1,5 +1,5 @@ /* hs_request.c - Add request and activate functionality to HostServ, - * along with adding +req as optional param to HostServ list. + * * * (C) 2003-2010 Anope Team * Contact us at team@anope.org @@ -17,48 +17,12 @@ #include "module.h" -#define AUTHOR "Rob" - -/* Configuration variables */ -int HSRequestMemoUser = 0; -int HSRequestMemoOper = 0; -int HSRequestMemoSetters = 0; - -/* Language defines */ -enum -{ - LNG_REQUEST_SYNTAX, - LNG_REQUESTED, - LNG_REQUEST_WAIT, - LNG_REQUEST_MEMO, - LNG_ACTIVATE_SYNTAX, - LNG_ACTIVATED, - LNG_ACTIVATE_MEMO, - LNG_REJECT_SYNTAX, - LNG_REJECTED, - LNG_REJECT_MEMO, - LNG_REJECT_MEMO_REASON, - LNG_NO_REQUEST, - LNG_HELP, - LNG_HELP_SETTER, - LNG_HELP_REQUEST, - LNG_HELP_ACTIVATE, - LNG_HELP_ACTIVATE_MEMO, - LNG_HELP_REJECT, - LNG_HELP_REJECT_MEMO, - LNG_WAITING_SYNTAX, - LNG_HELP_WAITING, - LNG_NUM_STRINGS -}; +static bool HSRequestMemoUser = false; +static bool HSRequestMemoOper = false; void my_add_host_request(const Anope::string &nick, const Anope::string &vIdent, const Anope::string &vhost, const Anope::string &creator, time_t tmp_time); -int my_isvalidchar(char c); -void my_memo_lang(User *u, const Anope::string &name, int z, int number, ...); void req_send_memos(User *u, const Anope::string &vIdent, const Anope::string &vHost); -void my_load_config(); -void my_add_languages(); - struct HostRequest { Anope::string ident; @@ -73,6 +37,13 @@ static Module *me; class CommandHSRequest : public Command { + bool isvalidchar(char c) + { + if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '.' || c == '-') + return true; + return false; + } + public: CommandHSRequest() : Command("REQUEST", 1, 1) { @@ -91,24 +62,24 @@ class CommandHSRequest : public Command rawhostmask = myStrGetTokenRemainder(rawhostmask, '@', 1); /* get the remaining string */ if (rawhostmask.empty()) { - me->NoticeLang(Config->s_HostServ, u, LNG_REQUEST_SYNTAX); + me->SendMessage(HostServ, u, _("Syntax: \002REQUEST \037vhost\037\002")); return MOD_CONT; } if (vIdent.length() > Config->UserLen) { - notice_lang(Config->s_HostServ, u, HOST_SET_IDENTTOOLONG, Config->UserLen); + u->SendMessage(HostServ, HOST_SET_IDENTTOOLONG, Config->UserLen); return MOD_CONT; } else for (Anope::string::iterator s = vIdent.begin(), s_end = vIdent.end(); s != s_end; ++s) - if (!my_isvalidchar(*s)) + if (!isvalidchar(*s)) { - notice_lang(Config->s_HostServ, u, HOST_SET_IDENT_ERROR); + u->SendMessage(HostServ, HOST_SET_IDENT_ERROR); return MOD_CONT; } if (!ircd->vident) { - notice_lang(Config->s_HostServ, u, HOST_NO_VIDENT); + u->SendMessage(HostServ, HOST_NO_VIDENT); return MOD_CONT; } } @@ -116,53 +87,54 @@ class CommandHSRequest : public Command hostmask = rawhostmask; else { - notice_lang(Config->s_HostServ, u, HOST_SET_TOOLONG, Config->HostLen); + u->SendMessage(HostServ, HOST_SET_TOOLONG, Config->HostLen); return MOD_CONT; } if (!isValidHost(hostmask, 3)) { - notice_lang(Config->s_HostServ, u, HOST_SET_ERROR); + u->SendMessage(HostServ, HOST_SET_ERROR); return MOD_CONT; } if ((na = findnick(nick))) { - if ((HSRequestMemoOper || HSRequestMemoSetters) && Config->MSSendDelay > 0 && u && u->lastmemosend + Config->MSSendDelay > Anope::CurTime) + if (HSRequestMemoOper && Config->MSSendDelay > 0 && u && u->lastmemosend + Config->MSSendDelay > Anope::CurTime) { - me->NoticeLang(Config->s_HostServ, u, LNG_REQUEST_WAIT, Config->MSSendDelay); + me->SendMessage(HostServ, u, _("Please wait %d seconds before requesting a new vHost"), Config->MSSendDelay); u->lastmemosend = Anope::CurTime; return MOD_CONT; } my_add_host_request(nick, vIdent, hostmask, u->nick, Anope::CurTime); - me->NoticeLang(Config->s_HostServ, u, LNG_REQUESTED); + me->SendMessage(HostServ, u, _("Your vHost has been requested")); req_send_memos(u, vIdent, hostmask); Log(LOG_COMMAND, u, this, NULL) << "to request new vhost " << (!vIdent.empty() ? vIdent + "@" : "") << hostmask; } else - notice_lang(Config->s_HostServ, u, HOST_NOREG, nick.c_str()); + u->SendMessage(HostServ, HOST_NOREG, nick.c_str()); return MOD_CONT; } bool OnHelp(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_HostServ, u, LNG_REQUEST_SYNTAX); - u->SendMessage(Config->s_HostServ, " "); - me->NoticeLang(Config->s_HostServ, u, LNG_HELP_REQUEST); - + me->SendMessage(HostServ, u, _("Syntax: \002REQUEST \037vhost\037\002")); + me->SendMessage(HostServ, u, " "); + me->SendMessage(HostServ, u, _("Request the given vHost to be actived for your nick by the\n" + "network administrators. Please be patient while your request\n" + "is being considered.")); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_HostServ, u, LNG_REQUEST_SYNTAX); + me->SendMessage(HostServ, u, _("Syntax: \002REQUEST \037vhost\037\002")); } void OnServHelp(User *u) { - me->NoticeLang(Config->s_HostServ, u, LNG_HELP); + me->SendMessage(HostServ, u, _(" REQUEST Request a vHost for your nick")); } }; @@ -186,41 +158,43 @@ class CommandHSActivate : public Command na->hostinfo.SetVhost(it->second->ident, it->second->host, u->nick, it->second->time); if (HSRequestMemoUser) - my_memo_lang(u, na->nick, 2, LNG_ACTIVATE_MEMO); + memo_send(u, na->nick, _("[auto memo] Your requested vHost has been approved."), 2); - me->NoticeLang(Config->s_HostServ, u, LNG_ACTIVATED, na->nick.c_str()); + me->SendMessage(HostServ, u, _("vHost for %s has been activated"), na->nick.c_str()); Log(LOG_COMMAND, u, this, NULL) << "for " << na->nick << " for vhost " << (!it->second->ident.empty() ? it->second->ident + "@" : "") << it->second->host; delete it->second; Requests.erase(it); } else - me->NoticeLang(Config->s_HostServ, u, LNG_NO_REQUEST, nick.c_str()); + me->SendMessage(HostServ, u, _("No request for nick %s found."), nick.c_str()); } else - notice_lang(Config->s_HostServ, u, NICK_X_NOT_REGISTERED, nick.c_str()); + u->SendMessage(HostServ, NICK_X_NOT_REGISTERED, nick.c_str()); return MOD_CONT; } bool OnHelp(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_HostServ, u, LNG_ACTIVATE_SYNTAX); - u->SendMessage(Config->s_HostServ, " "); - me->NoticeLang(Config->s_HostServ, u, LNG_HELP_ACTIVATE); + me->SendMessage(HostServ, u, _("Syntax: \002ACTIVATE \037nick\037\002")); + me->SendMessage(HostServ, u, " "); + me->SendMessage(HostServ, u, _("Activate the requested vHost for the given nick.")); if (HSRequestMemoUser) - me->NoticeLang(Config->s_HostServ, u, LNG_HELP_ACTIVATE_MEMO); + me->SendMessage(HostServ, u, _("A memo informing the user will also be sent.")); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_HostServ, u, LNG_ACTIVATE_SYNTAX); + me->SendMessage(HostServ, u, _("Syntax: \002ACTIVATE \037nick\037\002")); } void OnServHelp(User *u) { - me->NoticeLang(Config->s_HostServ, u, LNG_HELP_SETTER); + me->SendMessage(HostServ, u, _(" ACTIVATE Approve the requested vHost of a user\n" + " REJECT Reject the requested vHost of a user\n" + " WAITING Convenience command for LIST +req")); } }; @@ -244,35 +218,38 @@ class CommandHSReject : public Command if (HSRequestMemoUser) { + char message[BUFSIZE]; if (!reason.empty()) - my_memo_lang(u, nick, 2, LNG_REJECT_MEMO_REASON, reason.c_str()); + snprintf(message, sizeof(message), _("[auto memo] Your requested vHost has been rejected. Reason: %s"), reason.c_str()); else - my_memo_lang(u, nick, 2, LNG_REJECT_MEMO); + snprintf(message, sizeof(message), _("[auto memo] Your requested vHost has been rejected.")); + + memo_send(u, nick, message, 2); } - me->NoticeLang(Config->s_HostServ, u, LNG_REJECTED, nick.c_str()); + me->SendMessage(HostServ, u, _("vHost for %s has been rejected"), nick.c_str()); Log(LOG_COMMAND, u, this, NULL) << "to reject vhost for " << nick << " (" << (!reason.empty() ? reason : "") << ")"; } else - me->NoticeLang(Config->s_HostServ, u, LNG_NO_REQUEST, nick.c_str()); + me->SendMessage(HostServ, u, _("No request for nick %s found."), nick.c_str()); return MOD_CONT; } bool OnHelp(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_HostServ, u, LNG_REJECT_SYNTAX); - u->SendMessage(Config->s_HostServ, " "); - me->NoticeLang(Config->s_HostServ, u, LNG_HELP_REJECT); + me->SendMessage(HostServ, u, _("Syntax: \002REJECT \037nick\037\002")); + me->SendMessage(HostServ, u, " "); + me->SendMessage(HostServ, u, _("Reject the requested vHost for the given nick.")); if (HSRequestMemoUser) - me->NoticeLang(Config->s_HostServ, u, LNG_HELP_REJECT_MEMO); + me->SendMessage(HostServ, u, _("A memo informing the user will also be sent.")); return true; } void OnSyntaxError(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_HostServ, u, LNG_REJECT_SYNTAX); + me->SendMessage(HostServ, u, _("Syntax: \002REJECT \037nick\037\002")); } }; @@ -281,11 +258,9 @@ class HSListBase : public Command protected: CommandReturn DoList(User *u) { - char buf[BUFSIZE]; int counter = 1; int from = 0, to = 0; unsigned display_counter = 0; - tm *tm; for (RequestMap::iterator it = Requests.begin(), it_end = Requests.end(); it != it_end; ++it) { @@ -293,16 +268,14 @@ class HSListBase : public Command if (((counter >= from && counter <= to) || (!from && !to)) && display_counter < Config->NSListMax) { ++display_counter; - tm = localtime(&hr->time); - strftime(buf, sizeof(buf), getstring(u, STRFTIME_DATE_TIME_FORMAT), tm); if (!hr->ident.empty()) - notice_lang(Config->s_HostServ, u, HOST_IDENT_ENTRY, counter, it->first.c_str(), hr->ident.c_str(), hr->host.c_str(), it->first.c_str(), buf); + u->SendMessage(HostServ, HOST_IDENT_ENTRY, counter, it->first.c_str(), hr->ident.c_str(), hr->host.c_str(), it->first.c_str(), do_strftime(hr->time).c_str()); else - notice_lang(Config->s_HostServ, u, HOST_ENTRY, counter, it->first.c_str(), hr->host.c_str(), it->first.c_str(), buf); + u->SendMessage(HostServ, HOST_ENTRY, counter, it->first.c_str(), hr->host.c_str(), it->first.c_str(), do_strftime(hr->time).c_str()); } ++counter; } - notice_lang(Config->s_HostServ, u, HOST_LIST_FOOTER, display_counter); + u->SendMessage(HostServ, HOST_LIST_FOOTER, display_counter); return MOD_CONT; } @@ -331,9 +304,10 @@ class CommandHSWaiting : public HSListBase bool OnHelp(User *u, const Anope::string &subcommand) { - me->NoticeLang(Config->s_HostServ, u, LNG_WAITING_SYNTAX); - u->SendMessage(Config->s_HostServ, " "); - me->NoticeLang(Config->s_HostServ, u, LNG_HELP_WAITING); + me->SendMessage(HostServ, u, _("Syntax: \002WAITING\002")); + me->SendMessage(HostServ, u, " "); + me->SendMessage(HostServ, u, _("This command is provided for convenience. It is essentially\n" + "the same as performing a LIST +req .")); return true; } @@ -356,269 +330,13 @@ class HSRequest : public Module this->AddCommand(HostServ, &commandhsreject); this->AddCommand(HostServ, &commandhswaiting); - this->SetAuthor(AUTHOR); + this->SetAuthor("Anope"); this->SetType(SUPPORTED); - my_load_config(); - - const char *langtable_en_us[] = { - /* LNG_REQUEST_SYNTAX */ - "Syntax: \002REQUEST \037vhost\037\002", - /* LNG_REQUESTED */ - "Your vHost has been requested", - /* LNG_REQUEST_WAIT */ - "Please wait %d seconds before requesting a new vHost", - /* LNG_REQUEST_MEMO */ - "[auto memo] vHost \002%s\002 has been requested.", - /* LNG_ACTIVATE_SYNTAX */ - "Syntax: \002ACTIVATE \037nick\037\002", - /* LNG_ACTIVATED */ - "vHost for %s has been activated", - /* LNG_ACTIVATE_MEMO */ - "[auto memo] Your requested vHost has been approved.", - /* LNG_REJECT_SYNTAX */ - "Syntax: \002REJECT \037nick\037\002", - /* LNG_REJECTED */ - "vHost for %s has been rejected", - /* LNG_REJECT_MEMO */ - "[auto memo] Your requested vHost has been rejected.", - /* LNG_REJECT_MEMO_REASON */ - "[auto memo] Your requested vHost has been rejected. Reason: %s", - /* LNG_NO_REQUEST */ - "No request for nick %s found.", - /* LNG_HELP */ - " REQUEST Request a vHost for your nick", - /* LNG_HELP_SETTER */ - " ACTIVATE Approve the requested vHost of a user\n" - " REJECT Reject the requested vHost of a user\n" - " WAITING Convenience command for LIST +req", - /* LNG_HELP_REQUEST */ - "Request the given vHost to be actived for your nick by the\n" - "network administrators. Please be patient while your request\n" - "is being considered.", - /* LNG_HELP_ACTIVATE */ - "Activate the requested vHost for the given nick.", - /* LNG_HELP_ACTIVATE_MEMO */ - "A memo informing the user will also be sent.", - /* LNG_HELP_REJECT */ - "Reject the requested vHost for the given nick.", - /* LNG_HELP_REJECT_MEMO */ - "A memo informing the user will also be sent.", - /* LNG_WAITING_SYNTAX */ - "Syntax: \002WAITING\002", - /* LNG_HELP_WAITING */ - "This command is provided for convenience. It is essentially\n" - "the same as performing a LIST +req ." - }; - - const char *langtable_nl[] = { - /* LNG_REQUEST_SYNTAX */ - "Gebruik: \002REQUEST \037vhost\037\002", - /* LNG_REQUESTED */ - "Je vHost is aangevraagd", - /* LNG_REQUEST_WAIT */ - "Wacht %d seconden voor je een nieuwe vHost aanvraagt", - /* LNG_REQUEST_MEMO */ - "[auto memo] vHost \002%s\002 is aangevraagd.", - /* LNG_ACTIVATE_SYNTAX */ - "Gebruik: \002ACTIVATE \037nick\037\002", - /* LNG_ACTIVATED */ - "vHost voor %s is geactiveerd", - /* LNG_ACTIVATE_MEMO */ - "[auto memo] Je aangevraagde vHost is geaccepteerd.", - /* LNG_REJECT_SYNTAX */ - "Gebruik: \002REJECT \037nick\037\002", - /* LNG_REJECTED */ - "vHost voor %s is afgekeurd", - /* LNG_REJECT_MEMO */ - "[auto memo] Je aangevraagde vHost is afgekeurd.", - /* LNG_REJECT_MEMO_REASON */ - "[auto memo] Je aangevraagde vHost is afgekeurd. Reden: %s", - /* LNG_NO_REQUEST */ - "Geen aanvraag voor nick %s gevonden.", - /* LNG_HELP */ - " REQUEST Vraag een vHost aan voor je nick", - /* LNG_HELP_SETTER */ - " ACTIVATE Activeer de aangevraagde vHost voor een gebruiker\n" - " REJECT Keur de aangevraagde vHost voor een gebruiker af\n" - " WAITING Snelkoppeling naar LIST +req", - /* LNG_HELP_REQUEST */ - "Verzoek de gegeven vHost te activeren voor jouw nick bij de\n" - "netwerk beheerders. Het kan even duren voordat je aanvraag\n" - "afgehandeld wordt.", - /* LNG_HELP_ACTIVATE */ - "Activeer de aangevraagde vHost voor de gegeven nick.", - /* LNG_HELP_ACTIVATE_MEMO */ - "Een memo die de gebruiker op de hoogste stelt zal ook worden verstuurd.", - /* LNG_HELP_REJECT */ - "Keur de aangevraagde vHost voor de gegeven nick af.", - /* LNG_HELP_REJECT_MEMO */ - "Een memo die de gebruiker op de hoogste stelt zal ook worden verstuurd.", - /* LNG_WAITING_SYNTAX */ - "Gebruik: \002WAITING\002", - /* LNG_HELP_WAITING */ - "Dit commando is beschikbaar als handigheid. Het is simpelweg\n" - "hetzelfde als LIST +req ." - }; - - const char *langtable_pt[] = { - /* LNG_REQUEST_SYNTAX */ - "Sintaxe: \002REQUEST \037vhost\037\002", - /* LNG_REQUESTED */ - "Seu pedido de vHost foi encaminhado", - /* LNG_REQUEST_WAIT */ - "Por favor, espere %d segundos antes de fazer um novo pedido de vHost", - /* LNG_REQUEST_MEMO */ - "[Auto Memo] O vHost \002%s\002 foi solicitado.", - /* LNG_ACTIVATE_SYNTAX */ - "Sintaxe: \002ACTIVATE \037nick\037\002", - /* LNG_ACTIVATED */ - "O vHost para %s foi ativado", - /* LNG_ACTIVATE_MEMO */ - "[Auto Memo] Seu pedido de vHost foi aprovado.", - /* LNG_REJECT_SYNTAX */ - "Sintaxe: \002REJECT \037nick\037\002", - /* LNG_REJECTED */ - "O vHost de %s foi recusado", - /* LNG_REJECT_MEMO */ - "[Auto Memo] Seu pedido de vHost foi recusado.", - /* LNG_REJECT_MEMO_REASON */ - "[Auto Memo] Seu pedido de vHost foi recusado. Motivo: %s", - /* LNG_NO_REQUEST */ - "Nenhum pedido encontrado para o nick %s.", - /* LNG_HELP */ - " REQUEST Request a vHost for your nick", - /* LNG_HELP_SETTER */ - " ACTIVATE Aprova o pedido de vHost de um usuбrio\n" - " REJECT Recusa o pedido de vHost de um usuбrio\n" - " WAITING Comando para LISTAR +req", - /* LNG_HELP_REQUEST */ - "Solicita a ativaзгo do vHost fornecido em seu nick pelos\n" - "administradores da rede. Por favor, tenha paciкncia\n" - "enquanto seu pedido й analisado.", - /* LNG_HELP_ACTIVATE */ - "Ativa o vHost solicitado para o nick fornecido.", - /* LNG_HELP_ACTIVATE_MEMO */ - "Um memo informando o usuбrio tambйm serб enviado.", - /* LNG_HELP_REJECT */ - "Recusa o pedido de vHost para o nick fornecido.", - /* LNG_HELP_REJECT_MEMO */ - "Um memo informando o usuбrio tambйm serб enviado.", - /* LNG_WAITING_SYNTAX */ - "Sintaxe: \002WAITING\002", - /* LNG_HELP_WAITING */ - "Este comando й usado por conveniкncia. Й essencialmente\n" - "o mesmo que fazer um LIST +req" - }; - - const char *langtable_ru[] = { - /* LNG_REQUEST_SYNTAX */ - "Синтаксис: \002REQUEST \037vHost\037\002", - /* LNG_REQUESTED */ - "Ваш запрос на vHost отправлен.", - /* LNG_REQUEST_WAIT */ - "Пожалуйста, подождите %d секунд, прежде чем запрашивать новый vHost", - /* LNG_REQUEST_MEMO */ - "[авто-сообщение] Был запрошен vHost \002%s\002", - /* LNG_ACTIVATE_SYNTAX */ - "Синтаксис: \002ACTIVATE \037ник\037\002", - /* LNG_ACTIVATED */ - "vHost для %s успешно активирован", - /* LNG_ACTIVATE_MEMO */ - "[авто-сообщение] Запрашиваемый вами vHost утвержден и активирован.", - /* LNG_REJECT_SYNTAX */ - "Синтаксис: \002REJECT \037ник\037\002", - /* LNG_REJECTED */ - "vHost для %s отклонен.", - /* LNG_REJECT_MEMO */ - "[авто-сообщение] Запрашиваемый вами vHost отклонен.", - /* LNG_REJECT_MEMO_REASON */ - "[авто-сообщение] Запрашиваемый вами vHost отклонен. Причина: %s", - /* LNG_NO_REQUEST */ - "Запрос на vHost для ника %s не найден.", - /* LNG_HELP */ - " REQUEST Запрос на vHost для вашего текущего ника", - /* LNG_HELP_SETTER */ - " ACTIVATE Утвердить запрашиваемый пользователем vHost\n" - " REJECT Отклонить запрашиваемый пользователем vHost\n" - " WAITING Список запросов ожидающих обработки (аналог LIST +req)", - /* LNG_HELP_REQUEST */ - "Отправляет запрос на активацию vHost, который будет рассмотрен одним из\n" - "администраторов сети. Просьба проявить терпение, пока запрос\n" - "рассматривается администрацией.", - /* LNG_HELP_ACTIVATE */ - "Утвердить запрашиваемый vHost для указанного ника.", - /* LNG_HELP_ACTIVATE_MEMO */ - "Пользователю будет послано авто-уведомление об активации его запроса.", - /* LNG_HELP_REJECT */ - "Отклонить запрашиваемый vHost для указанного ника.", - /* LNG_HELP_REJECT_MEMO */ - "Пользователю будет послано авто-уведомление об отклонении его запроса.", - /* LNG_WAITING_SYNTAX */ - "Синтаксис: \002WAITING\002", - /* LNG_HELP_WAITING */ - "Данная команда создана для удобства использования и выводит список запросов,\n" - "ожидающих обработки. Аналогичная команда: LIST +req ." - }; - - const char *langtable_it[] = { - /* LNG_REQUEST_SYNTAX */ - "Sintassi: \002REQUEST \037vhost\037\002", - /* LNG_REQUESTED */ - "Il tuo vHost и stato richiesto", - /* LNG_REQUEST_WAIT */ - "Prego attendere %d secondi prima di richiedere un nuovo vHost", - /* LNG_REQUEST_MEMO */ - "[auto memo] и stato richiesto il vHost \002%s\002.", - /* LNG_ACTIVATE_SYNTAX */ - "Sintassi: \002ACTIVATE \037nick\037\002", - /* LNG_ACTIVATED */ - "Il vHost per %s и stato attivato", - /* LNG_ACTIVATE_MEMO */ - "[auto memo] Il vHost da te richiesto и stato approvato.", - /* LNG_REJECT_SYNTAX */ - "Sintassi: \002REJECT \037nick\037\002", - /* LNG_REJECTED */ - "Il vHost per %s и stato rifiutato", - /* LNG_REJECT_MEMO */ - "[auto memo] Il vHost da te richiesto и stato rifiutato.", - /* LNG_REJECT_MEMO_REASON */ - "[auto memo] Il vHost da te richiesto и stato rifiutato. Motivo: %s", - /* LNG_NO_REQUEST */ - "Nessuna richiesta trovata per il nick %s.", - /* LNG_HELP */ - " REQUEST Richiede un vHost per il tuo nick", - /* LNG_HELP_SETTER */ - " ACTIVATE Approva il vHost richiesto di un utente\n" - " REJECT Rifiuta il vHost richiesto di un utente\n" - " WAITING Comando per LIST +req", - /* LNG_HELP_REQUEST */ - "Richiede l'attivazione del vHost specificato per il tuo nick da parte\n" - "degli amministratori di rete. Sei pregato di pazientare finchи la tua\n" - "richiesta viene elaborata.", - /* LNG_HELP_ACTIVATE */ - "Attiva il vHost richiesto per il nick specificato.", - /* LNG_HELP_ACTIVATE_MEMO */ - "Viene inviato un memo per informare l'utente.", - /* LNG_HELP_REJECT */ - "Rifiuta il vHost richiesto per il nick specificato.", - /* LNG_HELP_REJECT_MEMO */ - "Viene inviato un memo per informare l'utente.", - /* LNG_WAITING_SYNTAX */ - "Sintassi: \002WAITING\002", - /* LNG_HELP_WAITING */ - "Questo comando и per comoditа. Praticamente и la stessa cosa che\n" - "eseguire un LIST +req ." - }; - - this->InsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us); - this->InsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl); - this->InsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt); - this->InsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru); - this->InsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it); - - Implementation i[] = { I_OnPreCommand, I_OnDatabaseRead, I_OnDatabaseWrite }; - ModuleManager::Attach(i, this, 3); + this->OnReload(false); + + Implementation i[] = { I_OnPreCommand, I_OnDatabaseRead, I_OnDatabaseWrite, I_OnReload }; + ModuleManager::Attach(i, this, 4); } ~HSRequest() @@ -693,51 +411,16 @@ class HSRequest : public Module Write(buf.str()); } } -}; -void my_memo_lang(User *u, const Anope::string &name, int z, int number, ...) -{ - va_list va; - char buffer[4096], outbuf[4096]; - char *fmt = NULL; - int lang = LANG_EN_US; - char *s, *t, *buf; - User *u2; - - u2 = finduser(name); - /* Find the users lang, and use it if we cant */ - if (u2 && u2->Account()) - lang = u2->Account()->language; - - /* If the users lang isnt supported, drop back to enlgish */ - if (!me->lang[lang].argc) - lang = LANG_EN_US; - - /* If the requested lang string exists for the language */ - if (me->lang[lang].argc > number) + void OnReload(bool) { - fmt = me->lang[lang].argv[number]; + ConfigReader config; + HSRequestMemoUser = config.ReadFlag("hs_request", "memouser", "no", 0); + HSRequestMemoOper = config.ReadFlag("hs_request", "memooper", "no", 0); - buf = strdup(fmt); // XXX - s = buf; - while (*s) - { - t = s; - s += strcspn(s, "\n"); - if (*s) - *s++ = '\0'; - strscpy(outbuf, t, sizeof(outbuf)); - - va_start(va, number); - vsnprintf(buffer, 4095, outbuf, va); - va_end(va); - memo_send(u, name, buffer, z); - } - free(buf); // XXX + Log(LOG_DEBUG) << "[hs_request] Set config vars: MemoUser=" << HSRequestMemoUser << " MemoOper=" << HSRequestMemoOper; } - else - Log() << me->name << ": INVALID language string call, language: [" << lang << "], String [" << number << "]"; -} +}; void req_send_memos(User *u, const Anope::string &vIdent, const Anope::string &vHost) { @@ -753,14 +436,10 @@ void req_send_memos(User *u, const Anope::string &vIdent, const Anope::string &v for (it = Config->Opers.begin(), it_end = Config->Opers.end(); it != it_end; ++it) { Anope::string nick = it->first; - my_memo_lang(u, nick, 2, LNG_REQUEST_MEMO, host.c_str()); + char message[BUFSIZE]; + snprintf(message, sizeof(message), _("[auto memo] vHost \002%s\002 has been requested."), host.c_str()); + memo_send(u, nick, message, 2); } - if (HSRequestMemoSetters == 1) - { - /* Needs to be rethought because of removal of HostSetters in favor of opertype priv -- CyberBotX - for (i = 0; i < HostNumber; ++i) - my_memo_lang(u, HostSetters[i], z, LNG_REQUEST_MEMO, host);*/ - } } void my_add_host_request(const Anope::string &nick, const Anope::string &vIdent, const Anope::string &vhost, const Anope::string &creator, time_t tmp_time) @@ -778,22 +457,13 @@ void my_add_host_request(const Anope::string &nick, const Anope::string &vIdent, Requests.insert(std::make_pair(nick, hr)); } -int my_isvalidchar(char c) -{ - if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '.' || c == '-') - return 1; - else - return 0; -} - void my_load_config() { ConfigReader config; HSRequestMemoUser = config.ReadFlag("hs_request", "memouser", "no", 0); HSRequestMemoOper = config.ReadFlag("hs_request", "memooper", "no", 0); - HSRequestMemoSetters = config.ReadFlag("hs_request", "memosetters", "no", 0); - Log(LOG_DEBUG) << "[hs_request] Set config vars: MemoUser=" << HSRequestMemoUser << " MemoOper=" << HSRequestMemoOper << " MemoSetters=" << HSRequestMemoSetters; + Log(LOG_DEBUG) << "[hs_request] Set config vars: MemoUser=" << HSRequestMemoUser << " MemoOper=" << HSRequestMemoOper; } MODULE_INIT(HSRequest) diff --git a/modules/extra/ns_maxemail.cpp b/modules/extra/ns_maxemail.cpp index 26ee9a96d..9be204d29 100644 --- a/modules/extra/ns_maxemail.cpp +++ b/modules/extra/ns_maxemail.cpp @@ -15,91 +15,61 @@ #include "module.h" -#define AUTHOR "Anope" +class NSMaxEmail : public Module +{ + int NSEmailMax; -void my_load_config(); -void my_add_languages(); -bool check_email_limit_reached(const Anope::string &email, User *u); + bool CheckLimitReached(const Anope::string &email, User *u) + { + if (this->NSEmailMax < 1 || email.empty()) + return false; -int NSEmailMax = 0; + if (this->CountEmail(email, u) < this->NSEmailMax) + return false; -enum -{ - LNG_NSEMAILMAX_REACHED, - LNG_NSEMAILMAX_REACHED_ONE, - LNG_NUM_STRINGS -}; + if (this->NSEmailMax == 1) + this->SendMessage(NickServ, u, _("The given email address has reached it's usage limit of 1 user.")); + else + this->SendMessage(NickServ, u, _("The given email address has reached it's usage limit of %d users."), this->NSEmailMax); -static Module *me; + return true; + } + + int CountEmail(const Anope::string &email, User *u) + { + int count = 0; + + if (email.empty()) + return 0; + + for (nickcore_map::const_iterator it = NickCoreList.begin(), it_end = NickCoreList.end(); it != it_end; ++it) + { + NickCore *nc = it->second; + + if (!(u->Account() && u->Account() == nc) && !nc->email.empty() && nc->email.equals_ci(email)) + ++count; + } + + return count; + } -class NSMaxEmail : public Module -{ public: NSMaxEmail(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator) { - me = this; - - this->SetAuthor(AUTHOR); + this->SetAuthor("Anope"); this->SetType(SUPPORTED); ModuleManager::Attach(I_OnReload, this); ModuleManager::Attach(I_OnPreCommand, this); - my_load_config(); - - const char *langtable_en_us[] = { - /* LNG_NSEMAILMAX_REACHED */ - "The given email address has reached it's usage limit of %d users.", - /* LNG_NSEMAILMAX_REACHED_ONE */ - "The given email address has reached it's usage limit of 1 user." - }; - - const char *langtable_nl[] = { - /* LNG_NSEMAILMAX_REACHED */ - "Het gegeven email adres heeft de limiet van %d gebruikers bereikt.", - /* LNG_NSEMAILMAX_REACHED_ONE */ - "Het gegeven email adres heeft de limiet van 1 gebruiker bereikt." - }; - - const char *langtable_de[] = { - /* LNG_NSEMAILMAX_REACHED */ - "Die angegebene eMail hat die limit Begrenzung von %d User erreicht.", - /* LNG_NSEMAILMAX_REACHED_ONE */ - "Die angegebene eMail hat die limit Begrenzung von 1 User erreicht." - }; - - const char *langtable_pt[] = { - /* LNG_NSEMAILMAX_REACHED */ - "O endereзo de email fornecido alcanзou seu limite de uso de %d usuбrios.", - /* LNG_NSEMAILMAX_REACHED_ONE */ - "O endereзo de email fornecido alcanзou seu limite de uso de 1 usuбrio." - }; - - const char *langtable_ru[] = { - /* LNG_NSEMAILMAX_REACHED */ - "Указанный вами email-адрес используется максимально допустимое кол-во раз: %d", - /* LNG_NSEMAILMAX_REACHED_ONE */ - "Указанный вами email-адрес уже кем-то используется." - }; - - const char *langtable_it[] = { - /* LNG_NSEMAILMAX_REACHED */ - "L'indirizzo email specificato ha raggiunto il suo limite d'utilizzo di %d utenti.", - /* LNG_NSEMAILMAX_REACHED_ONE */ - "L'indirizzo email specificato ha raggiunto il suo limite d'utilizzo di 1 utente." - }; - - this->InsertLanguage(LANG_EN_US, LNG_NUM_STRINGS, langtable_en_us); - this->InsertLanguage(LANG_NL, LNG_NUM_STRINGS, langtable_nl); - this->InsertLanguage(LANG_DE, LNG_NUM_STRINGS, langtable_de); - this->InsertLanguage(LANG_PT, LNG_NUM_STRINGS, langtable_pt); - this->InsertLanguage(LANG_RU, LNG_NUM_STRINGS, langtable_ru); - this->InsertLanguage(LANG_IT, LNG_NUM_STRINGS, langtable_it); + OnReload(false); } - void OnReload(bool started) + void OnReload(bool) { - my_load_config(); + ConfigReader config; + this->NSEmailMax = config.ReadInteger("ns_maxemail", "maxemails", "0", 0, false); + Log(LOG_DEBUG) << "[ns_maxemail] NSEmailMax set to " << NSEmailMax; } EventReturn OnPreCommand(User *u, BotInfo *service, const Anope::string &command, const std::vector ¶ms) @@ -108,7 +78,7 @@ class NSMaxEmail : public Module { if (command.equals_ci("REGISTER")) { - if (check_email_limit_reached(params.size() > 1 ? params[1] : "", u)) + if (CheckLimitReached(params.size() > 1 ? params[1] : "", u)) return EVENT_STOP; } else if (command.equals_ci("SET")) @@ -116,7 +86,7 @@ class NSMaxEmail : public Module Anope::string set = params[0]; Anope::string email = params.size() > 1 ? params[1] : ""; - if (set.equals_ci("email") && check_email_limit_reached(email, u)) + if (set.equals_ci("email") && CheckLimitReached(email, u)) return EVENT_STOP; } } @@ -125,45 +95,4 @@ class NSMaxEmail : public Module } }; -int count_email_in_use(const Anope::string &email, User *u) -{ - int count = 0; - - if (email.empty()) - return 0; - - for (nickcore_map::const_iterator it = NickCoreList.begin(), it_end = NickCoreList.end(); it != it_end; ++it) - { - NickCore *nc = it->second; - - if (!(u->Account() && u->Account() == nc) && !nc->email.empty() && nc->email.equals_ci(email)) - ++count; - } - - return count; -} - -bool check_email_limit_reached(const Anope::string &email, User *u) -{ - if (NSEmailMax < 1 || email.empty()) - return false; - - if (count_email_in_use(email, u) < NSEmailMax) - return false; - - if (NSEmailMax == 1) - me->NoticeLang(Config->s_NickServ, u, LNG_NSEMAILMAX_REACHED_ONE); - else - me->NoticeLang(Config->s_NickServ, u, LNG_NSEMAILMAX_REACHED, NSEmailMax); - - return true; -} - -void my_load_config() -{ - ConfigReader config; - NSEmailMax = config.ReadInteger("ns_maxemail", "maxemails", "0", 0, false); - Log(LOG_DEBUG) << "[ns_maxemail] NSEmailMax set to " << NSEmailMax; -} - MODULE_INIT(NSMaxEmail) diff --git a/modules/extra/ns_set_misc.cpp b/modules/extra/ns_set_misc.cpp index 2d267f2c4..87c7c05f2 100644 --- a/modules/extra/ns_set_misc.cpp +++ b/modules/extra/ns_set_misc.cpp @@ -29,10 +29,10 @@ class CommandNSSetMisc : public Command if (params.size() > 1) { nc->Extend("nickserv:" + this->name, new ExtensibleItemRegular(params[1])); - notice_lang(Config->s_NickServ, u, CHAN_SETTING_CHANGED, this->name.c_str(), nc->display.c_str(), params[1].c_str()); + u->SendMessage(NickServ, CHAN_SETTING_CHANGED, this->name.c_str(), nc->display.c_str(), params[1].c_str()); } else - notice_lang(Config->s_NickServ, u, CHAN_SETTING_UNSET, this->name.c_str(), nc->display.c_str()); + u->SendMessage(NickServ, CHAN_SETTING_UNSET, this->name.c_str(), nc->display.c_str()); return MOD_CONT; } @@ -51,7 +51,7 @@ class CommandNSSetMisc : public Command void OnSyntaxError(User *u, const Anope::string &) { - syntax_error(Config->s_NickServ, u, "SET", NICK_SET_SYNTAX); + SyntaxError(NickServ, u, "SET", NICK_SET_SYNTAX); } void OnServHelp(User *u) @@ -76,7 +76,7 @@ class CommandNSSASetMisc : public CommandNSSetMisc void OnSyntaxError(User *u, const Anope::string &) { - syntax_error(Config->s_NickServ, u, "SASET", NICK_SASET_SYNTAX); + SyntaxError(NickServ, u, "SASET", NICK_SASET_SYNTAX); } }; -- cgit