Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qsocks5socketengine_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QSOCKS5SOCKETENGINE_P_H
5#define QSOCKS5SOCKETENGINE_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtNetwork/private/qtnetworkglobal_p.h>
19
20#include <QtNetwork/qnetworkproxy.h>
21
23
25
27
29
31{
33public:
36
38 bool initialize(qintptr socketDescriptor, QAbstractSocket::SocketState socketState = QAbstractSocket::ConnectedState) override;
39
40 void setProxy(const QNetworkProxy &networkProxy);
41
42 qintptr socketDescriptor() const override;
43
44 bool isValid() const override;
45
46 bool connectInternal();
47 bool connectToHost(const QHostAddress &address, quint16 port) override;
48 bool connectToHostByName(const QString &name, quint16 port) override;
49 bool bind(const QHostAddress &address, quint16 port) override;
50 bool listen(int backlog) override;
51 qintptr accept() override;
52 void close() override;
53
54 qint64 bytesAvailable() const override;
55
56 qint64 read(char *data, qint64 maxlen) override;
57 qint64 write(const char *data, qint64 len) override;
58
59#ifndef QT_NO_UDPSOCKET
60#ifndef QT_NO_NETWORKINTERFACE
61 bool joinMulticastGroup(const QHostAddress &groupAddress,
62 const QNetworkInterface &interface) override;
63 bool leaveMulticastGroup(const QHostAddress &groupAddress,
64 const QNetworkInterface &interface) override;
66 bool setMulticastInterface(const QNetworkInterface &iface) override;
67#endif // QT_NO_NETWORKINTERFACE
68
69 bool hasPendingDatagrams() const override;
70 qint64 pendingDatagramSize() const override;
71#endif // QT_NO_UDPSOCKET
72
73 qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader * = nullptr,
74 PacketHeaderOptions = WantNone) override;
75 qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &) override;
76 qint64 bytesToWrite() const override;
77
78 int option(SocketOption option) const override;
79 bool setOption(SocketOption option, int value) override;
80
81 bool waitForRead(int msecs = 30000, bool *timedOut = nullptr) override;
82 bool waitForWrite(int msecs = 30000, bool *timedOut = nullptr) override;
83 bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite,
84 bool checkRead, bool checkWrite,
85 int msecs = 30000, bool *timedOut = nullptr) override;
86
87 bool isReadNotificationEnabled() const override;
88 void setReadNotificationEnabled(bool enable) override;
89 bool isWriteNotificationEnabled() const override;
90 void setWriteNotificationEnabled(bool enable) override;
91 bool isExceptionNotificationEnabled() const override;
92 void setExceptionNotificationEnabled(bool enable) override;
93
94private:
95 Q_DECLARE_PRIVATE(QSocks5SocketEngine)
96 Q_DISABLE_COPY_MOVE(QSocks5SocketEngine)
97 Q_PRIVATE_SLOT(d_func(), void _q_controlSocketConnected())
98 Q_PRIVATE_SLOT(d_func(), void _q_controlSocketReadNotification())
99 Q_PRIVATE_SLOT(d_func(), void _q_controlSocketErrorOccurred(QAbstractSocket::SocketError))
100#ifndef QT_NO_UDPSOCKET
101 Q_PRIVATE_SLOT(d_func(), void _q_udpSocketReadNotification())
102#endif
103 Q_PRIVATE_SLOT(d_func(), void _q_controlSocketBytesWritten())
104 Q_PRIVATE_SLOT(d_func(), void _q_emitPendingReadNotification())
105 Q_PRIVATE_SLOT(d_func(), void _q_emitPendingWriteNotification())
106 Q_PRIVATE_SLOT(d_func(), void _q_emitPendingConnectionNotification())
107 Q_PRIVATE_SLOT(d_func(), void _q_controlSocketDisconnected())
108 Q_PRIVATE_SLOT(d_func(), void _q_controlSocketStateChanged(QAbstractSocket::SocketState))
109
110};
111
112
113class QTcpSocket;
114
116{
117public:
119 virtual ~QSocks5Authenticator();
120 virtual char methodId();
121 virtual bool beginAuthenticate(QTcpSocket *socket, bool *completed);
122 virtual bool continueAuthenticate(QTcpSocket *socket, bool *completed);
123
124 bool seal(const QByteArray &buf, QByteArray *sealedBuf);
125 bool unSeal(const QByteArray &sealedBuf, QByteArray *buf);
126 bool unSeal(QTcpSocket *sealedSocket, QByteArray *buf);
127
128 virtual QString errorString() { return QString(); }
129};
130
132{
133public:
134 QSocks5PasswordAuthenticator(const QString &userName, const QString &password);
135 char methodId() override;
136 bool beginAuthenticate(QTcpSocket *socket, bool *completed) override;
137 bool continueAuthenticate(QTcpSocket *socket, bool *completed) override;
138
139 QString errorString() override;
140
141private:
142 QString userName;
143 QString password;
144};
145
146struct QSocks5Data;
147struct QSocks5ConnectData;
149struct QSocks5BindData;
150
152{
153 Q_DECLARE_PUBLIC(QSocks5SocketEngine)
154public:
157
159 {
173 };
175
177 {
182 };
184
186 {
197 };
198
199 void initialize(Socks5Mode socks5Mode);
200
201 void setErrorState(Socks5State state, const QString &extraMessage = QString());
202 void setErrorState(Socks5State state, Socks5Error socks5error);
203
204 void reauthenticate();
207 void sendRequestMethod();
210
211 bool waitForConnected(int msecs, bool *timedOut);
212
216#ifndef QT_NO_UDPSOCKET
218#endif
222
224
226
228
231#ifndef QT_NO_UDPSOCKET
233#endif
237
240
250};
251
253{
254public:
256 const QNetworkProxy &, QObject *parent) override;
257 virtual QAbstractSocketEngine *createSocketEngine(qintptr socketDescriptor, QObject *parent) override;
258};
259
261
262#endif // QSOCKS5SOCKETENGINE_H
virtual bool leaveMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)=0
virtual bool setMulticastInterface(const QNetworkInterface &iface)=0
virtual bool joinMulticastGroup(const QHostAddress &groupAddress, const QNetworkInterface &iface)=0
virtual void setWriteNotificationEnabled(bool enable)=0
virtual bool bind(const QHostAddress &address, quint16 port)=0
virtual bool isValid() const =0
virtual bool isReadNotificationEnabled() const =0
virtual bool hasPendingDatagrams() const =0
virtual bool connectToHost(const QHostAddress &address, quint16 port)=0
virtual qintptr accept()=0
virtual qint64 readDatagram(char *data, qint64 maxlen, QIpPacketHeader *header=nullptr, PacketHeaderOptions=WantNone)=0
virtual qint64 read(char *data, qint64 maxlen)=0
virtual void setReadNotificationEnabled(bool enable)=0
static QAbstractSocketEngine * createSocketEngine(QAbstractSocket::SocketType socketType, const QNetworkProxy &, QObject *parent)
virtual bool setOption(SocketOption option, int value)=0
virtual qint64 write(const char *data, qint64 len)=0
virtual qint64 pendingDatagramSize() const =0
virtual qintptr socketDescriptor() const =0
virtual bool connectToHostByName(const QString &name, quint16 port)=0
virtual qint64 bytesAvailable() const =0
virtual qint64 bytesToWrite() const =0
virtual void setExceptionNotificationEnabled(bool enable)=0
virtual bool isWriteNotificationEnabled() const =0
virtual void close()=0
virtual bool waitForRead(int msecs=30000, bool *timedOut=nullptr)=0
virtual bool isExceptionNotificationEnabled() const =0
virtual bool waitForReadOrWrite(bool *readyToRead, bool *readyToWrite, bool checkRead, bool checkWrite, int msecs=30000, bool *timedOut=nullptr)=0
virtual qint64 writeDatagram(const char *data, qint64 len, const QIpPacketHeader &header)=0
virtual QNetworkInterface multicastInterface() const =0
SocketState
This enum describes the different states in which a socket can be.
static constexpr auto IPv4Protocol
SocketError
This enum describes the socket errors that can occur.
SocketType
This enum describes the transport layer protocol.
\inmodule QtCore
Definition qbytearray.h:57
The QHostAddress class provides an IP address.
The QNetworkInterface class provides a listing of the host's IP addresses and network interfaces.
The QNetworkProxy class provides a network layer proxy.
\inmodule QtCore
Definition qobject.h:90
virtual bool beginAuthenticate(QTcpSocket *socket, bool *completed)
virtual bool continueAuthenticate(QTcpSocket *socket, bool *completed)
virtual QString errorString()
bool seal(const QByteArray &buf, QByteArray *sealedBuf)
bool unSeal(const QByteArray &sealedBuf, QByteArray *buf)
bool beginAuthenticate(QTcpSocket *socket, bool *completed) override
bool continueAuthenticate(QTcpSocket *socket, bool *completed) override
QSocks5UdpAssociateData * udpData
void setErrorState(Socks5State state, const QString &extraMessage=QString())
void _q_controlSocketStateChanged(QAbstractSocket::SocketState)
bool waitForConnected(int msecs, bool *timedOut)
void _q_controlSocketErrorOccurred(QAbstractSocket::SocketError)
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
The QTcpSocket class provides a TCP socket.
Definition qtcpsocket.h:18
else opt state
[0]
Combined button and popup list for selecting options.
static bool initialize()
Definition qctf.cpp:67
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char * interface
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
EGLOutputPortEXT port
static QT_BEGIN_NAMESPACE const char * socketType(QSocketNotifier::Type type)
GLenum type
GLenum GLuint GLenum GLsizei const GLchar * buf
GLboolean enable
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint name
GLenum GLsizei len
GLuint GLuint64EXT address
GLuint GLenum option
#define Q_AUTOTEST_EXPORT
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
#define Q_PRIVATE_SLOT(d, signature)
unsigned short quint16
Definition qtypes.h:43
long long qint64
Definition qtypes.h:55
ptrdiff_t qintptr
Definition qtypes.h:71
QTcpSocket * socket
[1]
serverSocket setProxy(QNetworkProxy::NoProxy)
[0]
socketLayer waitForWrite()
socketLayer listen()
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent