aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2012-04-20 15:21:56 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2012-04-20 15:21:56 +0000
commit7de79b51bb991b6d237522d3d30c73127dedbfa6 (patch)
tree8f4c38bba237fb02be1f35ad9208fef06d4e38e3 /src
parentd648473c16ac3fe5ce4f4b79c188b9bade381425 (diff)
downloadqxmpp-7de79b51bb991b6d237522d3d30c73127dedbfa6.tar.gz
encapsulate QXmppUtils methods in a QXmppUtils class
Diffstat (limited to 'src')
-rw-r--r--src/base/QXmppArchiveIq.cpp24
-rw-r--r--src/base/QXmppEntityTimeIq.cpp8
-rw-r--r--src/base/QXmppMessage.cpp4
-rw-r--r--src/base/QXmppSaslAuth.cpp2
-rw-r--r--src/base/QXmppStun.cpp42
-rw-r--r--src/base/QXmppUtils.cpp28
-rw-r--r--src/base/QXmppUtils.h38
-rw-r--r--src/client/QXmppCallManager.cpp2
-rw-r--r--src/client/QXmppConfiguration.cpp6
-rw-r--r--src/client/QXmppMucManager.cpp6
-rw-r--r--src/client/QXmppRosterManager.cpp10
-rw-r--r--src/client/QXmppTransferManager.cpp6
-rw-r--r--src/server/QXmppIncomingClient.cpp8
-rw-r--r--src/server/QXmppIncomingServer.cpp6
-rw-r--r--src/server/QXmppServer.cpp10
15 files changed, 104 insertions, 96 deletions
diff --git a/src/base/QXmppArchiveIq.cpp b/src/base/QXmppArchiveIq.cpp
index e8bef8fc..a194f61f 100644
--- a/src/base/QXmppArchiveIq.cpp
+++ b/src/base/QXmppArchiveIq.cpp
@@ -89,7 +89,7 @@ QXmppArchiveChat::QXmppArchiveChat()
void QXmppArchiveChat::parse(const QDomElement &element)
{
m_with = element.attribute("with");
- m_start = datetimeFromString(element.attribute("start"));
+ m_start = QXmppUtils::datetimeFromString(element.attribute("start"));
m_subject = element.attribute("subject");
m_thread = element.attribute("thread");
m_version = element.attribute("version").toInt();
@@ -115,7 +115,7 @@ void QXmppArchiveChat::toXml(QXmlStreamWriter *writer) const
writer->writeAttribute("xmlns", ns_archive);
helperToXmlAddAttribute(writer, "with", m_with);
if (m_start.isValid())
- helperToXmlAddAttribute(writer, "start", datetimeToString(m_start));
+ helperToXmlAddAttribute(writer, "start", QXmppUtils::datetimeToString(m_start));
helperToXmlAddAttribute(writer, "subject", m_subject);
helperToXmlAddAttribute(writer, "thread", m_thread);
if (m_version)
@@ -344,8 +344,8 @@ void QXmppArchiveListIq::parseElementFromChild(const QDomElement &element)
{
QDomElement listElement = element.firstChildElement("list");
m_with = listElement.attribute("with");
- m_start = datetimeFromString(listElement.attribute("start"));
- m_end = datetimeFromString(listElement.attribute("end"));
+ m_start = QXmppUtils::datetimeFromString(listElement.attribute("start"));
+ m_end = QXmppUtils::datetimeFromString(listElement.attribute("end"));
QDomElement setElement = listElement.firstChildElement("set");
if (setElement.namespaceURI() == ns_rsm)
@@ -371,9 +371,9 @@ void QXmppArchiveListIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
if (!m_with.isEmpty())
helperToXmlAddAttribute(writer, "with", m_with);
if (m_start.isValid())
- helperToXmlAddAttribute(writer, "start", datetimeToString(m_start));
+ helperToXmlAddAttribute(writer, "start", QXmppUtils::datetimeToString(m_start));
if (m_end.isValid())
- helperToXmlAddAttribute(writer, "end", datetimeToString(m_end));
+ helperToXmlAddAttribute(writer, "end", QXmppUtils::datetimeToString(m_end));
if (m_max > 0)
{
writer->writeStartElement("set");
@@ -466,8 +466,8 @@ void QXmppArchiveRemoveIq::parseElementFromChild(const QDomElement &element)
{
QDomElement listElement = element.firstChildElement("remove");
m_with = listElement.attribute("with");
- m_start = datetimeFromString(listElement.attribute("start"));
- m_end = datetimeFromString(listElement.attribute("end"));
+ m_start = QXmppUtils::datetimeFromString(listElement.attribute("start"));
+ m_end = QXmppUtils::datetimeFromString(listElement.attribute("end"));
}
void QXmppArchiveRemoveIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
@@ -477,9 +477,9 @@ void QXmppArchiveRemoveIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
if (!m_with.isEmpty())
helperToXmlAddAttribute(writer, "with", m_with);
if (m_start.isValid())
- helperToXmlAddAttribute(writer, "start", datetimeToString(m_start));
+ helperToXmlAddAttribute(writer, "start", QXmppUtils::datetimeToString(m_start));
if (m_end.isValid())
- helperToXmlAddAttribute(writer, "end", datetimeToString(m_end));
+ helperToXmlAddAttribute(writer, "end", QXmppUtils::datetimeToString(m_end));
writer->writeEndElement();
}
@@ -549,7 +549,7 @@ void QXmppArchiveRetrieveIq::parseElementFromChild(const QDomElement &element)
{
QDomElement retrieveElement = element.firstChildElement("retrieve");
m_with = retrieveElement.attribute("with");
- m_start = datetimeFromString(retrieveElement.attribute("start"));
+ m_start = QXmppUtils::datetimeFromString(retrieveElement.attribute("start"));
QDomElement setElement = retrieveElement.firstChildElement("set");
if (setElement.namespaceURI() == ns_rsm)
m_max = setElement.firstChildElement("max").text().toInt();
@@ -560,7 +560,7 @@ void QXmppArchiveRetrieveIq::toXmlElementFromChild(QXmlStreamWriter *writer) con
writer->writeStartElement("retrieve");
writer->writeAttribute("xmlns", ns_archive);
helperToXmlAddAttribute(writer, "with", m_with);
- helperToXmlAddAttribute(writer, "start", datetimeToString(m_start));
+ helperToXmlAddAttribute(writer, "start", QXmppUtils::datetimeToString(m_start));
if (m_max > 0)
{
writer->writeStartElement("set");
diff --git a/src/base/QXmppEntityTimeIq.cpp b/src/base/QXmppEntityTimeIq.cpp
index 5e41e39f..fcb6a99c 100644
--- a/src/base/QXmppEntityTimeIq.cpp
+++ b/src/base/QXmppEntityTimeIq.cpp
@@ -72,8 +72,8 @@ bool QXmppEntityTimeIq::isEntityTimeIq(const QDomElement &element)
void QXmppEntityTimeIq::parseElementFromChild(const QDomElement &element)
{
QDomElement timeElement = element.firstChildElement("time");
- m_tzo = timezoneOffsetFromString(timeElement.firstChildElement("tzo").text());
- m_utc = datetimeFromString(timeElement.firstChildElement("utc").text());
+ m_tzo = QXmppUtils::timezoneOffsetFromString(timeElement.firstChildElement("tzo").text());
+ m_utc = QXmppUtils::datetimeFromString(timeElement.firstChildElement("utc").text());
}
void QXmppEntityTimeIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
@@ -83,8 +83,8 @@ void QXmppEntityTimeIq::toXmlElementFromChild(QXmlStreamWriter *writer) const
if(m_utc.isValid())
{
- helperToXmlAddTextElement(writer, "tzo", timezoneOffsetToString(m_tzo));
- helperToXmlAddTextElement(writer, "utc", datetimeToString(m_utc));
+ helperToXmlAddTextElement(writer, "tzo", QXmppUtils::timezoneOffsetToString(m_tzo));
+ helperToXmlAddTextElement(writer, "utc", QXmppUtils::datetimeToString(m_utc));
}
writer->writeEndElement();
}
diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp
index 109c0d84..8b1b649a 100644
--- a/src/base/QXmppMessage.cpp
+++ b/src/base/QXmppMessage.cpp
@@ -284,7 +284,7 @@ void QXmppMessage::parse(const QDomElement &element)
if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery)
{
const QString str = delayElement.attribute("stamp");
- m_stamp = datetimeFromString(str);
+ m_stamp = QXmppUtils::datetimeFromString(str);
m_stampType = QXmppMessage::DelayedDelivery;
}
@@ -345,7 +345,7 @@ void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const
// XEP-0203: Delayed Delivery
xmlWriter->writeStartElement("delay");
xmlWriter->writeAttribute("xmlns", ns_delayed_delivery);
- helperToXmlAddAttribute(xmlWriter, "stamp", datetimeToString(utcStamp));
+ helperToXmlAddAttribute(xmlWriter, "stamp", QXmppUtils::datetimeToString(utcStamp));
xmlWriter->writeEndElement();
} else {
// XEP-0091: Legacy Delayed Delivery
diff --git a/src/base/QXmppSaslAuth.cpp b/src/base/QXmppSaslAuth.cpp
index a528cd6d..826ef0ab 100644
--- a/src/base/QXmppSaslAuth.cpp
+++ b/src/base/QXmppSaslAuth.cpp
@@ -96,7 +96,7 @@ void QXmppSaslDigestMd5::setSecret(const QByteArray &secret)
QByteArray QXmppSaslDigestMd5::generateNonce()
{
- QByteArray nonce = generateRandomBytes(32);
+ QByteArray nonce = QXmppUtils::generateRandomBytes(32);
// The random data can the '=' char is not valid as it is a delimiter,
// so to be safe, base64 the nonce
diff --git a/src/base/QXmppStun.cpp b/src/base/QXmppStun.cpp
index 16cef928..ab596886 100644
--- a/src/base/QXmppStun.cpp
+++ b/src/base/QXmppStun.cpp
@@ -711,7 +711,7 @@ bool QXmppStunMessage::decode(const QByteArray &buffer, const QByteArray &key, Q
{
QByteArray copy = buffer.left(STUN_HEADER + done);
setBodyLength(copy, done + 24);
- if (integrity != generateHmacSha1(key, copy))
+ if (integrity != QXmppUtils::generateHmacSha1(key, copy))
{
*errors << QLatin1String("Bad message integrity");
return false;
@@ -732,7 +732,7 @@ bool QXmppStunMessage::decode(const QByteArray &buffer, const QByteArray &key, Q
// check CRC32
QByteArray copy = buffer.left(STUN_HEADER + done);
setBodyLength(copy, done + 8);
- const quint32 expected = generateCrc32(copy) ^ 0x5354554eL;
+ const quint32 expected = QXmppUtils::generateCrc32(copy) ^ 0x5354554eL;
if (fingerprint != expected)
{
*errors << QLatin1String("Bad fingerprint");
@@ -932,7 +932,7 @@ QByteArray QXmppStunMessage::encode(const QByteArray &key, bool addFingerprint)
if (!key.isEmpty())
{
setBodyLength(buffer, buffer.size() - STUN_HEADER + 24);
- QByteArray integrity = generateHmacSha1(key, buffer);
+ QByteArray integrity = QXmppUtils::generateHmacSha1(key, buffer);
stream << quint16(MessageIntegrity);
stream << quint16(integrity.size());
stream.writeRawData(integrity.data(), integrity.size());
@@ -942,7 +942,7 @@ QByteArray QXmppStunMessage::encode(const QByteArray &key, bool addFingerprint)
if (addFingerprint)
{
setBodyLength(buffer, buffer.size() - STUN_HEADER + 8);
- quint32 fingerprint = generateCrc32(buffer) ^ 0x5354554eL;
+ quint32 fingerprint = QXmppUtils::generateCrc32(buffer) ^ 0x5354554eL;
stream << quint16(Fingerprint);
stream << quint16(sizeof(fingerprint));
stream << fingerprint;
@@ -1195,7 +1195,7 @@ void QXmppTurnAllocation::connectToHost()
// send allocate request
QXmppStunMessage request;
request.setType(QXmppStunMessage::Allocate | QXmppStunMessage::Request);
- request.setId(generateRandomBytes(12));
+ request.setId(QXmppUtils::generateRandomBytes(12));
request.setLifetime(m_lifetime);
request.setRequestedTransport(0x11);
m_transactions << new QXmppStunTransaction(request, this);
@@ -1221,7 +1221,7 @@ void QXmppTurnAllocation::disconnectFromHost()
if (m_state == ConnectedState) {
QXmppStunMessage request;
request.setType(QXmppStunMessage::Refresh | QXmppStunMessage::Request);
- request.setId(generateRandomBytes(12));
+ request.setId(QXmppUtils::generateRandomBytes(12));
request.setNonce(m_nonce);
request.setRealm(m_realm);
request.setUsername(m_username);
@@ -1294,7 +1294,7 @@ void QXmppTurnAllocation::refresh()
{
QXmppStunMessage request;
request.setType(QXmppStunMessage::Refresh | QXmppStunMessage::Request);
- request.setId(generateRandomBytes(12));
+ request.setId(QXmppUtils::generateRandomBytes(12));
request.setNonce(m_nonce);
request.setRealm(m_realm);
request.setUsername(m_username);
@@ -1308,7 +1308,7 @@ void QXmppTurnAllocation::refreshChannels()
foreach (quint16 channel, m_channels.keys()) {
QXmppStunMessage request;
request.setType(QXmppStunMessage::ChannelBind | QXmppStunMessage::Request);
- request.setId(generateRandomBytes(12));
+ request.setId(QXmppUtils::generateRandomBytes(12));
request.setNonce(m_nonce);
request.setRealm(m_realm);
request.setUsername(m_username);
@@ -1407,7 +1407,7 @@ void QXmppTurnAllocation::transactionFinished()
// retry request
QXmppStunMessage request(transaction->request());
- request.setId(generateRandomBytes(12));
+ request.setId(QXmppUtils::generateRandomBytes(12));
request.setNonce(m_nonce);
request.setRealm(m_realm);
request.setUsername(m_username);
@@ -1491,7 +1491,7 @@ qint64 QXmppTurnAllocation::writeDatagram(const QByteArray &data, const QHostAdd
// bind channel
QXmppStunMessage request;
request.setType(QXmppStunMessage::ChannelBind | QXmppStunMessage::Request);
- request.setId(generateRandomBytes(12));
+ request.setId(QXmppUtils::generateRandomBytes(12));
request.setNonce(m_nonce);
request.setRealm(m_realm);
request.setUsername(m_username);
@@ -1535,7 +1535,7 @@ QXmppIceComponent::Pair::Pair(int component, bool controlling)
m_component(component),
m_controlling(controlling)
{
- transaction = generateRandomBytes(ID_SIZE);
+ transaction = QXmppUtils::generateRandomBytes(ID_SIZE);
}
quint64 QXmppIceComponent::Pair::priority() const
@@ -1582,8 +1582,8 @@ QXmppIceComponent::QXmppIceComponent(QObject *parent)
bool check;
Q_UNUSED(check);
- m_localUser = generateStanzaHash(4);
- m_localPassword = generateStanzaHash(22);
+ m_localUser = QXmppUtils::generateStanzaHash(4);
+ m_localPassword = QXmppUtils::generateStanzaHash(22);
m_timer = new QTimer(this);
m_timer->setInterval(500);
@@ -1812,7 +1812,7 @@ QXmppIceComponent::Pair *QXmppIceComponent::addRemoteCandidate(QUdpSocket *socke
QXmppJingleCandidate candidate;
candidate.setComponent(m_component);
candidate.setHost(host);
- candidate.setId(generateStanzaHash(10));
+ candidate.setId(QXmppUtils::generateStanzaHash(10));
candidate.setPort(port);
candidate.setPriority(priority);
candidate.setProtocol("udp");
@@ -1874,7 +1874,7 @@ void QXmppIceComponent::setSockets(QList<QUdpSocket*> sockets)
addr.setScopeId(QString());
}
candidate.setHost(addr);
- candidate.setId(generateStanzaHash(10));
+ candidate.setId(QXmppUtils::generateStanzaHash(10));
candidate.setPort(socket->localPort());
candidate.setProtocol("udp");
candidate.setType(QXmppJingleCandidate::HostType);
@@ -1906,7 +1906,7 @@ void QXmppIceComponent::setStunServer(const QHostAddress &host, quint16 port)
{
m_stunHost = host;
m_stunPort = port;
- m_stunId = generateRandomBytes(ID_SIZE);
+ m_stunId = QXmppUtils::generateRandomBytes(ID_SIZE);
}
/// Sets the TURN server to use to relay packets in double-NAT configurations.
@@ -2036,7 +2036,7 @@ void QXmppIceComponent::handleDatagram(const QByteArray &buffer, const QHostAddr
QXmppJingleCandidate candidate;
candidate.setComponent(m_component);
candidate.setHost(reflexiveHost);
- candidate.setId(generateStanzaHash(10));
+ candidate.setId(QXmppUtils::generateStanzaHash(10));
candidate.setPort(reflexivePort);
candidate.setProtocol("udp");
candidate.setType(QXmppJingleCandidate::ServerReflexiveType);
@@ -2105,7 +2105,7 @@ void QXmppIceComponent::handleDatagram(const QByteArray &buffer, const QHostAddr
#if 0
// send a binding indication
QXmppStunMessage indication;
- indication.setId(generateRandomBytes(ID_SIZE));
+ indication.setId(QXmppUtils::generateRandomBytes(ID_SIZE));
indication.setType(BindingIndication);
m_socket->writeStun(indication, pair);
#endif
@@ -2139,7 +2139,7 @@ void QXmppIceComponent::turnConnected()
QXmppJingleCandidate candidate;
candidate.setComponent(m_component);
candidate.setHost(m_turnAllocation->relayedHost());
- candidate.setId(generateStanzaHash(10));
+ candidate.setId(QXmppUtils::generateStanzaHash(10));
candidate.setPort(m_turnAllocation->relayedPort());
candidate.setProtocol("udp");
candidate.setType(QXmppJingleCandidate::RelayedType);
@@ -2304,8 +2304,8 @@ QXmppIceConnection::QXmppIceConnection(QObject *parent)
{
bool check;
- m_localUser = generateStanzaHash(4);
- m_localPassword = generateStanzaHash(22);
+ m_localUser = QXmppUtils::generateStanzaHash(4);
+ m_localPassword = QXmppUtils::generateStanzaHash(22);
// timer to limit connection time to 30 seconds
m_connectTimer = new QTimer(this);
diff --git a/src/base/QXmppUtils.cpp b/src/base/QXmppUtils.cpp
index 3dcf0354..f308710c 100644
--- a/src/base/QXmppUtils.cpp
+++ b/src/base/QXmppUtils.cpp
@@ -107,7 +107,7 @@ static quint32 crctable[256] =
0xB40BBE37L, 0xC30C8EA1L, 0x5A05DF1BL, 0x2D02EF8DL
};
-QDateTime datetimeFromString(const QString &str)
+QDateTime QXmppUtils::datetimeFromString(const QString &str)
{
QRegExp tzRe("(Z|([+-])([0-9]{2}):([0-9]{2}))");
int tzPos = tzRe.indexIn(str, 19);
@@ -137,7 +137,7 @@ QDateTime datetimeFromString(const QString &str)
return dt;
}
-QString datetimeToString(const QDateTime &dt)
+QString QXmppUtils::datetimeToString(const QDateTime &dt)
{
QDateTime utc = dt.toUTC();
if (utc.time().msec())
@@ -151,7 +151,7 @@ QString datetimeToString(const QDateTime &dt)
/// \param str
///
-int timezoneOffsetFromString(const QString &str)
+int QXmppUtils::timezoneOffsetFromString(const QString &str)
{
QRegExp tzRe("(Z|([+-])([0-9]{2}):([0-9]{2}))");
if (!tzRe.exactMatch(str))
@@ -174,7 +174,7 @@ int timezoneOffsetFromString(const QString &str)
///
/// \param secs
-QString timezoneOffsetToString(int secs)
+QString QXmppUtils::timezoneOffsetToString(int secs)
{
if (!secs)
return QString::fromLatin1("Z");
@@ -183,12 +183,12 @@ QString timezoneOffsetToString(int secs)
return (secs < 0 ? "-" : "+") + tzoTime.toString("hh:mm");
}
-QString jidToDomain(const QString &jid)
+QString QXmppUtils::jidToDomain(const QString &jid)
{
return jidToBareJid(jid).split("@").last();
}
-QString jidToResource(const QString& jid)
+QString QXmppUtils::jidToResource(const QString& jid)
{
const int pos = jid.indexOf(QChar('/'));
if (pos < 0)
@@ -196,7 +196,7 @@ QString jidToResource(const QString& jid)
return jid.mid(pos+1);
}
-QString jidToUser(const QString &jid)
+QString QXmppUtils::jidToUser(const QString &jid)
{
const int pos = jid.indexOf(QChar('@'));
if (pos < 0)
@@ -204,7 +204,7 @@ QString jidToUser(const QString &jid)
return jid.left(pos);
}
-QString jidToBareJid(const QString& jid)
+QString QXmppUtils::jidToBareJid(const QString& jid)
{
const int pos = jid.indexOf(QChar('/'));
if (pos < 0)
@@ -212,7 +212,7 @@ QString jidToBareJid(const QString& jid)
return jid.left(pos);
}
-quint32 generateCrc32(const QByteArray &in)
+quint32 QXmppUtils::generateCrc32(const QByteArray &in)
{
quint32 result = 0xffffffff;
for(int n = 0; n < in.size(); ++n)
@@ -243,12 +243,12 @@ static QByteArray generateHmac(QCryptographicHash::Algorithm algorithm, const QB
return hasher.result();
}
-QByteArray generateHmacMd5(const QByteArray &key, const QByteArray &text)
+QByteArray QXmppUtils::generateHmacMd5(const QByteArray &key, const QByteArray &text)
{
return generateHmac(QCryptographicHash::Md5, key, text);
}
-QByteArray generateHmacSha1(const QByteArray &key, const QByteArray &text)
+QByteArray QXmppUtils::generateHmacSha1(const QByteArray &key, const QByteArray &text)
{
return generateHmac(QCryptographicHash::Sha1, key, text);
}
@@ -257,7 +257,7 @@ QByteArray generateHmacSha1(const QByteArray &key, const QByteArray &text)
///
/// \param N
-int generateRandomInteger(int N)
+int QXmppUtils::generateRandomInteger(int N)
{
Q_ASSERT(N > 0 && N <= RAND_MAX);
int val;
@@ -269,7 +269,7 @@ int generateRandomInteger(int N)
///
/// \param length
-QByteArray generateRandomBytes(int length)
+QByteArray QXmppUtils::generateRandomBytes(int length)
{
QByteArray bytes(length, 'm');
for (int i = 0; i < length; ++i)
@@ -281,7 +281,7 @@ QByteArray generateRandomBytes(int length)
///
/// \param length
-QString generateStanzaHash(int length)
+QString QXmppUtils::generateStanzaHash(int length)
{
const QString somechars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const int N = somechars.size();
diff --git a/src/base/QXmppUtils.h b/src/base/QXmppUtils.h
index 3a4dc8f6..74f7cd3c 100644
--- a/src/base/QXmppUtils.h
+++ b/src/base/QXmppUtils.h
@@ -32,29 +32,37 @@
// for an explanation.
#include <QXmlStreamWriter>
+#include "QXmppGlobal.h"
+
class QByteArray;
class QDateTime;
class QDomElement;
class QString;
class QStringList;
-// XEP-0082: XMPP Date and Time Profiles
-QDateTime datetimeFromString(const QString &str);
-QString datetimeToString(const QDateTime &dt);
-int timezoneOffsetFromString(const QString &str);
-QString timezoneOffsetToString(int secs);
+/// \brief The QXmppUtils class contains static utility functions.
+///
+class QXMPP_EXPORT QXmppUtils
+{
+public:
+ // XEP-0082: XMPP Date and Time Profiles
+ static QDateTime datetimeFromString(const QString &str);
+ static QString datetimeToString(const QDateTime &dt);
+ static int timezoneOffsetFromString(const QString &str);
+ static QString timezoneOffsetToString(int secs);
-QString jidToDomain(const QString& jid);
-QString jidToResource(const QString& jid);
-QString jidToUser(const QString& jid);
-QString jidToBareJid(const QString& jid);
+ static QString jidToDomain(const QString& jid);
+ static QString jidToResource(const QString& jid);
+ static QString jidToUser(const QString& jid);
+ static QString jidToBareJid(const QString& jid);
-quint32 generateCrc32(const QByteArray &input);
-QByteArray generateHmacMd5(const QByteArray &key, const QByteArray &text);
-QByteArray generateHmacSha1(const QByteArray &key, const QByteArray &text);
-int generateRandomInteger(int N);
-QByteArray generateRandomBytes(int length);
-QString generateStanzaHash(int length=32);
+ static quint32 generateCrc32(const QByteArray &input);
+ static QByteArray generateHmacMd5(const QByteArray &key, const QByteArray &text);
+ static QByteArray generateHmacSha1(const QByteArray &key, const QByteArray &text);
+ static int generateRandomInteger(int N);
+ static QByteArray generateRandomBytes(int length);
+ static QString generateStanzaHash(int length=32);
+};
void helperToXmlAddAttribute(QXmlStreamWriter* stream, const QString& name,
const QString& value);
diff --git a/src/client/QXmppCallManager.cpp b/src/client/QXmppCallManager.cpp
index 363881af..953b2935 100644
--- a/src/client/QXmppCallManager.cpp
+++ b/src/client/QXmppCallManager.cpp
@@ -837,7 +837,7 @@ QXmppCall *QXmppCallManager::call(const QString &jid)
}
QXmppCall *call = new QXmppCall(jid, QXmppCall::OutgoingDirection, this);
- call->d->sid = generateStanzaHash();
+ call->d->sid = QXmppUtils::generateStanzaHash();
// register call
d->calls << call;
diff --git a/src/client/QXmppConfiguration.cpp b/src/client/QXmppConfiguration.cpp
index dc4087b7..7f4f9818 100644
--- a/src/client/QXmppConfiguration.cpp
+++ b/src/client/QXmppConfiguration.cpp
@@ -134,9 +134,9 @@ void QXmppConfiguration::setResource(const QString& resource)
void QXmppConfiguration::setJid(const QString& jid)
{
- m_user = jidToUser(jid);
- m_domain = jidToDomain(jid);
- const QString resource = jidToResource(jid);
+ m_user = QXmppUtils::jidToUser(jid);
+ m_domain = QXmppUtils::jidToDomain(jid);
+ const QString resource = QXmppUtils::jidToResource(jid);
if (!resource.isEmpty())
m_resource = resource;
}
diff --git a/src/client/QXmppMucManager.cpp b/src/client/QXmppMucManager.cpp
index 5c2a6236..eead5df7 100644
--- a/src/client/QXmppMucManager.cpp
+++ b/src/client/QXmppMucManager.cpp
@@ -275,7 +275,7 @@ bool QXmppMucRoom::join()
bool QXmppMucRoom::kick(const QString &jid, const QString &reason)
{
QXmppMucItem item;
- item.setNick(jidToResource(jid));
+ item.setNick(QXmppUtils::jidToResource(jid));
item.setRole(QXmppMucItem::NoRole);
item.setReason(reason);
@@ -549,7 +549,7 @@ void QXmppMucRoom::_q_disconnected()
void QXmppMucRoom::_q_messageReceived(const QXmppMessage &message)
{
- if (jidToBareJid(message.from())!= d->jid)
+ if (QXmppUtils::jidToBareJid(message.from())!= d->jid)
return;
// handle message subject
@@ -573,7 +573,7 @@ void QXmppMucRoom::_q_presenceReceived(const QXmppPresence &presence)
d->client->sendPacket(packet);
}
- if (jidToBareJid(jid) != d->jid)
+ if (QXmppUtils::jidToBareJid(jid) != d->jid)
return;
if (presence.type() == QXmppPresence::Available) {
diff --git a/src/client/QXmppRosterManager.cpp b/src/client/QXmppRosterManager.cpp
index 7c2f56ed..ccd054ce 100644
--- a/src/client/QXmppRosterManager.cpp
+++ b/src/client/QXmppRosterManager.cpp
@@ -122,7 +122,7 @@ bool QXmppRosterManager::handleStanza(const QDomElement &element)
// Security check: only server should send this iq
// from() should be either empty or bareJid of the user
const QString fromJid = element.attribute("from");
- if (!fromJid.isEmpty() && jidToBareJid(fromJid) != client()->configuration().jidBare())
+ if (!fromJid.isEmpty() && QXmppUtils::jidToBareJid(fromJid) != client()->configuration().jidBare())
return false;
QXmppRosterIq rosterIq;
@@ -190,8 +190,8 @@ bool QXmppRosterManager::handleStanza(const QDomElement &element)
void QXmppRosterManager::_q_presenceReceived(const QXmppPresence& presence)
{
const QString jid = presence.from();
- const QString bareJid = jidToBareJid(jid);
- const QString resource = jidToResource(jid);
+ const QString bareJid = QXmppUtils::jidToBareJid(jid);
+ const QString resource = QXmppUtils::jidToResource(jid);
if (bareJid.isEmpty())
return;
@@ -307,7 +307,7 @@ bool QXmppRosterManager::renameItem(const QString &bareJid, const QString &name)
bool QXmppRosterManager::subscribe(const QString &bareJid)
{
QXmppPresence packet;
- packet.setTo(jidToBareJid(bareJid));
+ packet.setTo(QXmppUtils::jidToBareJid(bareJid));
packet.setType(QXmppPresence::Subscribe);
return client()->sendPacket(packet);
}
@@ -320,7 +320,7 @@ bool QXmppRosterManager::subscribe(const QString &bareJid)
bool QXmppRosterManager::unsubscribe(const QString &bareJid)
{
QXmppPresence packet;
- packet.setTo(jidToBareJid(bareJid));
+ packet.setTo(QXmppUtils::jidToBareJid(bareJid));
packet.setType(QXmppPresence::Unsubscribe);
return client()->sendPacket(packet);
}
diff --git a/src/client/QXmppTransferManager.cpp b/src/client/QXmppTransferManager.cpp
index 25779227..77b82675 100644
--- a/src/client/QXmppTransferManager.cpp
+++ b/src/client/QXmppTransferManager.cpp
@@ -1257,7 +1257,7 @@ QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, QIODevice *
QXmppTransferOutgoingJob *job = new QXmppTransferOutgoingJob(jid, client(), this);
if (sid.isEmpty())
- job->d->sid = generateStanzaHash();
+ job->d->sid = QXmppUtils::generateStanzaHash();
else
job->d->sid = sid;
job->d->fileInfo = fileInfo;
@@ -1285,7 +1285,7 @@ QXmppTransferJob *QXmppTransferManager::sendFile(const QString &jid, QIODevice *
QXmppElement file;
file.setTagName("file");
file.setAttribute("xmlns", ns_stream_initiation_file_transfer);
- file.setAttribute("date", datetimeToString(job->fileDate()));
+ file.setAttribute("date", QXmppUtils::datetimeToString(job->fileDate()));
file.setAttribute("hash", job->fileHash().toHex());
file.setAttribute("name", job->fileName());
file.setAttribute("size", QString::number(job->fileSize()));
@@ -1571,7 +1571,7 @@ void QXmppTransferManager::streamInitiationSetReceived(const QXmppStreamInitiati
}
else if (item.tagName() == "file" && item.attribute("xmlns") == ns_stream_initiation_file_transfer)
{
- job->d->fileInfo.setDate(datetimeFromString(item.attribute("date")));
+ job->d->fileInfo.setDate(QXmppUtils::datetimeFromString(item.attribute("date")));
job->d->fileInfo.setHash(QByteArray::fromHex(item.attribute("hash").toAscii()));
job->d->fileInfo.setName(item.attribute("name"));
job->d->fileInfo.setSize(item.attribute("size").toLongLong());
diff --git a/src/server/QXmppIncomingClient.cpp b/src/server/QXmppIncomingClient.cpp
index 7338115a..c5be0f33 100644
--- a/src/server/QXmppIncomingClient.cpp
+++ b/src/server/QXmppIncomingClient.cpp
@@ -139,7 +139,7 @@ void QXmppIncomingClient::handleStream(const QDomElement &streamElement)
d->saslDigestUsername.clear();
// start stream
- const QByteArray sessionId = generateStanzaHash().toAscii();
+ const QByteArray sessionId = QXmppUtils::generateStanzaHash().toAscii();
QString response = QString("<?xml version='1.0'?><stream:stream"
" xmlns=\"%1\" xmlns:stream=\"%2\""
" id=\"%3\" from=\"%4\" version=\"1.0\" xml:lang=\"en\">").arg(
@@ -303,7 +303,7 @@ void QXmppIncomingClient::handleStanza(const QDomElement &nodeRecv)
bindSet.parse(nodeRecv);
d->resource = bindSet.resource().trimmed();
if (d->resource.isEmpty())
- d->resource = generateStanzaHash();
+ d->resource = QXmppUtils::generateStanzaHash();
d->jid = QString("%1@%2/%3").arg(d->username, d->domain, d->resource);
QXmppBindIq bindResult;
@@ -332,7 +332,7 @@ void QXmppIncomingClient::handleStanza(const QDomElement &nodeRecv)
// check the sender is legitimate
const QString from = nodeRecv.attribute("from");
- if (!from.isEmpty() && from != d->jid && from != jidToBareJid(d->jid))
+ if (!from.isEmpty() && from != d->jid && from != QXmppUtils::jidToBareJid(d->jid))
{
warning(QString("Received a stanza from unexpected JID %1").arg(from));
return;
@@ -351,7 +351,7 @@ void QXmppIncomingClient::handleStanza(const QDomElement &nodeRecv)
if (nodeFull.tagName() == QLatin1String("presence") &&
(nodeFull.attribute("type") == QLatin1String("subscribe") ||
nodeFull.attribute("type") == QLatin1String("subscribed")))
- nodeFull.setAttribute("from", jidToBareJid(d->jid));
+ nodeFull.setAttribute("from", QXmppUtils::jidToBareJid(d->jid));
else
nodeFull.setAttribute("from", d->jid);
}
diff --git a/src/server/QXmppIncomingServer.cpp b/src/server/QXmppIncomingServer.cpp
index 2c4cfb9f..5b839a96 100644
--- a/src/server/QXmppIncomingServer.cpp
+++ b/src/server/QXmppIncomingServer.cpp
@@ -83,7 +83,7 @@ void QXmppIncomingServer::handleStream(const QDomElement &streamElement)
info(QString("Incoming server stream from %1").arg(from));
// start stream
- d->localStreamId = generateStanzaHash().toAscii();
+ d->localStreamId = QXmppUtils::generateStanzaHash().toAscii();
QString data = QString("<?xml version='1.0'?><stream:stream"
" xmlns='%1' xmlns:db='%2' xmlns:stream='%3'"
" id='%4' version=\"1.0\">").arg(
@@ -146,12 +146,12 @@ void QXmppIncomingServer::handleStanza(const QDomElement &stanza)
}
}
- else if (d->authenticated.contains(jidToDomain(stanza.attribute("from"))))
+ else if (d->authenticated.contains(QXmppUtils::jidToDomain(stanza.attribute("from"))))
{
// relay stanza if the remote party is authenticated
emit elementReceived(stanza);
} else {
- warning(QString("Received an element from unverified domain %1").arg(jidToDomain(stanza.attribute("from"))));
+ warning(QString("Received an element from unverified domain %1").arg(QXmppUtils::jidToDomain(stanza.attribute("from"))));
disconnectFromHost();
}
}
diff --git a/src/server/QXmppServer.cpp b/src/server/QXmppServer.cpp
index 02fbd402..ae5ff8cb 100644
--- a/src/server/QXmppServer.cpp
+++ b/src/server/QXmppServer.cpp
@@ -123,7 +123,7 @@ QXmppServerPrivate::QXmppServerPrivate(QXmppServer *qq)
bool QXmppServerPrivate::routeData(const QString &to, const QByteArray &data)
{
// refuse to route packets to empty destination, own domain or sub-domains
- const QString toDomain = jidToDomain(to);
+ const QString toDomain = QXmppUtils::jidToDomain(to);
if (to.isEmpty() || to == domain || toDomain.endsWith("." + domain))
return false;
@@ -131,7 +131,7 @@ bool QXmppServerPrivate::routeData(const QString &to, const QByteArray &data)
// look for a client connection
QList<QXmppIncomingClient*> found;
- if (jidToResource(to).isEmpty()) {
+ if (QXmppUtils::jidToResource(to).isEmpty()) {
foreach (QXmppIncomingClient *conn, incomingClientsByBareJid.value(to))
found << conn;
} else {
@@ -162,7 +162,7 @@ bool QXmppServerPrivate::routeData(const QString &to, const QByteArray &data)
// if we did not find an outgoing server,
// we need to establish the S2S connection
QXmppOutgoingServer *conn = new QXmppOutgoingServer(domain, 0);
- conn->setLocalStreamKey(generateStanzaHash().toAscii());
+ conn->setLocalStreamKey(QXmppUtils::generateStanzaHash().toAscii());
conn->moveToThread(q->thread());
conn->setParent(q);
@@ -638,7 +638,7 @@ void QXmppServer::_q_clientConnected()
old->disconnectFromHost();
}
d->incomingClientsByJid.insert(jid, client);
- d->incomingClientsByBareJid[jidToBareJid(jid)].insert(client);
+ d->incomingClientsByBareJid[QXmppUtils::jidToBareJid(jid)].insert(client);
// emit signal
emit clientConnected(jid);
@@ -658,7 +658,7 @@ void QXmppServer::_q_clientDisconnected()
if (!jid.isEmpty()) {
if (d->incomingClientsByJid.value(jid) == client)
d->incomingClientsByJid.remove(jid);
- const QString bareJid = jidToBareJid(jid);
+ const QString bareJid = QXmppUtils::jidToBareJid(jid);
if (d->incomingClientsByBareJid.contains(bareJid)) {
d->incomingClientsByBareJid[bareJid].remove(client);
if (d->incomingClientsByBareJid[bareJid].isEmpty())