aboutsummaryrefslogtreecommitdiffstats
path: root/src/kvilib
diff options
context:
space:
mode:
Diffstat (limited to 'src/kvilib')
-rw-r--r--src/kvilib/irc/kvi_ircserver.cpp37
-rw-r--r--src/kvilib/irc/kvi_ircserver.h60
-rw-r--r--src/kvilib/irc/kvi_ircserverdb.cpp4
3 files changed, 87 insertions, 14 deletions
diff --git a/src/kvilib/irc/kvi_ircserver.cpp b/src/kvilib/irc/kvi_ircserver.cpp
index ff81d171a..598fe99fc 100644
--- a/src/kvilib/irc/kvi_ircserver.cpp
+++ b/src/kvilib/irc/kvi_ircserver.cpp
@@ -87,6 +87,8 @@ KviServer::KviServer(const KviServer & serv)
m_iProxy = serv.m_iProxy;
m_szUserIdentityId = serv.m_szUserIdentityId;
m_bAutoConnect = serv.m_bAutoConnect;
+ m_szSaslNick = serv.m_szSaslNick;
+ m_szSaslPass = serv.m_szSaslPass;
if(serv.m_pAutoJoinChannelList)
m_pAutoJoinChannelList = new QStringList(*(serv.m_pAutoJoinChannelList));
@@ -118,6 +120,8 @@ void KviServer::operator=(const KviServer & serv)
m_szUserIdentityId = serv.m_szUserIdentityId;
m_iProxy = serv.m_iProxy;
m_bAutoConnect = serv.m_bAutoConnect;
+ m_szSaslNick = serv.m_szSaslNick;
+ m_szSaslPass = serv.m_szSaslPass;
if(m_pAutoJoinChannelList) delete m_pAutoJoinChannelList;
if(serv.m_pAutoJoinChannelList)
@@ -154,7 +158,7 @@ void KviServer::generateUniqueId()
QString KviServer::ircUri()
{
QString szUri("irc");
- if(useSSL() || supportsSTARTTLS()) szUri += "s";
+ if(useSSL()) szUri += "s";
if(isIPv6()) szUri += "6";
szUri += "://";
szUri += m_szHostname;
@@ -192,6 +196,10 @@ bool KviServer::load(KviConfig * cfg, const QString & szPrefix)
m_szPass = cfg->readQStringEntry(szTmp);
KviQString::sprintf(szTmp,"%QNick",&szPrefix);
m_szNick = cfg->readQStringEntry(szTmp);
+ KviQString::sprintf(szTmp,"%QSaslPass",&szPrefix);
+ m_szSaslPass = cfg->readQStringEntry(szTmp);
+ KviQString::sprintf(szTmp,"%QSaslNick",&szPrefix);
+ m_szSaslNick = cfg->readQStringEntry(szTmp);
KviQString::sprintf(szTmp,"%QRealName",&szPrefix);
m_szRealName = cfg->readQStringEntry(szTmp);
KviQString::sprintf(szTmp,"%QInitUmode",&szPrefix);
@@ -224,8 +232,10 @@ bool KviServer::load(KviConfig * cfg, const QString & szPrefix)
setCacheIp(cfg->readBoolEntry(szTmp,false)); // true ?
KviQString::sprintf(szTmp,"%QSSL",&szPrefix);
setUseSSL(cfg->readBoolEntry(szTmp,false));
- KviQString::sprintf(szTmp,"%QSupportsSTARTTLS",&szPrefix);
- setSupportsSTARTTLS(cfg->readBoolEntry(szTmp,false));
+ KviQString::sprintf(szTmp,"%QEnabledSTARTTLS",&szPrefix);
+ setEnabledSTARTTLS(cfg->readBoolEntry(szTmp,true));
+ KviQString::sprintf(szTmp,"%QEnabledSASL",&szPrefix);
+ setEnabledSASL(cfg->readBoolEntry(szTmp,false));
KviQString::sprintf(szTmp,"%QProxy",&szPrefix);
setProxy(cfg->readIntEntry(szTmp,-2));
KviQString::sprintf(szTmp,"%QUserIdentityId",&szPrefix);
@@ -265,6 +275,16 @@ void KviServer::save(KviConfig * cfg, const QString & szPrefix)
KviQString::sprintf(szTmp,"%QNick",&szPrefix);
cfg->writeEntry(szTmp,m_szNick);
}
+ if(!m_szSaslPass.isEmpty())
+ {
+ KviQString::sprintf(szTmp,"%QSaslPass",&szPrefix);
+ cfg->writeEntry(szTmp,m_szSaslPass);
+ }
+ if(!m_szSaslNick.isEmpty())
+ {
+ KviQString::sprintf(szTmp,"%QSaslNick",&szPrefix);
+ cfg->writeEntry(szTmp,m_szSaslNick);
+ }
if(!m_szRealName.isEmpty())
{
KviQString::sprintf(szTmp,"%QRealName",&szPrefix);
@@ -330,10 +350,15 @@ void KviServer::save(KviConfig * cfg, const QString & szPrefix)
KviQString::sprintf(szTmp,"%QSSL",&szPrefix);
cfg->writeEntry(szTmp,useSSL());
}
- if(supportsSTARTTLS())
+ if(!enabledSTARTTLS())
+ {
+ KviQString::sprintf(szTmp,"%QEnabledSTARTTLS",&szPrefix);
+ cfg->writeEntry(szTmp,enabledSTARTTLS());
+ }
+ if(enabledSASL())
{
- KviQString::sprintf(szTmp,"%QSupportsSTARTTLS",&szPrefix);
- cfg->writeEntry(szTmp,supportsSTARTTLS());
+ KviQString::sprintf(szTmp,"%QEnabledSASL",&szPrefix);
+ cfg->writeEntry(szTmp,enabledSASL());
}
if(proxy()!=-2)
{
diff --git a/src/kvilib/irc/kvi_ircserver.h b/src/kvilib/irc/kvi_ircserver.h
index abadae0f6..cbfe24f24 100644
--- a/src/kvilib/irc/kvi_ircserver.h
+++ b/src/kvilib/irc/kvi_ircserver.h
@@ -32,7 +32,8 @@
* \def KVI_IRCSERVER_FLAG_IPV6 Defines if the server uses IPv6
* \def KVI_IRCSERVER_FLAG_CACHEIP Defines if the server caches the IP
* \def KVI_IRCSERVER_FLAG_SSL Defines if the server uses SSL
-* \def KVI_IRCSERVER_FLAG_STARTTLS Defines if the server uses STARTTLS
+* \def KVI_IRCSERVER_FLAG_STARTTLS Defines if the server can use STARTTLS
+* \def KVI_IRCSERVER_FLAG_SASL Defines if the server can use SASL
*/
#include "kvi_settings.h"
@@ -52,6 +53,7 @@ class KviServer;
#define KVI_IRCSERVER_FLAG_CACHEIP 2
#define KVI_IRCSERVER_FLAG_SSL 4
#define KVI_IRCSERVER_FLAG_STARTTLS 8
+#define KVI_IRCSERVER_FLAG_SASL 16
/**
* \class KviServerReconnectInfo
@@ -135,6 +137,9 @@ public:
bool m_bAutoConnect; // autoconnect
QString m_szId; // the server's may-be-unique id, may be auto-generated
int m_iProxy; // proxy server's id
+ QString m_szSaslNick; // nickname for sasl auth
+ QString m_szSaslPass; // password for sasl auth
+
public:
/**
* \brief Returns the proxy server's id
@@ -162,6 +167,18 @@ public:
inline const QString & password() const { return m_szPass; };
/**
+ * \brief Returns the nickname used for sasl auth
+ * \return const QString &
+ */
+ inline const QString & saslNick() const { return m_szSaslNick; };
+
+ /**
+ * \brief Returns the password used for sasl auth
+ * \return const QString &
+ */
+ inline const QString & saslPass() const { return m_szSaslPass; };
+
+ /**
* \brief Returns the nickname of the user associated to the server
* \return const QString &
*/
@@ -273,10 +290,16 @@ public:
inline bool useSSL() const { return (m_uFlags & KVI_IRCSERVER_FLAG_SSL); };
/**
- * \brief Returns true if the server supports the STARTTLS protocol
+ * \brief Returns true if the STARTTLS protocol is enabled for this server
* \return bool
*/
- inline bool supportsSTARTTLS() const { return (m_uFlags & KVI_IRCSERVER_FLAG_STARTTLS); };
+ inline bool enabledSTARTTLS() const { return (m_uFlags & KVI_IRCSERVER_FLAG_STARTTLS); };
+
+ /**
+ * \brief Returns true if the SASL protocol is enabled for this server
+ * \return bool
+ */
+ inline bool enabledSASL() const { return (m_uFlags & KVI_IRCSERVER_FLAG_SASL); };
/**
* \brief Returns true if the server caches the IP
@@ -348,6 +371,20 @@ public:
inline void setNickName(const QString & szNick){ m_szNick = szNick; };
/**
+ * \brief Sets the password used for sasl auth
+ * \param szPass The password of the user
+ * \return void
+ */
+ inline void setSaslPass(const QString & szPass){ m_szSaslPass = szPass; };
+
+ /**
+ * \brief Sets the nickname used for sasl auth
+ * \param szNick The nick name of the user
+ * \return void
+ */
+ inline void setSaslNick(const QString & szNick){ m_szSaslNick = szNick; };
+
+ /**
* \brief Sets the realname of the user associated to the server
* \param szReal The real name of the user
* \return void
@@ -445,17 +482,28 @@ public:
};
/**
- * \brief Sets if the server supports the STARTTLS protocol
- * \param bSet Whether to set the support for STARTTLS
+ * \brief Sets if STARTTLS support is enabled/disabled for this server
+ * \param bSet Whether to enable the support for STARTTLS
* \return void
*/
- inline void setSupportsSTARTTLS(bool bSet)
+ inline void setEnabledSTARTTLS(bool bSet)
{
if(bSet)m_uFlags |= KVI_IRCSERVER_FLAG_STARTTLS;
else m_uFlags &= ((unsigned short)~KVI_IRCSERVER_FLAG_STARTTLS);
};
/**
+ * \brief Sets if SASL support is enabled/disabled for this server
+ * \param bSet Whether to enable the support for SASL
+ * \return void
+ */
+ inline void setEnabledSASL(bool bSet)
+ {
+ if(bSet)m_uFlags |= KVI_IRCSERVER_FLAG_SASL;
+ else m_uFlags &= ((unsigned short)~KVI_IRCSERVER_FLAG_SASL);
+ };
+
+ /**
* \brief Sets if the server caches the IP
* \param bSet Whether to set the cache for the IP
* \return void
diff --git a/src/kvilib/irc/kvi_ircserverdb.cpp b/src/kvilib/irc/kvi_ircserverdb.cpp
index e2f839f2f..8819fe854 100644
--- a/src/kvilib/irc/kvi_ircserverdb.cpp
+++ b/src/kvilib/irc/kvi_ircserverdb.cpp
@@ -201,7 +201,7 @@ bool KviServerDataBase::makeCurrentServer(KviServerDefinition * d, QString & szE
{
if(d->bIPv6 == srv->isIPv6())
{
- if((d->bSSL == srv->useSSL()) || (d->bSTARTTLS == srv->supportsSTARTTLS()))
+ if(d->bSSL == srv->useSSL())
{
if(d->bPortIsValid)
{
@@ -319,7 +319,7 @@ search_finished:
s->m_szInitUMode = d->szInitUMode;
s->setIPv6(d->bIPv6);
s->setUseSSL(d->bSSL);
- s->setSupportsSTARTTLS(d->bSTARTTLS);
+ s->setEnabledSTARTTLS(d->bSTARTTLS);
r->insertServer(s);
m_szCurrentNetwork = r->name();
r->setCurrentServer(s);