From 6903c458b10fd6f6a762d866baa1b89b32be76c8 Mon Sep 17 00:00:00 2001 From: KindOne Date: Sun, 15 Jun 2025 03:22:27 -0400 Subject: [PATCH 1/4] log: Use new On...Message for events. --- modules/log.cpp | 109 +++++++++++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 42 deletions(-) diff --git a/modules/log.cpp b/modules/log.cpp index 0d42546b..611390f9 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -95,35 +95,31 @@ class CLogMod : public CModule { void OnRawMode2(const CNick* pOpNick, CChan& Channel, const CString& sModes, const CString& sArgs) override; - void OnKick(const CNick& OpNick, const CString& sKickedNick, CChan& Channel, - const CString& sMessage) override; - void OnQuit(const CNick& Nick, const CString& sMessage, - const vector& vChans) override; + void OnKickMessage(CKickMessage& Message) override; + void OnQuitMessage(CQuitMessage& Message, + const vector& vChans) override; void OnJoinMessage(CJoinMessage& Message) override; - void OnPart(const CNick& Nick, CChan& Channel, - const CString& sMessage) override; - void OnNick(const CNick& OldNick, const CString& sNewNick, - const vector& vChans) override; - EModRet OnTopic(CNick& Nick, CChan& Channel, CString& sTopic) override; + void OnPartMessage(CPartMessage& Message) override; + void OnNickMessage(CNickMessage& Message, + const vector& vChans) override; + EModRet OnTopicMessage(CTopicMessage& Message) override; EModRet OnSendToIRCMessage(CMessage& Message) override; /* notices */ - EModRet OnUserNotice(CString& sTarget, CString& sMessage) override; - EModRet OnPrivNotice(CNick& Nick, CString& sMessage) override; - EModRet OnChanNotice(CNick& Nick, CChan& Channel, - CString& sMessage) override; + EModRet OnUserNoticeMessage(CNoticeMessage& Message) override; + EModRet OnPrivNoticeMessage(CNoticeMessage& Message) override; + EModRet OnChanNoticeMessage(CNoticeMessage& Message) override; /* actions */ - EModRet OnUserAction(CString& sTarget, CString& sMessage) override; - EModRet OnPrivAction(CNick& Nick, CString& sMessage) override; - EModRet OnChanAction(CNick& Nick, CChan& Channel, - CString& sMessage) override; + EModRet OnUserActionMessage(CActionMessage& Message) override; + EModRet OnPrivActionMessage(CActionMessage& Message) override; + EModRet OnChanActionMessage(CActionMessage& Message) override; /* msgs */ - EModRet OnUserMsg(CString& sTarget, CString& sMessage) override; - EModRet OnPrivMsg(CNick& Nick, CString& sMessage) override; - EModRet OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) override; + EModRet OnUserTextMessage(CTextMessage& Message) override; + EModRet OnPrivTextMessage(CTextMessage& Message) override; + EModRet OnChanTextMessage(CTextMessage& Message) override; private: bool NeedJoins() const; @@ -429,15 +425,20 @@ void CLogMod::OnRawMode2(const CNick* pOpNick, CChan& Channel, PutLog("*** " + sNick + " sets mode: " + sModes + " " + sArgs, Channel); } -void CLogMod::OnKick(const CNick& OpNick, const CString& sKickedNick, - CChan& Channel, const CString& sMessage) { +void CLogMod::OnKickMessage(CKickMessage& Message) { + const CNick& OpNick = Message.GetNick(); + const CString sKickedNick = Message.GetKickedNick(); + CChan& Channel = *Message.GetChan(); + const CString sMessage = Message.GetReason(); PutLog("*** " + sKickedNick + " was kicked by " + OpNick.GetNick() + " (" + sMessage + ")", Channel); } -void CLogMod::OnQuit(const CNick& Nick, const CString& sMessage, - const vector& vChans) { +void CLogMod::OnQuitMessage(CQuitMessage& Message, + const vector& vChans) { + const CNick& Nick = Message.GetNick(); + const CString sMessage = Message.GetReason(); if (NeedQuits()) { for (CChan* pChan : vChans) { // Core calls this only for enabled channels, but @@ -485,15 +486,19 @@ void CLogMod::OnJoinMessage(CJoinMessage& Message) { Channel); } -void CLogMod::OnPart(const CNick& Nick, CChan& Channel, - const CString& sMessage) { +void CLogMod::OnPartMessage(CPartMessage& Message) { + const CNick& Nick = Message.GetNick(); + CChan& Channel = *Message.GetChan(); + const CString sMessage = Message.GetReason(); PutLog("*** Parts: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + Nick.GetHost() + ") (" + sMessage + ")", Channel); } -void CLogMod::OnNick(const CNick& OldNick, const CString& sNewNick, - const vector& vChans) { +void CLogMod::OnNickMessage(CNickMessage& Message, + const vector& vChans) { + const CNick& OldNick = Message.GetNick(); + const CString sNewNick = Message.GetNewNick(); if (NeedNickChanges()) { for (CChan* pChan : vChans) PutLog("*** " + OldNick.GetNick() + " is now known as " + sNewNick, @@ -501,16 +506,20 @@ void CLogMod::OnNick(const CNick& OldNick, const CString& sNewNick, } } -CModule::EModRet CLogMod::OnTopic(CNick& Nick, CChan& Channel, - CString& sTopic) { +CModule::EModRet CLogMod::OnTopicMessage(CTopicMessage& Message) { + const CNick& Nick = Message.GetNick(); + CChan& Channel = *Message.GetChan(); + CString sTopic = Message.GetTopic(); PutLog("*** " + Nick.GetNick() + " changes topic to '" + sTopic + "'", Channel); return CONTINUE; } /* notices */ -CModule::EModRet CLogMod::OnUserNotice(CString& sTarget, CString& sMessage) { +CModule::EModRet CLogMod::OnUserNoticeMessage(CNoticeMessage& Message) { CIRCNetwork* pNetwork = GetNetwork(); + CString sTarget = Message.GetTarget(); + CString sMessage = Message.GetText(); if (pNetwork) { PutLog("-" + pNetwork->GetCurNick() + "- " + sMessage, sTarget); } @@ -518,20 +527,26 @@ CModule::EModRet CLogMod::OnUserNotice(CString& sTarget, CString& sMessage) { return CONTINUE; } -CModule::EModRet CLogMod::OnPrivNotice(CNick& Nick, CString& sMessage) { +CModule::EModRet CLogMod::OnPrivNoticeMessage(CNoticeMessage& Message) { + const CNick& Nick = Message.GetNick(); + CString sMessage = Message.GetText(); PutLog("-" + Nick.GetNick() + "- " + sMessage, Nick); return CONTINUE; } -CModule::EModRet CLogMod::OnChanNotice(CNick& Nick, CChan& Channel, - CString& sMessage) { +CModule::EModRet CLogMod::OnChanNoticeMessage(CNoticeMessage& Message) { + const CNick& Nick = Message.GetNick(); + CString sMessage = Message.GetText(); + CChan& Channel = *Message.GetChan(); PutLog("-" + Nick.GetNick() + "- " + sMessage, Channel); return CONTINUE; } /* actions */ -CModule::EModRet CLogMod::OnUserAction(CString& sTarget, CString& sMessage) { +CModule::EModRet CLogMod::OnUserActionMessage(CActionMessage& Message) { CIRCNetwork* pNetwork = GetNetwork(); + CString sMessage = Message.GetText(); + CString sTarget = Message.GetTarget(); if (pNetwork) { PutLog("* " + pNetwork->GetCurNick() + " " + sMessage, sTarget); } @@ -539,20 +554,26 @@ CModule::EModRet CLogMod::OnUserAction(CString& sTarget, CString& sMessage) { return CONTINUE; } -CModule::EModRet CLogMod::OnPrivAction(CNick& Nick, CString& sMessage) { +CModule::EModRet CLogMod::OnPrivActionMessage(CActionMessage& Message) { + const CNick& Nick = Message.GetNick(); + CString sMessage = Message.GetText(); PutLog("* " + Nick.GetNick() + " " + sMessage, Nick); return CONTINUE; } -CModule::EModRet CLogMod::OnChanAction(CNick& Nick, CChan& Channel, - CString& sMessage) { +CModule::EModRet CLogMod::OnChanActionMessage(CActionMessage& Message) { + const CNick& Nick = Message.GetNick(); + CString sMessage = Message.GetText(); + CChan& Channel = *Message.GetChan(); PutLog("* " + Nick.GetNick() + " " + sMessage, Channel); return CONTINUE; } /* msgs */ -CModule::EModRet CLogMod::OnUserMsg(CString& sTarget, CString& sMessage) { +CModule::EModRet CLogMod::OnUserTextMessage(CTextMessage& Message) { CIRCNetwork* pNetwork = GetNetwork(); + CString sTarget = Message.GetTarget(); + CString sMessage = Message.GetText(); if (pNetwork) { PutLog("<" + pNetwork->GetCurNick() + "> " + sMessage, sTarget); } @@ -560,13 +581,17 @@ CModule::EModRet CLogMod::OnUserMsg(CString& sTarget, CString& sMessage) { return CONTINUE; } -CModule::EModRet CLogMod::OnPrivMsg(CNick& Nick, CString& sMessage) { +CModule::EModRet CLogMod::OnPrivTextMessage(CTextMessage& Message) { + const CNick& Nick = Message.GetNick(); + CString sMessage = Message.GetText(); PutLog("<" + Nick.GetNick() + "> " + sMessage, Nick); return CONTINUE; } -CModule::EModRet CLogMod::OnChanMsg(CNick& Nick, CChan& Channel, - CString& sMessage) { +CModule::EModRet CLogMod::OnChanTextMessage(CTextMessage& Message) { + const CNick& Nick = Message.GetNick(); + CString sMessage = Message.GetText(); + CChan& Channel = *Message.GetChan(); PutLog("<" + Nick.GetNick() + "> " + sMessage, Channel); return CONTINUE; } From 754ebdf822568f7feb4f8df8944d4eaa6d895850 Mon Sep 17 00:00:00 2001 From: KindOne <20209685+RealKindOne@users.noreply.github.com> Date: Mon, 16 Jun 2025 03:31:45 -0400 Subject: [PATCH 2/4] log: Fix OnQuitMessage. --- modules/log.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/log.cpp b/modules/log.cpp index 611390f9..8d24364a 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -437,12 +437,12 @@ void CLogMod::OnKickMessage(CKickMessage& Message) { void CLogMod::OnQuitMessage(CQuitMessage& Message, const vector& vChans) { - const CNick& Nick = Message.GetNick(); - const CString sMessage = Message.GetReason(); if (NeedQuits()) { + const CNick& Nick = Message.GetNick(); + const CString sMessage = Message.GetReason(); for (CChan* pChan : vChans) { // Core calls this only for enabled channels, but - // OnSendToIRCMessage() below calls OnQuit() for all channels. + // OnSendToIRCMessage() below calls OnQuitMessage() for all channels. if (pChan->IsDisabled()) continue; PutLog("*** Quits: " + Nick.GetNick() + " (" + Nick.GetIdent() + "@" + Nick.GetHost() + ") (" + sMessage + ")", @@ -456,9 +456,10 @@ CModule::EModRet CLogMod::OnSendToIRCMessage(CMessage& Message) { return CONTINUE; } CIRCNetwork* pNetwork = Message.GetNetwork(); - OnQuit(pNetwork->GetIRCNick(), - Message.As().GetReason(), - pNetwork->GetChans()); + CQuitMessage& QuitMsg = Message.As(); + QuitMsg.SetNick(pNetwork->GetIRCNick()); + + OnQuitMessage(QuitMsg, pNetwork->GetChans()); return CONTINUE; } From 79491ad2afcd715410ee4837e69dad68dfe1eaf5 Mon Sep 17 00:00:00 2001 From: KindOne <20209685+RealKindOne@users.noreply.github.com> Date: Thu, 19 Jun 2025 04:33:17 -0400 Subject: [PATCH 3/4] log: Create helper. --- modules/log.cpp | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/modules/log.cpp b/modules/log.cpp index 8d24364a..5fc45dc3 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -98,6 +98,9 @@ class CLogMod : public CModule { void OnKickMessage(CKickMessage& Message) override; void OnQuitMessage(CQuitMessage& Message, const vector& vChans) override; + void LogQuitHelper(const CNick& Nick, const CString& sMessage, + const vector& vChans); + void OnJoinMessage(CJoinMessage& Message) override; void OnPartMessage(CPartMessage& Message) override; void OnNickMessage(CNickMessage& Message, @@ -435,11 +438,9 @@ void CLogMod::OnKickMessage(CKickMessage& Message) { Channel); } -void CLogMod::OnQuitMessage(CQuitMessage& Message, - const vector& vChans) { +void CLogMod::LogQuitHelper(const CNick& Nick, const CString& sMessage, + const vector& vChans) { if (NeedQuits()) { - const CNick& Nick = Message.GetNick(); - const CString sMessage = Message.GetReason(); for (CChan* pChan : vChans) { // Core calls this only for enabled channels, but // OnSendToIRCMessage() below calls OnQuitMessage() for all channels. @@ -451,18 +452,28 @@ void CLogMod::OnQuitMessage(CQuitMessage& Message, } } +void CLogMod::OnQuitMessage(CQuitMessage& Message, + const vector& vChans) { + LogQuitHelper(Message.GetNick(), Message.GetReason(), vChans); +} + CModule::EModRet CLogMod::OnSendToIRCMessage(CMessage& Message) { if (Message.GetType() != CMessage::Type::Quit) { return CONTINUE; } CIRCNetwork* pNetwork = Message.GetNetwork(); CQuitMessage& QuitMsg = Message.As(); - QuitMsg.SetNick(pNetwork->GetIRCNick()); - OnQuitMessage(QuitMsg, pNetwork->GetChans()); + // Log our quit message first + QuitMsg.SetNick(pNetwork->GetIRCNick()); + LogQuitHelper(QuitMsg.GetNick(), QuitMsg.GetReason(), pNetwork->GetChans()); + + // Strip :nick!ident@host and only send "QUIT :reason" + QuitMsg.SetNick(CNick{}); return CONTINUE; } + void CLogMod::OnJoinMessage(CJoinMessage& Message) { if (!NeedJoins()) return; From cd8587ddba5d1a815461fbb698128443735c93f9 Mon Sep 17 00:00:00 2001 From: KindOne <20209685+RealKindOne@users.noreply.github.com> Date: Thu, 19 Jun 2025 17:30:58 -0400 Subject: [PATCH 4/4] log: Use suggested changes. Co-authored-by: Alexey Sokolov --- modules/log.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/log.cpp b/modules/log.cpp index 5fc45dc3..aba8a775 100644 --- a/modules/log.cpp +++ b/modules/log.cpp @@ -464,12 +464,8 @@ CModule::EModRet CLogMod::OnSendToIRCMessage(CMessage& Message) { CIRCNetwork* pNetwork = Message.GetNetwork(); CQuitMessage& QuitMsg = Message.As(); - // Log our quit message first - QuitMsg.SetNick(pNetwork->GetIRCNick()); - LogQuitHelper(QuitMsg.GetNick(), QuitMsg.GetReason(), pNetwork->GetChans()); + LogQuitHelper(pNetwork->GetIRCNick(), QuitMsg.GetReason(), pNetwork->GetChans()); - // Strip :nick!ident@host and only send "QUIT :reason" - QuitMsg.SetNick(CNick{}); return CONTINUE; }