aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppSocks.h
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-02-25 12:21:53 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-02-25 12:21:53 +0000
commitb9123796e79b1f9c08b5b113900826008f5d6dc8 (patch)
tree5a18ffd99ee0af574f83f3e88aaf421abf5aa68c /source/QXmppSocks.h
parent9334406b1ac2716ba799c5bb71d25efefaca29bc (diff)
downloadqxmpp-b9123796e79b1f9c08b5b113900826008f5d6dc8.tar.gz
add code for handling SOCKS5 bytestreams
Diffstat (limited to 'source/QXmppSocks.h')
-rw-r--r--source/QXmppSocks.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/source/QXmppSocks.h b/source/QXmppSocks.h
new file mode 100644
index 00000000..f9a7e71c
--- /dev/null
+++ b/source/QXmppSocks.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2010 Bolloré telecom
+ *
+ * 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.
+ *
+ */
+
+#ifndef QXMPPSOCKS_H
+#define QXMPPSOCKS_H
+
+#include <QHostAddress>
+#include <QObject>
+
+class QTcpServer;
+class QTcpSocket;
+
+class QXmppSocksClient : public QObject
+{
+ Q_OBJECT
+
+public:
+ QXmppSocksClient(const QHostAddress &proxyAddress, quint16 proxyPort, QObject *parent=0);
+ void connectToHost(const QString &hostName, quint16 hostPort);
+ QString errorString() const;
+ QByteArray readAll();
+ bool waitForConnected(int msecs = 30000);
+
+signals:
+ void disconnected();
+ void readyRead();
+
+private:
+ QHostAddress m_proxyAddress;
+ quint16 m_proxyPort;
+ QString m_hostName;
+ quint16 m_hostPort;
+ QTcpSocket *m_socket;
+};
+
+class QXmppSocksServer : public QObject
+{
+ Q_OBJECT
+
+public:
+ QXmppSocksServer(QObject *parent=0);
+ bool listen(const QHostAddress &address, quint16 port = 0);
+ QHostAddress serverAddress() const;
+ quint16 serverPort() const;
+ void setHostName(const QString &hostName);
+ void setHostPort(quint16 hostPort);
+ void write(const QByteArray &data);
+
+signals:
+ void bytesWritten(qint64);
+ void disconnected();
+
+private slots:
+ void slotNewConnection();
+
+private:
+ QString m_hostName;
+ quint16 m_hostPort;
+ QTcpServer *m_server;
+ QTcpSocket *m_socket;
+};
+
+#endif