From f1dead9ff31b0ad41f1316db99ab59fb06518a84 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Sun, 16 Aug 2015 14:44:36 +0200 Subject: [PATCH] Add OnUserXxxMessage(CXxxMessage) module hooks --- include/znc/Modules.h | 22 +++++++++++ src/Modules.cpp | 86 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 108 insertions(+) diff --git a/include/znc/Modules.h b/include/znc/Modules.h index ba25e326..183d6e05 100644 --- a/include/znc/Modules.h +++ b/include/znc/Modules.h @@ -679,6 +679,7 @@ public: * @return See CModule::EModRet. */ virtual EModRet OnUserRaw(CString& sLine); + virtual EModRet OnUserRawMessage(CMessage& Message); /** This module hook is called when a client sends a CTCP reply. * @param sTarget The target for the CTCP reply. Could be a channel * name or a nick name. @@ -686,6 +687,7 @@ public: * @return See CModule::EModRet. */ virtual EModRet OnUserCTCPReply(CString& sTarget, CString& sMessage); + virtual EModRet OnUserCTCPReplyMessage(CCTCPMessage& Message); /** This module hook is called when a client sends a CTCP request. * @param sTarget The target for the CTCP request. Could be a channel * name or a nick name. @@ -695,6 +697,7 @@ public: * CModule::OnUserAction() instead. */ virtual EModRet OnUserCTCP(CString& sTarget, CString& sMessage); + virtual EModRet OnUserCTCPMessage(CCTCPMessage& Message); /** Called when a client sends a CTCP ACTION request ("/me"). * @param sTarget The target for the CTCP ACTION. Could be a channel * name or a nick name. @@ -703,6 +706,7 @@ public: * @note CModule::OnUserCTCP() will not be called for this message. */ virtual EModRet OnUserAction(CString& sTarget, CString& sMessage); + virtual EModRet OnUserActionMessage(CActionMessage& Message); /** This module hook is called when a user sends a normal IRC message. * @param sTarget The target of the message. Could be a channel name or * a nick name. @@ -710,6 +714,7 @@ public: * @return See CModule::EModRet. */ virtual EModRet OnUserMsg(CString& sTarget, CString& sMessage); + virtual EModRet OnUserTextMessage(CTextMessage& Message); /** This module hook is called when a user sends a notice message. * @param sTarget The target of the message. Could be a channel name or * a nick name. @@ -717,24 +722,28 @@ public: * @return See CModule::EModRet. */ virtual EModRet OnUserNotice(CString& sTarget, CString& sMessage); + virtual EModRet OnUserNoticeMessage(CNoticeMessage& Message); /** This hooks is called when a user sends a JOIN message. * @param sChannel The channel name the join is for. * @param sKey The key for the channel. * @return See CModule::EModRet. */ virtual EModRet OnUserJoin(CString& sChannel, CString& sKey); + virtual EModRet OnUserJoinMessage(CJoinMessage& Message); /** This hooks is called when a user sends a PART message. * @param sChannel The channel name the part is for. * @param sMessage The part message the client sent. * @return See CModule::EModRet. */ virtual EModRet OnUserPart(CString& sChannel, CString& sMessage); + virtual EModRet OnUserPartMessage(CPartMessage& Message); /** This module hook is called when a user wants to change a channel topic. * @param sChannel The channel. * @param sTopic The new topic which the user sent. * @return See CModule::EModRet. */ virtual EModRet OnUserTopic(CString& sChannel, CString& sTopic); + virtual EModRet OnUserTopicMessage(CTopicMessage& Message); /** This hook is called when a user requests a channel's topic. * @param sChannel The channel for which the request is. * @return See CModule::EModRet. @@ -745,6 +754,7 @@ public: * @return See CModule::EModRet. */ virtual EModRet OnUserQuit(CString& sMessage); + virtual EModRet OnUserQuitMessage(CQuitMessage& Message); /** Called when we receive a CTCP reply from IRC. * @param Nick The nick the CTCP reply is from. @@ -1075,6 +1085,7 @@ public: * @param sLine The raw traffic line which the client sent. */ virtual EModRet OnUnknownUserRaw(CClient* pClient, CString& sLine); + virtual EModRet OnUnknownUserRawMessage(CMessage& Message); /** Called when a client told us CAP LS. Use ssCaps.insert("cap-name") * for announcing capabilities which your module supports. @@ -1230,16 +1241,26 @@ public: bool OnClientLogin(); bool OnClientDisconnect(); bool OnUserRaw(CString& sLine); + bool OnUserRawMessage(CMessage& Message); bool OnUserCTCPReply(CString& sTarget, CString& sMessage); + bool OnUserCTCPReplyMessage(CCTCPMessage& Message); bool OnUserCTCP(CString& sTarget, CString& sMessage); + bool OnUserCTCPMessage(CCTCPMessage& Message); bool OnUserAction(CString& sTarget, CString& sMessage); + bool OnUserActionMessage(CActionMessage& Message); bool OnUserMsg(CString& sTarget, CString& sMessage); + bool OnUserTextMessage(CTextMessage& Message); bool OnUserNotice(CString& sTarget, CString& sMessage); + bool OnUserNoticeMessage(CNoticeMessage& Message); bool OnUserJoin(CString& sChannel, CString& sKey); + bool OnUserJoinMessage(CJoinMessage& Message); bool OnUserPart(CString& sChannel, CString& sMessage); + bool OnUserPartMessage(CPartMessage& Message); bool OnUserTopic(CString& sChannel, CString& sTopic); + bool OnUserTopicMessage(CTopicMessage& Message); bool OnUserTopicRequest(CString& sChannel); bool OnUserQuit(CString& sMessage); + bool OnUserQuitMessage(CQuitMessage& Message); bool OnCTCPReply(CNick& Nick, CString& sMessage); bool OnPrivCTCP(CNick& Nick, CString& sMessage); @@ -1298,6 +1319,7 @@ public: bool OnLoginAttempt(std::shared_ptr Auth); bool OnFailedLogin(const CString& sUsername, const CString& sRemoteIP); bool OnUnknownUserRaw(CClient* pClient, CString& sLine); + bool OnUnknownUserRawMessage(CMessage& Message); bool OnClientCapLs(CClient* pClient, SCString& ssCaps); bool IsClientCapSupported(CClient* pClient, const CString& sCap, bool bState); bool OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState); diff --git a/src/Modules.cpp b/src/Modules.cpp index 9b848e2c..48f47937 100644 --- a/src/Modules.cpp +++ b/src/Modules.cpp @@ -683,16 +683,87 @@ CModule::EModRet CModule::OnPrivBufferPlayMessage(CMessage& Message) { void CModule::OnClientLogin() {} void CModule::OnClientDisconnect() {} CModule::EModRet CModule::OnUserRaw(CString& sLine) { return CONTINUE; } +CModule::EModRet CModule::OnUserRawMessage(CMessage& Message) { return CONTINUE; } CModule::EModRet CModule::OnUserCTCPReply(CString& sTarget, CString& sMessage) { return CONTINUE; } +CModule::EModRet CModule::OnUserCTCPReplyMessage(CCTCPMessage& Message) { + CString sTarget = Message.GetTarget(); + CString sText = Message.GetText(); + EModRet ret = OnUserCTCPReply(sTarget, sText); + Message.SetTarget(sTarget); + Message.SetText(sText); + return ret; +} CModule::EModRet CModule::OnUserCTCP(CString& sTarget, CString& sMessage) { return CONTINUE; } +CModule::EModRet CModule::OnUserCTCPMessage(CCTCPMessage& Message) { + CString sTarget = Message.GetTarget(); + CString sText = Message.GetText(); + EModRet ret = OnUserCTCP(sTarget, sText); + Message.SetTarget(sTarget); + Message.SetText(sText); + return ret; +} CModule::EModRet CModule::OnUserAction(CString& sTarget, CString& sMessage) { return CONTINUE; } +CModule::EModRet CModule::OnUserActionMessage(CActionMessage& Message) { + CString sTarget = Message.GetTarget(); + CString sText = Message.GetText(); + EModRet ret = OnUserAction(sTarget, sText); + Message.SetTarget(sTarget); + Message.SetText(sText); + return ret; +} CModule::EModRet CModule::OnUserMsg(CString& sTarget, CString& sMessage) { return CONTINUE; } +CModule::EModRet CModule::OnUserTextMessage(CTextMessage& Message) { + CString sTarget = Message.GetTarget(); + CString sText = Message.GetText(); + EModRet ret = OnUserMsg(sTarget, sText); + Message.SetTarget(sTarget); + Message.SetText(sText); + return ret; +} CModule::EModRet CModule::OnUserNotice(CString& sTarget, CString& sMessage) { return CONTINUE; } +CModule::EModRet CModule::OnUserNoticeMessage(CNoticeMessage& Message) { + CString sTarget = Message.GetTarget(); + CString sText = Message.GetText(); + EModRet ret = OnUserNotice(sTarget, sText); + Message.SetTarget(sTarget); + Message.SetText(sText); + return ret; +} CModule::EModRet CModule::OnUserJoin(CString& sChannel, CString& sKey) { return CONTINUE; } +CModule::EModRet CModule::OnUserJoinMessage(CJoinMessage& Message) { + CString sChan = Message.GetTarget(); + CString sKey = Message.GetKey(); + EModRet ret = OnUserJoin(sChan, sKey); + Message.SetTarget(sChan); + Message.SetKey(sKey); + return ret; +} CModule::EModRet CModule::OnUserPart(CString& sChannel, CString& sMessage) { return CONTINUE; } +CModule::EModRet CModule::OnUserPartMessage(CPartMessage& Message) { + CString sChan = Message.GetTarget(); + CString sReason = Message.GetReason(); + EModRet ret = OnUserPart(sChan, sReason); + Message.SetTarget(sChan); + Message.SetReason(sReason); + return ret; +} CModule::EModRet CModule::OnUserTopic(CString& sChannel, CString& sTopic) { return CONTINUE; } +CModule::EModRet CModule::OnUserTopicMessage(CTopicMessage& Message) { + CString sChan = Message.GetTarget(); + CString sTopic = Message.GetTopic(); + EModRet ret = OnUserTopic(sChan, sTopic); + Message.SetTarget(sChan); + Message.SetTopic(sTopic); + return ret; +} CModule::EModRet CModule::OnUserTopicRequest(CString& sChannel) { return CONTINUE; } CModule::EModRet CModule::OnUserQuit(CString& sMessage) { return CONTINUE; } +CModule::EModRet CModule::OnUserQuitMessage(CQuitMessage& Message) { + CString sReason = Message.GetReason(); + EModRet ret = OnUserQuit(sReason); + Message.SetReason(sReason); + return ret; +} CModule::EModRet CModule::OnCTCPReply(CNick& Nick, CString& sMessage) { return CONTINUE; } CModule::EModRet CModule::OnPrivCTCP(CNick& Nick, CString& sMessage) { return CONTINUE; } @@ -824,6 +895,7 @@ void CModule::OnClientConnect(CZNCSock* pClient, const CString& sHost, unsigned CModule::EModRet CModule::OnLoginAttempt(std::shared_ptr Auth) { return CONTINUE; } void CModule::OnFailedLogin(const CString& sUsername, const CString& sRemoteIP) {} CModule::EModRet CModule::OnUnknownUserRaw(CClient* pClient, CString& sLine) { return CONTINUE; } +CModule::EModRet CModule::OnUnknownUserRawMessage(CMessage& Message) { 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) {} @@ -897,16 +969,26 @@ bool CModules::OnRawMessage(CMessage& Message) { MODHALTCHK(OnRawMessage(Message bool CModules::OnClientLogin() { MODUNLOADCHK(OnClientLogin()); return false; } bool CModules::OnClientDisconnect() { MODUNLOADCHK(OnClientDisconnect()); return false; } bool CModules::OnUserRaw(CString& sLine) { MODHALTCHK(OnUserRaw(sLine)); } +bool CModules::OnUserRawMessage(CMessage& Message) { MODHALTCHK(OnUserRawMessage(Message)); } bool CModules::OnUserCTCPReply(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCPReply(sTarget, sMessage)); } +bool CModules::OnUserCTCPReplyMessage(CCTCPMessage& Message) { MODHALTCHK(OnUserCTCPReplyMessage(Message)); } bool CModules::OnUserCTCP(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserCTCP(sTarget, sMessage)); } +bool CModules::OnUserCTCPMessage(CCTCPMessage& Message) { MODHALTCHK(OnUserCTCPMessage(Message)); } bool CModules::OnUserAction(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserAction(sTarget, sMessage)); } +bool CModules::OnUserActionMessage(CActionMessage& Message) { MODHALTCHK(OnUserActionMessage(Message)); } bool CModules::OnUserMsg(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserMsg(sTarget, sMessage)); } +bool CModules::OnUserTextMessage(CTextMessage& Message) { MODHALTCHK(OnUserTextMessage(Message)); } bool CModules::OnUserNotice(CString& sTarget, CString& sMessage) { MODHALTCHK(OnUserNotice(sTarget, sMessage)); } +bool CModules::OnUserNoticeMessage(CNoticeMessage& Message) { MODHALTCHK(OnUserNoticeMessage(Message)); } bool CModules::OnUserJoin(CString& sChannel, CString& sKey) { MODHALTCHK(OnUserJoin(sChannel, sKey)); } +bool CModules::OnUserJoinMessage(CJoinMessage& Message) { MODHALTCHK(OnUserJoinMessage(Message)); } bool CModules::OnUserPart(CString& sChannel, CString& sMessage) { MODHALTCHK(OnUserPart(sChannel, sMessage)); } +bool CModules::OnUserPartMessage(CPartMessage& Message) { MODHALTCHK(OnUserPartMessage(Message)); } bool CModules::OnUserTopic(CString& sChannel, CString& sTopic) { MODHALTCHK(OnUserTopic(sChannel, sTopic)); } +bool CModules::OnUserTopicMessage(CTopicMessage& Message) { MODHALTCHK(OnUserTopicMessage(Message)); } bool CModules::OnUserTopicRequest(CString& sChannel) { MODHALTCHK(OnUserTopicRequest(sChannel)); } bool CModules::OnUserQuit(CString& sMessage) { MODHALTCHK(OnUserQuit(sMessage)); } +bool CModules::OnUserQuitMessage(CQuitMessage& Message) { MODHALTCHK(OnUserQuitMessage(Message)); } bool CModules::OnQuit(const CNick& Nick, const CString& sMessage, const vector& vChans) { MODUNLOADCHK(OnQuit(Nick, sMessage, vChans)); return false; } bool CModules::OnQuitMessage(CQuitMessage& Message, const vector& vChans) { MODUNLOADCHK(OnQuitMessage(Message, vChans)); return false; } @@ -1014,6 +1096,10 @@ bool CModules::OnUnknownUserRaw(CClient* pClient, CString& sLine) { MODHALTCHK(OnUnknownUserRaw(pClient, sLine)); } +bool CModules::OnUnknownUserRawMessage(CMessage& Message) { + MODHALTCHK(OnUnknownUserRawMessage(Message)); +} + bool CModules::OnClientCapLs(CClient* pClient, SCString& ssCaps) { MODUNLOADCHK(OnClientCapLs(pClient, ssCaps)); return false;