Cockatrice 2025-11-30-Development-2.11.0-beta.38
A cross-platform 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();
64 void processServerIdentificationEvent(const Event_ServerIdentification &event);
65 void processConnectionClosedEvent(const Event_ConnectionClosed &event);
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();
82 Command_Login generateCommandLogin();
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);
97 void submitForgotPasswordChallengeResponse(const Response &response);
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 void
135 connectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password);
136 void registerToServer(const QString &hostname,
137 unsigned int port,
138 const QString &_userName,
139 const QString &_password,
140 const QString &_email,
141 const QString &_country,
142 const QString &_realname);
143 void activateToServer(const QString &_token);
145 void requestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName);
146 void submitForgotPasswordResetToServer(const QString &hostname,
147 unsigned int port,
148 const QString &_userName,
149 const QString &_token,
150 const QString &_newpassword);
151 void submitForgotPasswordChallengeToServer(const QString &hostname,
152 unsigned int port,
153 const QString &_userName,
154 const QString &_email);
155};
156
157#endif
TODO: Document this.
AbstractClient(QObject *parent=nullptr)
Definition abstract_client.cpp:23
Definition interface_network_settings_provider.h:6
void slotConnected()
Definition remote_client.cpp:100
void sigRequestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName)
void processServerIdentificationEvent(const Event_ServerIdentification &event)
Definition remote_client.cpp:113
void connectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password)
Definition remote_client.cpp:557
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:615
void disconnectFromServer()
Definition remote_client.cpp:581
void registerResponse(const Response &response)
Definition remote_client.cpp:327
bool usingWebSocket
Definition remote_client.h:106
void processConnectionClosedEvent(const Event_ConnectionClosed &event)
Definition remote_client.cpp:263
void sigForgotPasswordError()
RemoteClient(QObject *parent=nullptr, INetworkSettingsProvider *networkSettingsProvider=nullptr)
Definition remote_client.cpp:28
void requestForgotPasswordResponse(const Response &response)
Definition remote_client.cpp:654
bool newMissingFeatureFound(const QString &_serversMissingFeatures)
Definition remote_client.cpp:602
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:449
void ping()
Definition remote_client.cpp:535
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:477
void doDisconnectFromServer()
Definition remote_client.cpp:510
void readData()
Definition remote_client.cpp:364
QString hashedPassword
Definition remote_client.h:113
void loginResponse(const Response &response)
Definition remote_client.cpp:285
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:565
void sigPromptForForgotPasswordReset()
void serverTimeout()
QTimer * timer
Definition remote_client.h:108
void doActivateToServer(const QString &_token)
Definition remote_client.cpp:500
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:687
void activateToServer(const QString &_token)
Definition remote_client.cpp:576
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:268
void doConnectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password)
Definition remote_client.cpp:460
void doSubmitForgotPasswordChallengeToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_email)
Definition remote_client.cpp:705
void slotSocketError(QAbstractSocket::SocketError error)
Definition remote_client.cpp:83
void websocketMessageReceived(const QByteArray &message)
Definition remote_client.cpp:411
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:422
void socketError(const QString &errorString)
void slotWebSocketError(QAbstractSocket::SocketError error)
Definition remote_client.cpp:90
void doLogin()
Definition remote_client.cpp:227
void activateResponse(const Response &response)
Definition remote_client.cpp:353
void submitForgotPasswordResetToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_token, const QString &_newpassword)
Definition remote_client.cpp:633
INetworkSettingsProvider * networkSettingsProvider
Definition remote_client.h:100
void sigDisconnectFromServer()
void doRequestPasswordSalt()
Definition remote_client.cpp:200
void sigConnectToServer(const QString &hostname, unsigned int port, const QString &_userName, const QString &_password)
void submitForgotPasswordChallengeResponse(const Response &response)
Definition remote_client.cpp:721
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:668
void requestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName)
Definition remote_client.cpp:628
~RemoteClient() override
Definition remote_client.cpp:77
void doHashedLogin()
Definition remote_client.cpp:251
void registerError(Response::ResponseCode resp, QString reasonStr, quint32 endTime)
void doRequestForgotPasswordToServer(const QString &hostname, unsigned int port, const QString &_userName)
Definition remote_client.cpp:642
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:697
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:586
Command_Login generateCommandLogin()
Definition remote_client.cpp:211
Q_LOGGING_CATEGORY(RemoteClientLog, "remote_client")