diff --git a/Chan.cpp b/Chan.cpp index 31e74c0b..9d7be68b 100644 --- a/Chan.cpp +++ b/Chan.cpp @@ -251,7 +251,7 @@ void CChan::ModeChange(const CString& sModes, const CNick* pOpNick) { } if (pOpNick) { - MODULECALL(OnRawMode(*pOpNick, *this, sModeArg, sArgs), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnRawMode(*pOpNick, *this, sModeArg, sArgs), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } for (unsigned int a = 0; a < sModeArg.size(); a++) { @@ -284,19 +284,19 @@ void CChan::ModeChange(const CString& sModes, const CNick* pOpNick) { bool bNoChange = (pNick->HasPerm(uPerm) == bAdd); if (uMode && pOpNick) { - MODULECALL(OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnChanPermission(*pOpNick, *pNick, *this, uMode, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if (uMode == CChan::M_Op) { if (bAdd) { - MODULECALL(OnOp(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnOp(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } else { - MODULECALL(OnDeop(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnDeop(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } } else if (uMode == CChan::M_Voice) { if (bAdd) { - MODULECALL(OnVoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnVoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } else { - MODULECALL(OnDevoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnDevoice(*pOpNick, *pNick, *this, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } } } @@ -332,7 +332,7 @@ void CChan::ModeChange(const CString& sModes, const CNick* pOpNick) { } else { bNoChange = !HasMode(uMode); } - MODULECALL(OnMode(*pOpNick, *this, uMode, sArg, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnMode(*pOpNick, *this, uMode, sArg, bAdd, bNoChange), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if (!bList) { (bAdd) ? AddMode(uMode, sArg) : RemMode(uMode); @@ -545,7 +545,7 @@ void CChan::SendBuffer(CClient* pClient) { if (vsBuffer.size()) { bool bSkipStatusMsg = false; - MODULECALL(OnChanBufferStarting(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true); + NETWORKMODULECALL(OnChanBufferStarting(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true); if (!bSkipStatusMsg) { m_pNetwork->PutUser(":***!znc@znc.in PRIVMSG " + GetName() + " :Buffer Playback...", pClient); @@ -553,7 +553,7 @@ void CChan::SendBuffer(CClient* pClient) { for (unsigned int a = 0; a < vsBuffer.size(); a++) { CString sLine(vsBuffer[a]); - MODULECALL(OnChanBufferPlayLine(*this, *pClient, sLine), m_pNetwork->GetUser(), m_pNetwork, NULL, continue); + NETWORKMODULECALL(OnChanBufferPlayLine(*this, *pClient, sLine), m_pNetwork->GetUser(), m_pNetwork, NULL, continue); m_pNetwork->PutUser(sLine, pClient); } @@ -562,7 +562,7 @@ void CChan::SendBuffer(CClient* pClient) { } bSkipStatusMsg = false; - MODULECALL(OnChanBufferEnding(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true); + NETWORKMODULECALL(OnChanBufferEnding(*this, *pClient), m_pNetwork->GetUser(), m_pNetwork, NULL, bSkipStatusMsg = true); if (!bSkipStatusMsg) { m_pNetwork->PutUser(":***!znc@znc.in PRIVMSG " + GetName() + " :Playback Complete.", pClient); diff --git a/Client.cpp b/Client.cpp index e0725608..aded3c1e 100644 --- a/Client.cpp +++ b/Client.cpp @@ -77,9 +77,9 @@ void CClient::ReadLine(const CString& sData) { DEBUG("(" << GetFullName() << ") CLI -> ZNC [" << sLine << "]"); if (IsAttached()) { - MODULECALL(OnUserRaw(sLine), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserRaw(sLine), m_pUser, m_pNetwork, this, return); } else { - GLOBALMODULECALL(OnUnknownUserRaw(sLine), m_pUser, m_pNetwork, this, return); + GLOBALMODULECALL(OnUnknownUserRaw(this, sLine), return); } CString sCommand = sLine.Token(0); @@ -233,11 +233,11 @@ void CClient::ReadLine(const CString& sData) { sCTCP.LeftChomp(); sCTCP.RightChomp(); - MODULECALL(OnUserCTCPReply(sTarget, sCTCP), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserCTCPReply(sTarget, sCTCP), m_pUser, m_pNetwork, this, return); sMsg = "\001" + sCTCP + "\001"; } else { - MODULECALL(OnUserNotice(sTarget, sMsg), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserNotice(sTarget, sMsg), m_pUser, m_pNetwork, this, return); } if (!GetIRCSock()) { @@ -298,7 +298,7 @@ void CClient::ReadLine(const CString& sData) { if (sCTCP.Token(0).Equals("ACTION")) { CString sMessage = sCTCP.Token(1, true); - MODULECALL(OnUserAction(sTarget, sMessage), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserAction(sTarget, sMessage), m_pUser, m_pNetwork, this, return); sCTCP = "ACTION " + sMessage; if (pChan && pChan->KeepBuffer()) { @@ -319,7 +319,7 @@ void CClient::ReadLine(const CString& sData) { } } } else { - MODULECALL(OnUserCTCP(sTarget, sCTCP), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserCTCP(sTarget, sCTCP), m_pUser, m_pNetwork, this, return); } if (m_pNetwork) { @@ -338,7 +338,7 @@ void CClient::ReadLine(const CString& sData) { return; } - MODULECALL(OnUserMsg(sTarget, sMsg), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserMsg(sTarget, sMsg), m_pUser, m_pNetwork, this, return); if (!GetIRCSock()) { // Some lagmeters do a PRIVMSG to their own nick, ignore those. @@ -410,7 +410,7 @@ void CClient::ReadLine(const CString& sData) { for (unsigned int a = 0; a < vChans.size(); a++) { CString sChannel = vChans[a]; - MODULECALL(OnUserJoin(sChannel, sKey), m_pUser, m_pNetwork, this, continue); + NETWORKMODULECALL(OnUserJoin(sChannel, sKey), m_pUser, m_pNetwork, this, continue); CChan* pChan = m_pNetwork->FindChan(sChannel); if (pChan) { @@ -444,7 +444,7 @@ void CClient::ReadLine(const CString& sData) { sMessage.LeftChomp(); } - MODULECALL(OnUserPart(sChan, sMessage), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserPart(sChan, sMessage), m_pUser, m_pNetwork, this, return); CChan* pChan = m_pNetwork->FindChan(sChan); @@ -466,10 +466,10 @@ void CClient::ReadLine(const CString& sData) { if (!sTopic.empty()) { if (sTopic.Left(1) == ":") sTopic.LeftChomp(); - MODULECALL(OnUserTopic(sChan, sTopic), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserTopic(sChan, sTopic), m_pUser, m_pNetwork, this, return); sLine = "TOPIC " + sChan + " :" + sTopic; } else { - MODULECALL(OnUserTopicRequest(sChan), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnUserTopicRequest(sChan), m_pUser, m_pNetwork, this, return); } } else if (m_pNetwork && sCommand.Equals("MODE")) { CString sTarget = sLine.Token(1); @@ -625,7 +625,7 @@ void CAuthBase::RefuseLogin(const CString& sReason) { "to login as you, but was rejected [" + sReason + "]."); } - GLOBALMODULECALL(OnFailedLogin(GetUsername(), GetRemoteIP()), NULL, NULL, NULL, NOTHING); + GLOBALMODULECALL(OnFailedLogin(GetUsername(), GetRemoteIP()), NOTHING); RefusedLogin(sReason); Invalidate(); } @@ -666,7 +666,7 @@ void CClient::AcceptLogin(CUser& User) { SendMotd(); - MODULECALL(OnClientLogin(), m_pUser, m_pNetwork, this, NOTHING); + NETWORKMODULECALL(OnClientLogin(), m_pUser, m_pNetwork, this, NOTHING); } void CClient::Timeout() { @@ -686,7 +686,7 @@ void CClient::Disconnected() { SetNetwork(NULL, true, false); if (m_pUser) { - MODULECALL(OnClientDisconnect(), m_pUser, m_pNetwork, this, NOTHING); + NETWORKMODULECALL(OnClientDisconnect(), m_pUser, m_pNetwork, this, NOTHING); } } @@ -790,7 +790,7 @@ void CClient::HandleCap(const CString& sLine) if (sSubCmd.Equals("LS")) { SCString ssOfferCaps; - GLOBALMODULECALL(OnClientCapLs(ssOfferCaps), m_pUser, m_pNetwork, this, NOTHING); + GLOBALMODULECALL(OnClientCapLs(this, ssOfferCaps), NOTHING); CString sRes; for (SCString::iterator i = ssOfferCaps.begin(); i != ssOfferCaps.end(); ++i) { sRes += *i + " "; @@ -812,7 +812,7 @@ void CClient::HandleCap(const CString& sLine) bVal = false; bool bAccepted = ("multi-prefix" == sCap) || ("userhost-in-names" == sCap); - GLOBALMODULECALL(IsClientCapSupported(sCap, bVal), m_pUser, m_pNetwork, this, bAccepted = true); + GLOBALMODULECALL(IsClientCapSupported(this, sCap, bVal), bAccepted = true); if (!bAccepted) { // Some unsupported capability is requested @@ -832,7 +832,7 @@ void CClient::HandleCap(const CString& sLine) } else if ("userhost-in-names" == *it) { m_bUHNames = bVal; } - GLOBALMODULECALL(OnClientCapRequest(*it, bVal), m_pUser, m_pNetwork, this, NOTHING); + GLOBALMODULECALL(OnClientCapRequest(this, *it, bVal), NOTHING); if (bVal) { m_ssAcceptedCaps.insert(*it); @@ -852,9 +852,9 @@ void CClient::HandleCap(const CString& sLine) SCString ssRemoved; for (SCString::iterator i = m_ssAcceptedCaps.begin(); i != m_ssAcceptedCaps.end(); ++i) { bool bRemoving = false; - GLOBALMODULECALL(IsClientCapSupported(*i, false), m_pUser, m_pNetwork, this, bRemoving = true); + GLOBALMODULECALL(IsClientCapSupported(this, *i, false), bRemoving = true); if (bRemoving) { - GLOBALMODULECALL(OnClientCapRequest(*i, false), m_pUser, m_pNetwork, this, NOTHING); + GLOBALMODULECALL(OnClientCapRequest(this, *i, false), NOTHING); ssRemoved.insert(*i); } } diff --git a/ClientCommand.cpp b/ClientCommand.cpp index e84ee582..41a9f917 100644 --- a/ClientCommand.cpp +++ b/ClientCommand.cpp @@ -25,7 +25,7 @@ void CClient::UserCommand(CString& sLine) { return; } - MODULECALL(OnStatusCommand(sLine), m_pUser, m_pNetwork, this, return); + NETWORKMODULECALL(OnStatusCommand(sLine), m_pUser, m_pNetwork, this, return); const CString sCommand = sLine.Token(0); diff --git a/IRCNetwork.cpp b/IRCNetwork.cpp index ca1ac58e..a7864c07 100644 --- a/IRCNetwork.cpp +++ b/IRCNetwork.cpp @@ -342,7 +342,7 @@ void CIRCNetwork::ClientConnected(CClient *pClient) { CString sBufLine; while (m_QueryBuffer.GetNextLine(GetIRCNick().GetNick(), sBufLine)) { - MODULECALL(OnPrivBufferPlayLine(*pClient, sBufLine), m_pUser, this, NULL, continue); + NETWORKMODULECALL(OnPrivBufferPlayLine(*pClient, sBufLine), m_pUser, this, NULL, continue); pClient->PutClient(sBufLine); } @@ -547,7 +547,7 @@ bool CIRCNetwork::JoinChan(CChan* pChan) { pChan->Disable(); } else { pChan->IncJoinTries(); - MODULECALL(OnTimerAutoJoin(*pChan), m_pUser, this, NULL, return false); + NETWORKMODULECALL(OnTimerAutoJoin(*pChan), m_pUser, this, NULL, return false); return true; } return false; diff --git a/IRCSock.cpp b/IRCSock.cpp index 61c035a8..0ba5ed7c 100644 --- a/IRCSock.cpp +++ b/IRCSock.cpp @@ -52,7 +52,7 @@ CIRCSock::CIRCSock(CIRCNetwork* pNetwork) : CZNCSock() { CIRCSock::~CIRCSock() { if (!m_bAuthed) { - MODULECALL(OnIRCConnectionError(this), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnIRCConnectionError(this), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } const vector& vChans = m_pNetwork->GetChans(); @@ -92,7 +92,7 @@ void CIRCSock::ReadLine(const CString& sData) { DEBUG("(" << m_pNetwork->GetUser()->GetUserName() << "/" << m_pNetwork->GetName() << ") IRC -> ZNC [" << sLine << "]"); - MODULECALL(OnRaw(sLine), m_pNetwork->GetUser(), m_pNetwork, NULL, return); + NETWORKMODULECALL(OnRaw(sLine), m_pNetwork->GetUser(), m_pNetwork, NULL, return); if (sLine.Equals("PING ", false, 5)) { // Generate a reply and don't forward this to any user, @@ -152,7 +152,7 @@ void CIRCSock::ReadLine(const CString& sData) { SetNick(sNick); - MODULECALL(OnIRCConnected(), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnIRCConnected(), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); m_pNetwork->ClearRawBuffer(); m_pNetwork->AddRawBuffer(":" + sServer + " " + sCmd + " ", " " + sRest); @@ -397,7 +397,7 @@ void CIRCSock::ReadLine(const CString& sData) { SetNick(sNewNick); } - MODULECALL(OnNick(Nick, sNewNick, vFoundChans), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnNick(Nick, sNewNick, vFoundChans), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if (!bIsVisible) { return; @@ -435,7 +435,7 @@ void CIRCSock::ReadLine(const CString& sData) { } } - MODULECALL(OnQuit(Nick, sMessage, vFoundChans), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnQuit(Nick, sMessage, vFoundChans), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if (!bIsVisible) { return; @@ -463,7 +463,7 @@ void CIRCSock::ReadLine(const CString& sData) { if (pChan) { pChan->AddNick(Nick.GetNickMask()); - MODULECALL(OnJoin(Nick.GetNickMask(), *pChan), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnJoin(Nick.GetNickMask(), *pChan), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if (pChan->IsDetached()) { return; @@ -480,7 +480,7 @@ void CIRCSock::ReadLine(const CString& sData) { bool bDetached = false; if (pChan) { pChan->RemNick(Nick.GetNick()); - MODULECALL(OnPart(Nick.GetNickMask(), *pChan, sMsg), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnPart(Nick.GetNickMask(), *pChan, sMsg), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if (pChan->IsDetached()) bDetached = true; @@ -545,7 +545,7 @@ void CIRCSock::ReadLine(const CString& sData) { CChan* pChan = m_pNetwork->FindChan(sChan); if (pChan) { - MODULECALL(OnKick(Nick, sKickedNick, *pChan, sMsg), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnKick(Nick, sKickedNick, *pChan, sMsg), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); // do not remove the nick till after the OnKick call, so modules // can do Chan.FindNick or something to get more info. pChan->RemNick(sKickedNick); @@ -606,7 +606,7 @@ void CIRCSock::ReadLine(const CString& sData) { CString sTopic = sLine.Token(3, true); sTopic.LeftChomp(); - MODULECALL(OnTopic(Nick, *pChan, sTopic), m_pNetwork->GetUser(), m_pNetwork, NULL, return); + NETWORKMODULECALL(OnTopic(Nick, *pChan, sTopic), m_pNetwork->GetUser(), m_pNetwork, NULL, return); pChan->SetTopicOwner(Nick.GetNick()); pChan->SetTopicDate((unsigned long) time(NULL)); @@ -706,7 +706,7 @@ void CIRCSock::ReadLine(const CString& sData) { } } else if (sSubCmd == "ACK") { sArgs.Trim(); - MODULECALL(OnServerCapResult(sArgs, true), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnServerCapResult(sArgs, true), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); if ("multi-prefix" == sArgs) { m_bNamesx = true; } else if ("userhost-in-names" == sArgs) { @@ -717,7 +717,7 @@ void CIRCSock::ReadLine(const CString& sData) { // This should work because there's no [known] // capability with length of name more than 100 characters. sArgs.Trim(); - MODULECALL(OnServerCapResult(sArgs, false), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnServerCapResult(sArgs, false), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); } SendNextCap(); @@ -753,21 +753,21 @@ void CIRCSock::ResumeCap() { } bool CIRCSock::OnServerCapAvailable(const CString& sCap) { - MODULECALL(OnServerCapAvailable(sCap), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnServerCapAvailable(sCap), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); return false; } bool CIRCSock::OnCTCPReply(CNick& Nick, CString& sMessage) { - MODULECALL(OnCTCPReply(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnCTCPReply(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); return false; } bool CIRCSock::OnPrivCTCP(CNick& Nick, CString& sMessage) { - MODULECALL(OnPrivCTCP(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnPrivCTCP(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); if (sMessage.TrimPrefix("ACTION ")) { - MODULECALL(OnPrivAction(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnPrivAction(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); if (!m_pNetwork->IsUserAttached()) { // If the user is detached, add to the buffer @@ -822,7 +822,7 @@ bool CIRCSock::OnGeneralCTCP(CNick& Nick, CString& sMessage) { } bool CIRCSock::OnPrivNotice(CNick& Nick, CString& sMessage) { - MODULECALL(OnPrivNotice(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnPrivNotice(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); if (!m_pNetwork->IsUserAttached()) { // If the user is detached, add to the buffer @@ -833,7 +833,7 @@ bool CIRCSock::OnPrivNotice(CNick& Nick, CString& sMessage) { } bool CIRCSock::OnPrivMsg(CNick& Nick, CString& sMessage) { - MODULECALL(OnPrivMsg(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnPrivMsg(Nick, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); if (!m_pNetwork->IsUserAttached()) { // If the user is detached, add to the buffer @@ -846,11 +846,11 @@ bool CIRCSock::OnPrivMsg(CNick& Nick, CString& sMessage) { bool CIRCSock::OnChanCTCP(CNick& Nick, const CString& sChan, CString& sMessage) { CChan* pChan = m_pNetwork->FindChan(sChan); if (pChan) { - MODULECALL(OnChanCTCP(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnChanCTCP(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); // Record a /me if (sMessage.TrimPrefix("ACTION ")) { - MODULECALL(OnChanAction(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnChanAction(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); if (pChan->KeepBuffer() || !m_pNetwork->IsUserAttached() || pChan->IsDetached()) { pChan->AddBuffer(":" + Nick.GetNickMask() + " PRIVMSG " + sChan + " :\001ACTION " + m_pNetwork->GetUser()->AddTimestamp(sMessage) + "\001"); } @@ -867,7 +867,7 @@ bool CIRCSock::OnChanCTCP(CNick& Nick, const CString& sChan, CString& sMessage) bool CIRCSock::OnChanNotice(CNick& Nick, const CString& sChan, CString& sMessage) { CChan* pChan = m_pNetwork->FindChan(sChan); if (pChan) { - MODULECALL(OnChanNotice(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnChanNotice(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); if (pChan->KeepBuffer() || !m_pNetwork->IsUserAttached() || pChan->IsDetached()) { pChan->AddBuffer(":" + Nick.GetNickMask() + " NOTICE " + sChan + " :" + m_pNetwork->GetUser()->AddTimestamp(sMessage)); @@ -880,7 +880,7 @@ bool CIRCSock::OnChanNotice(CNick& Nick, const CString& sChan, CString& sMessage bool CIRCSock::OnChanMsg(CNick& Nick, const CString& sChan, CString& sMessage) { CChan* pChan = m_pNetwork->FindChan(sChan); if (pChan) { - MODULECALL(OnChanMsg(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); + NETWORKMODULECALL(OnChanMsg(Nick, *pChan, sMessage), m_pNetwork->GetUser(), m_pNetwork, NULL, return true); if (pChan->KeepBuffer() || !m_pNetwork->IsUserAttached() || pChan->IsDetached()) { pChan->AddBuffer(":" + Nick.GetNickMask() + " PRIVMSG " + sChan + " :" + m_pNetwork->GetUser()->AddTimestamp(sMessage)); @@ -908,7 +908,7 @@ void CIRCSock::Connected() { CString sIdent = m_pNetwork->GetUser()->GetIdent(); CString sRealName = m_pNetwork->GetUser()->GetRealName(); - MODULECALL(OnIRCRegistration(sPass, sNick, sIdent, sRealName), m_pNetwork->GetUser(), m_pNetwork, NULL, return); + NETWORKMODULECALL(OnIRCRegistration(sPass, sNick, sIdent, sRealName), m_pNetwork->GetUser(), m_pNetwork, NULL, return); PutIRC("CAP LS"); @@ -924,7 +924,7 @@ void CIRCSock::Connected() { } void CIRCSock::Disconnected() { - MODULECALL(OnIRCDisconnected(), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); + NETWORKMODULECALL(OnIRCDisconnected(), m_pNetwork->GetUser(), m_pNetwork, NULL, NOTHING); DEBUG(GetSockName() << " == Disconnected()"); if (!m_pNetwork->GetUser()->IsBeingDeleted() && m_pNetwork->GetUser()->GetIRCConnectEnabled() && diff --git a/Listener.cpp b/Listener.cpp index 4e0dccef..f1eed17d 100644 --- a/Listener.cpp +++ b/Listener.cpp @@ -55,11 +55,11 @@ bool CRealListener::ConnectionFrom(const CString& sHost, unsigned short uPort) { Csock* CRealListener::GetSockObj(const CString& sHost, unsigned short uPort) { CIncomingConnection *pClient = new CIncomingConnection(sHost, uPort, m_pParent->GetAcceptType()); if (CZNC::Get().AllowConnectionFrom(sHost)) { - GLOBALMODULECALL(OnClientConnect(pClient, sHost, uPort), NULL, NULL, NULL, NOTHING); + GLOBALMODULECALL(OnClientConnect(pClient, sHost, uPort), NOTHING); } else { pClient->Write(":irc.znc.in 464 unknown-nick :Too many anonymous connections from your IP\r\n"); pClient->Close(Csock::CLT_AFTERWRITE); - GLOBALMODULECALL(OnFailedLogin("", sHost), NULL, NULL, NULL, NOTHING); + GLOBALMODULECALL(OnFailedLogin("", sHost), NOTHING); } return pClient; } diff --git a/Modules.cpp b/Modules.cpp index 0cec46d5..90547251 100644 --- a/Modules.cpp +++ b/Modules.cpp @@ -597,10 +597,10 @@ CModule::EModRet CModule::OnDeleteUser(CUser& User) { return CONTINUE; } void CModule::OnClientConnect(CZNCSock* pClient, const CString& sHost, unsigned short uPort) {} CModule::EModRet CModule::OnLoginAttempt(CSmartPtr Auth) { return CONTINUE; } void CModule::OnFailedLogin(const CString& sUsername, const CString& sRemoteIP) {} -CModule::EModRet CModule::OnUnknownUserRaw(CString& sLine) { return CONTINUE; } -void CModule::OnClientCapLs(SCString& ssCaps) {} -bool CModule::IsClientCapSupported(const CString& sCap, bool bState) { return false; } -void CModule::OnClientCapRequest(const CString& sCap, bool bState) {} +CModule::EModRet CModule::OnUnknownUserRaw(CClient* pClient, CString& sLine) { return CONTINUE; } +void CModule::OnClientCapLs(CClient* pClient, SCString& ssCaps) {} +bool CModule::IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState) { return false; } +void CModule::OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState) {} CModule::EModRet CModule::OnModuleLoading(const CString& sModName, const CString& sArgs, CModInfo::EModuleType eType, bool& bSuccess, CString& sRetMsg) { return CONTINUE; } CModule::EModRet CModule::OnModuleUnloading(CModule* pModule, bool& bSuccess, CString& sRetMsg) { @@ -754,17 +754,17 @@ bool CModules::OnFailedLogin(const CString& sUsername, const CString& sRemoteIP) return false; } -bool CModules::OnUnknownUserRaw(CString& sLine) { - MODHALTCHK(OnUnknownUserRaw(sLine)); +bool CModules::OnUnknownUserRaw(CClient* pClient, CString& sLine) { + MODHALTCHK(OnUnknownUserRaw(pClient, sLine)); } -bool CModules::OnClientCapLs(SCString& ssCaps) { - MODUNLOADCHK(OnClientCapLs(ssCaps)); +bool CModules::OnClientCapLs(CClient* pClient, SCString& ssCaps) { + MODUNLOADCHK(OnClientCapLs(pClient, ssCaps)); return false; } // Maybe create new macro for this? -bool CModules::IsClientCapSupported(const CString& sCap, bool bState) { +bool CModules::IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState) { bool bResult = false; for (unsigned int a = 0; a < size(); ++a) { try { @@ -774,11 +774,11 @@ bool CModules::IsClientCapSupported(const CString& sCap, bool bState) { if (m_pUser) { CUser* pOldUser = pMod->GetUser(); pMod->SetUser(m_pUser); - bResult |= pMod->IsClientCapSupported(sCap, bState); + bResult |= pMod->IsClientCapSupported(pClient, sCap, bState); pMod->SetUser(pOldUser); } else { // WTF? Is that possible? - bResult |= pMod->IsClientCapSupported(sCap, bState); + bResult |= pMod->IsClientCapSupported(pClient, sCap, bState); } pMod->SetClient(pOldClient); } catch (CModule::EModException e) { @@ -790,8 +790,8 @@ bool CModules::IsClientCapSupported(const CString& sCap, bool bState) { return bResult; } -bool CModules::OnClientCapRequest(const CString& sCap, bool bState) { - MODUNLOADCHK(OnClientCapRequest(sCap, bState)); +bool CModules::OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState) { + MODUNLOADCHK(OnClientCapRequest(pClient, sCap, bState)); return false; } @@ -834,7 +834,7 @@ bool CModules::LoadModule(const CString& sModule, const CString& sArgs, CModInfo } bool bSuccess; - GLOBALMODULECALL(OnModuleLoading(sModule, sArgs, eType, bSuccess, sRetMsg), pUser, pNetwork, NULL, return bSuccess); + _GLOBALMODULECALL(OnModuleLoading(sModule, sArgs, eType, bSuccess, sRetMsg), pUser, pNetwork, NULL, return bSuccess); CString sModPath, sDataPath; bool bVersionMismatch; @@ -922,7 +922,7 @@ bool CModules::UnloadModule(const CString& sModule, CString& sRetMsg) { } bool bSuccess; - GLOBALMODULECALL(OnModuleUnloading(pModule, bSuccess, sRetMsg), pModule->GetUser(), pModule->GetNetwork(), NULL, return bSuccess); + _GLOBALMODULECALL(OnModuleUnloading(pModule, bSuccess, sRetMsg), pModule->GetUser(), pModule->GetNetwork(), NULL, return bSuccess); ModHandle p = pModule->GetDLL(); @@ -975,7 +975,7 @@ bool CModules::GetModInfo(CModInfo& ModInfo, const CString& sModule, CString& sR CString sModPath, sTmp; bool bSuccess; - GLOBALMODULECALL(OnGetModInfo(ModInfo, sModule, bSuccess, sRetMsg), NULL, NULL, NULL, return bSuccess); + GLOBALMODULECALL(OnGetModInfo(ModInfo, sModule, bSuccess, sRetMsg), return bSuccess); if (!FindModPath(sModule, sModPath, sTmp)) { sRetMsg = "Unable to find module [" + sModule + "]"; @@ -1033,7 +1033,7 @@ void CModules::GetAvailableMods(set& ssMods, CModInfo::EModuleType eTy } } - GLOBALMODULECALL(OnGetAvailableMods(ssMods, eType), NULL, NULL, NULL, NOTHING); + GLOBALMODULECALL(OnGetAvailableMods(ssMods, eType), NOTHING); } bool CModules::FindModPath(const CString& sModule, CString& sModPath, diff --git a/Modules.h b/Modules.h index 4b5e17a3..0e3e142e 100644 --- a/Modules.h +++ b/Modules.h @@ -921,28 +921,30 @@ public: /** This function behaves like CModule::OnRaw(), but is also called * before the client successfully logged in to ZNC. You should always * prefer to use CModule::OnRaw() if possible. + * @param pClient The client which send this line. * @param sLine The raw traffic line which the client sent. - * @todo Why doesn't this use m_pUser and m_pClient? - * (Well, ok, m_pUser isn't known yet...) */ - virtual EModRet OnUnknownUserRaw(CString& sLine); + virtual EModRet OnUnknownUserRaw(CClient* pClient, CString& sLine); /** Called when a client told us CAP LS. Use ssCaps.insert("cap-name") * for announcing capabilities which your module supports. + * @param pClient The client which requested the list. * @param ssCaps set of caps which will be sent to client. */ - virtual void OnClientCapLs(SCString& ssCaps); + virtual void OnClientCapLs(CClient* pClient, SCString& ssCaps); /** Called only to check if your module supports turning on/off named capability. + * @param pClient The client which wants to enable/disable a capability. * @param sCap name of capability. * @param bState On or off, depending on which case is interesting for client. * @return true if your module supports this capability in the specified state. */ - virtual bool IsClientCapSupported(const CString& sCap, bool bState); + virtual bool IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState); /** Called when we actually need to turn a capability on or off for a client. + * @param pClient The client which requested the capability. * @param sCap name of wanted capability. * @param bState On or off, depending on which case client needs. */ - virtual void OnClientCapRequest(const CString& sCap, bool bState); + virtual void OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState); /** Called when a module is going to be loaded. * @param sModName name of the module. @@ -1103,10 +1105,10 @@ public: bool OnClientConnect(CZNCSock* pSock, const CString& sHost, unsigned short uPort); bool OnLoginAttempt(CSmartPtr Auth); bool OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); - bool OnUnknownUserRaw(CString& sLine); - bool OnClientCapLs(SCString& ssCaps); - bool IsClientCapSupported(const CString& sCap, bool bState); - bool OnClientCapRequest(const CString& sCap, bool bState); + bool OnUnknownUserRaw(CClient* pClient, CString& sLine); + bool OnClientCapLs(CClient* pClient, SCString& ssCaps); + bool IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState); + bool OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState); bool OnModuleLoading(const CString& sModName, const CString& sArgs, CModInfo::EModuleType eType, bool& bSuccess, CString& sRetMsg); bool OnModuleUnloading(CModule* pModule, bool& bSuccess, CString& sRetMsg); diff --git a/main.h b/main.h index ff12cbfa..7fdd9769 100644 --- a/main.h +++ b/main.h @@ -42,7 +42,7 @@ } \ } while (false) -#define GLOBALMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER) \ +#define _GLOBALMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER) \ do { \ CModules& GMods = CZNC::Get().GetModules(); \ CUser* pOldGUser = GMods.GetUser(); \ @@ -61,9 +61,10 @@ GMods.SetClient(pOldGClient); \ } while (false) -#define USERMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER) \ +#define _USERMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER) \ do { \ assert(macUSER != NULL); \ + _GLOBALMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER); \ CModules& UMods = macUSER->GetModules(); \ CIRCNetwork* pOldUNetwork = UMods.GetNetwork(); \ CClient* pOldUClient = UMods.GetClient(); \ @@ -82,6 +83,7 @@ do { \ assert(macUSER != NULL); \ assert(macNETWORK != NULL); \ + _USERMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER); \ CModules& NMods = ((CIRCNetwork*)macNETWORK)->GetModules(); \ CClient* pOldNClient = NMods.GetClient(); \ NMods.SetClient(macCLIENT); \ @@ -92,14 +94,11 @@ NMods.SetClient(pOldNClient); \ } while (false) -#define MODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER) \ - do { \ - GLOBALMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER); \ - USERMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER); \ - if (macNETWORK) { \ - NETWORKMODULECALL(macFUNC, macUSER, macNETWORK, macCLIENT, macEXITER); \ - } \ - } while (false) +#define GLOBALMODULECALL(macFUNC, macEXITER) \ + _GLOBALMODULECALL(macFUNC, NULL, NULL, NULL, macEXITER) + +#define USERMODULECALL(macFUNC, macUSER, macCLIENT, macEXITER) \ + _USERMODULECALL(macFUNC, macUSER, NULL, macCLIENT, macEXITER) /** @mainpage * Welcome to the API documentation for ZNC. diff --git a/znc.cpp b/znc.cpp index 0f9662cf..dd8ece3e 100644 --- a/znc.cpp +++ b/znc.cpp @@ -137,7 +137,7 @@ bool CZNC::ConnectNetwork(CIRCNetwork *pNetwork) { } #endif - MODULECALL(OnIRCConnecting(pIRCSock), pUser, pNetwork, NULL, + NETWORKMODULECALL(OnIRCConnecting(pIRCSock), pUser, pNetwork, NULL, DEBUG("Some module aborted the connection attempt"); pUser->PutStatus("Some module aborted the connection attempt"); delete pIRCSock; @@ -1394,7 +1394,7 @@ void CZNC::Broadcast(const CString& sMessage, bool bAdminOnly, if (a->second != pSkipUser) { CString sMsg = sMessage; - MODULECALL(OnBroadcast(sMsg), a->second, NULL, NULL, continue); + USERMODULECALL(OnBroadcast(sMsg), a->second, NULL, continue); a->second->PutStatusNotice("*** " + sMsg, NULL, pSkipClient); } } @@ -1450,7 +1450,7 @@ bool CZNC::AddUser(CUser* pUser, CString& sErrorRet) { << sErrorRet << "]"); return false; } - GLOBALMODULECALL(OnAddUser(*pUser, sErrorRet), pUser, NULL, NULL, + GLOBALMODULECALL(OnAddUser(*pUser, sErrorRet), DEBUG("AddUser [" << pUser->GetUserName() << "] aborted by a module [" << sErrorRet << "]"); return false; @@ -1723,7 +1723,7 @@ CZNC::TrafficStatsMap CZNC::GetTrafficStats(TrafficStatsPair &Users, void CZNC::AuthUser(CSmartPtr AuthClass) { // TODO unless the auth module calls it, CUser::IsHostAllowed() is not honoured - GLOBALMODULECALL(OnLoginAttempt(AuthClass), NULL, NULL, NULL, return); + GLOBALMODULECALL(OnLoginAttempt(AuthClass), return); CUser* pUser = FindUser(AuthClass->GetUsername());