rewrite proxy server to support multiple clients and integration with game server

This commit is contained in:
Martin Michelsen
2022-03-27 18:14:23 -07:00
parent d977cf0608
commit 2597da95bc
24 changed files with 1370 additions and 992 deletions
+11 -5
View File
@@ -10,12 +10,17 @@
extern const uint64_t CLIENT_CONFIG_MAGIC;
enum class ServerBehavior {
SPLIT_RECONNECT = 0,
LOGIN_SERVER,
LOBBY_SERVER,
DATA_SERVER_BB,
PATCH_SERVER,
PROXY_SERVER,
};
struct ClientConfig {
@@ -23,8 +28,10 @@ struct ClientConfig {
uint8_t bb_game_state;
uint8_t bb_player_index;
uint16_t flags;
uint32_t unused[5];
uint32_t unused_bb_only[2];
uint32_t proxy_destination_address;
uint16_t proxy_destination_port;
uint8_t unused[0x0E];
uint8_t unused_bb_only[0x08];
} __attribute__((packed));
struct Client {
@@ -51,6 +58,8 @@ struct Client {
ServerBehavior server_behavior;
bool is_virtual_connection;
bool should_disconnect;
uint32_t proxy_destination_address;
uint16_t proxy_destination_port;
// timing & menus
uint64_t play_time_begin; // time of connection (used for incrementing play time on BB)
@@ -75,9 +84,6 @@ struct Client {
Client(struct bufferevent* bev, GameVersion version,
ServerBehavior server_behavior);
// adds data to the client's output buffer, encrypting it first
bool send(std::string&& data);
ClientConfig export_config() const;
void import_config(const ClientConfig& cc);
};