summaryrefslogtreecommitdiff
path: root/modules/extra
diff options
context:
space:
mode:
Diffstat (limited to 'modules/extra')
-rw-r--r--modules/extra/cs_appendtopic.cpp102
-rw-r--r--modules/extra/cs_enforce.cpp278
-rw-r--r--modules/extra/cs_set_misc.cpp8
-rw-r--r--modules/extra/cs_tban.cpp167
-rw-r--r--modules/extra/db_mysql.cpp8
-rw-r--r--modules/extra/hs_request.cpp478
-rw-r--r--modules/extra/ns_maxemail.cpp153
-rw-r--r--modules/extra/ns_set_misc.cpp8
8 files changed, 212 insertions, 990 deletions
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<Anope::string>(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<Channel> 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<int>(r.Get(i, "language")) : LANG_EN_US;
+ nc->language = r.Get(i, "language");
nc->channelcount = r.Get(i, "channelcount").is_number_only() ? convertTo<int>(r.Get(i, "channelcount")) : 0;
nc->memos.memomax = r.Get(i, "memomax").is_number_only() ? convertTo<int>(r.Get(i, "memomax")) : 20;
}
@@ -1533,7 +1533,7 @@ static void SaveDatabases()
CommandReturn CommandSQLSync::Execute(User *u, const std::vector<Anope::string> &params)
{
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<Anope::string> &params)
@@ -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<Anope::string>(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);
}
};