X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_nicklock.cpp;h=731704d6850c9ddeb25e46c83739dee503698a65;hb=4cb2be033bbb0eafc7ee4fa579daf7ccaca8860b;hp=efdfcca4deb1b881a7a61f093644b86c0acea0c0;hpb=2d821f2980825be73e3f90b47ffff365b0ec5ecb;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_nicklock.cpp b/src/modules/m_nicklock.cpp index efdfcca4d..731704d68 100644 --- a/src/modules/m_nicklock.cpp +++ b/src/modules/m_nicklock.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. + * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * * @@ -27,26 +27,29 @@ using namespace std; /* $ModDesc: Provides the NICKLOCK command, allows an oper to chage a users nick and lock them to it until they quit */ Server *Srv; - -void handle_nicklock(char **parameters, int pcnt, userrec *user) + +class cmd_nicklock : public command_t { - userrec* source = Srv->FindNick(std::string(parameters[0])); - irc::string server; - irc::string me; + public: + cmd_nicklock () : command_t("NICKLOCK", 'o', 2) + { + this->source = "m_nicklock.so"; + } - if (source) + void Handle(char **parameters, int pcnt, userrec *user) { - if (source->GetExt("nick_locked")) - { - WriteServ(user->fd,"946 %s %s :This user's nickname is already locked.",user->nick,source->nick); - return; - } - if (Srv->IsNick(std::string(parameters[1]))) - { - server = user->server; - me = Srv->GetServerName().c_str(); + userrec* source = Srv->FindNick(std::string(parameters[0])); + irc::string server; + irc::string me; - if (server == me) + if (source) + { + if (source->GetExt("nick_locked")) + { + WriteServ(user->fd,"946 %s %s :This user's nickname is already locked.",user->nick,source->nick); + return; + } + if (Srv->IsNick(std::string(parameters[1]))) { // give them a lock flag Srv->SendOpers(std::string(user->nick)+" used NICKLOCK to change and hold "+std::string(parameters[0])+" to "+parameters[1]); @@ -56,35 +59,44 @@ void handle_nicklock(char **parameters, int pcnt, userrec *user) if (source) source->Extend("nick_locked", "ON"); } - else - { - WriteServ(user->fd,"947 %s %s :Can't lock the nickname of a non-local user",user->nick,source->nick); - } } } -} +}; -void handle_nickunlock(char **parameters, int pcnt, userrec *user) +class cmd_nickunlock : public command_t { - userrec* source = Srv->FindNick(std::string(parameters[0])); - if (source) + public: + cmd_nickunlock () : command_t("NICKUNLOCK", 'o', 1) { - source->Shrink("nick_locked"); - WriteServ(user->fd,"945 %s %s :Nickname now unlocked.",user->nick,source->nick); - Srv->SendOpers(std::string(user->nick)+" used NICKUNLOCK on "+std::string(parameters[0])); + this->source = "m_nickunlock.so"; } -} + + void Handle (char **parameters, int pcnt, userrec *user) + { + userrec* source = Srv->FindNick(std::string(parameters[0])); + if (source) + { + source->Shrink("nick_locked"); + WriteServ(user->fd,"945 %s %s :Nickname now unlocked.",user->nick,source->nick); + Srv->SendOpers(std::string(user->nick)+" used NICKUNLOCK on "+std::string(parameters[0])); + } + } +}; class ModuleNickLock : public Module { + cmd_nicklock* cmd1; + cmd_nickunlock* cmd2; public: ModuleNickLock(Server* Me) : Module::Module(Me) { Srv = Me; - Srv->AddCommand("NICKLOCK",handle_nicklock,'o',2,"m_nicklock.so"); - Srv->AddCommand("NICKUNLOCK",handle_nickunlock,'o',1,"m_nicklock.so"); + cmd1 = new cmd_nicklock(); + cmd2 = new cmd_nickunlock(); + Srv->AddCommand(cmd1); + Srv->AddCommand(cmd2); } virtual ~ModuleNickLock() @@ -96,6 +108,11 @@ class ModuleNickLock : public Module return Version(1,0,0,1,VF_VENDOR); } + void Implements(char* List) + { + List[I_OnUserPreNick] = List[I_OnUserQuit] = 1; + } + virtual int OnUserPreNick(userrec* user, std::string newnick) { if (user->GetExt("nick_locked"))