QXmpp Version: 1.4.0
QXmppServer.h
1/*
2 * Copyright (C) 2008-2021 The QXmpp developers
3 *
4 * Author:
5 * Jeremy Lainé
6 *
7 * Source:
8 * https://github.com/qxmpp-project/qxmpp
9 *
10 * This file is a part of QXmpp library.
11 *
12 * This library is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU Lesser General Public
14 * License as published by the Free Software Foundation; either
15 * version 2.1 of the License, or (at your option) any later version.
16 *
17 * This library is distributed in the hope that it will be useful,
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * Lesser General Public License for more details.
21 *
22 */
23
24#ifndef QXMPPSERVER_H
25#define QXMPPSERVER_H
26
27#include "QXmppLogger.h"
28
29#include <QTcpServer>
30#include <QVariantMap>
31
32class QDomElement;
33class QSslCertificate;
34class QSslKey;
35class QSslSocket;
36
37class QXmppDialback;
41class QXmppPresence;
43class QXmppServerPrivate;
44class QXmppSslServer;
45class QXmppStanza;
46class QXmppStream;
47
58
59class QXMPP_EXPORT QXmppServer : public QXmppLoggable
60{
61 Q_OBJECT
63 Q_PROPERTY(QXmppLogger *logger READ logger WRITE setLogger NOTIFY loggerChanged)
64
65public:
66 QXmppServer(QObject *parent = nullptr);
67 ~QXmppServer() override;
68
69 void addExtension(QXmppServerExtension *extension);
70 QList<QXmppServerExtension *> extensions();
71
72 QString domain() const;
73 void setDomain(const QString &domain);
74
75 // documentation needs to be here, see https://stackoverflow.com/questions/49192523/
78 void setLogger(QXmppLogger *logger);
79
80 QXmppPasswordChecker *passwordChecker();
81 void setPasswordChecker(QXmppPasswordChecker *checker);
82
83 QVariantMap statistics() const;
84
85 void addCaCertificates(const QString &caCertificates);
86 void setLocalCertificate(const QString &path);
87 void setLocalCertificate(const QSslCertificate &certificate);
88 void setPrivateKey(const QString &path);
89 void setPrivateKey(const QSslKey &key);
90
91 void close();
92 bool listenForClients(const QHostAddress &address = QHostAddress::Any, quint16 port = 5222);
93 bool listenForServers(const QHostAddress &address = QHostAddress::Any, quint16 port = 5269);
94
95 bool sendElement(const QDomElement &element);
96 bool sendPacket(const QXmppStanza &stanza);
97
98 void addIncomingClient(QXmppIncomingClient *stream);
99
100Q_SIGNALS:
102 void clientConnected(const QString &jid);
103
105 void clientDisconnected(const QString &jid);
106
109
110public Q_SLOTS:
111 void handleElement(const QDomElement &element);
112
113private Q_SLOTS:
114 void _q_clientConnection(QSslSocket *socket);
115 void _q_clientConnected();
116 void _q_clientDisconnected();
117 void _q_dialbackRequestReceived(const QXmppDialback &dialback);
118 void _q_outgoingServerDisconnected();
119 void _q_serverConnection(QSslSocket *socket);
120 void _q_serverDisconnected();
121
122private:
123 friend class QXmppServerPrivate;
124 QXmppServerPrivate *d;
125};
126
127class QXmppSslServerPrivate;
128
131
132class QXMPP_EXPORT QXmppSslServer : public QTcpServer
133{
134 Q_OBJECT
135
136public:
137 QXmppSslServer(QObject *parent = nullptr);
138 ~QXmppSslServer() override;
139
140 void addCaCertificates(const QList<QSslCertificate> &certificates);
141 void setLocalCertificate(const QSslCertificate &certificate);
142 void setPrivateKey(const QSslKey &key);
143
144Q_SIGNALS:
146 void newConnection(QSslSocket *socket);
147
148private:
149 void incomingConnection(qintptr socketDescriptor) override;
150 QXmppSslServerPrivate *const d;
151};
152
153#endif
The QXmppDialback class represents a stanza used for the Server Dialback protocol as specified by XEP...
Definition: QXmppDialback.h:35
Interface for password checkers.
Definition: QXmppIncomingClient.h:40
The QXmppLoggable class represents a source of logging messages.
Definition: QXmppLogger.h:124
The QXmppLogger class represents a sink for logging messages.
Definition: QXmppLogger.h:46
The QXmppOutgoingServer class represents an outgoing XMPP stream to another XMPP server.
Definition: QXmppOutgoingServer.h:41
The QXmppPasswordChecker class represents an abstract password checker.
Definition: QXmppPasswordChecker.h:102
The QXmppPresence class represents an XMPP presence stanza.
Definition: QXmppPresence.h:36
The QXmppServerExtension class is the base class for QXmppServer extensions.
Definition: QXmppServerExtension.h:48
The QXmppServer class represents an XMPP server.
Definition: QXmppServer.h:60
QXmppLogger * logger()
Returns the QXmppLogger associated with the server.
void clientDisconnected(const QString &jid)
This signal is emitted when a client has disconnected.
void clientConnected(const QString &jid)
This signal is emitted when a client has connected.
void loggerChanged(QXmppLogger *logger)
This signal is emitted when the logger changes.
The QXmppSslServer class represents an SSL-enabled TCP server.
Definition: QXmppServer.h:133
void newConnection(QSslSocket *socket)
This signal is emitted when a new connection is established.
The QXmppStanza class is the base class for all XMPP stanzas.
Definition: QXmppStanza.h:100
The QXmppStream class is the base class for all XMPP streams.
Definition: QXmppStream.h:42