Merge pull request #1965 from RealKindOne/stripcontrols

stripcontrols: Use new On...Message events.
This commit is contained in:
Alexey Sokolov
2025-07-15 08:02:30 +01:00
committed by GitHub
2 changed files with 85 additions and 17 deletions

View File

@@ -20,35 +20,50 @@ class CStripControlsMod : public CModule {
public:
MODCONSTRUCTOR(CStripControlsMod) {}
EModRet OnPrivCTCP(CNick& Nick, CString& sMessage) override {
sMessage.StripControls();
EModRet OnChanCTCPMessage(CCTCPMessage& Message) override {
Message.SetText(Message.GetText().StripControls_n());
return CONTINUE;
}
EModRet OnChanCTCP(CNick& Nick, CChan& Channel,
CString& sMessage) override {
sMessage.StripControls();
EModRet OnChanNoticeMessage(CNoticeMessage& Message) override {
Message.SetText(Message.GetText().StripControls_n());
return CONTINUE;
}
EModRet OnPrivNotice(CNick& Nick, CString& sMessage) override {
sMessage.StripControls();
EModRet OnChanTextMessage(CTextMessage& Message) override {
Message.SetText(Message.GetText().StripControls_n());
return CONTINUE;
}
EModRet OnChanNotice(CNick& Nick, CChan& Channel,
CString& sMessage) override {
sMessage.StripControls();
EModRet OnPrivCTCPMessage(CCTCPMessage& Message) override {
Message.SetText(Message.GetText().StripControls_n());
return CONTINUE;
}
EModRet OnPrivMsg(CNick& Nick, CString& sMessage) override {
sMessage.StripControls();
EModRet OnPrivNoticeMessage(CNoticeMessage& Message) override {
Message.SetText(Message.GetText().StripControls_n());
return CONTINUE;
}
EModRet OnChanMsg(CNick& Nick, CChan& Channel, CString& sMessage) override {
sMessage.StripControls();
EModRet OnPrivTextMessage(CTextMessage& Message) override {
Message.SetText(Message.GetText().StripControls_n());
return CONTINUE;
}
EModRet OnTopicMessage(CTopicMessage& Message) override {
Message.SetText(Message.GetText().StripControls_n());
return CONTINUE;
}
EModRet OnNumericMessage(CNumericMessage& Message) override {
// Strip topic from /list
if (Message.GetCode() == 322) { // RPL_LIST
Message.SetParam(3, Message.GetParam(3).StripControls_n());
}
// Strip topic when joining channel
else if (Message.GetCode() == 332) { // RPL_TOPIC
Message.SetParam(2, Message.GetParam(2).StripControls_n());
}
return CONTINUE;
}
};
@@ -59,6 +74,7 @@ void TModInfo<CStripControlsMod>(CModInfo& Info) {
Info.AddType(CModInfo::UserModule);
}
NETWORKMODULEDEFS(CStripControlsMod,
t_s("Strips control codes (Colors, Bold, ..) from channel "
"and private messages."))
NETWORKMODULEDEFS(
CStripControlsMod,
t_s("Strips control codes (Colors, Bold, ..) from channel "
"and private messages."))

View File

@@ -480,5 +480,57 @@ TEST_F(ZNCTest, SaslAuthExternal) {
":irc.znc.in 904 nick :SASL authentication failed");
}
TEST_F(ZNCTest, StripControlsModule) {
auto znc = Run();
auto ircd = ConnectIRCd();
auto client = LoginClient();
client.Write("znc loadmod stripcontrols");
client.ReadUntil("Loaded module");
ircd.Write(":server 001 nick :Hello");
client.Write(":nick JOIN #test");
ircd.ReadUntil("JOIN #test");
// OnChanCTCPMessage
ircd.Write(":user!id@host PRIVMSG #test :\001\002bold\002 \003\034red\003 test\001");
client.ReadUntil(":user!id@host PRIVMSG #test :\001bold red test\001");
// OnChanNoticeMessage
ircd.Write(":user!id@host NOTICE #test :\002bold\002 \003\034red\003 test");
client.ReadUntil(":user!id@host NOTICE #test :bold red test");
// OnChanTextMessage
ircd.Write(":user!id@host PRIVMSG #test :\002bold\002 \003\034red\003 test");
client.ReadUntil(":user!id@host PRIVMSG #test :bold red test");
// OnPrivCTCPMessage
ircd.Write(":user!id@host PRIVMSG nick :\001\002bold\002 \003\034red\003 test\001");
client.ReadUntil(":user!id@host PRIVMSG nick :\001bold red test\001");
// OnPrivNoticeMessage
ircd.Write(":user!id@host NOTICE nick :\002bold\002 \003\034red\003 test");
client.ReadUntil(":user!id@host NOTICE nick :bold red test");
// OnPrivTextMessage
ircd.Write(":user!id@host PRIVMSG nick :\002bold\002 \003\034red\003 test");
client.ReadUntil(":user!id@host PRIVMSG nick :bold red test");
// OnTopicMessage
ircd.Write(":user!id@host TOPIC #test :\002bold\002 \003\034red\003 test");
client.ReadUntil(":user!id@host TOPIC #test :bold red test");
// OnNumericMessage
// Topic from joining channel.
ircd.Write("332 nick #test :\002bold\002 \003\034red\003 test");
client.ReadUntil("332 nick #test :bold red test");
// Topic from /list
//ircd.Write("321 nick Channel :Users Name]");
ircd.Write("322 nick #test 42 :\002bold\002 \003\034red\003 test");
client.ReadUntil("322 nick #test 42 :bold red test");
}
} // namespace
} // namespace znc_inttest