diff options
Diffstat (limited to 'modules/core/ns_recover.cpp')
-rw-r--r-- | modules/core/ns_recover.cpp | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/modules/core/ns_recover.cpp b/modules/core/ns_recover.cpp deleted file mode 100644 index 5e45aab9a..000000000 --- a/modules/core/ns_recover.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* NickServ 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" - -class CommandNSRecover : public Command -{ - public: - CommandNSRecover(Module *creator) : Command(creator, "nickserv/recover", 1, 2) - { - this->SetFlag(CFLAG_ALLOW_UNREGISTERED); - this->SetDesc(_("Kill another user who has taken your nick")); - this->SetSyntax(_("\037nickname\037 [\037password\037]")); - } - - void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) - { - User *u = source.u; - - const Anope::string &nick = params[0]; - const Anope::string &pass = params.size() > 1 ? params[1] : ""; - - NickAlias *na; - User *u2; - if (!(u2 = finduser(nick))) - source.Reply(NICK_X_NOT_IN_USE, nick.c_str()); - else if (!(na = findnick(u2->nick))) - source.Reply(NICK_X_NOT_REGISTERED, nick.c_str()); - else if (na->nc->HasFlag(NI_SUSPENDED)) - source.Reply(NICK_X_SUSPENDED, na->nick.c_str()); - else if (nick.equals_ci(u->nick)) - source.Reply(_("You can't recover yourself!")); - else if (!pass.empty()) - { - EventReturn MOD_RESULT; - FOREACH_RESULT(I_OnCheckAuthentication, OnCheckAuthentication(this, &source, params, na->nc->display, pass)); - if (MOD_RESULT == EVENT_STOP) - return; - - if (MOD_RESULT == EVENT_ALLOW) - { - u2->SendMessage(source.owner, FORCENICKCHANGE_NOW); - u2->Collide(na); - - /* Convert Config->NSReleaseTimeout seconds to string format */ - Anope::string relstr = duration(Config->NSReleaseTimeout); - - source.Reply(NICK_RECOVERED, Config->UseStrictPrivMsgString.c_str(), Config->NickServ.c_str(), nick.c_str(), relstr.c_str()); - } - else - { - source.Reply(ACCESS_DENIED); - Log(LOG_COMMAND, u, this) << "with invalid password for " << nick; - bad_password(u); - } - } - else - { - if (u->Account() == na->nc || (!na->nc->HasFlag(NI_SECURE) && is_on_access(u, na->nc)) || - (!u->fingerprint.empty() && na->nc->FindCert(u->fingerprint))) - { - u2->SendMessage(source.owner, FORCENICKCHANGE_NOW); - u2->Collide(na); - - /* Convert Config->NSReleaseTimeout seconds to string format */ - Anope::string relstr = duration(Config->NSReleaseTimeout); - - source.Reply(NICK_RECOVERED, Config->UseStrictPrivMsgString.c_str(), Config->NickServ.c_str(), nick.c_str(), relstr.c_str()); - } - else - source.Reply(ACCESS_DENIED); - } - return; - } - - bool OnHelp(CommandSource &source, const Anope::string &subcommand) - { - /* Convert Config->NSReleaseTimeout seconds to string format */ - Anope::string relstr = duration(Config->NSReleaseTimeout); - - this->SendSyntax(source); - source.Reply(" "); - source.Reply(_("Allows you to recover your nickname if someone else has\n" - "taken it; this does the same thing that %s does\n" - "automatically if someone tries to use a kill-protected\n" - "nick.\n" - " \n" - "When you give this command, %s will bring a fake\n" - "user online with the same nickname as the user you're\n" - "trying to recover your nick from. This causes the IRC\n" - "servers to disconnect the other user. This fake user will\n" - "remain online for %s to ensure that the other\n" - "user does not immediately reconnect; after that time, you\n" - "can reclaim your nick. Alternatively, use the \002RELEASE\002\n" - "command (\002%s%s HELP RELEASE\002) to get the nick\n" - "back sooner.\n" - " \n" - "In order to use the \002RECOVER\002 command for a nick, your\n" - "current address as shown in /WHOIS must be on that nick's\n" - "access list, you must be identified and in the group of\n" - "that nick, or you must supply the correct password for\n" - "the nickname."), Config->NickServ.c_str(), Config->NickServ.c_str(), relstr.c_str(), Config->UseStrictPrivMsgString.c_str(), Config->NickServ.c_str()); - - return true; - } -}; - -class NSRecover : public Module -{ - CommandNSRecover commandnsrecover; - - public: - NSRecover(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, CORE), - commandnsrecover(this) - { - this->SetAuthor("Anope"); - - ModuleManager::RegisterService(&commandnsrecover); - } -}; - -MODULE_INIT(NSRecover) |