Cockatrice 2026-09-01-Development-3.1.0-beta.10
A virtual tabletop for multiplayer card games
Loading...
Searching...
No Matches
remote_client.h
Go to the documentation of this file.
1
6
7#ifndef REMOTECLIENT_H
8#define REMOTECLIENT_H
9
11
12#include <QLoggingCategory>
13#include <QWebSocket>
15#include <libcockatrice/protocol/pb/commands.pb.h>
16
17inline Q_LOGGING_CATEGORY(RemoteClientLog, "remote_client");
18
19class QTimer;
20
22{
23 Q_OBJECT
24signals:
26 void loginError(Response::ResponseCode resp, QString reasonStr, quint32 endTime, QList<QString> missingFeatures);
27 void registerError(Response::ResponseCode resp, QString reasonStr, quint32 endTime);
29 void socketError(const QString &errorString);
30 void protocolVersionMismatch(int clientVersion, int serverVersion);
31 void
32 sigConnectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password);
33 void sigRegisterToServer(const QString &hostname,
34 unsigned int port,
35 const QString &_userName,
36 const QString &_password,
37 const QString &_email,
38 const QString &_country,
39 const QString &_realname);
40 void sigActivateToServer(const QString &_token);
43 void sigRequestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName);
47 void sigSubmitForgotPasswordResetToServer(const QString &hostname,
48 unsigned int port,
49 const QString &_userName,
50 const QString &_token,
51 const QString &_newpassword);
53 void sigSubmitForgotPasswordChallengeToServer(const QString &hostname,
54 unsigned int port,
55 const QString &_userName,
56 const QString &_email);
57private slots:
58 void slotConnected();
59 void readData();
60 void websocketMessageReceived(const QByteArray &message);
61 void slotSocketError(QAbstractSocket::SocketError error);
62 void slotWebSocketError(QAbstractSocket::SocketError error);
63 void ping();
66 void passwordSaltResponse(const Response &response);
67 void loginResponse(const Response &response);
68 void registerResponse(const Response &response);
69 void activateResponse(const Response &response);
70 void
71 doConnectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password);
72 void doRegisterToServer(const QString &hostname,
73 unsigned int port,
74 const QString &_userName,
75 const QString &_password,
76 const QString &_email,
77 const QString &_country,
78 const QString &_realname);
80 void doLogin();
81 void doHashedLogin();
84 void doActivateToServer(const QString &_token);
85 void doRequestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName);
86 void requestForgotPasswordResponse(const Response &response);
87 void doSubmitForgotPasswordResetToServer(const QString &hostname,
88 unsigned int port,
89 const QString &_userName,
90 const QString &_token,
91 const QString &_newpassword);
92 void submitForgotPasswordResetResponse(const Response &response);
93 void doSubmitForgotPasswordChallengeToServer(const QString &hostname,
94 unsigned int port,
95 const QString &_userName,
96 const QString &_email);
98
99private:
103 QByteArray inputBuffer;
108 QTimer *timer;
109 QTcpSocket *socket;
110 QWebSocket *websocket;
112 unsigned int lastPort;
114
115 QString getSrvClientID(const QString &_hostname);
116 bool newMissingFeatureFound(const QString &_serversMissingFeatures);
118 void connectToHost(const QString &hostname, unsigned int port);
119
120protected slots:
121 void sendCommandContainer(const CommandContainer &cont) override;
122
123public:
124 explicit RemoteClient(QObject *parent = nullptr, INetworkSettingsProvider *networkSettingsProvider = nullptr);
125 ~RemoteClient() override;
126 QString peerName() const
127 {
128 if (usingWebSocket) {
129 return websocket->peerName();
130 } else {
131 return socket->peerName();
132 }
133 }
134 quint16 peerPort() const
135 {
136 if (usingWebSocket) {
137 return websocket->peerPort();
138 } else {
139 return socket->peerPort();
140 }
141 }
142 QString serverName() const override
143 {
144 return lastHostname;
145 }
146 quint16 serverPort() const override
147 {
148 return static_cast<quint16>(lastPort);
149 }
150 void
151 connectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password);
152 void registerToServer(const QString &hostname,
153 unsigned int port,
154 const QString &_userName,
155 const QString &_password,
156 const QString &_email,
157 const QString &_country,
158 const QString &_realname);
159 void activateToServer(const QString &_token);
161 void requestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName);
162 void submitForgotPasswordResetToServer(const QString &hostname,
163 unsigned int port,
164 const QString &_userName,
165 const QString &_token,
166 const QString &_newpassword);
167 void submitForgotPasswordChallengeToServer(const QString &hostname,
168 unsigned int port,
169 const QString &_userName,
170 const QString &_email);
171};
172
173#endif
AbstractClient(QObject *parent=nullptr)
Definition abstract_client.cpp:24
Definition interface_network_settings_provider.h:6
void slotConnected()
Definition remote_client.cpp:96
void sigRequestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName)
void processServerIdentificationEvent(const Event_ServerIdentification &event)
Definition remote_client.cpp:109
void connectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password)
Definition remote_client.cpp:577
int maxTimeout
Definition remote_client.h:101
void sigSubmitForgotPasswordChallengeToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_email)
void clearNewClientFeatures()
Definition remote_client.cpp:636
void disconnectFromServer()
Definition remote_client.cpp:601
void registerResponse(const Response &response)
Definition remote_client.cpp:328
bool usingWebSocket
Definition remote_client.h:106
void processConnectionClosedEvent(const Event_ConnectionClosed &event)
Definition remote_client.cpp:260
void sigForgotPasswordError()
RemoteClient(QObject *parent=nullptr, INetworkSettingsProvider *networkSettingsProvider=nullptr)
Definition remote_client.cpp:28
void requestForgotPasswordResponse(const Response &response)
Definition remote_client.cpp:676
bool newMissingFeatureFound(const QString &_serversMissingFeatures)
Definition remote_client.cpp:622
int timeRunning
Definition remote_client.h:102
bool handshakeStarted
Definition remote_client.h:105
void connectToHost(const QString &hostname, unsigned int port)
Definition remote_client.cpp:467
void ping()
Definition remote_client.cpp:555
void doRegisterToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password, const QString &_email, const QString &_country, const QString &_realname)
Definition remote_client.cpp:495
void doDisconnectFromServer()
Definition remote_client.cpp:528
void readData()
Definition remote_client.cpp:365
QString hashedPassword
Definition remote_client.h:113
void loginResponse(const Response &response)
Definition remote_client.cpp:282
void registerToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password, const QString &_email, const QString &_country, const QString &_realname)
Definition remote_client.cpp:585
void sigPromptForForgotPasswordReset()
void serverTimeout()
QTimer * timer
Definition remote_client.h:108
void doActivateToServer(const QString &_token)
Definition remote_client.cpp:518
void sigSubmitForgotPasswordResetToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_token, const QString &_newpassword)
void submitForgotPasswordResetResponse(const Response &response)
Definition remote_client.cpp:711
void activateToServer(const QString &_token)
Definition remote_client.cpp:596
QWebSocket * websocket
Definition remote_client.h:110
bool messageInProgress
Definition remote_client.h:104
void sigActivateToServer(const QString &_token)
void loginError(Response::ResponseCode resp, QString reasonStr, quint32 endTime, QList< QString > missingFeatures)
void passwordSaltResponse(const Response &response)
Definition remote_client.cpp:265
void doConnectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password)
Definition remote_client.cpp:478
void doSubmitForgotPasswordChallengeToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_email)
Definition remote_client.cpp:730
void slotSocketError(QAbstractSocket::SocketError error)
Definition remote_client.cpp:79
void websocketMessageReceived(const QByteArray &message)
Definition remote_client.cpp:419
void notifyUserAboutUpdate()
void sigForgotPasswordSuccess()
void activateError()
int lastDataReceived
Definition remote_client.h:102
QString lastHostname
Definition remote_client.h:111
QTcpSocket * socket
Definition remote_client.h:109
void sigRegisterToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password, const QString &_email, const QString &_country, const QString &_realname)
void sigPromptForForgotPasswordChallenge()
void sendCommandContainer(const CommandContainer &cont) override
Definition remote_client.cpp:432
void socketError(const QString &errorString)
void slotWebSocketError(QAbstractSocket::SocketError error)
Definition remote_client.cpp:86
void doLogin()
Definition remote_client.cpp:224
void activateResponse(const Response &response)
Definition remote_client.cpp:354
void submitForgotPasswordResetToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_token, const QString &_newpassword)
Definition remote_client.cpp:655
INetworkSettingsProvider * networkSettingsProvider
Definition remote_client.h:100
void sigDisconnectFromServer()
void doRequestPasswordSalt()
Definition remote_client.cpp:196
void sigConnectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password)
void submitForgotPasswordChallengeResponse(const Response &response)
Definition remote_client.cpp:746
void protocolVersionMismatch(int clientVersion, int serverVersion)
void doSubmitForgotPasswordResetToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_token, const QString &_newpassword)
Definition remote_client.cpp:692
void requestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName)
Definition remote_client.cpp:650
~RemoteClient() override
Definition remote_client.cpp:73
void doHashedLogin()
Definition remote_client.cpp:248
void registerError(Response::ResponseCode resp, QString reasonStr, quint32 endTime)
void doRequestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName)
Definition remote_client.cpp:664
quint16 serverPort() const override
Definition remote_client.h:146
QByteArray inputBuffer
Definition remote_client.h:103
void submitForgotPasswordChallengeToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_email)
Definition remote_client.cpp:722
unsigned int lastPort
Definition remote_client.h:112
int messageLength
Definition remote_client.h:107
QString peerName() const
Definition remote_client.h:126
QString getSrvClientID(const QString &_hostname)
Definition remote_client.cpp:606
quint16 peerPort() const
Definition remote_client.h:134
Command_Login generateCommandLogin()
Definition remote_client.cpp:207
QString serverName() const override
Returns the server address configured for the current connection.
Definition remote_client.h:142
Q_LOGGING_CATEGORY(RemoteClientLog, "remote_client")
Definition commands.proto:7
Definition session_commands.proto:50
Definition event_connection_closed.proto:3
Definition event_server_identification.proto:3
Definition response.proto:11
ResponseCode
Definition response.proto:14