QXmpp  Version:0.7.3
 All Classes Functions Variables Enumerations Enumerator Properties Groups
QXmppServer.h
1 /*
2  * Copyright (C) 2008-2012 The QXmpp developers
3  *
4  * Author:
5  * Jeremy LainĂ©
6  *
7  * Source:
8  * http://code.google.com/p/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 <QTcpServer>
28 #include <QVariantMap>
29 
30 #include "QXmppLogger.h"
31 
32 class QDomElement;
33 class QSslCertificate;
34 class QSslKey;
35 class QSslSocket;
36 
37 class QXmppDialback;
41 class QXmppPresence;
43 class QXmppServerPrivate;
44 class QXmppSslServer;
45 class QXmppStanza;
46 class QXmppStream;
47 
58 
59 class QXMPP_EXPORT QXmppServer : public QXmppLoggable
60 {
61  Q_OBJECT
62 
63 public:
64  QXmppServer(QObject *parent = 0);
65  ~QXmppServer();
66 
67  void addExtension(QXmppServerExtension *extension);
68  QList<QXmppServerExtension*> extensions();
69 
70  QString domain() const;
71  void setDomain(const QString &domain);
72 
73  QXmppLogger *logger();
74  void setLogger(QXmppLogger *logger);
75 
76  QXmppPasswordChecker *passwordChecker();
77  void setPasswordChecker(QXmppPasswordChecker *checker);
78 
79  QVariantMap statistics() const;
80 
81  void addCaCertificates(const QString &caCertificates);
82  void setLocalCertificate(const QString &path);
83  void setPrivateKey(const QString &path);
84 
85  void close();
86  bool listenForClients(const QHostAddress &address = QHostAddress::Any, quint16 port = 5222);
87  bool listenForServers(const QHostAddress &address = QHostAddress::Any, quint16 port = 5269);
88 
89  bool sendElement(const QDomElement &element);
90  bool sendPacket(const QXmppStanza &stanza);
91 
92  void addIncomingClient(QXmppIncomingClient *stream);
93 
94 signals:
96  void clientConnected(const QString &jid);
97 
99  void clientDisconnected(const QString &jid);
100 
101 public slots:
102  void handleElement(const QDomElement &element);
103 
104 private slots:
105  void _q_clientConnection(QSslSocket *socket);
106  void _q_clientConnected();
107  void _q_clientDisconnected();
108  void _q_dialbackRequestReceived(const QXmppDialback &dialback);
109  void _q_outgoingServerDisconnected();
110  void _q_serverConnection(QSslSocket *socket);
111  void _q_serverDisconnected();
112 
113 private:
114  friend class QXmppServerPrivate;
115  QXmppServerPrivate *d;
116 };
117 
118 class QXmppSslServerPrivate;
119 
122 
123 class QXMPP_EXPORT QXmppSslServer : public QTcpServer
124 {
125  Q_OBJECT
126 
127 public:
128  QXmppSslServer(QObject *parent = 0);
129  ~QXmppSslServer();
130 
131  void addCaCertificates(const QList<QSslCertificate> &certificates);
132  void setLocalCertificate(const QSslCertificate &certificate);
133  void setPrivateKey(const QSslKey &key);
134 
135 signals:
137  void newConnection(QSslSocket *socket);
138 
139 private:
140  void incomingConnection(int socketDescriptor);
141  QXmppSslServerPrivate * const d;
142 };
143 
144 #endif