X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_passforward.cpp;h=c04b306b1b8482ed0155cd801d8b85a11e932f59;hb=0c78ad71d32e4062827f2ebac927bdbf43c091ba;hp=47f71bbe08f1b9ae050fac54e7f569332cb496b4;hpb=44f42a13de52c8025942ddab42f51feb36821782;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_passforward.cpp b/src/modules/m_passforward.cpp index 47f71bbe0..c04b306b1 100644 --- a/src/modules/m_passforward.cpp +++ b/src/modules/m_passforward.cpp @@ -17,6 +17,8 @@ */ +/* $ModDesc: Forwards a password users can send on connect (for example for NickServ identification). */ + #include "inspircd.h" class ModulePassForward : public Module @@ -25,11 +27,11 @@ class ModulePassForward : public Module std::string nickrequired, forwardmsg, forwardcmd; public: - ModulePassForward() + void init() { OnRehash(NULL); Implementation eventlist[] = { I_OnPostConnect, I_OnRehash }; - ServerInstance->Modules->Attach(eventlist, this, 2); + ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation)); } Version GetVersion() @@ -39,13 +41,13 @@ class ModulePassForward : public Module void OnRehash(User* user) { - ConfigReader Conf; - nickrequired = Conf.ReadValue("passforward", "nick", "NickServ", 0); - forwardmsg = Conf.ReadValue("passforward", "forwardmsg", "NOTICE $nick :*** Forwarding PASS to $nickrequired", 0); - forwardcmd = Conf.ReadValue("passforward", "cmd", "PRIVMSG $nickrequired :IDENTIFY $pass", 0); + ConfigTag* tag = ServerInstance->Config->ConfValue("passforward"); + nickrequired = tag->getString("nick", "NickServ"); + forwardmsg = tag->getString("forwardmsg", "NOTICE $nick :*** Forwarding PASS to $nickrequired"); + forwardcmd = tag->getString("cmd", "PRIVMSG $nickrequired :IDENTIFY $pass"); } - void FormatStr(std::string& result, const std::string& format, const std::string &nick, const std::string &pass) + void FormatStr(std::string& result, const std::string& format, const LocalUser* user) { for (unsigned int i = 0; i < format.length(); i++) { @@ -59,12 +61,17 @@ class ModulePassForward : public Module } else if (format.substr(i, 5) == "$nick") { - result.append(nick); + result.append(user->nick); + i += 4; + } + else if (format.substr(i, 5) == "$user") + { + result.append(user->ident); i += 4; } else if (format.substr(i,5) == "$pass") { - result.append(pass); + result.append(user->password); i += 4; } else @@ -84,20 +91,19 @@ class ModulePassForward : public Module if (!nickrequired.empty()) { /* Check if nick exists and its server is ulined */ - User* u = ServerInstance->FindNick(nickrequired.c_str()); + User* u = ServerInstance->FindNick(nickrequired); if (!u || !ServerInstance->ULine(u->server)) return; } std::string tmp; - FormatStr(tmp,forwardmsg, user->nick, user->password); + FormatStr(tmp,forwardmsg, user); user->WriteServ(tmp); tmp.clear(); - FormatStr(tmp,forwardcmd, user->nick, user->password); + FormatStr(tmp,forwardcmd, user); ServerInstance->Parser->ProcessBuffer(tmp,user); } }; MODULE_INIT(ModulePassForward) -