diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-04-20 15:21:56 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-04-20 15:21:56 +0000 |
| commit | 7de79b51bb991b6d237522d3d30c73127dedbfa6 (patch) | |
| tree | 8f4c38bba237fb02be1f35ad9208fef06d4e38e3 /src | |
| parent | d648473c16ac3fe5ce4f4b79c188b9bade381425 (diff) | |
| download | qxmpp-7de79b51bb991b6d237522d3d30c73127dedbfa6.tar.gz | |
encapsulate QXmppUtils methods in a QXmppUtils class
Diffstat (limited to 'src')
| -rw-r--r-- | src/base/QXmppArchiveIq.cpp | 24 | ||||
| -rw-r--r-- | src/base/QXmppEntityTimeIq.cpp | 8 | ||||
| -rw-r--r-- | src/base/QXmppMessage.cpp | 4 | ||||
| -rw-r--r-- | src/base/QXmppSaslAuth.cpp | 2 | ||||
| -rw-r--r-- | src/base/QXmppStun.cpp | 42 | ||||
| -rw-r--r-- | src/base/QXmppUtils.cpp | 28 | ||||
| -rw-r--r-- | src/base/QXmppUtils.h | 38 | ||||
| -rw-r--r-- | src/client/QXmppCallManager.cpp | 2 | ||||
| -rw-r--r-- | src/client/QXmppConfiguration.cpp | 6 | ||||
| -rw-r--r-- | src/client/QXmppMucManager.cpp | 6 | ||||
| -rw-r--r-- | src/client/QXmppRosterManager.cpp | 10 | ||||
| -rw-r--r-- | src/client/QXmppTransferManager.cpp | 6 | ||||
| -rw-r--r-- | src/server/QXmppIncomingClient.cpp | 8 | ||||
| -rw-r--r-- | src/server/QXmppIncomingServer.cpp | 6 | ||||
| -rw-r--r-- | src/server/QXmppServer.cpp | 10 |
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()) |
