diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2012-02-08 12:51:15 +0000 |
| commit | deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4 (patch) | |
| tree | d956bad28e28aadc3c83dbf88b3eddb5e1d9a9f4 /src/QXmppStreamFeatures.cpp | |
| parent | e8a1ad0cc608f12874ba4bafbd8282fa537ec9fb (diff) | |
| download | qxmpp-deb9d6cb53057ca8b90d10d6a3bdc5dcfd1b3ee4.tar.gz | |
move files common to client/server into "base"
Diffstat (limited to 'src/QXmppStreamFeatures.cpp')
| -rw-r--r-- | src/QXmppStreamFeatures.cpp | 222 |
1 files changed, 0 insertions, 222 deletions
diff --git a/src/QXmppStreamFeatures.cpp b/src/QXmppStreamFeatures.cpp deleted file mode 100644 index 241f676f..00000000 --- a/src/QXmppStreamFeatures.cpp +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (C) 2008-2011 The QXmpp developers - * - * Author: - * Jeremy Lainé - * - * Source: - * http://code.google.com/p/qxmpp - * - * This file is a part of QXmpp library. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - */ - -#include <QDomElement> - -#include "QXmppConstants.h" -#include "QXmppStreamFeatures.h" - -QXmppStreamFeatures::QXmppStreamFeatures() - : m_bindMode(Disabled), - m_sessionMode(Disabled), - m_nonSaslAuthMode(Disabled), - m_tlsMode(Disabled) -{ -} - -QXmppStreamFeatures::Mode QXmppStreamFeatures::bindMode() const -{ - return m_bindMode; -} - -void QXmppStreamFeatures::setBindMode(QXmppStreamFeatures::Mode mode) -{ - m_bindMode = mode; -} - -QXmppStreamFeatures::Mode QXmppStreamFeatures::sessionMode() const -{ - return m_sessionMode; -} - -void QXmppStreamFeatures::setSessionMode(Mode mode) -{ - m_sessionMode = mode; -} - -QXmppStreamFeatures::Mode QXmppStreamFeatures::nonSaslAuthMode() const -{ - return m_nonSaslAuthMode; -} - -void QXmppStreamFeatures::setNonSaslAuthMode(QXmppStreamFeatures::Mode mode) -{ - m_nonSaslAuthMode = mode; -} - -QList<QXmppConfiguration::SASLAuthMechanism> QXmppStreamFeatures::authMechanisms() const -{ - return m_authMechanisms; -} - -void QXmppStreamFeatures::setAuthMechanisms(QList<QXmppConfiguration::SASLAuthMechanism> &mechanisms) -{ - m_authMechanisms = mechanisms; -} - -QList<QXmppConfiguration::CompressionMethod> QXmppStreamFeatures::compressionMethods() const -{ - return m_compressionMethods; -} - -void QXmppStreamFeatures::setCompressionMethods(QList<QXmppConfiguration::CompressionMethod> &methods) -{ - m_compressionMethods = methods; -} - -QXmppStreamFeatures::Mode QXmppStreamFeatures::tlsMode() const -{ - return m_tlsMode; -} - -void QXmppStreamFeatures::setTlsMode(QXmppStreamFeatures::Mode mode) -{ - m_tlsMode = mode; -} - -bool QXmppStreamFeatures::isStreamFeatures(const QDomElement &element) -{ - return element.namespaceURI() == ns_stream && - element.tagName() == "features"; -} - -static QXmppStreamFeatures::Mode readFeature(const QDomElement &element, const char *tagName, const char *tagNs) -{ - QDomElement subElement = element.firstChildElement(tagName); - if (subElement.namespaceURI() == tagNs) - { - if (!subElement.firstChildElement("required").isNull()) - return QXmppStreamFeatures::Required; - else - return QXmppStreamFeatures::Enabled; - } else { - return QXmppStreamFeatures::Disabled; - } -} - -void QXmppStreamFeatures::parse(const QDomElement &element) -{ - m_bindMode = readFeature(element, "bind", ns_bind); - m_sessionMode = readFeature(element, "session", ns_session); - m_nonSaslAuthMode = readFeature(element, "auth", ns_authFeature); - m_tlsMode = readFeature(element, "starttls", ns_tls); - - // parse advertised compression methods - QDomElement compression = element.firstChildElement("compression"); - if (compression.namespaceURI() == ns_compressFeature) - { - QDomElement subElement = compression.firstChildElement("method"); - while(!subElement.isNull()) - { - if (subElement.text() == QLatin1String("zlib")) - m_compressionMethods << QXmppConfiguration::ZlibCompression; - subElement = subElement.nextSiblingElement("method"); - } - } - - // parse advertised SASL Authentication mechanisms - QDomElement mechs = element.firstChildElement("mechanisms"); - if (mechs.namespaceURI() == ns_sasl) - { - QDomElement subElement = mechs.firstChildElement("mechanism"); - while(!subElement.isNull()) - { - if (subElement.text() == QLatin1String("PLAIN")) - m_authMechanisms << QXmppConfiguration::SASLPlain; - else if (subElement.text() == QLatin1String("DIGEST-MD5")) - m_authMechanisms << QXmppConfiguration::SASLDigestMD5; - else if (subElement.text() == QLatin1String("ANONYMOUS")) - m_authMechanisms << QXmppConfiguration::SASLAnonymous; - else if (subElement.text() == QLatin1String("X-FACEBOOK-PLATFORM")) - m_authMechanisms << QXmppConfiguration::SASLXFacebookPlatform; - subElement = subElement.nextSiblingElement("mechanism"); - } - } -} - -static void writeFeature(QXmlStreamWriter *writer, const char *tagName, const char *tagNs, QXmppStreamFeatures::Mode mode) -{ - if (mode != QXmppStreamFeatures::Disabled) - { - writer->writeStartElement(tagName); - writer->writeAttribute("xmlns", tagNs); - if (mode == QXmppStreamFeatures::Required) - writer->writeEmptyElement("required"); - writer->writeEndElement(); - } -} - -void QXmppStreamFeatures::toXml(QXmlStreamWriter *writer) const -{ - writer->writeStartElement("stream:features"); - writeFeature(writer, "bind", ns_bind, m_bindMode); - writeFeature(writer, "session", ns_session, m_sessionMode); - writeFeature(writer, "auth", ns_authFeature, m_nonSaslAuthMode); - writeFeature(writer, "starttls", ns_tls, m_tlsMode); - - if (!m_compressionMethods.isEmpty()) - { - writer->writeStartElement("compression"); - writer->writeAttribute("xmlns", ns_compressFeature); - for (int i = 0; i < m_compressionMethods.size(); i++) - { - writer->writeStartElement("method"); - switch (m_compressionMethods[i]) - { - case QXmppConfiguration::ZlibCompression: - writer->writeCharacters("zlib"); - break; - } - writer->writeEndElement(); - } - writer->writeEndElement(); - } - if (!m_authMechanisms.isEmpty()) - { - writer->writeStartElement("mechanisms"); - writer->writeAttribute("xmlns", ns_sasl); - for (int i = 0; i < m_authMechanisms.size(); i++) - { - writer->writeStartElement("mechanism"); - switch (m_authMechanisms[i]) - { - case QXmppConfiguration::SASLPlain: - writer->writeCharacters("PLAIN"); - break; - case QXmppConfiguration::SASLDigestMD5: - writer->writeCharacters("DIGEST-MD5"); - break; - case QXmppConfiguration::SASLAnonymous: - writer->writeCharacters("ANONYMOUS"); - break; - case QXmppConfiguration::SASLXFacebookPlatform: - writer->writeCharacters("X-FACEBOOK-PLATFORM"); - break; - } - writer->writeEndElement(); - } - writer->writeEndElement(); - } - writer->writeEndElement(); -} - |
