From e39630564e1d62381393cc89a1861ba604803dd3 Mon Sep 17 00:00:00 2001 From: rockisch Date: Wed, 22 Nov 2023 00:01:04 -0300 Subject: [PATCH] Add dev proxy config --- config.json | 1 + config/config.go | 29 +++++++++++++++-------------- main.go | 12 ++++++++---- server/entranceserver/make_resp.go | 6 +++++- 4 files changed, 29 insertions(+), 19 deletions(-) diff --git a/config.json b/config.json index e3e2b7ea4..bfa9e04de 100644 --- a/config.json +++ b/config.json @@ -29,6 +29,7 @@ "MezFesAlt": false, "DisableTokenCheck": false, "QuestDebugTools": false, + "ProxyPort": 0, "EarthStatusOverride": 0, "EarthIDOverride": 0, "EarthMonsterOverride": 0, diff --git a/config/config.go b/config/config.go index ee0e6b377..c9a05d3d1 100644 --- a/config/config.go +++ b/config/config.go @@ -96,20 +96,21 @@ type Config struct { // DevModeOptions holds various debug/temporary options for use while developing Erupe. type DevModeOptions struct { - AutoCreateAccount bool // Automatically create accounts if they don't exist - CleanDB bool // Automatically wipes the DB on server reset. - MaxLauncherHR bool // Sets the HR returned in the launcher to HR7 so that you can join non-beginner worlds. - LogInboundMessages bool // Log all messages sent to the server - LogOutboundMessages bool // Log all messages sent to the clients - LogMessageData bool // Log all bytes transferred as a hexdump - MaxHexdumpLength int // Maximum number of bytes printed when logs are enabled - DivaEvent int // Diva Defense event status - FestaEvent int // Hunter's Festa event status - TournamentEvent int // VS Tournament event status - MezFesEvent bool // MezFes status - MezFesAlt bool // Swaps out Volpakkun for Tokotoko - DisableTokenCheck bool // Disables checking login token exists in the DB (security risk!) - QuestDebugTools bool // Enable various quest debug logs + AutoCreateAccount bool // Automatically create accounts if they don't exist + CleanDB bool // Automatically wipes the DB on server reset. + MaxLauncherHR bool // Sets the HR returned in the launcher to HR7 so that you can join non-beginner worlds. + LogInboundMessages bool // Log all messages sent to the server + LogOutboundMessages bool // Log all messages sent to the clients + LogMessageData bool // Log all bytes transferred as a hexdump + MaxHexdumpLength int // Maximum number of bytes printed when logs are enabled + DivaEvent int // Diva Defense event status + FestaEvent int // Hunter's Festa event status + TournamentEvent int // VS Tournament event status + MezFesEvent bool // MezFes status + MezFesAlt bool // Swaps out Volpakkun for Tokotoko + DisableTokenCheck bool // Disables checking login token exists in the DB (security risk!) + QuestDebugTools bool // Enable various quest debug logs + ProxyPort uint16 // Forces the game connect to a channel server proxy EarthStatusOverride int32 EarthIDOverride int32 EarthMonsterOverride int32 diff --git a/main.go b/main.go index 2a538b094..724fe3f44 100644 --- a/main.go +++ b/main.go @@ -22,11 +22,13 @@ import ( ) // Temporary DB auto clean on startup for quick development & testing. -func cleanDB(db *sqlx.DB) { +func cleanDB(db *sqlx.DB, config *_config.Config) { _ = db.MustExec("DELETE FROM guild_characters") _ = db.MustExec("DELETE FROM guilds") _ = db.MustExec("DELETE FROM characters") - _ = db.MustExec("DELETE FROM sign_sessions") + if !config.DevMode || config.DevModeOptions.ProxyPort == 0 { + _ = db.MustExec("DELETE FROM sign_sessions") + } _ = db.MustExec("DELETE FROM users") } @@ -124,14 +126,16 @@ func main() { logger.Info("Database: Started successfully") // Clear stale data - _ = db.MustExec("DELETE FROM sign_sessions") + if !config.DevMode || config.DevModeOptions.ProxyPort == 0 { + _ = db.MustExec("DELETE FROM sign_sessions") + } _ = db.MustExec("DELETE FROM servers") _ = db.MustExec(`UPDATE guild_characters SET treasure_hunt=NULL`) // Clean the DB if the option is on. if config.DevMode && config.DevModeOptions.CleanDB { logger.Info("Database: Started clearing...") - cleanDB(db) + cleanDB(db, config) logger.Info("Database: Finished clearing") } diff --git a/server/entranceserver/make_resp.go b/server/entranceserver/make_resp.go index eaa023c5b..5ace5a427 100644 --- a/server/entranceserver/make_resp.go +++ b/server/entranceserver/make_resp.go @@ -69,7 +69,11 @@ func encodeServerInfo(config *_config.Config, s *Server, local bool) []byte { for channelIdx, ci := range si.Channels { sid = (4096 + serverIdx*256) + (16 + channelIdx) - bf.WriteUint16(ci.Port) + if _config.ErupeConfig.DevMode && _config.ErupeConfig.DevModeOptions.ProxyPort != 0 { + bf.WriteUint16(_config.ErupeConfig.DevModeOptions.ProxyPort) + } else { + bf.WriteUint16(ci.Port) + } bf.WriteUint16(16 + uint16(channelIdx)) bf.WriteUint16(ci.MaxPlayers) var currentPlayers uint16