From b45fb414ccc2f77693db7cc1bb4e0bace7e55902 Mon Sep 17 00:00:00 2001 From: psychon Date: Thu, 7 Jun 2007 19:28:29 +0000 Subject: [PATCH] Add nickserv module from my other branch git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@808 726aef4b-f618-498e-8847-2d620e286838 --- modules/nickserv.cpp | 84 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 modules/nickserv.cpp diff --git a/modules/nickserv.cpp b/modules/nickserv.cpp new file mode 100644 index 00000000..ca42db2f --- /dev/null +++ b/modules/nickserv.cpp @@ -0,0 +1,84 @@ +/* + * Nickserv authentification + * $Id$ + * Author: Uli Schlachter aka psychon + */ + +#include "main.h" +#include "User.h" +#include "Nick.h" +#include "Modules.h" +#include "Chan.h" +#include "Utils.h" +#include +#include +#include + +class CNickServ : public CModule +{ +public: + MODCONSTRUCTOR(CNickServ) + { + } + + virtual ~CNickServ() + { + } + + virtual bool OnLoad(const CString& sArgs, CString& sErrorMsg) + { + if (sArgs.empty()) + m_sPass = GetNV("Password"); + else + m_sPass = sArgs; + + return true; + } + + virtual void OnModCommand( const CString& sCommand ) + { + CString sCmdName = sCommand.Token(0).AsLower(); + if(sCmdName == "set") { + CString sPass = sCommand.Token(1, true); + m_sPass = sPass; + PutModule("Password set"); + } else if(sCmdName == "show") { + if (m_sPass.empty()) + PutModule("No password set"); + else + PutModule("Current password: " + m_sPass); + } else if(sCmdName == "save") { + SetNV("Password", m_sPass); + PutModule("Saved!"); + } else { + PutModule("Commands: set , show, save"); + } + } + + void HandleMessage(CNick& Nick, const CString& sMessage) + { + if (!m_sPass.empty() + && Nick.GetNick().CaseCmp("NickServ") == 0 + && sMessage.find("msg") != CString::npos + && sMessage.find("IDENTIFY") != CString::npos) { + PutIRC("PRIVMSG NickServ :IDENTIFY " + m_sPass); + } + } + + virtual EModRet OnPrivMsg(CNick& Nick, CString& sMessage) + { + HandleMessage(Nick, sMessage); + return CONTINUE; + } + + virtual EModRet OnPrivNotice(CNick& Nick, CString& sMessage) + { + HandleMessage(Nick, sMessage); + return CONTINUE; + } + +private: + CString m_sPass; +}; + +MODULEDEFS(CNickServ, "Auths you with NickServ")