From b682d69e494acdbf5fc97a81109faa667ad1918f Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sun, 13 Jun 2021 22:16:41 -0500 Subject: Use new HTTP-based master server client --- include/aoapplication.h | 6 +---- include/aooptionsdialog.h | 5 ++++ include/lobby.h | 2 ++ include/networkmanager.h | 67 ++++++++++++++++------------------------------- 4 files changed, 31 insertions(+), 49 deletions(-) (limited to 'include') diff --git a/include/aoapplication.h b/include/aoapplication.h index 835c7fd..d0d5121 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -61,7 +61,6 @@ public: void ms_packet_received(AOPacket *p_packet); void server_packet_received(AOPacket *p_packet); - void send_ms_packet(AOPacket *p_packet); void send_server_packet(AOPacket *p_packet, bool encoded = true); void call_settings_menu(); @@ -119,7 +118,7 @@ public: QVector &get_favorite_list() { return favorite_list; } void add_favorite_server(int p_server); - void set_server_list(); + void set_server_list(QVector &servers) { server_list = servers; } QVector &get_server_list() { return server_list; } // reads the theme from config.ini and sets it accordingly @@ -528,9 +527,6 @@ private: QVector server_list; QVector favorite_list; -private slots: - void ms_connect_finished(bool connected, bool will_retry); - public slots: void server_disconnected(); void loading_cancelled(); diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index a6c8b8e..de1a3b5 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -23,6 +23,7 @@ #include #include +#include #include class Lobby; @@ -174,6 +175,10 @@ private: QLabel *ui_log_lbl; QCheckBox *ui_log_cb; + QWidget *ui_privacy_tab; + QVBoxLayout *ui_privacy_layout; + QTextBrowser *ui_privacy_policy; + bool needs_default_audiodev(); void update_values(); diff --git a/include/lobby.h b/include/lobby.h index 0f066ab..1d2cbc6 100644 --- a/include/lobby.h +++ b/include/lobby.h @@ -30,6 +30,8 @@ public: void set_widgets(); void list_servers(); void list_favorites(); + void get_motd(); + void check_for_updates(); void append_chatmessage(QString f_name, QString f_message); void append_error(QString f_message); void set_player_count(int players_online, int max_players); diff --git a/include/networkmanager.h b/include/networkmanager.h index ed57a95..a05c551 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -1,28 +1,23 @@ #ifndef NETWORKMANAGER_H #define NETWORKMANAGER_H -// Qt for Android has stubbed QDnsLookup. This is not documented in any part of -// their wiki. This prevents SRV lookup/failover behavior from functioning. -// https://bugreports.qt.io/browse/QTBUG-56143 -#ifndef ANDROID -#define MS_FAILOVER_SUPPORTED -#endif - -//#define LOCAL_MS - -#ifdef LOCAL_MS -#undef MS_FAILOVER_SUPPORTED -#endif - #include "aoapplication.h" #include "aopacket.h" #include +#include #include #include #include + #include +enum MSDocumentType { + PrivacyPolicy, + Motd, + ClientVersion +}; + class NetworkManager : public QObject { Q_OBJECT @@ -31,53 +26,37 @@ public: ~NetworkManager(); AOApplication *ao_app; - QTcpSocket *ms_socket; + QNetworkAccessManager *http; QTcpSocket *server_socket; - QDnsLookup *ms_dns; - QTimer *ms_reconnect_timer; - - const QString ms_srv_hostname = "_aoms._tcp.aceattorneyonline.com"; -#ifdef LOCAL_MS - QString ms_nosrv_hostname = "localhost"; -#else - QString ms_nosrv_hostname = "master.aceattorneyonline.com"; -#endif - const quint16 ms_port = 27016; - const int timeout_milliseconds = 2000; + QString ms_baseurl = "https://ms3.oldmud0.workers.dev"; - // in seconds - const int ms_reconnect_delay = 7; - - bool ms_partial_packet = false; - QString ms_temp_packet = ""; + const int timeout_milliseconds = 5000; bool partial_packet = false; QString temp_packet = ""; unsigned int s_decryptor = 5; - void connect_to_master(); - void connect_to_master_nosrv(); void connect_to_server(server_type p_server); public slots: - void ship_ms_packet(QString p_packet); + void get_server_list(const std::function &cb); void ship_server_packet(QString p_packet); + void handle_server_packet(); -signals: - void ms_connect_finished(bool success, bool will_retry); + void request_document(MSDocumentType document_type, + const std::function &cb); +private slots: + void heartbeat_playing(); + void ms_request_finished(QNetworkReply *reply, + const std::function &cb); private: - void perform_srv_lookup(); - -private slots: - void on_srv_lookup(); - void handle_ms_packet(); - void handle_server_packet(); - void on_ms_nosrv_connect_success(); - void on_ms_socket_error(QAbstractSocket::SocketError error); - void retry_ms_connect(); + QString get_user_agent() const { + return QStringLiteral("AttorneyOnline/%1 (Desktop)") + .arg(ao_app->get_version_string()); + } }; #endif // NETWORKMANAGER_H -- cgit From f1107aeac51658a0525d4231b2f1f39131acbcb5 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 18 Dec 2021 20:29:55 -0600 Subject: Finish out feature - Add periodic timer for heartbeat - Add option to settings for opting out from heartbeat/player metrics - Change base URL to permanent URL --- include/aoapplication.h | 3 +++ include/aooptionsdialog.h | 2 ++ include/networkmanager.h | 6 ++++-- 3 files changed, 9 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/aoapplication.h b/include/aoapplication.h index d0d5121..1cdcbc5 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -491,6 +491,9 @@ public: // Get the default scaling method QString get_default_scaling(); + // Get whether to opt out of player count metrics sent to the master server + bool get_player_count_optout(); + // Currently defined subtheme QString subtheme; diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h index de1a3b5..d8ef49f 100644 --- a/include/aooptionsdialog.h +++ b/include/aooptionsdialog.h @@ -177,6 +177,8 @@ private: QWidget *ui_privacy_tab; QVBoxLayout *ui_privacy_layout; + QCheckBox *ui_privacy_optout_cb; + QFrame *ui_privacy_separator; QTextBrowser *ui_privacy_policy; bool needs_default_audiodev(); diff --git a/include/networkmanager.h b/include/networkmanager.h index a05c551..ebee481 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -28,10 +28,12 @@ public: AOApplication *ao_app; QNetworkAccessManager *http; QTcpSocket *server_socket; + QTimer *heartbeat_timer; - QString ms_baseurl = "https://ms3.oldmud0.workers.dev"; + QString ms_baseurl = "https://servers.aceattorneyonline.com"; const int timeout_milliseconds = 5000; + const int heartbeat_interval = 60 * 5; bool partial_packet = false; QString temp_packet = ""; @@ -47,8 +49,8 @@ public slots: void request_document(MSDocumentType document_type, const std::function &cb); + void send_heartbeat(); private slots: - void heartbeat_playing(); void ms_request_finished(QNetworkReply *reply, const std::function &cb); -- cgit From cf12168ebd426d7658d7f7021c47be519caa215a Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Sat, 18 Dec 2021 22:22:30 -0600 Subject: Qt 5.9 compat; remove dead code --- include/networkmanager.h | 1 - 1 file changed, 1 deletion(-) (limited to 'include') diff --git a/include/networkmanager.h b/include/networkmanager.h index ebee481..2e61291 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -32,7 +32,6 @@ public: QString ms_baseurl = "https://servers.aceattorneyonline.com"; - const int timeout_milliseconds = 5000; const int heartbeat_interval = 60 * 5; bool partial_packet = false; -- cgit From 5d79a83fb5a0f322271e5e3d6c37a8782d42a61a Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Thu, 30 Dec 2021 21:26:28 -0600 Subject: Prevent old/bad "backup MS" values from preventing connection --- include/networkmanager.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/networkmanager.h b/include/networkmanager.h index 2e61291..1e1a60b 100644 --- a/include/networkmanager.h +++ b/include/networkmanager.h @@ -22,15 +22,16 @@ class NetworkManager : public QObject { Q_OBJECT public: - NetworkManager(AOApplication *parent); - ~NetworkManager(); + explicit NetworkManager(AOApplication *parent); + ~NetworkManager() = default; AOApplication *ao_app; QNetworkAccessManager *http; QTcpSocket *server_socket; QTimer *heartbeat_timer; - QString ms_baseurl = "https://servers.aceattorneyonline.com"; + const QString DEFAULT_MS_BASEURL = "https://servers.aceattorneyonline.com"; + QString ms_baseurl = DEFAULT_MS_BASEURL; const int heartbeat_interval = 60 * 5; -- cgit From 8822db8e828b9d5fbb4f21124b5fb41d1acdeb55 Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Thu, 30 Dec 2021 21:46:24 -0600 Subject: Remove lobby chat Goodbye, lobby chat :( --- include/lobby.h | 4 ---- 1 file changed, 4 deletions(-) (limited to 'include') diff --git a/include/lobby.h b/include/lobby.h index 8083249..61c93c5 100644 --- a/include/lobby.h +++ b/include/lobby.h @@ -78,9 +78,6 @@ private: AOTextArea *ui_chatbox; - QLineEdit *ui_chatname; - QLineEdit *ui_chatmessage; - AOImage *ui_loading_background; QTextEdit *ui_loading_text; QProgressBar *ui_progress_bar; @@ -105,7 +102,6 @@ private slots: void on_server_list_clicked(QTreeWidgetItem *p_item, int column); void on_server_list_doubleclicked(QTreeWidgetItem *p_item, int column); void on_server_search_edited(QString p_text); - void on_chatfield_return_pressed(); }; #endif // LOBBY_H -- cgit From e29a41b58ffdcaaa8dc7d73c7d8e7b6674f4f51a Mon Sep 17 00:00:00 2001 From: oldmud0 Date: Thu, 30 Dec 2021 21:47:35 -0600 Subject: Remove AO1 MS code You won't be missed :') --- include/aoapplication.h | 1 - 1 file changed, 1 deletion(-) (limited to 'include') diff --git a/include/aoapplication.h b/include/aoapplication.h index 1102ffd..c094a33 100644 --- a/include/aoapplication.h +++ b/include/aoapplication.h @@ -75,7 +75,6 @@ public: void construct_courtroom(); void destruct_courtroom(); - void ms_packet_received(AOPacket *p_packet); void server_packet_received(AOPacket *p_packet); void send_server_packet(AOPacket *p_packet, bool encoded = true); -- cgit