Add modpython sasl test

This commit is contained in:
Alexey Sokolov
2025-03-15 22:43:35 +00:00
parent d6578402b7
commit 93e364b296
4 changed files with 54 additions and 0 deletions
+1
View File
@@ -115,6 +115,7 @@ void OnClientCapRequest(CClient* pClient, const CString& sCap, bool bState)
void OnClientGetSASLMechanisms(SCString& ssMechanisms)
EModRet OnClientSASLServerInitialChallenge(const CString& sMechanism, CString& sResponse)
EModRet OnClientSASLAuthenticate(const CString& sMechanism, const CString& sMessage)
void OnClientSASLAborted()
EModRet OnModuleLoading(const CString& sModName, const CString& sArgs, CModInfo::EModuleType eType, bool& bSuccess, CString& sRetMsg)
EModRet OnModuleUnloading(CModule* pModule, bool& bSuccess, CString& sRetMsg)
EModRet OnGetModInfo(CModInfo& ModInfo, const CString& sModule, bool& bSuccess, CString& sRetMsg)
+1
View File
@@ -199,6 +199,7 @@ class ZNC_EXPORT_LIB_EXPORT CPyModule : public CModule {
CString& sResponse) override;
EModRet OnClientSASLAuthenticate(const CString& sMechanism,
const CString& sMessage) override;
void OnClientSASLAborted() override;
virtual EModRet OnModuleLoading(const CString& sModName,
const CString& sArgs,
CModInfo::EModuleType eType, bool& bSuccess,
+3
View File
@@ -487,6 +487,9 @@ class Module:
def OnClientSASLAuthenticate(self, sMechanism, sMessage):
pass
def OnClientSASLAborted(self):
pass
def OnModuleLoading(self, sModName, sArgs, eType, bSuccess, sRetMsg):
pass
+49
View File
@@ -355,5 +355,54 @@ TEST_F(ZNCTest, ModpythonCommand) {
client.ReadUntil(":*cmdtest!cmdtest@znc.in PRIVMSG nick :ping понг");
}
TEST_F(ZNCTest, ModpythonSaslAuth) {
#ifndef WANT_PYTHON
GTEST_SKIP() << "Modpython is disabled";
#endif
auto znc = Run();
znc->CanLeak();
InstallModule("sasltest.py", R"(
import znc
class sasltest(znc.Module):
module_types = [znc.CModInfo.GlobalModule]
def OnClientGetSASLMechanisms(self, ssMechanisms):
ssMechanisms.insert("FOO")
def OnClientSASLServerInitialChallenge(self, sMechanism, sResponse):
if sMechanism == "FOO":
sResponse.s = "Welcome"
return znc.CONTINUE
def OnClientSASLAuthenticate(self, sMechanism, sMessage):
if sMechanism == "FOO":
user = znc.CZNC.Get().FindUser("user")
self.GetClient().AcceptSASLLogin(user)
return znc.HALT
return znc.CONTINUE
)");
auto ircd = ConnectIRCd();
auto client = LoginClient();
client.Write("znc loadmod modpython");
client.Write("znc loadmod sasltest");
client.ReadUntil("Loaded");
auto client2 = ConnectClient();
client2.Write("CAP LS 302");
client2.Write("NICK nick");
client2.ReadUntil(" sasl=FOO,PLAIN ");
client2.Write("CAP REQ :sasl");
client2.Write("AUTHENTICATE FOO");
client2.ReadUntil("AUTHENTICATE " + QByteArrayLiteral("Welcome").toBase64());
client2.Write("AUTHENTICATE +");
client2.ReadUntil(
":irc.znc.in 900 nick nick!user@127.0.0.1 user :You are now logged in "
"as user");
}
} // namespace
} // namespace znc_inttest