aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/aoapplication.h9
-rw-r--r--include/aooptionsdialog.h7
-rw-r--r--include/lobby.h2
-rw-r--r--include/networkmanager.h68
4 files changed, 37 insertions, 49 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h
index 0c5359ad..d8d3c9a1 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -78,7 +78,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();
@@ -136,7 +135,7 @@ public:
QVector<server_type> &get_favorite_list() { return favorite_list; }
void add_favorite_server(int p_server);
- void set_server_list();
+ void set_server_list(QVector<server_type> &servers) { server_list = servers; }
QVector<server_type> &get_server_list() { return server_list; }
// reads the theme from config.ini and sets it accordingly
@@ -519,6 +518,9 @@ public:
// Get a list of custom mount paths
QStringList get_mount_paths();
+ // Get whether to opt out of player count metrics sent to the master server
+ bool get_player_count_optout();
+
// Currently defined subtheme
QString subtheme;
@@ -558,9 +560,6 @@ private:
QHash<uint, QString> dir_listing_cache;
QSet<uint> dir_listing_exist_cache;
-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 77d19a43..84a96484 100644
--- a/include/aooptionsdialog.h
+++ b/include/aooptionsdialog.h
@@ -24,6 +24,7 @@
#include <QDirIterator>
#include <QListWidget>
+#include <QTextBrowser>
#include <QTextStream>
class Lobby;
@@ -188,6 +189,12 @@ private:
QPushButton *ui_mount_down;
QPushButton *ui_mount_clear_cache;
+ QWidget *ui_privacy_tab;
+ QVBoxLayout *ui_privacy_layout;
+ QCheckBox *ui_privacy_optout_cb;
+ QFrame *ui_privacy_separator;
+ QTextBrowser *ui_privacy_policy;
+
bool asset_cache_dirty = false;
bool needs_default_audiodev();
diff --git a/include/lobby.h b/include/lobby.h
index 0f1610f9..80832491 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 ed57a956..2e61291f 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 <QDnsLookup>
+#include <QNetworkAccessManager>
#include <QTcpSocket>
#include <QTime>
#include <QTimer>
+
#include <cstring>
+enum MSDocumentType {
+ PrivacyPolicy,
+ Motd,
+ ClientVersion
+};
+
class NetworkManager : public QObject {
Q_OBJECT
@@ -31,53 +26,38 @@ 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
+ QTimer *heartbeat_timer;
- const quint16 ms_port = 27016;
- const int timeout_milliseconds = 2000;
+ QString ms_baseurl = "https://servers.aceattorneyonline.com";
- // in seconds
- const int ms_reconnect_delay = 7;
-
- bool ms_partial_packet = false;
- QString ms_temp_packet = "";
+ const int heartbeat_interval = 60 * 5;
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<void()> &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<void(QString)> &cb);
+ void send_heartbeat();
+private slots:
+ void ms_request_finished(QNetworkReply *reply,
+ const std::function<void()> &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