From 317fd56645ff4a675b996120e92a786e50e2d084 Mon Sep 17 00:00:00 2001 From: prozacx Date: Sun, 17 Sep 2006 23:46:19 +0000 Subject: [PATCH] New module for keeping config up to date when user joins and parts git-svn-id: https://znc.svn.sourceforge.net/svnroot/znc/trunk@778 726aef4b-f618-498e-8847-2d620e286838 --- modules/chansaver.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++ modules/nicksaver.cpp | 57 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 modules/chansaver.cpp create mode 100644 modules/nicksaver.cpp diff --git a/modules/chansaver.cpp b/modules/chansaver.cpp new file mode 100644 index 00000000..b8bfb4a9 --- /dev/null +++ b/modules/chansaver.cpp @@ -0,0 +1,59 @@ +//! @author prozac@rottenboy.com + +#include "main.h" +#include "znc.h" +#include "User.h" +#include "Nick.h" +#include "Modules.h" +#include "Chan.h" + +class CChanSaverMod : public CModule { +public: + MODCONSTRUCTOR(CChanSaverMod) { + m_bWriteConf = false; + } + + virtual bool OnLoad(const CString& sArgs) { + return true; + } + + virtual ~CChanSaverMod() { + } + + virtual EModRet OnRaw(CString& sLine) { + if (m_bWriteConf) { + CZNC::Get().WriteConfig(); + m_bWriteConf = false; + } + + if (sLine.Token(1) == "324" && sLine.Token(4).find("k") != CString::npos) { + CChan* pChan = m_pUser->FindChan(sLine.Token(3)); + + if (pChan) { + pChan->SetInConfig(true); + m_bWriteConf = true; + } + } + + return CONTINUE; + } + + virtual void OnJoin(const CNick& Nick, CChan& Channel) { + if (Nick.GetNick() == m_pUser->GetIRCNick().GetNick()) { + Channel.SetInConfig(true); + CZNC::Get().WriteConfig(); + } + } + + virtual void OnPart(const CNick& Nick, CChan& Channel) { + if (Nick.GetNick() == m_pUser->GetIRCNick().GetNick()) { + Channel.SetInConfig(false); + CZNC::Get().WriteConfig(); + } + } + +private: + bool m_bWriteConf; +}; + +MODULEDEFS(CChanSaverMod, "Keep config up-to-date when user joins/parts") diff --git a/modules/nicksaver.cpp b/modules/nicksaver.cpp new file mode 100644 index 00000000..1acece45 --- /dev/null +++ b/modules/nicksaver.cpp @@ -0,0 +1,57 @@ +#include "main.h" +#include "znc.h" +#include "User.h" +#include "Nick.h" +#include "Modules.h" +#include "Chan.h" + +class CChanSaverMod : public CModule { +public: + MODCONSTRUCTOR(CChanSaverMod) { + m_bWriteConf = false; + } + + virtual bool OnLoad(const CString& sArgs) { + return true; + } + + virtual ~CChanSaverMod() { + } + + virtual EModRet OnRaw(CString& sLine) { + if (m_bWriteConf) { + CZNC::Get().WriteConfig(); + m_bWriteConf = false; + } + + if (sLine.Token(1) == "324" && sLine.Token(4).find("k") != CString::npos) { + CChan* pChan = m_pUser->FindChan(sLine.Token(3)); + + if (pChan) { + pChan->SetInConfig(true); + m_bWriteConf = true; + } + } + + return CONTINUE; + } + + virtual void OnJoin(const CNick& Nick, CChan& Channel) { + if (Nick.GetNick() == m_pUser->GetIRCNick().GetNick()) { + Channel.SetInConfig(true); + CZNC::Get().WriteConfig(); + } + } + + virtual void OnPart(const CNick& Nick, CChan& Channel) { + if (Nick.GetNick() == m_pUser->GetIRCNick().GetNick()) { + Channel.SetInConfig(false); + CZNC::Get().WriteConfig(); + } + } + +private: + bool m_bWriteConf; +}; + +MODULEDEFS(CChanSaverMod, "Keep config up-to-date when user joins/parts")