From e66063e6304538d34c40460ca0aa2be5ddb6bdec Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 5 Aug 2011 05:35:31 -0400 Subject: Rewrote the example configurations and split them up into seperate files for each pseudo client. Also reorganized how the modules are stored, and made most of the old "extra" modules "core" --- modules/extra/cs_appendtopic.cpp | 117 ----- modules/extra/cs_enforce.cpp | 215 -------- modules/extra/cs_entrymsg.cpp | 224 --------- modules/extra/cs_set_misc.cpp | 110 ---- modules/extra/cs_sync.cpp | 63 --- modules/extra/cs_tban.cpp | 116 ----- modules/extra/hs_request.cpp | 424 ---------------- modules/extra/language/CMakeLists.txt | 38 -- modules/extra/language/cs_appendtopic.de_DE.po | 37 -- modules/extra/language/cs_appendtopic.it_IT.po | 39 -- modules/extra/language/cs_appendtopic.nl_NL.po | 38 -- modules/extra/language/cs_appendtopic.pt_PT.po | 36 -- modules/extra/language/cs_appendtopic.ru_RU.po | 41 -- modules/extra/language/cs_enforce.de_DE.po | 86 ---- modules/extra/language/cs_enforce.it_IT.po | 86 ---- modules/extra/language/cs_enforce.nl_NL.po | 89 ---- modules/extra/language/cs_enforce.pt_PT.po | 88 ---- modules/extra/language/cs_enforce.ru_RU.po | 90 ---- modules/extra/language/cs_tban.de_DE.po | 40 -- modules/extra/language/cs_tban.it_IT.po | 41 -- modules/extra/language/cs_tban.nl_NL.po | 41 -- modules/extra/language/cs_tban.pt_PT.po | 40 -- modules/extra/language/cs_tban.ru_RU.po | 42 -- modules/extra/language/hs_request.it_IT.po | 149 ------ modules/extra/language/hs_request.nl_NL.po | 150 ------ modules/extra/language/hs_request.pt_PT.po | 148 ------ modules/extra/language/hs_request.ru_RU.po | 151 ------ modules/extra/language/ns_maxemail.de_DE.po | 28 -- modules/extra/language/ns_maxemail.it_IT.po | 32 -- modules/extra/language/ns_maxemail.nl_NL.po | 28 -- modules/extra/language/ns_maxemail.pt_PT.po | 28 -- modules/extra/language/ns_maxemail.ru_RU.po | 30 -- modules/extra/language/update.sh | 14 - modules/extra/ns_set_misc.cpp | 126 ----- modules/extra/os_defcon.cpp | 663 ------------------------- 35 files changed, 3688 deletions(-) delete mode 100644 modules/extra/cs_appendtopic.cpp delete mode 100644 modules/extra/cs_enforce.cpp delete mode 100644 modules/extra/cs_entrymsg.cpp delete mode 100644 modules/extra/cs_set_misc.cpp delete mode 100644 modules/extra/cs_sync.cpp delete mode 100644 modules/extra/cs_tban.cpp delete mode 100644 modules/extra/hs_request.cpp delete mode 100644 modules/extra/language/CMakeLists.txt delete mode 100644 modules/extra/language/cs_appendtopic.de_DE.po delete mode 100644 modules/extra/language/cs_appendtopic.it_IT.po delete mode 100644 modules/extra/language/cs_appendtopic.nl_NL.po delete mode 100644 modules/extra/language/cs_appendtopic.pt_PT.po delete mode 100644 modules/extra/language/cs_appendtopic.ru_RU.po delete mode 100644 modules/extra/language/cs_enforce.de_DE.po delete mode 100644 modules/extra/language/cs_enforce.it_IT.po delete mode 100644 modules/extra/language/cs_enforce.nl_NL.po delete mode 100644 modules/extra/language/cs_enforce.pt_PT.po delete mode 100644 modules/extra/language/cs_enforce.ru_RU.po delete mode 100644 modules/extra/language/cs_tban.de_DE.po delete mode 100644 modules/extra/language/cs_tban.it_IT.po delete mode 100644 modules/extra/language/cs_tban.nl_NL.po delete mode 100644 modules/extra/language/cs_tban.pt_PT.po delete mode 100644 modules/extra/language/cs_tban.ru_RU.po delete mode 100644 modules/extra/language/hs_request.it_IT.po delete mode 100644 modules/extra/language/hs_request.nl_NL.po delete mode 100644 modules/extra/language/hs_request.pt_PT.po delete mode 100644 modules/extra/language/hs_request.ru_RU.po delete mode 100644 modules/extra/language/ns_maxemail.de_DE.po delete mode 100644 modules/extra/language/ns_maxemail.it_IT.po delete mode 100644 modules/extra/language/ns_maxemail.nl_NL.po delete mode 100644 modules/extra/language/ns_maxemail.pt_PT.po delete mode 100644 modules/extra/language/ns_maxemail.ru_RU.po delete mode 100755 modules/extra/language/update.sh delete mode 100644 modules/extra/ns_set_misc.cpp delete mode 100644 modules/extra/os_defcon.cpp (limited to 'modules/extra') diff --git a/modules/extra/cs_appendtopic.cpp b/modules/extra/cs_appendtopic.cpp deleted file mode 100644 index c9af50613..000000000 --- a/modules/extra/cs_appendtopic.cpp +++ /dev/null @@ -1,117 +0,0 @@ -/* cs_appendtopic.c - Add text to a channels topic - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Based on the original module by SGR - * Included in the Anope module pack since Anope 1.7.9 - * Anope Coder: GeniusDex - * - * Please read COPYING and README for further details. - * - * Send bug reports to the Anope Coder instead of the module - * author, because any changes since the inclusion into anope - * are not supported by the original author. - */ - -/*************************************************************************/ - -#include "module.h" - -/* ------------------------------------------------------------ - * Name: cs_appendtopic - * Author: SGR - * Date: 31/08/2003 - * ------------------------------------------------------------ - * - * This module has no configurable options. For information on - * this module, load it and refer to /ChanServ APPENDTOPIC HELP - * - * Thanks to dengel, Rob and Certus for all there support. - * Especially Rob, who always manages to show me where I have - * not allocated any memory. Even if it takes a few weeks of - * pestering to get him to look at it. - * - * ------------------------------------------------------------ - */ - -/* ---------------------------------------------------------------------- */ -/* DO NOT EDIT BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING */ -/* ---------------------------------------------------------------------- */ - -class CommandCSAppendTopic : public Command -{ - public: - CommandCSAppendTopic(Module *creator) : Command(creator, "chanserv/appendtopic", 2, 2) - { - this->SetDesc(_("Add text to a channels topic")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - const Anope::string &newtopic = params[1]; - - User *u = source.u; - Channel *c = findchan(params[0]);; - - if (!c) - source.Reply(CHAN_X_NOT_IN_USE, params[0].c_str()); - else if (!c->ci) - source.Reply(CHAN_X_NOT_REGISTERED, c->name.c_str()); - else if (!c->ci->HasPriv(u, CA_TOPIC)) - source.Reply(ACCESS_DENIED); - else - { - Anope::string topic; - if (!c->ci->last_topic.empty()) - { - topic = c->ci->last_topic + " " + newtopic; - c->ci->last_topic.clear(); - } - else - topic = newtopic; - - bool has_topiclock = c->ci->HasFlag(CI_TOPICLOCK); - c->ci->UnsetFlag(CI_TOPICLOCK); - c->ChangeTopic(u->nick, topic, Anope::CurTime); - if (has_topiclock) - c->ci->SetFlag(CI_TOPICLOCK); - - bool override = c->ci->HasPriv(u, CA_TOPIC); - Log(override ? LOG_OVERRIDE : LOG_COMMAND, u, this, c->ci) << "changed topic to " << topic; - } - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - source.Reply(_("Syntax: APPENDTOPIC channel text")); - source.Reply(" "); - source.Reply(("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(CommandSource &source, const Anope::string &subcommand) - { - source.Reply(_("Syntax: APPENDTOPIC channel text")); - } -}; - -class CSAppendTopic : public Module -{ - CommandCSAppendTopic commandcsappendtopic; - - public: - CSAppendTopic(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), - commandcsappendtopic(this) - { - this->SetAuthor("SGR"); - - ModuleManager::RegisterService(&commandcsappendtopic); - } -}; - -MODULE_INIT(CSAppendTopic) diff --git a/modules/extra/cs_enforce.cpp b/modules/extra/cs_enforce.cpp deleted file mode 100644 index 26885c9b0..000000000 --- a/modules/extra/cs_enforce.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/* cs_enforce - Add a /cs ENFORCE command to enforce various set - * options and channelmodes on a channel. - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Included in the Anope module pack since Anope 1.7.9 - * Anope Coder: GeniusDex - * - * Please read COPYING and README for further details. - * - * Send any bug reports to the Anope Coder, as he will be able - * to deal with it best. - */ - -#include "module.h" - -class CommandCSEnforce : public Command -{ - private: - void DoSet(Channel *c) - { - ChannelInfo *ci; - - if (!(ci = c->ci)) - return; - - if (ci->HasFlag(CI_SECUREOPS)) - this->DoSecureOps(c); - if (ci->HasFlag(CI_RESTRICTED)) - this->DoRestricted(c); - } - - void DoModes(Channel *c) - { - if (c->HasMode(CMODE_REGISTEREDONLY)) - this->DoCModeR(c); - } - - void DoSecureOps(Channel *c) - { - ChannelInfo *ci; - bool hadsecureops = false; - - if (!(ci = c->ci)) - return; - - /* Dirty hack to allow chan_set_correct_modes to work ok. - * We pretend like SECUREOPS is on so it doesn't ignore that - * part of the code. This way we can enforce SECUREOPS even - * if it's off. - */ - if (!ci->HasFlag(CI_SECUREOPS)) - { - ci->SetFlag(CI_SECUREOPS); - hadsecureops = true; - } - - for (CUserList::iterator it = c->users.begin(), it_end = c->users.end(); it != it_end; ++it) - { - UserContainer *uc = *it; - - chan_set_correct_modes(uc->user, c, 0); - } - - if (hadsecureops) - ci->UnsetFlag(CI_SECUREOPS); - } - - void DoRestricted(Channel *c) - { - ChannelInfo *ci = c->ci; - if (ci == NULL) - return; - - for (CUserList::iterator it = c->users.begin(), it_end = c->users.end(); it != it_end; ) - { - UserContainer *uc = *it++; - User *user = uc->user; - - if (ci->AccessFor(user).empty()) - { - Anope::string mask; - get_idealban(ci, user, mask); - Anope::string reason = translate(user, CHAN_NOT_ALLOWED_TO_JOIN); - c->SetMode(NULL, CMODE_BAN, mask); - c->Kick(NULL, user, "%s", reason.c_str()); - } - } - } - - void DoCModeR(Channel *c) - { - ChannelInfo *ci; - Anope::string mask; - - if (!(ci = c->ci)) - return; - - for (CUserList::iterator it = c->users.begin(), it_end = c->users.end(); it != it_end; ) - { - UserContainer *uc = *it++; - - if (!uc->user->IsIdentified()) - { - get_idealban(ci, uc->user, mask); - Anope::string reason = translate(uc->user, CHAN_NOT_ALLOWED_TO_JOIN); - if (!c->HasMode(CMODE_REGISTEREDONLY)) - c->SetMode(NULL, CMODE_BAN, mask); - c->Kick(NULL, uc->user, "%s", reason.c_str()); - } - } - } - public: - CommandCSEnforce(Module *creator) : Command(creator, "chanserv/enforce", 1, 2) - { - this->SetDesc(_("Enforce various channel modes and set options")); - this->SetSyntax(_("\037channel\037 [\037what\037]")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - const Anope::string &what = params.size() > 1 ? params[1] : ""; - - User *u = source.u; - Channel *c = findchan(params[0]); - - if (!c) - source.Reply(CHAN_X_NOT_IN_USE, params[0].c_str()); - else if (!c->ci) - source.Reply(CHAN_X_NOT_REGISTERED, c->name.c_str()); - else if (!c->ci->HasPriv(u, CA_AKICK)) - source.Reply(ACCESS_DENIED); - else - { - if (what.empty() || what.equals_ci("SET")) - { - this->DoSet(c); - source.Reply(_("Enforced %s"), !what.empty() ? what.c_str() : "SET"); - } - else if (what.equals_ci("MODES")) - { - this->DoModes(c); - source.Reply(_("Enforced %s"), what.c_str()); - } - else if (what.equals_ci("SECUREOPS")) - { - this->DoSecureOps(c); - source.Reply(_("Enforced %s"), what.c_str()); - } - else if (what.equals_ci("RESTRICTED")) - { - this->DoRestricted(c); - source.Reply(_("Enforced %s"), what.c_str()); - } - else if (what.equals_ci("+R")) - { - this->DoCModeR(c); - source.Reply(_("Enforced %s"), what.c_str()); - } - else - this->OnSyntaxError(source, ""); - } - - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("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.")); - source.Reply(" "); - if (ModeManager::FindChannelModeByName(CMODE_REGISTERED)) - source.Reply(_("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 - source.Reply(_("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; - } -}; - -class CSEnforce : public Module -{ - CommandCSEnforce commandcsenforce; - - public: - CSEnforce(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), - commandcsenforce(this) - { - this->SetAuthor("Anope"); - - ModuleManager::RegisterService(&commandcsenforce); - } -}; - -MODULE_INIT(CSEnforce) diff --git a/modules/extra/cs_entrymsg.cpp b/modules/extra/cs_entrymsg.cpp deleted file mode 100644 index 3aa8ed862..000000000 --- a/modules/extra/cs_entrymsg.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/* ChanServ core functions - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -/*************************************************************************/ - -#include "module.h" - -struct EntryMsg -{ - static unsigned MaxEntries; - - EntryMsg(const Anope::string &cname, const Anope::string &cmessage, time_t ct = Anope::CurTime) - { - this->creator = cname; - this->message = cmessage; - this->when = ct; - } - - Anope::string creator; - Anope::string message; - time_t when; -}; -unsigned EntryMsg::MaxEntries = 0; - -class CommandEntryMessage : public Command -{ - private: - void DoList(CommandSource &source, ChannelInfo *ci) - { - std::vector messages; - if (ci->GetExtRegular("cs_entrymsg", messages)) - { - source.Reply(_("Entry message list for \2%s\2:"), ci->name.c_str()); - for (unsigned i = 0; i < messages.size(); ++i) - source.Reply(CHAN_LIST_ENTRY, i + 1, messages[i].message.c_str(), messages[i].creator.c_str(), do_strftime(messages[i].when).c_str()); - source.Reply(_("End of entry message list.")); - } - else - source.Reply(_("Entry message list for \2%s\2 is empty."), ci->name.c_str()); - } - - void DoAdd(CommandSource &source, ChannelInfo *ci, const Anope::string &message) - { - std::vector messages; - ci->GetExtRegular("cs_entrymsg", messages); - - if (EntryMsg::MaxEntries && messages.size() >= EntryMsg::MaxEntries) - source.Reply(_("The entry message list for \2%s\2 is full."), ci->name.c_str()); - else - { - messages.push_back(EntryMsg(source.u->nick, message)); - ci->Extend("cs_entrymsg", new ExtensibleItemRegular >(messages)); - source.Reply(_("Entry message added to \2%s\2"), ci->name.c_str()); - } - } - - void DoDel(CommandSource &source, ChannelInfo *ci, const Anope::string &message) - { - std::vector messages; - if (!message.is_pos_number_only()) - source.Reply(("Entry message \002%s\002 not found on channel \002%s\002."), message.c_str(), ci->name.c_str()); - else if (ci->GetExtRegular("cs_entrymsg", messages)) - { - try - { - unsigned i = convertTo(message); - if (i > 0 && i <= messages.size()) - { - messages.erase(messages.begin() + i - 1); - if (!messages.empty()) - ci->Extend("cs_entrymsg", new ExtensibleItemRegular >(messages)); - else - ci->Shrink("cs_entrymsg"); - source.Reply(_("Entry message \2%i\2 for \2%s\2 deleted."), i, ci->name.c_str()); - } - else - throw ConvertException(); - } - catch (const ConvertException &) - { - source.Reply(_("Entry message \2%s\2 not found on channel \2%s\2."), message.c_str(), ci->name.c_str()); - } - } - else - source.Reply(_("Entry message list for \2%s\2 is empty."), ci->name.c_str()); - } - - void DoClear(CommandSource &source, ChannelInfo *ci) - { - ci->Shrink("cs_entrymsg"); - source.Reply(_("Entry messages for \2%s\2 have been cleared."), ci->name.c_str()); - } - - public: - CommandEntryMessage(Module *creator) : Command(creator, "chanserv/entrymsg", 2, 3) - { - this->SetDesc(_("Manage the channel's entry messages")); - this->SetSyntax(_("\037channel\037 {ADD|DEL|LIST|CLEAR} [\037message\037|\037num\037]")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - User *u = source.u; - - ChannelInfo *ci = cs_findchan(params[0]); - if (ci == NULL) - { - source.Reply(CHAN_X_NOT_REGISTERED, params[0].c_str()); - return; - } - - if (IsFounder(u, ci) || u->HasCommand("chanserv/entrymsg")) - { - bool success = true; - if (params[1].equals_ci("LIST")) - this->DoList(source, ci); - else if (params[1].equals_ci("CLEAR")) - this->DoClear(source, ci); - else if (params.size() < 3) - { - success = false; - this->OnSyntaxError(source, ""); - } - else if (params[1].equals_ci("ADD")) - this->DoAdd(source, ci, params[2]); - else if (params[1].equals_ci("DEL")) - this->DoDel(source, ci, params[2]); - else - { - success = false; - this->OnSyntaxError(source, ""); - } - if (success) - Log(IsFounder(u, ci) ? LOG_COMMAND : LOG_OVERRIDE, u, this, ci) << params[1]; - } - else - source.Reply(ACCESS_DENIED); - - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Controls what messages will be sent to users when they join the channel.")); - return true; - } -}; - -class CSEntryMessage : public Module -{ - CommandEntryMessage commandentrymsg; - - public: - CSEntryMessage(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), commandentrymsg(this) - { - this->SetAuthor("Anope"); - - Implementation i[] = { I_OnJoinChannel, I_OnReload, I_OnDatabaseReadMetadata, I_OnDatabaseWriteMetadata }; - ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); - - ModuleManager::RegisterService(&commandentrymsg); - - this->OnReload(); - } - - void OnJoinChannel(User *u, Channel *c) - { - if (u && c && c->ci && u->server->IsSynced()) - { - std::vector messages; - - if (c->ci->GetExtRegular("cs_entrymsg", messages)) - for (unsigned i = 0; i < messages.size(); ++i) - u->SendMessage(c->ci->WhoSends(), "[%s] %s", c->ci->name.c_str(), messages[i].message.c_str()); - } - } - - void OnReload() - { - ConfigReader config; - EntryMsg::MaxEntries = config.ReadInteger("cs_entrymsg", "maxentries", "5", 0, true); - } - - EventReturn OnDatabaseReadMetadata(ChannelInfo *ci, const Anope::string &key, const std::vector ¶ms) - { - if (key.find("CS_ENTRYMSG_") == 0 && params.size() > 2) - { - Anope::string creator = params[0]; - time_t t = params[1].is_pos_number_only() ? convertTo(params[1]) : Anope::CurTime; - Anope::string message = params[2]; - for (unsigned j = 3; j < params.size(); ++j) - message += " " + params[j]; - - std::vector messages; - ci->GetExtRegular("cs_entrymsg", messages); - messages.push_back(EntryMsg(creator, message, t)); - ci->Extend("cs_entrymsg", new ExtensibleItemRegular >(messages)); - - return EVENT_STOP; - } - - return EVENT_CONTINUE; - } - - void OnDatabaseWriteMetadata(void (*WriteMetadata)(const Anope::string &, const Anope::string &), ChannelInfo *ci) - { - std::vector messages; - if (ci->GetExtRegular("cs_entrymsg", messages)) - for (unsigned i = 0; i < messages.size(); ++i) - WriteMetadata("CS_ENTRYMSG_" + stringify(i), messages[i].creator + " " + stringify(messages[i].when) + " " + messages[i].message); - } -}; - -MODULE_INIT(CSEntryMessage) diff --git a/modules/extra/cs_set_misc.cpp b/modules/extra/cs_set_misc.cpp deleted file mode 100644 index 8f145ab88..000000000 --- a/modules/extra/cs_set_misc.cpp +++ /dev/null @@ -1,110 +0,0 @@ -/* - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -/*************************************************************************/ - -#include "module.h" - -class CommandCSSetMisc : public Command -{ - public: - CommandCSSetMisc(Module *creator, const Anope::string &cname = "chanserv/set/misc") : Command(creator, cname, 1, 2) - { - this->SetSyntax(_("\037channel\037 \037parameters\037")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - ChannelInfo *ci = cs_findchan(params[0]); - if (ci == NULL) - { - source.Reply(CHAN_X_NOT_REGISTERED, params[0].c_str()); - return; - } - - ci->Shrink("cs_set_misc:" + source.command.replace_all_cs(" ", "_")); - if (params.size() > 1) - { - ci->Extend("cs_set_misc:" + source.command.replace_all_cs(" ", "_"), new ExtensibleItemRegular(params[1])); - source.Reply(CHAN_SETTING_CHANGED, source.command.c_str(), ci->name.c_str(), params[1].c_str()); - } - else - source.Reply(CHAN_SETTING_UNSET, source.command.c_str(), ci->name.c_str()); - } -}; - -class CommandCSSASetMisc : public CommandCSSetMisc -{ - public: - CommandCSSASetMisc(Module *creator) : CommandCSSetMisc(creator, "chanserv/saset/misc") - { - } -}; - -class CSSetMisc : public Module -{ - CommandCSSetMisc commandcssetmisc; - CommandCSSASetMisc commandcssasetmisc; - - public: - CSSetMisc(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), - commandcssetmisc(this), commandcssasetmisc(this) - { - this->SetAuthor("Anope"); - - Implementation i[] = { I_OnChanInfo, I_OnDatabaseWriteMetadata, I_OnDatabaseReadMetadata }; - ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); - - ModuleManager::RegisterService(&this->commandcssetmisc); - ModuleManager::RegisterService(&this->commandcssasetmisc); - } - - void OnChanInfo(CommandSource &source, ChannelInfo *ci, bool ShowHidden) - { - std::deque list; - ci->GetExtList(list); - - for (unsigned i = 0; i < list.size(); ++i) - { - if (list[i].find("cs_set_misc:") != 0) - continue; - - Anope::string value; - if (ci->GetExtRegular(list[i], value)) - source.Reply(" %s: %s", list[i].substr(12).replace_all_cs("_", " ").c_str(), value.c_str()); - } - } - - void OnDatabaseWriteMetadata(void (*WriteMetadata)(const Anope::string &, const Anope::string &), ChannelInfo *ci) - { - std::deque list; - ci->GetExtList(list); - - for (unsigned i = 0; i < list.size(); ++i) - { - if (list[i].find("cs_set_misc:") != 0) - continue; - - Anope::string value; - if (ci->GetExtRegular(list[i], value)) - WriteMetadata(list[i], ":" + value); - } - } - - EventReturn OnDatabaseReadMetadata(ChannelInfo *ci, const Anope::string &key, const std::vector ¶ms) - { - if (key.find("cs_set_misc:") == 0) - ci->Extend(key, new ExtensibleItemRegular(params[0])); - - return EVENT_CONTINUE; - } -}; - -MODULE_INIT(CSSetMisc) diff --git a/modules/extra/cs_sync.cpp b/modules/extra/cs_sync.cpp deleted file mode 100644 index 2937cc4fc..000000000 --- a/modules/extra/cs_sync.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -#include "module.h" - -class CommandCSSync : public Command -{ - public: - CommandCSSync(Module *creator) : Command(creator, "chanserv/sync", 1, 1) - { - this->SetDesc(_("Sync users channel modes")); - this->SetSyntax(_("\037channel\037")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - ChannelInfo *ci = cs_findchan(params[0]); - - if (ci == NULL) - source.Reply(CHAN_X_NOT_REGISTERED, params[0].c_str()); - else if (ci->c == NULL) - source.Reply(CHAN_X_NOT_IN_USE, params[0].c_str()); - else - { - for (CUserList::iterator it = ci->c->users.begin(), it_end = ci->c->users.end(); it != it_end; ++it) - chan_set_correct_modes((*it)->user, ci->c, 1); - - source.Reply(_("All user modes on \2%s\2 have been synced."), ci->name.c_str()); - } - } - - bool OnHelp(CommandSource &source, const Anope::string ¶ms) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Syncs all modes set on users on the channel with the modes\n" - "they should have based on their access.")); - return true; - } -}; - -class CSSync : public Module -{ - CommandCSSync commandcssync; - public: - CSSync(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), - commandcssync(this) - { - this->SetAuthor("Anope"); - - ModuleManager::RegisterService(&commandcssync); - } -}; - -MODULE_INIT(CSSync) diff --git a/modules/extra/cs_tban.cpp b/modules/extra/cs_tban.cpp deleted file mode 100644 index 404279bef..000000000 --- a/modules/extra/cs_tban.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* cs_tban.c - Bans the user for a given length of time - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Based on the original module by Rob - * Included in the Anope module pack since Anope 1.7.8 - * Anope Coder: Rob - * - * Please read COPYING and README for further details. - * - * Send bug reports to the Anope Coder instead of the module - * author, because any changes since the inclusion into anope - * are not supported by the original author. - */ -/*************************************************************************/ - -#include "module.h" - -static Module *me; - -class TempBan : public CallBack -{ - private: - dynamic_reference chan; - Anope::string mask; - - public: - TempBan(time_t seconds, Channel *c, const Anope::string &banmask) : CallBack(me, seconds), chan(c), mask(banmask) { } - - void Tick(time_t ctime) - { - if (chan && chan->ci) - chan->RemoveMode(NULL, CMODE_BAN, mask); - } -}; - -static bool CanBanUser(CommandSource &source, Channel *c, User *u2) -{ - User *u = source.u; - ChannelInfo *ci = c->ci; - bool ok = false; - if (!ci->HasPriv(u, CA_BAN)) - source.Reply(ACCESS_DENIED); - else if (matches_list(c, u2, CMODE_EXCEPT)) - source.Reply(CHAN_EXCEPTED, u2->nick.c_str(), ci->name.c_str()); - else if (u2->IsProtected()) - source.Reply(ACCESS_DENIED); - else - ok = true; - - return ok; -} - -class CommandCSTBan : public Command -{ - public: - CommandCSTBan(Module *m) : Command(m, "TBAN", 3, 3) - { - this->SetDesc(_("Bans the user for a given length of time")); - this->SetSyntax(_("\037channel\037 \037nick\037 \037time\037")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - Channel *c = findchan(params[0]); - - const Anope::string &nick = params[1]; - const Anope::string &time = params[2]; - - User *u2; - if (!c) - source.Reply(CHAN_X_NOT_IN_USE, params[0].c_str()); - else if (!(u2 = finduser(nick))) - source.Reply(NICK_X_NOT_IN_USE, nick.c_str()); - else - if (CanBanUser(source, c, u2)) - { - Anope::string mask; - get_idealban(c->ci, u2, mask); - c->SetMode(NULL, CMODE_BAN, mask); - new TempBan(dotime(time), c, mask); - source.Reply(_("%s banned from %s, will auto-expire in %s"), mask.c_str(), c->name.c_str(), time.c_str()); - } - - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->OnSyntaxError(source, ""); - source.Reply(" "); - source.Reply(_("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; - } -}; - -class CSTBan : public Module -{ - CommandCSTBan commandcstban; - - public: - CSTBan(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), - commandcstban(this) - { - this->SetAuthor("Anope"); - - me = this; - - ModuleManager::RegisterService(&commandcstban); - } -}; - -MODULE_INIT(CSTBan) diff --git a/modules/extra/hs_request.cpp b/modules/extra/hs_request.cpp deleted file mode 100644 index 7686794f5..000000000 --- a/modules/extra/hs_request.cpp +++ /dev/null @@ -1,424 +0,0 @@ -/* hs_request.c - Add request and activate functionality to HostServ, - * - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Based on the original module by Rob - * Included in the Anope module pack since Anope 1.7.11 - * Anope Coder: GeniusDex - * - * Please read COPYING and README for further details. - * - * Send bug reports to the Anope Coder instead of the module - * author, because any changes since the inclusion into anope - * are not supported by the original author. - */ - -#include "module.h" -#include "memoserv.h" - -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); -void req_send_memos(CommandSource &source, const Anope::string &vIdent, const Anope::string &vHost); - -struct HostRequest -{ - Anope::string ident; - Anope::string host; - time_t time; -}; - -typedef std::map > RequestMap; -RequestMap Requests; - -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(Module *creator) : Command(creator, "hostserv/request", 1, 1) - { - this->SetDesc(_("Request a vHost for your nick")); - this->SetSyntax(_("vhost")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - User *u = source.u; - - Anope::string rawhostmask = params[0]; - - Anope::string user, host; - size_t a = rawhostmask.find('@'); - - if (a == Anope::string::npos) - host = rawhostmask; - else - { - user = rawhostmask.substr(0, a); - host = rawhostmask.substr(a + 1); - } - - if (host.empty()) - { - this->OnSyntaxError(source, ""); - return; - } - - if (!user.empty()) - { - if (user.length() > Config->UserLen) - { - source.Reply(HOST_SET_IDENTTOOLONG, Config->UserLen); - return; - } - else if (!ircd->vident) - { - source.Reply(HOST_NO_VIDENT); - return; - } - for (Anope::string::iterator s = user.begin(), s_end = user.end(); s != s_end; ++s) - if (!isvalidchar(*s)) - { - source.Reply(HOST_SET_IDENT_ERROR); - return; - } - } - - if (host.length() > Config->HostLen) - { - source.Reply(HOST_SET_TOOLONG, Config->HostLen); - return; - } - - if (!isValidHost(host, 3)) - { - source.Reply(HOST_SET_ERROR); - return; - } - - if (HSRequestMemoOper && Config->MSSendDelay > 0 && u && u->lastmemosend + Config->MSSendDelay > Anope::CurTime) - { - source.Reply(_("Please wait %d seconds before requesting a new vHost"), Config->MSSendDelay); - u->lastmemosend = Anope::CurTime; - return; - } - my_add_host_request(u->nick, user, host, u->nick, Anope::CurTime); - - source.Reply(_("Your vHost has been requested")); - req_send_memos(source, user, host); - Log(LOG_COMMAND, u, this, NULL) << "to request new vhost " << (!user.empty() ? user + "@" : "") << host; - - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("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; - } -}; - -class CommandHSActivate : public Command -{ - public: - CommandHSActivate(Module *creator) : Command(creator, "hostserv/activate", 1, 1) - { - this->SetDesc(_("Approve the requested vHost of a user")); - this->SetSyntax(_("\037nick\037")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - User *u = source.u; - - const Anope::string &nick = params[0]; - - NickAlias *na = findnick(nick); - if (na) - { - RequestMap::iterator it = Requests.find(na->nick); - if (it != Requests.end()) - { - na->hostinfo.SetVhost(it->second->ident, it->second->host, u->nick, it->second->time); - FOREACH_MOD(I_OnSetVhost, OnSetVhost(na)); - - if (HSRequestMemoUser && memoserv) - memoserv->Send(Config->HostServ, na->nick, _("[auto memo] Your requested vHost has been approved."), true); - - source.Reply(_("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 - source.Reply(_("No request for nick %s found."), nick.c_str()); - } - else - source.Reply(NICK_X_NOT_REGISTERED, nick.c_str()); - - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Activate the requested vHost for the given nick.")); - if (HSRequestMemoUser) - source.Reply(_("A memo informing the user will also be sent.")); - - return true; - } -}; - -class CommandHSReject : public Command -{ - public: - CommandHSReject(Module *creator) : Command(creator, "hostserv/reject", 1, 2) - { - this->SetDesc(_("Reject the requested vHost of a user")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - User *u = source.u; - - const Anope::string &nick = params[0]; - const Anope::string &reason = params.size() > 1 ? params[1] : ""; - - RequestMap::iterator it = Requests.find(nick); - if (it != Requests.end()) - { - delete it->second; - Requests.erase(it); - - if (HSRequestMemoUser && memoserv) - { - Anope::string message; - if (!reason.empty()) - message = Anope::printf(_("[auto memo] Your requested vHost has been rejected. Reason: %s"), reason.c_str()); - else - message = _("[auto memo] Your requested vHost has been rejected."); - - memoserv->Send(Config->HostServ, nick, message, true); - } - - source.Reply(_("vHost for %s has been rejected"), nick.c_str()); - Log(LOG_COMMAND, u, this, NULL) << "to reject vhost for " << nick << " (" << (!reason.empty() ? reason : "") << ")"; - } - else - source.Reply(_("No request for nick %s found."), nick.c_str()); - - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Reject the requested vHost for the given nick.")); - if (HSRequestMemoUser) - source.Reply(_("A memo informing the user will also be sent.")); - - return true; - } -}; - -class HSListBase : public Command -{ - protected: - void DoList(CommandSource &source) - { - int counter = 1; - int from = 0, to = 0; - unsigned display_counter = 0; - - for (RequestMap::iterator it = Requests.begin(), it_end = Requests.end(); it != it_end; ++it) - { - HostRequest *hr = it->second; - if (((counter >= from && counter <= to) || (!from && !to)) && display_counter < Config->NSListMax) - { - ++display_counter; - if (!hr->ident.empty()) - source.Reply(_("#%d Nick:\002%s\002, vhost:\002%s\002@\002%s\002 (%s - %s)"), counter, it->first.c_str(), hr->ident.c_str(), hr->host.c_str(), it->first.c_str(), do_strftime(hr->time).c_str()); - else - source.Reply(_("#%d Nick:\002%s\002, vhost:\002%s\002 (%s - %s)"), counter, it->first.c_str(), hr->host.c_str(), it->first.c_str(), do_strftime(hr->time).c_str()); - } - ++counter; - } - source.Reply(_("Displayed all records (Count: \002%d\002)"), display_counter); - - return; - } - public: - HSListBase(Module *creator, const Anope::string &cmd, int min, int max) : Command(creator, cmd, min, max) - { - } -}; - -class CommandHSWaiting : public HSListBase -{ - public: - CommandHSWaiting(Module *creator) : HSListBase(creator, "hostserv/waiting", 0, 0) - { - this->SetDesc(_("Retrieves the vhost requests")); - this->SetSyntax(""); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - return this->DoList(source); - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("This command retrieves the vhost requests")); - - return true; - } -}; - -class HSRequest : public Module -{ - CommandHSRequest commandhsrequest; - CommandHSActivate commandhsactive; - CommandHSReject commandhsreject; - CommandHSWaiting commandhswaiting; - - public: - HSRequest(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), - commandhsrequest(this), commandhsactive(this), commandhsreject(this), commandhswaiting(this) - { - this->SetAuthor("Anope"); - - ModuleManager::RegisterService(&commandhsrequest); - ModuleManager::RegisterService(&commandhsactive); - ModuleManager::RegisterService(&commandhsreject); - ModuleManager::RegisterService(&commandhswaiting); - - Implementation i[] = { I_OnDelNick, I_OnDatabaseRead, I_OnDatabaseWrite, I_OnReload }; - ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); - - this->OnReload(); - } - - ~HSRequest() - { - /* Clean up all open host requests */ - while (!Requests.empty()) - { - delete Requests.begin()->second; - Requests.erase(Requests.begin()); - } - } - - void OnDelNick(NickAlias *na) - { - RequestMap::iterator it = Requests.find(na->nick); - - if (it != Requests.end()) - { - delete it->second; - Requests.erase(it); - } - } - - EventReturn OnDatabaseRead(const std::vector ¶ms) - { - if (params[0].equals_ci("HS_REQUEST") && params.size() >= 5) - { - Anope::string vident = params[2].equals_ci("(null)") ? "" : params[2]; - my_add_host_request(params[1], vident, params[3], params[1], params[4].is_pos_number_only() ? convertTo(params[4]) : 0); - - return EVENT_STOP; - } - - return EVENT_CONTINUE; - } - - void OnDatabaseWrite(void (*Write)(const Anope::string &)) - { - for (RequestMap::iterator it = Requests.begin(), it_end = Requests.end(); it != it_end; ++it) - { - HostRequest *hr = it->second; - std::stringstream buf; - buf << "HS_REQUEST " << it->first << " " << (hr->ident.empty() ? "(null)" : hr->ident) << " " << hr->host << " " << hr->time; - Write(buf.str()); - } - } - - void OnReload() - { - ConfigReader config; - HSRequestMemoUser = config.ReadFlag("hs_request", "memouser", "no", 0); - HSRequestMemoOper = config.ReadFlag("hs_request", "memooper", "no", 0); - - Log(LOG_DEBUG) << "[hs_request] Set config vars: MemoUser=" << HSRequestMemoUser << " MemoOper=" << HSRequestMemoOper; - } -}; - -void req_send_memos(CommandSource &source, const Anope::string &vIdent, const Anope::string &vHost) -{ - Anope::string host; - std::list >::iterator it, it_end; - - if (!vIdent.empty()) - host = vIdent + "@" + vHost; - else - host = vHost; - - if (HSRequestMemoOper == 1 && memoserv) - for (unsigned i = 0; i < Config->Opers.size(); ++i) - { - Oper *o = Config->Opers[i]; - - NickAlias *na = findnick(o->name); - if (!na) - continue; - - Anope::string message = Anope::printf(_("[auto memo] vHost \002%s\002 has been requested by %s."), host.c_str(), source.u->GetMask().c_str()); - - memoserv->Send(Config->HostServ, na->nick, message, true); - } -} - -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) -{ - HostRequest *hr = new HostRequest; - hr->ident = vIdent; - hr->host = vhost; - hr->time = tmp_time; - RequestMap::iterator it = Requests.find(nick); - if (it != Requests.end()) - { - delete it->second; - Requests.erase(it); - } - Requests.insert(std::make_pair(nick, hr)); -} - -void my_load_config() -{ - ConfigReader config; - HSRequestMemoUser = config.ReadFlag("hs_request", "memouser", "no", 0); - HSRequestMemoOper = config.ReadFlag("hs_request", "memooper", "no", 0); - - Log(LOG_DEBUG) << "[hs_request] Set config vars: MemoUser=" << HSRequestMemoUser << " MemoOper=" << HSRequestMemoOper; -} - -MODULE_INIT(HSRequest) diff --git a/modules/extra/language/CMakeLists.txt b/modules/extra/language/CMakeLists.txt deleted file mode 100644 index af4dd90a6..000000000 --- a/modules/extra/language/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -# Only do this if gettext is installed -if(GETTEXT_FOUND) - # Get all of the .po files - file(GLOB LANG_SRCS_PO RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.*.po") - sort_list(LANG_SRCS_PO) - - foreach(LANG_PO ${LANG_SRCS_PO}) - # Get the domain for this language file - string(LENGTH ${LANG_PO} LANG_PO_LENGTH) - math(EXPR DOMAIN_LENGTH "${LANG_PO_LENGTH} - 9") - string(SUBSTRING ${LANG_PO} 0 ${DOMAIN_LENGTH} LANG_DOMAIN) - - # Get the language for this language file - math(EXPR DOMAIN_LENGTH "${LANG_PO_LENGTH} - 8") - string(SUBSTRING ${LANG_PO} ${DOMAIN_LENGTH} 5 LANG_LANG) - - # Get the .mo file name - string(REGEX REPLACE "\\.po$" ".mo" LANG_MO ${LANG_PO}) - # Add the .mo file to a list for use later with add_custom_target - set(LANG_SRCS_MO ${LANG_SRCS_MO} ${CMAKE_CURRENT_BINARY_DIR}/${LANG_MO}) - # Run msgfmt on the language file, depends on the .po file - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${LANG_MO} - COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} -c ${CMAKE_CURRENT_SOURCE_DIR}/${LANG_PO} -o ${CMAKE_CURRENT_BINARY_DIR}/${LANG_MO} - MAIN_DEPENDENCY ${LANG_PO} - ) - # Add to cpack ignored files if not on Windows. - if(NOT WIN32) - add_to_cpack_ignored_files("${LANG_MO}") - endif(NOT WIN32) - - # Install the new language file - install(CODE "FILE(MAKE_DIRECTORY \${CMAKE_INSTALL_PREFIX}/data/languages/${LANG_LANG}/LC_MESSAGES/)") - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${LANG_MO} DESTINATION data/languages/${LANG_LANG}/LC_MESSAGES RENAME ${LANG_DOMAIN}.mo PERMISSIONS ${PERMS}) - endforeach(LANG_PO) - - # Generate languages, depends on the mo files - add_custom_target(module_language DEPENDS ${LANG_SRCS_MO}) -endif(GETTEXT_FOUND) diff --git a/modules/extra/language/cs_appendtopic.de_DE.po b/modules/extra/language/cs_appendtopic.de_DE.po deleted file mode 100644 index 2305709c1..000000000 --- a/modules/extra/language/cs_appendtopic.de_DE.po +++ /dev/null @@ -1,37 +0,0 @@ -# German translations for cs_appendtopic -# German messages for cs_appendtopic -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 20:57-0400\n" -"Last-Translator: Adam \n" -"Language-Team: German\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_appendtopic.cpp:50 -msgid "Add text to a channels topic" -msgstr "Fьgt einen Text zu einem Channel-Topic hinzu." - -#: ../cs_appendtopic.cpp:90 ../cs_appendtopic.cpp:101 -msgid "Syntax: APPENDTOPIC channel text" -msgstr "Syntax: APPENDTOPIC Channel Text" - -#: ../cs_appendtopic.cpp:92 -msgid "" -"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." -msgstr "" -"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." diff --git a/modules/extra/language/cs_appendtopic.it_IT.po b/modules/extra/language/cs_appendtopic.it_IT.po deleted file mode 100644 index 43620d0b2..000000000 --- a/modules/extra/language/cs_appendtopic.it_IT.po +++ /dev/null @@ -1,39 +0,0 @@ -# Italian translations for cs_appendtopic -# Traduzioni italiane per il cs_appendtopic -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:04-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Italian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_appendtopic.cpp:50 -#, fuzzy -msgid "Add text to a channels topic" -msgstr " APPENDTOPIC Aggiunge del testo al topic di un canale" - -#: ../cs_appendtopic.cpp:90 ../cs_appendtopic.cpp:101 -msgid "Syntax: APPENDTOPIC channel text" -msgstr "Sintassi: APPENDTOPIC canale testo" - -#: ../cs_appendtopic.cpp:92 -msgid "" -"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." -msgstr "" -"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." diff --git a/modules/extra/language/cs_appendtopic.nl_NL.po b/modules/extra/language/cs_appendtopic.nl_NL.po deleted file mode 100644 index 21d81eaba..000000000 --- a/modules/extra/language/cs_appendtopic.nl_NL.po +++ /dev/null @@ -1,38 +0,0 @@ -# Dutch translations for cs_appendtopic -# Engelse vertalingen voor het cs_appendtopic -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 20:55-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Dutch\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_appendtopic.cpp:50 -#, fuzzy -msgid "Add text to a channels topic" -msgstr " APPENDTOPIC Voeg tekst aan een kanaal onderwerp toe" - -#: ../cs_appendtopic.cpp:90 ../cs_appendtopic.cpp:101 -msgid "Syntax: APPENDTOPIC channel text" -msgstr "Gebruik: APPENDTOPIC kanaal tekst" - -#: ../cs_appendtopic.cpp:92 -msgid "" -"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." -msgstr "" -"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." diff --git a/modules/extra/language/cs_appendtopic.pt_PT.po b/modules/extra/language/cs_appendtopic.pt_PT.po deleted file mode 100644 index e97d94a90..000000000 --- a/modules/extra/language/cs_appendtopic.pt_PT.po +++ /dev/null @@ -1,36 +0,0 @@ -# Portuguese translations for cs_appendtopic -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:00-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Portuguese\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_appendtopic.cpp:50 -#, fuzzy -msgid "Add text to a channels topic" -msgstr " APPENDTOPIC Adiciona texto ao tуpico de um canal" - -#: ../cs_appendtopic.cpp:90 ../cs_appendtopic.cpp:101 -msgid "Syntax: APPENDTOPIC channel text" -msgstr "Sintaxe: APPENDTOPIC canal texto" - -#: ../cs_appendtopic.cpp:92 -msgid "" -"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." -msgstr "" -"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." diff --git a/modules/extra/language/cs_appendtopic.ru_RU.po b/modules/extra/language/cs_appendtopic.ru_RU.po deleted file mode 100644 index cb5566a8c..000000000 --- a/modules/extra/language/cs_appendtopic.ru_RU.po +++ /dev/null @@ -1,41 +0,0 @@ -# Russian translations for cs_appendtopic -# ?????????? ???????? ??? ?????? cs_appendtopic -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:02-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Russian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: ../cs_appendtopic.cpp:50 -#, fuzzy -msgid "Add text to a channels topic" -msgstr " APPENDTOPIC Добавляет текст к топику канала" - -#: ../cs_appendtopic.cpp:90 ../cs_appendtopic.cpp:101 -msgid "Syntax: APPENDTOPIC channel text" -msgstr "Синтаксис: APPENDTOPIC #канал текст" - -#: ../cs_appendtopic.cpp:92 -msgid "" -"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." -msgstr "" -"Данная команда позволяет добавить текст к топику, который установлен на " -"указанном\n" -"канале. Если активирован режим TOPICLOCK, топик будет обновлен и " -"заблокирован.\n" -"Примечание: текст будет ДОБАВЛЕН к топику, то есть старый топик удален НЕ " -"БУДЕТ." diff --git a/modules/extra/language/cs_enforce.de_DE.po b/modules/extra/language/cs_enforce.de_DE.po deleted file mode 100644 index 5e8ccd94b..000000000 --- a/modules/extra/language/cs_enforce.de_DE.po +++ /dev/null @@ -1,86 +0,0 @@ -# German translations for cs_enforce -# German messages for cs_enforce -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:12-0400\n" -"Last-Translator: Adam \n" -"Language-Team: German\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_enforce.cpp:127 -#, fuzzy -msgid "Enforce various channel modes and set options" -msgstr " ENFORCE Erzwingt verschieden Modes und SET Optionen" - -#: ../cs_enforce.cpp:180 -msgid "" -"Enforce various channel modes and set options. The channel\n" -"option indicates what channel to enforce the modes and options\n" -"on. The what 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 what 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." -msgstr "" -"Erzwingt verschieden Modes und SET Optionen. Die Channel\n" -"Option zeigt dir den Channel an, indem Modes und Optionen\n" -"zu erzwingen sind. Die was 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 was 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." - -#: ../cs_enforce.cpp:147 ../cs_enforce.cpp:152 ../cs_enforce.cpp:157 -#: ../cs_enforce.cpp:162 ../cs_enforce.cpp:167 -#, c-format -msgid "Enforced %s" -msgstr "Erzwungen %s" - -#: ../cs_enforce.cpp:193 -msgid "" -"If what is MODES, it will enforce channelmode +R if it is\n" -"set. If +R is specified for what, 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." -msgstr "" -"Wenn was MODES ist, wird das ChannelMode +R erzwungen\n" -"falls an. Wenn was +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." - -#: ../cs_enforce.cpp:198 -msgid "" -"If what 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 what, 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." -msgstr "" -"Wenn was MODES ist, wird nichts erzwungen weil es MODES seine\n" -"kцnnen die dein IRCD nicht unterstьtzt. Wenn was +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." - -#: ../cs_enforce.cpp:178 ../cs_enforce.cpp:210 -msgid "Syntax: ENFORCE channel [what]" -msgstr "Syntax: ENFORCE Channel [was]" diff --git a/modules/extra/language/cs_enforce.it_IT.po b/modules/extra/language/cs_enforce.it_IT.po deleted file mode 100644 index 4721e823f..000000000 --- a/modules/extra/language/cs_enforce.it_IT.po +++ /dev/null @@ -1,86 +0,0 @@ -# Italian translations for cs_enforce -# Traduzioni italiane per il cs_enforce -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:55-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Italian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_enforce.cpp:127 -#, fuzzy -msgid "Enforce various channel modes and set options" -msgstr " ENFORCE Forza diversi modi di canale ed opzioni SET" - -#: ../cs_enforce.cpp:180 -msgid "" -"Enforce various channel modes and set options. The channel\n" -"option indicates what channel to enforce the modes and options\n" -"on. The what 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 what 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." -msgstr "" -"Forza diversi modi di canale ed opzioni SET. Il parametro canale\n" -"indica il canale sul quale forzare i modi e le opzioni. Il parametro\n" -"cosa 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 cosa и 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." - -#: ../cs_enforce.cpp:147 ../cs_enforce.cpp:152 ../cs_enforce.cpp:157 -#: ../cs_enforce.cpp:162 ../cs_enforce.cpp:167 -#, c-format -msgid "Enforced %s" -msgstr "Forzato %s" - -#: ../cs_enforce.cpp:193 -msgid "" -"If what is MODES, it will enforce channelmode +R if it is\n" -"set. If +R is specified for what, 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." -msgstr "" -"Se cosa и MODES, forzerа il modo del canale +R se и impostato.\n" -"Se +R и specificato per cosa, 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." - -#: ../cs_enforce.cpp:198 -msgid "" -"If what 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 what, 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." -msgstr "" -"Se cosa и MODES, niente verrа forzato, siccome forzerebbe\n" -"dei modi che l'ircd in uso non supporterebbe. Se +R и specificato\n" -"per cosa, 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." - -#: ../cs_enforce.cpp:178 ../cs_enforce.cpp:210 -msgid "Syntax: ENFORCE channel [what]" -msgstr "Sintassi: ENFORCE canale [cosa]" diff --git a/modules/extra/language/cs_enforce.nl_NL.po b/modules/extra/language/cs_enforce.nl_NL.po deleted file mode 100644 index 935e8dce7..000000000 --- a/modules/extra/language/cs_enforce.nl_NL.po +++ /dev/null @@ -1,89 +0,0 @@ -# Dutch translations for cs_enforce -# Engelse vertalingen voor het cs_enforce -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as the Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:07-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Dutch\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_enforce.cpp:127 -#, fuzzy -msgid "Enforce various channel modes and set options" -msgstr " ENFORCE Forceer enkele kanaalmodes en set-opties" - -#: ../cs_enforce.cpp:180 -msgid "" -"Enforce various channel modes and set options. The channel\n" -"option indicates what channel to enforce the modes and options\n" -"on. The what 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 what 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." -msgstr "" -"Forceer enkele kannalmodes en set-opties. De kanaal optie\n" -"geeft aan op welk kanaal de modes en opties geforceerd moeten\n" -"worden. De wat 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 wat 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 wat zal die optie\n" -"altijd geforceerd worden, ook als die niet is aangezet." - -#: ../cs_enforce.cpp:147 ../cs_enforce.cpp:152 ../cs_enforce.cpp:157 -#: ../cs_enforce.cpp:162 ../cs_enforce.cpp:167 -#, c-format -msgid "Enforced %s" -msgstr "" - -#: ../cs_enforce.cpp:193 -msgid "" -"If what is MODES, it will enforce channelmode +R if it is\n" -"set. If +R is specified for what, 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." -msgstr "" -"Als er voor wat 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 aanstaat 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." - -#: ../cs_enforce.cpp:198 -msgid "" -"If what 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 what, 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." -msgstr "" -"Als er voor wat 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 wat\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." - -#: ../cs_enforce.cpp:178 ../cs_enforce.cpp:210 -msgid "Syntax: ENFORCE channel [what]" -msgstr "Syntax: ENFORCE kanaal [wat]" diff --git a/modules/extra/language/cs_enforce.pt_PT.po b/modules/extra/language/cs_enforce.pt_PT.po deleted file mode 100644 index 955ea87aa..000000000 --- a/modules/extra/language/cs_enforce.pt_PT.po +++ /dev/null @@ -1,88 +0,0 @@ -# Portuguese translations for cs_enforce -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as the Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:24-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Portuguese\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_enforce.cpp:127 -#, fuzzy -msgid "Enforce various channel modes and set options" -msgstr "" -" ENFORCE Verifica o cumprimento de vбrios modos de canal e opзхes " -"ajustadas" - -#: ../cs_enforce.cpp:180 -msgid "" -"Enforce various channel modes and set options. The channel\n" -"option indicates what channel to enforce the modes and options\n" -"on. The what 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 what 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." -msgstr "" -"Verifica o cumprimento de vбrios modos de canal e opзхes ajustadas.\n" -"O campo canal indica qual canal deve ter os modos e opзхes verificadas\n" -"O campo opзгo 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 opзгo 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." - -#: ../cs_enforce.cpp:147 ../cs_enforce.cpp:152 ../cs_enforce.cpp:157 -#: ../cs_enforce.cpp:162 ../cs_enforce.cpp:167 -#, c-format -msgid "Enforced %s" -msgstr "Verificado %s" - -#: ../cs_enforce.cpp:193 -msgid "" -"If what is MODES, it will enforce channelmode +R if it is\n" -"set. If +R is specified for what, 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." -msgstr "" -"Se opзгo for MODES, serб verificado o modo de canal +R caso ele\n" -"esteja ativado. Se +R for especificado para opзгo, 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." - -#: ../cs_enforce.cpp:198 -msgid "" -"If what 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 what, 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." -msgstr "" -"Se opзгo 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 opзгo, 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." - -#: ../cs_enforce.cpp:178 ../cs_enforce.cpp:210 -msgid "Syntax: ENFORCE channel [what]" -msgstr "Sintaxe: ENFORCE canal [opзгo]" diff --git a/modules/extra/language/cs_enforce.ru_RU.po b/modules/extra/language/cs_enforce.ru_RU.po deleted file mode 100644 index 2beef37cd..000000000 --- a/modules/extra/language/cs_enforce.ru_RU.po +++ /dev/null @@ -1,90 +0,0 @@ -# Russian translations for cs_enforce -# ?????????? ???????? ??? ?????? cs_enforce -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-25 21:38-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Russian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: ../cs_enforce.cpp:127 -#, fuzzy -msgid "Enforce various channel modes and set options" -msgstr "" -" ENFORCE Перепроверка и установка различных режимов и опций канала" - -#: ../cs_enforce.cpp:180 -msgid "" -"Enforce various channel modes and set options. The channel\n" -"option indicates what channel to enforce the modes and options\n" -"on. The what 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 what 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." -msgstr "" -"Перепроверка и установка различных режимов и опций канала.\n" -"Параметр указывает какие опции или режимы канала должны быть\n" -"перепроверены. В качестве параметра могут быть указаны: SET, SECUREOPS,\n" -"RESTRICTED, MODES, или +R. Если параметр не указан, по-умолчанию будет SET.\n" -" \n" -"Если в качестве параметра указано SET, будут перепроверены опции\n" -"SECUREOPS и RESTRICTED относительно пользователей на указанном канале\n" -"(при условии, что опции включены). Отдельно указанный параметр SECUREOPS\n" -"применит опцию SECUREOPS (даже если она НЕ установлена). Параметр\n" -"RESTRICTED применит опцию RESTRICTED (даже если она НЕ установлена)" - -#: ../cs_enforce.cpp:147 ../cs_enforce.cpp:152 ../cs_enforce.cpp:157 -#: ../cs_enforce.cpp:162 ../cs_enforce.cpp:167 -#, c-format -msgid "Enforced %s" -msgstr "Перепроверено: %s" - -#: ../cs_enforce.cpp:193 -msgid "" -"If what is MODES, it will enforce channelmode +R if it is\n" -"set. If +R is specified for what, 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." -msgstr "" -"Если в качестве параметра указано MODES, будет перепроверен режим +R\n" -"(если он установлен). Отдельно указанный параметр +R применит\n" -"канальный режим +R, даже если он не установлен, и забанит всех " -"пользователей,\n" -"которые не идентифицировались к своему нику или не имеют зарегистрированного " -"ника." - -#: ../cs_enforce.cpp:198 -msgid "" -"If what 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 what, 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." -msgstr "" -"Если в качестве параметра указано MODES, перепроверка осуществлена\n" -"НЕ БУДЕТ, так как текущий IRCD не поддерживает необходимые режимы.\n" -"Отдельно указанный параметр +R применит канальный режим, эквивалентный\n" -"режиму +R и забанит всех пользователей, которые не идентифицировались к " -"своему\n" -"нику или не имеют зарегистрированного ника." - -#: ../cs_enforce.cpp:178 ../cs_enforce.cpp:210 -msgid "Syntax: ENFORCE channel [what]" -msgstr "Синтаксис: ENFORCE #канал параметр" diff --git a/modules/extra/language/cs_tban.de_DE.po b/modules/extra/language/cs_tban.de_DE.po deleted file mode 100644 index 37ae58466..000000000 --- a/modules/extra/language/cs_tban.de_DE.po +++ /dev/null @@ -1,40 +0,0 @@ -# German translations for cs_tban -# German messages for cs_tban -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as the Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-26 00:16-0400\n" -"Last-Translator: Adam \n" -"Language-Team: German\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_tban.cpp:85 -#, c-format -msgid "%s banned from %s, will auto-expire in %s" -msgstr "%s gebannt von %s, wird auto-auslaufen in %s" - -#: ../cs_tban.cpp:95 -msgid "" -"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." -msgstr "" -"Bant ein User fьr eine bestimmte Zeit aus ein Channel\n" -"Wenn der Ban manuell entfernt wird, wird es NICHT ersetzt." - -#: ../cs_tban.cpp:61 -#, fuzzy -msgid "Bans the user for a given length of time" -msgstr " TBAN Bant ein User fьr eine bestimmte Zeit aus ein Channel" - -#: ../cs_tban.cpp:103 -msgid "Syntax: TBAN channel nick time" -msgstr "Syntax: TBAN Channel Nickname Zeit" diff --git a/modules/extra/language/cs_tban.it_IT.po b/modules/extra/language/cs_tban.it_IT.po deleted file mode 100644 index 3989c74d7..000000000 --- a/modules/extra/language/cs_tban.it_IT.po +++ /dev/null @@ -1,41 +0,0 @@ -# Italian translations for cs_tban -# Traduzioni italiane per il cs_tban -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as the Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-26 00:22-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Italian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_tban.cpp:85 -#, c-format -msgid "%s banned from %s, will auto-expire in %s" -msgstr "%s bannato da %s, scadrа automaticamente tra %s" - -#: ../cs_tban.cpp:95 -msgid "" -"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." -msgstr "" -"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." - -#: ../cs_tban.cpp:61 -#, fuzzy -msgid "Bans the user for a given length of time" -msgstr " TBAN Banna l'utente per un periodo di tempo specificato" - -#: ../cs_tban.cpp:103 -msgid "Syntax: TBAN channel nick time" -msgstr "Sintassi: TBAN canale nick tempo" diff --git a/modules/extra/language/cs_tban.nl_NL.po b/modules/extra/language/cs_tban.nl_NL.po deleted file mode 100644 index 18239f383..000000000 --- a/modules/extra/language/cs_tban.nl_NL.po +++ /dev/null @@ -1,41 +0,0 @@ -# Dutch translations for cs_tban -# Engelse vertalingen voor het cs_tban -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as the Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-26 00:15-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Dutch\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_tban.cpp:85 -#, c-format -msgid "%s banned from %s, will auto-expire in %s" -msgstr "%s verbannen van %s, zal verlopen in %s" - -#: ../cs_tban.cpp:95 -msgid "" -"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." -msgstr "" -"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." - -#: ../cs_tban.cpp:61 -#, fuzzy -msgid "Bans the user for a given length of time" -msgstr " TBAN Verban een gebruiker voor een bepaalde tijd" - -#: ../cs_tban.cpp:103 -msgid "Syntax: TBAN channel nick time" -msgstr "Syntax: TBAN kanaal nick tijd" diff --git a/modules/extra/language/cs_tban.pt_PT.po b/modules/extra/language/cs_tban.pt_PT.po deleted file mode 100644 index 944d977fd..000000000 --- a/modules/extra/language/cs_tban.pt_PT.po +++ /dev/null @@ -1,40 +0,0 @@ -# Portuguese translations for cs_tban -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as the Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-26 00:18-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Portuguese\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../cs_tban.cpp:85 -#, c-format -msgid "%s banned from %s, will auto-expire in %s" -msgstr "%s foi banido do %s, irб auto-expirar em %s" - -#: ../cs_tban.cpp:95 -msgid "" -"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." -msgstr "" -"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." - -#: ../cs_tban.cpp:61 -#, fuzzy -msgid "Bans the user for a given length of time" -msgstr " TBAN Bane o usuбrio por um determinado perнodo de tempo" - -#: ../cs_tban.cpp:103 -msgid "Syntax: TBAN channel nick time" -msgstr "Sintaxe: TBAN canal nick tempo" diff --git a/modules/extra/language/cs_tban.ru_RU.po b/modules/extra/language/cs_tban.ru_RU.po deleted file mode 100644 index 881c9ea79..000000000 --- a/modules/extra/language/cs_tban.ru_RU.po +++ /dev/null @@ -1,42 +0,0 @@ -# Russian translations for cs_tban -# ?????????? ???????? ??? ?????? cs_tban -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as the Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:49-0400\n" -"PO-Revision-Date: 2010-09-26 00:20-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Russian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: ../cs_tban.cpp:85 -#, c-format -msgid "%s banned from %s, will auto-expire in %s" -msgstr "Установленный бан %s на канале %s истечет через %s секунд" - -#: ../cs_tban.cpp:95 -msgid "" -"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." -msgstr "" -"Банит пользователя на указанный промежуток времени в секундах\n" -"Примечание: удаленный вручную (до своего истечения) бан НЕ БУДЕТ\n" -"переустановлен сервисами автоматически!" - -#: ../cs_tban.cpp:61 -#, fuzzy -msgid "Bans the user for a given length of time" -msgstr " TBAN Банит пользователя на указанный промежуток времени" - -#: ../cs_tban.cpp:103 -msgid "Syntax: TBAN channel nick time" -msgstr "Синтаксис: TBAN #канал ник время" diff --git a/modules/extra/language/hs_request.it_IT.po b/modules/extra/language/hs_request.it_IT.po deleted file mode 100644 index 5fa437bad..000000000 --- a/modules/extra/language/hs_request.it_IT.po +++ /dev/null @@ -1,149 +0,0 @@ -# Italian translations for hs_request -# Traduzioni italiane per il hs_request -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:50-0400\n" -"PO-Revision-Date: 2010-09-25 23:42-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Italian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../hs_request.cpp:267 -#, c-format -msgid "#%d Nick:%s, vhost:%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:265 -#, c-format -msgid "#%d Nick:%s, vhost:%s@%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:180 ../hs_request.cpp:238 -msgid "A memo informing the user will also be sent." -msgstr "Viene inviato un memo per informare l'utente." - -#: ../hs_request.cpp:178 -msgid "Activate the requested vHost for the given nick." -msgstr "Attiva il vHost richiesto per il nick specificato." - -#: ../hs_request.cpp:139 -#, fuzzy -msgid "Approve the requested vHost of a user" -msgstr "Attiva il vHost richiesto per il nick specificato." - -#: ../hs_request.cpp:286 -msgid "Convenience command for LIST +req" -msgstr "" - -#: ../hs_request.cpp:271 -#, c-format -msgid "Displayed all records (Count: %d)" -msgstr "" - -#: ../hs_request.cpp:166 ../hs_request.cpp:227 -#, c-format -msgid "No request for nick %s found." -msgstr "Nessuna richiesta trovata per il nick %s." - -#: ../hs_request.cpp:105 -#, c-format -msgid "Please wait %d seconds before requesting a new vHost" -msgstr "Prego attendere %d secondi prima di richiedere un nuovo vHost" - -#: ../hs_request.cpp:236 -msgid "Reject the requested vHost for the given nick." -msgstr "Rifiuta il vHost richiesto per il nick specificato." - -#: ../hs_request.cpp:196 -#, fuzzy -msgid "Reject the requested vHost of a user" -msgstr "Rifiuta il vHost richiesto per il nick specificato." - -#: ../hs_request.cpp:52 -#, fuzzy -msgid "Request a vHost for your nick" -msgstr " REQUEST Richiede un vHost per il tuo nick" - -#: ../hs_request.cpp:122 -msgid "" -"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." -msgstr "" -"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." - -#: ../hs_request.cpp:176 ../hs_request.cpp:187 -msgid "Syntax: ACTIVATE nick" -msgstr "Sintassi: ACTIVATE nick" - -#: ../hs_request.cpp:234 ../hs_request.cpp:245 -msgid "Syntax: REJECT nick" -msgstr "Sintassi: REJECT nick" - -#: ../hs_request.cpp:68 ../hs_request.cpp:120 ../hs_request.cpp:130 -msgid "Syntax: REQUEST vhost" -msgstr "Sintassi: REQUEST vhost" - -#: ../hs_request.cpp:296 -msgid "Syntax: WAITING" -msgstr "Sintassi: WAITING" - -#: ../hs_request.cpp:298 -msgid "" -"This command is provided for convenience. It is essentially\n" -"the same as performing a LIST +req ." -msgstr "" -"Questo comando и per comoditа. Praticamente и la stessa cosa che\n" -"eseguire un LIST +req ." - -#: ../hs_request.cpp:111 -msgid "Your vHost has been requested" -msgstr "Il tuo vHost и stato richiesto" - -#: ../hs_request.cpp:158 -msgid "[auto memo] Your requested vHost has been approved." -msgstr "[auto memo] Il vHost da te richiesto и stato approvato." - -#: ../hs_request.cpp:218 -msgid "[auto memo] Your requested vHost has been rejected." -msgstr "[auto memo] Il vHost da te richiesto и stato rifiutato." - -#: ../hs_request.cpp:216 -#, c-format -msgid "[auto memo] Your requested vHost has been rejected. Reason: %s" -msgstr "[auto memo] Il vHost da te richiesto и stato rifiutato. Motivo: %s" - -#: ../hs_request.cpp:438 -#, fuzzy, c-format -msgid "[auto memo] vHost %s has been requested by %s." -msgstr "[auto memo] и stato richiesto il vHost %s." - -#: ../hs_request.cpp:160 -#, c-format -msgid "vHost for %s has been activated" -msgstr "Il vHost per %s и stato attivato" - -#: ../hs_request.cpp:223 -#, c-format -msgid "vHost for %s has been rejected" -msgstr "Il vHost per %s и stato rifiutato" - -#~ msgid "" -#~ " ACTIVATE Approve the requested vHost of a user\n" -#~ " REJECT Reject the requested vHost of a user\n" -#~ " WAITING Convenience command for LIST +req" -#~ msgstr "" -#~ " ACTIVATE Approva il vHost richiesto di un utente\n" -#~ " REJECT Rifiuta il vHost richiesto di un utente\n" -#~ " WAITING Comando per LIST +req" diff --git a/modules/extra/language/hs_request.nl_NL.po b/modules/extra/language/hs_request.nl_NL.po deleted file mode 100644 index 2f1f065a1..000000000 --- a/modules/extra/language/hs_request.nl_NL.po +++ /dev/null @@ -1,150 +0,0 @@ -# Dutch translations for hs_request -# Engelse vertalingen voor het hs_request -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:50-0400\n" -"PO-Revision-Date: 2010-09-25 22:26-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Dutch\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../hs_request.cpp:267 -#, c-format -msgid "#%d Nick:%s, vhost:%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:265 -#, c-format -msgid "#%d Nick:%s, vhost:%s@%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:180 ../hs_request.cpp:238 -msgid "A memo informing the user will also be sent." -msgstr "" -"Een memo die de gebruiker op de hoogste stelt zal ook worden verstuurd." - -#: ../hs_request.cpp:178 -msgid "Activate the requested vHost for the given nick." -msgstr "Activeer de aangevraagde vHost voor de gegeven nick." - -#: ../hs_request.cpp:139 -#, fuzzy -msgid "Approve the requested vHost of a user" -msgstr "Activeer de aangevraagde vHost voor de gegeven nick." - -#: ../hs_request.cpp:286 -msgid "Convenience command for LIST +req" -msgstr "" - -#: ../hs_request.cpp:271 -#, c-format -msgid "Displayed all records (Count: %d)" -msgstr "" - -#: ../hs_request.cpp:166 ../hs_request.cpp:227 -#, c-format -msgid "No request for nick %s found." -msgstr "Geen aanvraag voor nick %s gevonden." - -#: ../hs_request.cpp:105 -#, c-format -msgid "Please wait %d seconds before requesting a new vHost" -msgstr "Wacht %d seconden voor je een nieuwe vHost aanvraagt" - -#: ../hs_request.cpp:236 -msgid "Reject the requested vHost for the given nick." -msgstr "Keur de aangevraagde vHost voor de gegeven nick af." - -#: ../hs_request.cpp:196 -#, fuzzy -msgid "Reject the requested vHost of a user" -msgstr "Keur de aangevraagde vHost voor de gegeven nick af." - -#: ../hs_request.cpp:52 -#, fuzzy -msgid "Request a vHost for your nick" -msgstr " REQUEST Vraag een vHost aan voor je nick" - -#: ../hs_request.cpp:122 -msgid "" -"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." -msgstr "" -"Verzoek de gegeven vHost te activeren voor jouw nick bij de\n" -"netwerk beheerders. Het kan even duren voordat je aanvraag\n" -"afgehandeld wordt." - -#: ../hs_request.cpp:176 ../hs_request.cpp:187 -msgid "Syntax: ACTIVATE nick" -msgstr "Gebruik: ACTIVATE nick" - -#: ../hs_request.cpp:234 ../hs_request.cpp:245 -msgid "Syntax: REJECT nick" -msgstr "Gebruik: REJECT nick" - -#: ../hs_request.cpp:68 ../hs_request.cpp:120 ../hs_request.cpp:130 -msgid "Syntax: REQUEST vhost" -msgstr "Gebruik: REQUEST vhost" - -#: ../hs_request.cpp:296 -msgid "Syntax: WAITING" -msgstr "Gebruik: WAITING" - -#: ../hs_request.cpp:298 -msgid "" -"This command is provided for convenience. It is essentially\n" -"the same as performing a LIST +req ." -msgstr "" -"Dit commando is beschikbaar als handigheid. Het is simpelweg\n" -"hetzelfde als LIST +req ." - -#: ../hs_request.cpp:111 -msgid "Your vHost has been requested" -msgstr "Je vHost is aangevraagd" - -#: ../hs_request.cpp:158 -msgid "[auto memo] Your requested vHost has been approved." -msgstr "[auto memo] Je aangevraagde vHost is geaccepteerd." - -#: ../hs_request.cpp:218 -msgid "[auto memo] Your requested vHost has been rejected." -msgstr "[auto memo] Je aangevraagde vHost is afgekeurd." - -#: ../hs_request.cpp:216 -#, c-format -msgid "[auto memo] Your requested vHost has been rejected. Reason: %s" -msgstr "[auto memo] Je aangevraagde vHost is afgekeurd. Reden: %s" - -#: ../hs_request.cpp:438 -#, fuzzy, c-format -msgid "[auto memo] vHost %s has been requested by %s." -msgstr "[auto memo] vHost %s is aangevraagd." - -#: ../hs_request.cpp:160 -#, c-format -msgid "vHost for %s has been activated" -msgstr "vHost voor %s is geactiveerd" - -#: ../hs_request.cpp:223 -#, c-format -msgid "vHost for %s has been rejected" -msgstr "vHost voor %s is afgekeurd" - -#~ msgid "" -#~ " ACTIVATE Approve the requested vHost of a user\n" -#~ " REJECT Reject the requested vHost of a user\n" -#~ " WAITING Convenience command for LIST +req" -#~ msgstr "" -#~ " ACTIVATE Activeer de aangevraagde vHost voor een gebruiker\n" -#~ " REJECT Keur de aangevraagde vHost voor een gebruiker af\n" -#~ " WAITING Snelkoppeling naar LIST +req" diff --git a/modules/extra/language/hs_request.pt_PT.po b/modules/extra/language/hs_request.pt_PT.po deleted file mode 100644 index 74f767395..000000000 --- a/modules/extra/language/hs_request.pt_PT.po +++ /dev/null @@ -1,148 +0,0 @@ -# Portuguese translations for hs_request -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:50-0400\n" -"PO-Revision-Date: 2010-09-25 22:48-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Portuguese\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../hs_request.cpp:267 -#, c-format -msgid "#%d Nick:%s, vhost:%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:265 -#, c-format -msgid "#%d Nick:%s, vhost:%s@%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:180 ../hs_request.cpp:238 -msgid "A memo informing the user will also be sent." -msgstr "Um memo informando o usuбrio tambйm serб enviado." - -#: ../hs_request.cpp:178 -msgid "Activate the requested vHost for the given nick." -msgstr "Ativa o vHost solicitado para o nick fornecido." - -#: ../hs_request.cpp:139 -#, fuzzy -msgid "Approve the requested vHost of a user" -msgstr "Ativa o vHost solicitado para o nick fornecido." - -#: ../hs_request.cpp:286 -msgid "Convenience command for LIST +req" -msgstr "" - -#: ../hs_request.cpp:271 -#, c-format -msgid "Displayed all records (Count: %d)" -msgstr "" - -#: ../hs_request.cpp:166 ../hs_request.cpp:227 -#, c-format -msgid "No request for nick %s found." -msgstr "Nenhum pedido encontrado para o nick %s." - -#: ../hs_request.cpp:105 -#, c-format -msgid "Please wait %d seconds before requesting a new vHost" -msgstr "Por favor, espere %d segundos antes de fazer um novo pedido de vHost" - -#: ../hs_request.cpp:236 -msgid "Reject the requested vHost for the given nick." -msgstr "Recusa o pedido de vHost para o nick fornecido." - -#: ../hs_request.cpp:196 -#, fuzzy -msgid "Reject the requested vHost of a user" -msgstr "Recusa o pedido de vHost para o nick fornecido." - -#: ../hs_request.cpp:52 -#, fuzzy -msgid "Request a vHost for your nick" -msgstr " REQUEST Request a vHost for your nick" - -#: ../hs_request.cpp:122 -msgid "" -"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." -msgstr "" -"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." - -#: ../hs_request.cpp:176 ../hs_request.cpp:187 -msgid "Syntax: ACTIVATE nick" -msgstr "Sintaxe: ACTIVATE nick" - -#: ../hs_request.cpp:234 ../hs_request.cpp:245 -msgid "Syntax: REJECT nick" -msgstr "Sintaxe: REJECT nick" - -#: ../hs_request.cpp:68 ../hs_request.cpp:120 ../hs_request.cpp:130 -msgid "Syntax: REQUEST vhost" -msgstr "Sintaxe: REQUEST vhost" - -#: ../hs_request.cpp:296 -msgid "Syntax: WAITING" -msgstr "Sintaxe: WAITING" - -#: ../hs_request.cpp:298 -msgid "" -"This command is provided for convenience. It is essentially\n" -"the same as performing a LIST +req ." -msgstr "" -"Este comando й usado por conveniкncia. Й essencialmente\n" -"o mesmo que fazer um LIST +req" - -#: ../hs_request.cpp:111 -msgid "Your vHost has been requested" -msgstr "Seu pedido de vHost foi encaminhado" - -#: ../hs_request.cpp:158 -msgid "[auto memo] Your requested vHost has been approved." -msgstr "[Auto Memo] Seu pedido de vHost foi aprovado." - -#: ../hs_request.cpp:218 -msgid "[auto memo] Your requested vHost has been rejected." -msgstr "[Auto Memo] Seu pedido de vHost foi recusado." - -#: ../hs_request.cpp:216 -#, c-format -msgid "[auto memo] Your requested vHost has been rejected. Reason: %s" -msgstr "[Auto Memo] Seu pedido de vHost foi recusado. Motivo: %s" - -#: ../hs_request.cpp:438 -#, fuzzy, c-format -msgid "[auto memo] vHost %s has been requested by %s." -msgstr "[Auto Memo] O vHost %s foi solicitado." - -#: ../hs_request.cpp:160 -#, c-format -msgid "vHost for %s has been activated" -msgstr "O vHost para %s foi ativado" - -#: ../hs_request.cpp:223 -#, c-format -msgid "vHost for %s has been rejected" -msgstr "O vHost de %s foi recusado" - -#~ msgid "" -#~ " ACTIVATE Approve the requested vHost of a user\n" -#~ " REJECT Reject the requested vHost of a user\n" -#~ " WAITING Convenience command for LIST +req" -#~ msgstr "" -#~ " 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" diff --git a/modules/extra/language/hs_request.ru_RU.po b/modules/extra/language/hs_request.ru_RU.po deleted file mode 100644 index 81c905802..000000000 --- a/modules/extra/language/hs_request.ru_RU.po +++ /dev/null @@ -1,151 +0,0 @@ -# Russian translations for hs_request -# ?????????? ???????? ??? ?????? PACKAGE. -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-06-17 13:50-0400\n" -"PO-Revision-Date: 2010-09-25 23:27-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Russian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: ../hs_request.cpp:267 -#, c-format -msgid "#%d Nick:%s, vhost:%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:265 -#, c-format -msgid "#%d Nick:%s, vhost:%s@%s (%s - %s)" -msgstr "" - -#: ../hs_request.cpp:180 ../hs_request.cpp:238 -msgid "A memo informing the user will also be sent." -msgstr "Пользователю будет послано авто-уведомление об активации его запроса." - -#: ../hs_request.cpp:178 -msgid "Activate the requested vHost for the given nick." -msgstr "Утвердить запрашиваемый vHost для указанного ника." - -#: ../hs_request.cpp:139 -#, fuzzy -msgid "Approve the requested vHost of a user" -msgstr "Утвердить запрашиваемый vHost для указанного ника." - -#: ../hs_request.cpp:286 -msgid "Convenience command for LIST +req" -msgstr "" - -#: ../hs_request.cpp:271 -#, c-format -msgid "Displayed all records (Count: %d)" -msgstr "" - -#: ../hs_request.cpp:166 ../hs_request.cpp:227 -#, c-format -msgid "No request for nick %s found." -msgstr "Запрос на vHost для ника %s не найден." - -#: ../hs_request.cpp:105 -#, c-format -msgid "Please wait %d seconds before requesting a new vHost" -msgstr "Пожалуйста, подождите %d секунд, прежде чем запрашивать новый vHost" - -#: ../hs_request.cpp:236 -msgid "Reject the requested vHost for the given nick." -msgstr "Отклонить запрашиваемый vHost для указанного ника." - -#: ../hs_request.cpp:196 -#, fuzzy -msgid "Reject the requested vHost of a user" -msgstr "Отклонить запрашиваемый vHost для указанного ника." - -#: ../hs_request.cpp:52 -#, fuzzy -msgid "Request a vHost for your nick" -msgstr " REQUEST Запрос на vHost для вашего текущего ника" - -#: ../hs_request.cpp:122 -msgid "" -"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." -msgstr "" -"Отправляет запрос на активацию vHost, который будет рассмотрен одним из\n" -"администраторов сети. Просьба проявить терпение, пока запрос\n" -"рассматривается администрацией." - -#: ../hs_request.cpp:176 ../hs_request.cpp:187 -msgid "Syntax: ACTIVATE nick" -msgstr "Синтаксис: ACTIVATE ник" - -#: ../hs_request.cpp:234 ../hs_request.cpp:245 -msgid "Syntax: REJECT nick" -msgstr "Синтаксис: REJECT ник" - -#: ../hs_request.cpp:68 ../hs_request.cpp:120 ../hs_request.cpp:130 -msgid "Syntax: REQUEST vhost" -msgstr "Синтаксис: REQUEST vHost" - -#: ../hs_request.cpp:296 -msgid "Syntax: WAITING" -msgstr "Синтаксис: WAITING" - -#: ../hs_request.cpp:298 -msgid "" -"This command is provided for convenience. It is essentially\n" -"the same as performing a LIST +req ." -msgstr "" -"Данная команда создана для удобства использования и выводит список " -"запросов,\n" -"ожидающих обработки. Аналогичная команда: LIST +req ." - -#: ../hs_request.cpp:111 -msgid "Your vHost has been requested" -msgstr "Ваш запрос на vHost отправлен." - -#: ../hs_request.cpp:158 -msgid "[auto memo] Your requested vHost has been approved." -msgstr "[авто-сообщение] Запрашиваемый вами vHost утвержден и активирован." - -#: ../hs_request.cpp:218 -msgid "[auto memo] Your requested vHost has been rejected." -msgstr "[авто-сообщение] Запрашиваемый вами vHost отклонен." - -#: ../hs_request.cpp:216 -#, c-format -msgid "[auto memo] Your requested vHost has been rejected. Reason: %s" -msgstr "[авто-сообщение] Запрашиваемый вами vHost отклонен. Причина: %s" - -#: ../hs_request.cpp:438 -#, fuzzy, c-format -msgid "[auto memo] vHost %s has been requested by %s." -msgstr "[авто-сообщение] Был запрошен vHost %s" - -#: ../hs_request.cpp:160 -#, c-format -msgid "vHost for %s has been activated" -msgstr "vHost для %s успешно активирован" - -#: ../hs_request.cpp:223 -#, c-format -msgid "vHost for %s has been rejected" -msgstr "vHost для %s отклонен." - -#~ msgid "" -#~ " ACTIVATE Approve the requested vHost of a user\n" -#~ " REJECT Reject the requested vHost of a user\n" -#~ " WAITING Convenience command for LIST +req" -#~ msgstr "" -#~ " ACTIVATE Утвердить запрашиваемый пользователем vHost\n" -#~ " REJECT Отклонить запрашиваемый пользователем vHost\n" -#~ " WAITING Список запросов ожидающих обработки (аналог LIST +req)" diff --git a/modules/extra/language/ns_maxemail.de_DE.po b/modules/extra/language/ns_maxemail.de_DE.po deleted file mode 100644 index fe1f3aef4..000000000 --- a/modules/extra/language/ns_maxemail.de_DE.po +++ /dev/null @@ -1,28 +0,0 @@ -# German translations for ns_maxemail -# German messages for ns_maxemail -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-04 03:41-0500\n" -"PO-Revision-Date: 2010-09-26 00:03-0400\n" -"Last-Translator: Adam \n" -"Language-Team: German\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../ns_maxemail.cpp:33 -#, fuzzy, c-format -msgid "The given email address has reached its usage limit of %d users." -msgstr "Die angegebene eMail hat die limit Begrenzung von %d User erreicht." - -#: ../ns_maxemail.cpp:31 -#, fuzzy -msgid "The given email address has reached its usage limit of 1 user." -msgstr "Die angegebene eMail hat die limit Begrenzung von 1 User erreicht." diff --git a/modules/extra/language/ns_maxemail.it_IT.po b/modules/extra/language/ns_maxemail.it_IT.po deleted file mode 100644 index 1cd1a4083..000000000 --- a/modules/extra/language/ns_maxemail.it_IT.po +++ /dev/null @@ -1,32 +0,0 @@ -# Italian translations for ns_maxemail -# Traduzioni italiane per il ns_maxemail -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-04 03:41-0500\n" -"PO-Revision-Date: 2010-09-26 00:11-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Italian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../ns_maxemail.cpp:33 -#, fuzzy, c-format -msgid "The given email address has reached its usage limit of %d users." -msgstr "" -"L'indirizzo email specificato ha raggiunto il suo limite d'utilizzo di %d " -"utenti." - -#: ../ns_maxemail.cpp:31 -#, fuzzy -msgid "The given email address has reached its usage limit of 1 user." -msgstr "" -"L'indirizzo email specificato ha raggiunto il suo limite d'utilizzo di 1 " -"utente." diff --git a/modules/extra/language/ns_maxemail.nl_NL.po b/modules/extra/language/ns_maxemail.nl_NL.po deleted file mode 100644 index fb84c786a..000000000 --- a/modules/extra/language/ns_maxemail.nl_NL.po +++ /dev/null @@ -1,28 +0,0 @@ -# Dutch translations for ns_maxemail -# Engelse vertalingen voor het ns_maxemail -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-04 03:41-0500\n" -"PO-Revision-Date: 2010-09-25 23:57-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Dutch\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../ns_maxemail.cpp:33 -#, fuzzy, c-format -msgid "The given email address has reached its usage limit of %d users." -msgstr "Het gegeven email adres heeft de limiet van %d gebruikers bereikt." - -#: ../ns_maxemail.cpp:31 -#, fuzzy -msgid "The given email address has reached its usage limit of 1 user." -msgstr "Het gegeven email adres heeft de limiet van 1 gebruiker bereikt." diff --git a/modules/extra/language/ns_maxemail.pt_PT.po b/modules/extra/language/ns_maxemail.pt_PT.po deleted file mode 100644 index ff807f582..000000000 --- a/modules/extra/language/ns_maxemail.pt_PT.po +++ /dev/null @@ -1,28 +0,0 @@ -# Portuguese translations for ns_maxemail -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-04 03:41-0500\n" -"PO-Revision-Date: 2010-09-26 00:05-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Portuguese\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: ../ns_maxemail.cpp:33 -#, fuzzy, c-format -msgid "The given email address has reached its usage limit of %d users." -msgstr "" -"O endereзo de email fornecido alcanзou seu limite de uso de %d usuбrios." - -#: ../ns_maxemail.cpp:31 -#, fuzzy -msgid "The given email address has reached its usage limit of 1 user." -msgstr "O endereзo de email fornecido alcanзou seu limite de uso de 1 usuбrio." diff --git a/modules/extra/language/ns_maxemail.ru_RU.po b/modules/extra/language/ns_maxemail.ru_RU.po deleted file mode 100644 index 1fa267d55..000000000 --- a/modules/extra/language/ns_maxemail.ru_RU.po +++ /dev/null @@ -1,30 +0,0 @@ -# Russian translations for ns_maxemail -# ?????????? ???????? ??? ?????? ns_maxemail -# Copyright (C) 2011 Anope Team -# This file is distributed under the same license as Anope IRC Services -# Adam , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: Anope\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-02-04 03:41-0500\n" -"PO-Revision-Date: 2010-09-26 00:07-0400\n" -"Last-Translator: Adam \n" -"Language-Team: Russian\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: ../ns_maxemail.cpp:33 -#, fuzzy, c-format -msgid "The given email address has reached its usage limit of %d users." -msgstr "" -"Указанный вами email-адрес используется максимально допустимое кол-во раз: %d" - -#: ../ns_maxemail.cpp:31 -#, fuzzy -msgid "The given email address has reached its usage limit of 1 user." -msgstr "Указанный вами email-адрес уже кем-то используется." diff --git a/modules/extra/language/update.sh b/modules/extra/language/update.sh deleted file mode 100755 index 1f16ea961..000000000 --- a/modules/extra/language/update.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -for f in `ls ../*.cpp` -do - BASE=`basename $f | cut -d'.' -f1` - xgettext -C -s -d $BASE -o $BASE.pot --from-code=utf-8 --keyword --keyword=_ $f -done - -for f in `ls *.po` -do - msgmerge -v -s -U $f `basename $f | cut -d'.' -f1`.pot -done - -rm -f *~ diff --git a/modules/extra/ns_set_misc.cpp b/modules/extra/ns_set_misc.cpp deleted file mode 100644 index f0ee269cc..000000000 --- a/modules/extra/ns_set_misc.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -/*************************************************************************/ - -#include "module.h" - -class CommandNSSetMisc : public Command -{ - public: - CommandNSSetMisc(Module *creator, const Anope::string &cname = "nickserv/set/misc", size_t min = 1) : Command(creator, cname, min, min + 1) - { - this->SetSyntax(_("\037parameter\037")); - } - - void Run(CommandSource &source, const Anope::string &user, const Anope::string ¶m) - { - NickAlias *na = findnick(user); - if (!na) - { - source.Reply(NICK_X_NOT_REGISTERED, user.c_str()); - return; - } - NickCore *nc = na->nc; - - nc->Shrink("ns_set_misc:" + source.command.replace_all_cs(" ", "_")); - if (!param.empty()) - { - nc->Extend("ns_set_misc:" + source.command.replace_all_cs(" ", "_"), new ExtensibleItemRegular(param)); - source.Reply(CHAN_SETTING_CHANGED, source.command.c_str(), nc->display.c_str(), param.c_str()); - } - else - source.Reply(CHAN_SETTING_UNSET, source.command.c_str(), nc->display.c_str()); - - return; - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - this->Run(source, source.u->Account()->display, params[0]); - } -}; - -class CommandNSSASetMisc : public CommandNSSetMisc -{ - public: - CommandNSSASetMisc(Module *creator) : CommandNSSetMisc(creator, "nickserv/saset/misc", 2) - { - this->ClearSyntax(); - this->SetSyntax(_("\037nickname\037 \037parameter\037")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - this->Run(source, params[0], params[1]); - } -}; - -class NSSetMisc : public Module -{ - CommandNSSetMisc commandnssetmisc; - CommandNSSASetMisc commandnssasetmisc; - - public: - NSSetMisc(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), - commandnssetmisc(this), commandnssasetmisc(this) - { - this->SetAuthor("Anope"); - - Implementation i[] = { I_OnNickInfo, I_OnDatabaseWriteMetadata, I_OnDatabaseReadMetadata }; - ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); - - ModuleManager::RegisterService(&this->commandnssetmisc); - ModuleManager::RegisterService(&this->commandnssasetmisc); - } - - void OnNickInfo(CommandSource &source, NickAlias *na, bool ShowHidden) - { - std::deque list; - na->nc->GetExtList(list); - - for (unsigned i = 0; i < list.size(); ++i) - { - if (list[i].find("ns_set_misc:") != 0) - continue; - - Anope::string value; - if (na->nc->GetExtRegular(list[i], value)) - source.Reply(" %s: %s", list[i].substr(12).replace_all_cs("_", " ").c_str(), value.c_str()); - } - } - - void OnDatabaseWriteMetadata(void (*WriteMetadata)(const Anope::string &, const Anope::string &), NickCore *nc) - { - std::deque list; - nc->GetExtList(list); - - for (unsigned i = 0; i < list.size(); ++i) - { - if (list[i].find("ns_set_misc:") != 0) - continue; - - Anope::string value; - if (nc->GetExtRegular(list[i], value)) - WriteMetadata(list[i], ":" + value); - } - } - - EventReturn OnDatabaseReadMetadata(NickCore *nc, const Anope::string &key, const std::vector ¶ms) - { - if (key.find("ns_set_misc:") == 0) - nc->Extend(key, new ExtensibleItemRegular(params[0])); - - return EVENT_CONTINUE; - } -}; - -MODULE_INIT(NSSetMisc) diff --git a/modules/extra/os_defcon.cpp b/modules/extra/os_defcon.cpp deleted file mode 100644 index ea513e1dc..000000000 --- a/modules/extra/os_defcon.cpp +++ /dev/null @@ -1,663 +0,0 @@ -/* OperServ core functions - * - * (C) 2003-2011 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -/*************************************************************************/ - -#include "module.h" -#include "global.h" -#include "os_session.h" - -enum DefconLevel -{ - DEFCON_NO_NEW_CHANNELS, - DEFCON_NO_NEW_NICKS, - DEFCON_NO_MLOCK_CHANGE, - DEFCON_FORCE_CHAN_MODES, - DEFCON_REDUCE_SESSION, - DEFCON_NO_NEW_CLIENTS, - DEFCON_OPER_ONLY, - DEFCON_SILENT_OPER_ONLY, - DEFCON_AKILL_NEW_CLIENTS, - DEFCON_NO_NEW_MEMOS -}; - -bool DefConModesSet = false; - -struct DefconConfig -{ - std::vector > DefCon; - Flags DefConModesOn; - Flags DefConModesOff; - std::map DefConModesOnParams; - - int defaultlevel, sessionlimit; - Anope::string chanmodes, message, offmessage, akillreason; - std::vector defcons; - time_t akillexpire, timeout; - bool globalondefcon; - - DefconConfig() - { - this->DefCon.resize(6); - this->defcons.resize(5); - } - - bool Check(DefconLevel level) - { - return this->Check(this->defaultlevel, level); - } - - bool Check(int dlevel, DefconLevel level) - { - return this->DefCon[dlevel].test(level); - } - - void Add(int dlevel, DefconLevel level) - { - this->DefCon[dlevel][level] = true; - } - - void Del(int dlevel, DefconLevel level) - { - this->DefCon[dlevel][level] = false; - } - - bool SetDefConParam(ChannelModeName Name, const Anope::string &buf) - { - return DefConModesOnParams.insert(std::make_pair(Name, buf)).second; - } - - void UnsetDefConParam(ChannelModeName Name) - { - DefConModesOnParams.erase(Name); - } - - bool GetDefConParam(ChannelModeName Name, Anope::string &buf) - { - std::map::iterator it = DefConModesOnParams.find(Name); - - buf.clear(); - - if (it != DefConModesOnParams.end()) - { - buf = it->second; - return true; - } - - return false; - } -}; - -static DefconConfig DConfig; - -/**************************************************************************/ - -void defcon_sendlvls(CommandSource &source); -void runDefCon(); -static Anope::string defconReverseModes(const Anope::string &modes); - -class DefConTimeout : public CallBack -{ - int level; - - public: - DefConTimeout(Module *mod, int newlevel) : CallBack(mod, DConfig.timeout), level(newlevel) { } - - void Tick(time_t) - { - if (DConfig.defaultlevel != level) - { - DConfig.defaultlevel = level; - FOREACH_MOD(I_OnDefconLevel, OnDefconLevel(level)); - Log(findbot(Config->OperServ), "operserv/defcon") << "Defcon level timeout, returning to level " << level; - - if (DConfig.globalondefcon) - { - if (!DConfig.offmessage.empty()) - global->SendGlobal(findbot(Config->Global), "", DConfig.offmessage); - else - global->SendGlobal(findbot(Config->Global), "", Anope::printf(translate(_("The Defcon Level is now at Level: \002%d\002")), DConfig.defaultlevel)); - - if (!DConfig.message.empty()) - global->SendGlobal(findbot(Config->Global), "", DConfig.message); - } - - runDefCon(); - } - } -}; -static DefConTimeout *timeout; - -class CommandOSDefcon : public Command -{ - void SendLevels(CommandSource &source) - { - if (DConfig.Check(DEFCON_NO_NEW_CHANNELS)) - source.Reply(_("* No new channel registrations")); - if (DConfig.Check(DEFCON_NO_NEW_NICKS)) - source.Reply(_("* No new nick registrations")); - if (DConfig.Check(DEFCON_NO_MLOCK_CHANGE)) - source.Reply(_("* No MLOCK changes")); - if (DConfig.Check(DEFCON_FORCE_CHAN_MODES) && !DConfig.chanmodes.empty()) - source.Reply(_("* Force Chan Modes (%s) to be set on all channels"), DConfig.chanmodes.c_str()); - if (DConfig.Check(DEFCON_REDUCE_SESSION)) - source.Reply(_("* Use the reduced session limit of %d"), DConfig.sessionlimit); - if (DConfig.Check(DEFCON_NO_NEW_CLIENTS)) - source.Reply(_("* Kill any NEW clients connecting")); - if (DConfig.Check(DEFCON_OPER_ONLY)) - source.Reply(_("* Ignore any non-opers with message")); - if (DConfig.Check(DEFCON_SILENT_OPER_ONLY)) - source.Reply(_("* Silently ignore non-opers")); - if (DConfig.Check(DEFCON_AKILL_NEW_CLIENTS)) - source.Reply(_("* AKILL any new clients connecting")); - if (DConfig.Check(DEFCON_NO_NEW_MEMOS)) - source.Reply(_("* No new memos sent")); - } - - public: - CommandOSDefcon(Module *creator) : Command(creator, "operserv/defcon", 1, 1) - { - this->SetDesc(_("Manipulate the DefCon system")); - this->SetSyntax(_("[\0021\002|\0022\002|\0023\002|\0024\002|\0025\002]")); - } - - void Execute(CommandSource &source, const std::vector ¶ms) - { - User *u = source.u; - const Anope::string &lvl = params[0]; - - if (lvl.empty()) - { - source.Reply(_("Services are now at DEFCON \002%d\002"), DConfig.defaultlevel); - this->SendLevels(source); - return; - } - - int newLevel = 0; - try - { - newLevel = convertTo(lvl); - } - catch (const ConvertException &) { } - - if (newLevel < 1 || newLevel > 5) - { - this->OnSyntaxError(source, ""); - return; - } - - DConfig.defaultlevel = newLevel; - - FOREACH_MOD(I_OnDefconLevel, OnDefconLevel(newLevel)); - - if (timeout) - { - delete timeout; - timeout = NULL; - } - - if (DConfig.timeout) - timeout = new DefConTimeout(this->module, 5); - - source.Reply(_("Services are now at DEFCON \002%d\002"), DConfig.defaultlevel); - this->SendLevels(source); - Log(LOG_ADMIN, u, this) << "to change defcon level to " << newLevel; - - /* Global notice the user what is happening. Also any Message that - the Admin would like to add. Set in config file. */ - if (DConfig.globalondefcon) - { - if (DConfig.defaultlevel == 5 && !DConfig.offmessage.empty()) - global->SendGlobal(findbot(Config->Global), "", DConfig.offmessage); - else if (DConfig.defaultlevel != 5) - { - global->SendGlobal(findbot(Config->Global), "", Anope::printf(_("The Defcon level is now at: \002%d\002"), DConfig.defaultlevel)); - if (!DConfig.message.empty()) - global->SendGlobal(findbot(Config->Global), "", DConfig.message); - } - } - - /* Run any defcon functions, e.g. FORCE CHAN MODE */ - runDefCon(); - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("The defcon system can be used to implement a pre-defined\n" - "set of restrictions to services useful during an attempted\n" - "attack on the network.")); - return true; - } -}; - -class OSDefcon : public Module -{ - service_reference session_service; - service_reference akills; - CommandOSDefcon commandosdefcon; - - void ParseModeString() - { - int add = -1; /* 1 if adding, 0 if deleting, -1 if neither */ - unsigned char mode; - ChannelMode *cm; - ChannelModeParam *cmp; - Anope::string modes, param; - - spacesepstream ss(DConfig.chanmodes); - - DConfig.DefConModesOn.ClearFlags(); - DConfig.DefConModesOff.ClearFlags(); - ss.GetToken(modes); - - /* Loop while there are modes to set */ - for (unsigned i = 0, end = modes.length(); i < end; ++i) - { - mode = modes[i]; - - switch (mode) - { - case '+': - add = 1; - continue; - case '-': - add = 0; - continue; - default: - if (add < 0) - continue; - } - - if ((cm = ModeManager::FindChannelModeByChar(mode))) - { - if (cm->Type == MODE_STATUS || cm->Type == MODE_LIST || !cm->CanSet(NULL)) - { - Log() << "DefConChanModes mode character '" << mode << "' cannot be locked"; - continue; - } - else if (add) - { - DConfig.DefConModesOn.SetFlag(cm->Name); - DConfig.DefConModesOff.UnsetFlag(cm->Name); - - if (cm->Type == MODE_PARAM) - { - cmp = debug_cast(cm); - - if (!ss.GetToken(param)) - { - Log() << "DefConChanModes mode character '" << mode << "' has no parameter while one is expected"; - continue; - } - - if (!cmp->IsValid(param)) - continue; - - DConfig.SetDefConParam(cmp->Name, param); - } - } - else if (DConfig.DefConModesOn.HasFlag(cm->Name)) - { - DConfig.DefConModesOn.UnsetFlag(cm->Name); - - if (cm->Type == MODE_PARAM) - DConfig.UnsetDefConParam(cm->Name); - } - } - } - - /* We can't mlock +L if +l is not mlocked as well. */ - if ((cm = ModeManager::FindChannelModeByName(CMODE_REDIRECT)) && DConfig.DefConModesOn.HasFlag(cm->Name) && !DConfig.DefConModesOn.HasFlag(CMODE_LIMIT)) - { - DConfig.DefConModesOn.UnsetFlag(CMODE_REDIRECT); - - Log() << "DefConChanModes must lock mode +l as well to lock mode +L"; - } - - /* Some ircd we can't set NOKNOCK without INVITE */ - /* So check if we need there is a NOKNOCK MODE and that we need INVITEONLY */ - if (ircd->knock_needs_i && (cm = ModeManager::FindChannelModeByName(CMODE_NOKNOCK)) && DConfig.DefConModesOn.HasFlag(cm->Name) && !DConfig.DefConModesOn.HasFlag(CMODE_INVITE)) - { - DConfig.DefConModesOn.UnsetFlag(CMODE_NOKNOCK); - Log() << "DefConChanModes must lock mode +i as well to lock mode +K"; - } - } - - public: - OSDefcon(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, SUPPORTED), session_service("session"), akills("xlinemanager/sgline"), commandosdefcon(this) - { - this->SetAuthor("Anope"); - - Implementation i[] = { I_OnReload, I_OnChannelModeSet, I_OnChannelModeUnset, I_OnPreCommand, I_OnUserConnect, I_OnChannelModeAdd, I_OnChannelCreate }; - ModuleManager::Attach(i, this, sizeof(i) / sizeof(Implementation)); - - ModuleManager::RegisterService(&commandosdefcon); - - try - { - this->OnReload(); - } - catch (const ConfigException &ex) - { - throw ModuleException(ex.GetReason()); - } - } - - void OnReload() - { - ConfigReader config; - DefconConfig dconfig; - - dconfig.defaultlevel = config.ReadInteger("defcon", "defaultlevel", 0, 0); - dconfig.defcons[4] = config.ReadValue("defcon", "level4", 0); - dconfig.defcons[3] = config.ReadValue("defcon", "level3", 0); - dconfig.defcons[2] = config.ReadValue("defcon", "level2", 0); - dconfig.defcons[1] = config.ReadValue("defcon", "level1", 0); - dconfig.sessionlimit = config.ReadInteger("defcon", "sessionlimit", 0, 0); - dconfig.akillreason = config.ReadValue("defcon", "akillreason", 0); - dconfig.akillexpire = dotime(config.ReadValue("defcon", "akillexpire", 0)); - dconfig.chanmodes = config.ReadValue("defcon", "chanmodes", 0); - dconfig.timeout = dotime(config.ReadValue("defcon", "timeout", 0)); - dconfig.globalondefcon = config.ReadFlag("defcon", "globalondefcon", 0); - dconfig.message = config.ReadValue("defcon", "message", 0); - dconfig.offmessage = config.ReadValue("defcon", "offmessage", 0); - - if (dconfig.defaultlevel < 1 || dconfig.defaultlevel > 5) - throw ConfigException("The value for must be between 1 and 5"); - else if (dconfig.akillexpire <= 0) - throw ConfigException("The value for must be greater than zero!"); - - for (unsigned level = 1; level < 5; ++level) - { - spacesepstream operations(dconfig.defcons[level]); - Anope::string operation; - while (operations.GetToken(operation)) - { - if (operation.equals_ci("nonewchannels")) - dconfig.Add(level, DEFCON_NO_NEW_CHANNELS); - else if (operation.equals_ci("nonewnicks")) - dconfig.Add(level, DEFCON_NO_NEW_NICKS); - else if (operation.equals_ci("nomlockchanges")) - dconfig.Add(level, DEFCON_NO_MLOCK_CHANGE); - else if (operation.equals_ci("forcechanmodes")) - dconfig.Add(level, DEFCON_FORCE_CHAN_MODES); - else if (operation.equals_ci("reducedsessions")) - dconfig.Add(level, DEFCON_REDUCE_SESSION); - else if (operation.equals_ci("nonewclients")) - dconfig.Add(level, DEFCON_NO_NEW_CLIENTS); - else if (operation.equals_ci("operonly")) - dconfig.Add(level, DEFCON_OPER_ONLY); - else if (operation.equals_ci("silentoperonly")) - dconfig.Add(level, DEFCON_SILENT_OPER_ONLY); - else if (operation.equals_ci("akillnewclients")) - dconfig.Add(level, DEFCON_AKILL_NEW_CLIENTS); - else if (operation.equals_ci("nonewmemos")) - dconfig.Add(level, DEFCON_NO_NEW_MEMOS); - } - - if (dconfig.Check(level, DEFCON_REDUCE_SESSION) && dconfig.sessionlimit <= 0) - throw ConfigException("The value for must be greater than zero!"); - else if (dconfig.Check(level, DEFCON_AKILL_NEW_CLIENTS) && dconfig.akillreason.empty()) - throw ConfigException("The value for must not be empty!"); - else if (dconfig.Check(level, DEFCON_FORCE_CHAN_MODES) && dconfig.chanmodes.empty()) - throw ConfigException("The value for must not be empty!"); - } - - DConfig = dconfig; - this->ParseModeString(); - } - - EventReturn OnUserConnect(User *u, bool &exempt) - { - if (!exempt && u->server->IsSynced() && DConfig.Check(DEFCON_AKILL_NEW_CLIENTS) && !u->server->IsULined()) - { - if (DConfig.Check(DEFCON_AKILL_NEW_CLIENTS) && akills) - { - Log(findbot(Config->OperServ), "operserv/defcon") << "DEFCON: adding akill for *@" << u->host; - XLine *x = akills->Add("*@" + u->host, Config->OperServ, Anope::CurTime + DConfig.akillexpire, DConfig.akillreason); - if (x) - x->By = Config->OperServ; - } - - if (DConfig.Check(DEFCON_NO_NEW_CLIENTS) || DConfig.Check(DEFCON_AKILL_NEW_CLIENTS)) - u->Kill(Config->OperServ, DConfig.akillreason); - - return EVENT_STOP; - } - - return EVENT_CONTINUE; - } - - EventReturn OnChannelModeSet(Channel *c, ChannelModeName Name, const Anope::string ¶m) - { - ChannelMode *cm = ModeManager::FindChannelModeByName(Name); - - if (DConfig.Check(DEFCON_FORCE_CHAN_MODES) && cm && DConfig.DefConModesOff.HasFlag(Name)) - { - c->RemoveMode(findbot(Config->OperServ), Name, param); - - return EVENT_STOP; - } - - return EVENT_CONTINUE; - } - - EventReturn OnChannelModeUnset(Channel *c, ChannelModeName Name, const Anope::string &) - { - ChannelMode *cm = ModeManager::FindChannelModeByName(Name); - - if (DConfig.Check(DEFCON_FORCE_CHAN_MODES) && cm && DConfig.DefConModesOn.HasFlag(Name)) - { - Anope::string param; - - if (DConfig.GetDefConParam(Name, param)) - c->SetMode(findbot(Config->OperServ), Name, param); - else - c->SetMode(findbot(Config->OperServ), Name); - - return EVENT_STOP; - - } - - return EVENT_CONTINUE; - } - - EventReturn OnPreCommand(CommandSource &source, Command *command, std::vector ¶ms) - { - if (command->name == "nickserv/register" || command->name == "nickserv/group") - { - if (DConfig.Check(DEFCON_NO_NEW_NICKS)) - { - source.Reply(_("Services are in Defcon mode, Please try again later.")); - return EVENT_STOP; - } - } - else if (command->name == "chanserv/set/mlock") - { - if (DConfig.Check(DEFCON_NO_MLOCK_CHANGE)) - { - source.Reply(_("Services are in Defcon mode, Please try again later.")); - return EVENT_STOP; - } - } - else if (command->name == "chanserv/register") - { - if (DConfig.Check(DEFCON_NO_NEW_CHANNELS)) - { - source.Reply(_("Services are in Defcon mode, Please try again later.")); - return EVENT_STOP; - } - } - else if (command->name == "memoserv/send") - { - if (DConfig.Check(DEFCON_NO_NEW_MEMOS)) - { - source.Reply(_("Services are in Defcon mode, Please try again later.")); - return EVENT_STOP; - } - } - - return EVENT_CONTINUE; - } - - void OnUserConnect(dynamic_reference &u, bool &exempt) - { - if (exempt || !u || !u->server->IsSynced() || u->server->IsULined()) - return; - - if (DConfig.Check(DEFCON_AKILL_NEW_CLIENTS) && akills) - { - Log(findbot(Config->OperServ), "operserv/defcon") << "DEFCON: adding akill for *@" << u->host; - XLine *x = akills->Add("*@" + u->host, Config->OperServ, Anope::CurTime + DConfig.akillexpire, DConfig.akillreason); - if (x) - x->By = Config->OperServ; - } - if (DConfig.Check(DEFCON_NO_NEW_CLIENTS) || DConfig.Check(DEFCON_AKILL_NEW_CLIENTS)) - { - u->Kill(Config->OperServ, DConfig.akillreason); - return; - } - - if (!DConfig.sessionlimit) - return; - - if (DConfig.Check(DEFCON_AKILL_NEW_CLIENTS) && akills) - { - Log(findbot(Config->OperServ), "operserv/defcon") << "DEFCON: adding akill for *@" << u->host; - XLine *x = akills->Add("*@" + u->host, Config->OperServ, Anope::CurTime + DConfig.akillexpire, !DConfig.akillreason.empty() ? DConfig.akillreason : "DEFCON AKILL"); - if (x) - x->By = Config->OperServ; - } - - if (DConfig.Check(DEFCON_NO_NEW_CLIENTS) || DConfig.Check(DEFCON_AKILL_NEW_CLIENTS)) - { - u->Kill(Config->OperServ, DConfig.akillreason); - return; - } - - Session *session = session_service->FindSession(u->host); - Exception *exception = session_service->FindException(u); - - if (DConfig.Check(DEFCON_REDUCE_SESSION) && !exception) - { - if (session && session->count > DConfig.sessionlimit) - { - if (!Config->SessionLimitExceeded.empty()) - ircdproto->SendMessage(findbot(Config->OperServ), u->nick, Config->SessionLimitExceeded.c_str(), u->host.c_str()); - if (!Config->SessionLimitDetailsLoc.empty()) - ircdproto->SendMessage(findbot(Config->OperServ), u->nick, "%s", Config->SessionLimitDetailsLoc.c_str()); - - u->Kill(Config->OperServ, "Defcon session limit exceeded"); - ++session->hits; - if (akills && Config->MaxSessionKill && session->hits >= Config->MaxSessionKill) - { - akills->Add("*@" + u->host, Config->OperServ, Anope::CurTime + Config->SessionAutoKillExpiry, "Defcon session limit exceeded"); - ircdproto->SendGlobops(findbot(Config->OperServ), "[DEFCON] Added a temporary AKILL for \2*@%s\2 due to excessive connections", u->host.c_str()); - } - } - } - } - - void OnChannelModeAdd(ChannelMode *cm) - { - if (DConfig.chanmodes.find(cm->ModeChar) != Anope::string::npos) - this->ParseModeString(); - } - - void OnChannelCreate(Channel *c) - { - if (DConfig.Check(DEFCON_FORCE_CHAN_MODES)) - c->SetModes(findbot(Config->OperServ), false, "%s", DConfig.chanmodes.c_str()); - } -}; - -/** - * Send a message to the oper about which precautions are "active" for this level - **/ -void defcon_sendlvls(CommandSource &source) -{ - if (DConfig.Check(DEFCON_NO_NEW_CHANNELS)) - source.Reply(_("* No new channel registrations")); - if (DConfig.Check(DEFCON_NO_NEW_NICKS)) - source.Reply(_("* No new nick registrations")); - if (DConfig.Check(DEFCON_NO_MLOCK_CHANGE)) - source.Reply(_("* No MLOCK changes")); - if (DConfig.Check(DEFCON_FORCE_CHAN_MODES) && !DConfig.chanmodes.empty()) - source.Reply(_("* Force Chan Modes (%s) to be set on all channels"), DConfig.chanmodes.c_str()); - if (DConfig.Check(DEFCON_REDUCE_SESSION)) - source.Reply(_("* Use the reduced session limit of %d"), DConfig.sessionlimit); - if (DConfig.Check(DEFCON_NO_NEW_CLIENTS)) - source.Reply(_("* Kill any NEW clients connecting")); - if (DConfig.Check(DEFCON_OPER_ONLY)) - source.Reply(_("* Ignore any non-opers with message")); - if (DConfig.Check(DEFCON_SILENT_OPER_ONLY)) - source.Reply(_("* Silently ignore non-opers")); - if (DConfig.Check(DEFCON_AKILL_NEW_CLIENTS)) - source.Reply(_("* AKILL any new clients connecting")); - if (DConfig.Check(DEFCON_NO_NEW_MEMOS)) - source.Reply(_("* No new memos sent")); -} - -void runDefCon() -{ - if (DConfig.Check(DEFCON_FORCE_CHAN_MODES)) - { - if (!DConfig.chanmodes.empty() && !DefConModesSet) - { - if (DConfig.chanmodes[0] == '+' || DConfig.chanmodes[0] == '-') - { - Log(findbot(Config->OperServ), "operserv/defcon") << "DEFCON: setting " << DConfig.chanmodes << " on all channels"; - DefConModesSet = true; - for (channel_map::const_iterator it = ChannelList.begin(), it_end = ChannelList.end(); it != it_end; ++it) - it->second->SetModes(findbot(Config->OperServ), false, "%s", DConfig.chanmodes.c_str()); - } - } - } - else - { - if (!DConfig.chanmodes.empty() && DefConModesSet) - { - if (DConfig.chanmodes[0] == '+' || DConfig.chanmodes[0] == '-') - { - DefConModesSet = false; - Anope::string newmodes = defconReverseModes(DConfig.chanmodes); - if (!newmodes.empty()) - { - Log(findbot(Config->OperServ), "operserv/defcon") << "DEFCON: setting " << newmodes << " on all channels"; - for (channel_map::const_iterator it = ChannelList.begin(), it_end = ChannelList.end(); it != it_end; ++it) - it->second->SetModes(findbot(Config->OperServ), false, "%s", newmodes.c_str()); - } - } - } - } -} - -static Anope::string defconReverseModes(const Anope::string &modes) -{ - if (modes.empty()) - return ""; - Anope::string newmodes; - for (unsigned i = 0, end = modes.length(); i < end; ++i) - { - if (modes[i] == '+') - newmodes += '-'; - else if (modes[i] == '-') - newmodes += '+'; - else - newmodes += modes[i]; - } - return newmodes; -} - -MODULE_INIT(OSDefcon) -- cgit