diff options
| author | 2025-03-17 09:37:30 +0000 | |
|---|---|---|
| committer | 2025-03-17 09:37:30 +0000 | |
| commit | 6f23368f138c84815465e76c478cf918f32f9b7d (patch) | |
| tree | ccae4c0b7241f1d13b5e22556a4259b9c90f491d | |
| parent | Fix window activation on trayicon click under KDE (#2696) (diff) | |
| download | KVIrc-6f23368f138c84815465e76c478cf918f32f9b7d.tar.gz KVIrc-6f23368f138c84815465e76c478cf918f32f9b7d.tar.bz2 KVIrc-6f23368f138c84815465e76c478cf918f32f9b7d.zip | |
Support sending authorization ID in SASL EXTERNAL (#2700)
The use case is provide network name and client ID to ZNC
See https://github.com/znc/znc/pull/1936
| -rw-r--r-- | src/kvilib/net/KviSASL.cpp | 11 | ||||
| -rw-r--r-- | src/kvilib/net/KviSASL.h | 3 | ||||
| -rw-r--r-- | src/kvirc/kernel/KviIrcConnection.cpp | 2 |
3 files changed, 12 insertions, 4 deletions
diff --git a/src/kvilib/net/KviSASL.cpp b/src/kvilib/net/KviSASL.cpp index b6b88eeb4..bce89a857 100644 --- a/src/kvilib/net/KviSASL.cpp +++ b/src/kvilib/net/KviSASL.cpp @@ -68,11 +68,18 @@ namespace KviSASL return false; } - bool externalMethod(const KviCString & szIn, KviCString & szOut) + bool externalMethod(const KviCString & szIn, KviCString & szOut, const QByteArray & baNick) { if(szIn == "+") { - szOut = szIn; + if(baNick.isEmpty()) + { + szOut = szIn; + } + else + { + szOut.bufferToBase64(baNick.data(), baNick.size()); + } return true; } diff --git a/src/kvilib/net/KviSASL.h b/src/kvilib/net/KviSASL.h index c39b7072c..5ee030a2b 100644 --- a/src/kvilib/net/KviSASL.h +++ b/src/kvilib/net/KviSASL.h @@ -59,9 +59,10 @@ namespace KviSASL * \brief Create the auth message for EXTERNAL authentication * \param szIn The server-provided token * \param szOut A KviCString that will be filled with the authentication message + * \param baNick The username, may be empty * \return bool */ - extern KVILIB_API bool externalMethod(const KviCString & szIn, KviCString & szOut); + extern KVILIB_API bool externalMethod(const KviCString & szIn, KviCString & szOut, const QByteArray & baNick); }; #endif //_KVI_SASL_H_ diff --git a/src/kvirc/kernel/KviIrcConnection.cpp b/src/kvirc/kernel/KviIrcConnection.cpp index 6dc069034..99fe4c711 100644 --- a/src/kvirc/kernel/KviIrcConnection.cpp +++ b/src/kvirc/kernel/KviIrcConnection.cpp @@ -501,7 +501,7 @@ void KviIrcConnection::handleAuthenticate(KviCString & szAuth) KviCString szOut; bool bSendString = false; if(m_pStateData->sentSaslMethod() == QStringLiteral("EXTERNAL")) - bSendString = KviSASL::externalMethod(szAuth, szOut); + bSendString = KviSASL::externalMethod(szAuth, szOut, szNick); else // Assume PLAIN bSendString = KviSASL::plainMethod(szAuth, szOut, szNick, szPass); |
