QXmppServer.h
/*
* Copyright (C) 2008-2019 The QXmpp developers
*
* Author:
* Jeremy Lainé
*
* Source:
* https://github.com/qxmpp-project/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.
*
*/
#ifndef QXMPPSERVER_H
#define QXMPPSERVER_H
#include <QTcpServer>
#include <QVariantMap>
#include "QXmppLogger.h"
class QDomElement;
class QSslCertificate;
class QSslKey;
class QSslSocket;
class QXmppDialback;
class QXmppIncomingClient;
class QXmppOutgoingServer;
class QXmppPasswordChecker;
class QXmppPresence;
class QXmppServerExtension;
class QXmppServerPrivate;
class QXmppSslServer;
class QXmppStanza;
class QXmppStream;
class QXMPP_EXPORT QXmppServer : public QXmppLoggable
{
Q_OBJECT
Q_PROPERTY(QXmppLogger* logger READ logger WRITE setLogger NOTIFY loggerChanged)
public:
QXmppServer(QObject *parent = 0);
~QXmppServer();
void addExtension(QXmppServerExtension *extension);
QList<QXmppServerExtension*> extensions();
QString domain() const;
void setDomain(const QString &domain);
QXmppLogger *logger();
void setLogger(QXmppLogger *logger);
QXmppPasswordChecker *passwordChecker();
void setPasswordChecker(QXmppPasswordChecker *checker);
QVariantMap statistics() const;
void addCaCertificates(const QString &caCertificates);
void setLocalCertificate(const QString &path);
void setLocalCertificate(const QSslCertificate &certificate);
void setPrivateKey(const QString &path);
void setPrivateKey(const QSslKey &key);
void close();
bool listenForClients(const QHostAddress &address = QHostAddress::Any, quint16 port = 5222);
bool listenForServers(const QHostAddress &address = QHostAddress::Any, quint16 port = 5269);
bool sendElement(const QDomElement &element);
bool sendPacket(const QXmppStanza &stanza);
void addIncomingClient(QXmppIncomingClient *stream);
signals:
void clientConnected(const QString &jid);
void clientDisconnected(const QString &jid);
void loggerChanged(QXmppLogger *logger);
public slots:
void handleElement(const QDomElement &element);
private slots:
void _q_clientConnection(QSslSocket *socket);
void _q_clientConnected();
void _q_clientDisconnected();
void _q_dialbackRequestReceived(const QXmppDialback &dialback);
void _q_outgoingServerDisconnected();
void _q_serverConnection(QSslSocket *socket);
void _q_serverDisconnected();
private:
friend class QXmppServerPrivate;
QXmppServerPrivate *d;
};
class QXmppSslServerPrivate;
class QXMPP_EXPORT QXmppSslServer : public QTcpServer
{
Q_OBJECT
public:
QXmppSslServer(QObject *parent = 0);
~QXmppSslServer();
void addCaCertificates(const QList<QSslCertificate> &certificates);
void setLocalCertificate(const QSslCertificate &certificate);
void setPrivateKey(const QSslKey &key);
signals:
void newConnection(QSslSocket *socket);
private:
void incomingConnection(qintptr socketDescriptor) override;
QXmppSslServerPrivate * const d;
};
#endif
QXmppPresence
The QXmppPresence class represents an XMPP presence stanza.
Definition: QXmppPresence.h:36
QXmppStanza
The QXmppStanza class is the base class for all XMPP stanzas.
Definition: QXmppStanza.h:90
QXmppOutgoingServer
The QXmppOutgoingServer class represents an outgoing XMPP stream to another XMPP server.
Definition: QXmppOutgoingServer.h:40
QXmppDialback
The QXmppDialback class represents a stanza used for the Server Dialback protocol as specified by XEP...
Definition: QXmppDialback.h:34
QXmppSslServer
The QXmppSslServer class represents an SSL-enabled TCP server.
Definition: QXmppServer.h:129
QXmppLogger
The QXmppLogger class represents a sink for logging messages.
Definition: QXmppLogger.h:45
QXmppPasswordChecker
The QXmppPasswordChecker class represents an abstract password checker.
Definition: QXmppPasswordChecker.h:101
QXmppStream
The QXmppStream class is the base class for all XMPP streams.
Definition: QXmppStream.h:41
QXmppServer
The QXmppServer class represents an XMPP server.
Definition: QXmppServer.h:59
QXmppLoggable
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:111
QXmppIncomingClient
Interface for password checkers.
Definition: QXmppIncomingClient.h:39
QXmppServerExtension
The QXmppServerExtension class is the base class for QXmppServer extensions.
Definition: QXmppServerExtension.h:48