From 2c137ed7f30ccd85ea0ed36677b664ebd22b6b84 Mon Sep 17 00:00:00 2001 From: mkwcat Date: Wed, 8 May 2024 22:39:14 -0400 Subject: [PATCH] Main/Common: Use config entry for frontend/backend address --- common/config.go | 78 ++++++++++++++++++++++++++++++-------------- common/connection.go | 4 ++- config_example.xml | 12 +++++++ main.go | 9 +++-- 4 files changed, 74 insertions(+), 29 deletions(-) diff --git a/common/config.go b/common/config.go index 268fd75..66ea07f 100644 --- a/common/config.go +++ b/common/config.go @@ -6,31 +6,43 @@ import ( ) type Config struct { - Username string `xml:"username"` - Password string `xml:"password"` - DatabaseAddress string `xml:"databaseAddress"` - DatabaseName string `xml:"databaseName"` - DefaultAddress string `xml:"address"` - GameSpyAddress *string `xml:"gsAddress,omitempty"` - NASAddress *string `xml:"nasAddress,omitempty"` - NASPort string `xml:"nasPort"` - NASAddressHTTPS *string `xml:"nasAddressHttps,omitempty"` - NASPortHTTPS string `xml:"nasPortHttps"` - EnableHTTPS bool `xml:"enableHttps"` - EnableHTTPSExploitWii *bool `xml:"enableHttpsExploitWii,omitempty"` - EnableHTTPSExploitDS *bool `xml:"enableHttpsExploitDS,omitempty"` - LogLevel *int `xml:"logLevel"` - LogOutput string `xml:"logOutput"` - CertPath string `xml:"certPath"` - KeyPath string `xml:"keyPath"` - CertPathWii string `xml:"certDerPathWii"` - KeyPathWii string `xml:"keyPathWii"` - CertPathDS string `xml:"certDerPathDS"` - WiiCertPathDS string `xml:"wiiCertDerPathDS"` - KeyPathDS string `xml:"keyPathDS"` - APISecret string `xml:"apiSecret"` - AllowDefaultDolphinKeys bool `xml:"allowDefaultDolphinKeys"` - ServerName string `xml:"serverName,omitempty"` + Username string `xml:"username"` + Password string `xml:"password"` + DatabaseAddress string `xml:"databaseAddress"` + DatabaseName string `xml:"databaseName"` + + DefaultAddress string `xml:"address"` + GameSpyAddress *string `xml:"gsAddress,omitempty"` + NASAddress *string `xml:"nasAddress,omitempty"` + NASPort string `xml:"nasPort"` + NASAddressHTTPS *string `xml:"nasAddressHttps,omitempty"` + NASPortHTTPS string `xml:"nasPortHttps"` + + FrontendAddress string `xml:"frontendAddress"` + FrontendBackendAddress string `xml:"frontendBackendAddress"` + BackendAddress string `xml:"backendAddress"` + BackendFrontendAddress string `xml:"backendFrontendAddress"` + + EnableHTTPS bool `xml:"enableHttps"` + EnableHTTPSExploitWii *bool `xml:"enableHttpsExploitWii,omitempty"` + EnableHTTPSExploitDS *bool `xml:"enableHttpsExploitDS,omitempty"` + + LogLevel *int `xml:"logLevel"` + LogOutput string `xml:"logOutput"` + + CertPath string `xml:"certPath"` + KeyPath string `xml:"keyPath"` + CertPathWii string `xml:"certDerPathWii"` + KeyPathWii string `xml:"keyPathWii"` + CertPathDS string `xml:"certDerPathDS"` + WiiCertPathDS string `xml:"wiiCertDerPathDS"` + KeyPathDS string `xml:"keyPathDS"` + + APISecret string `xml:"apiSecret"` + + AllowDefaultDolphinKeys bool `xml:"allowDefaultDolphinKeys"` + + ServerName string `xml:"serverName,omitempty"` } func GetConfig() Config { @@ -83,5 +95,21 @@ func GetConfig() Config { config.LogOutput = "StdOutAndFile" } + if config.FrontendAddress == "" { + config.FrontendAddress = "127.0.0.1:29998" + } + + if config.BackendAddress == "" { + config.BackendAddress = "127.0.0.1:29999" + } + + if config.FrontendBackendAddress == "" { + config.FrontendBackendAddress = config.BackendAddress + } + + if config.BackendFrontendAddress == "" { + config.BackendFrontendAddress = config.FrontendAddress + } + return config } diff --git a/common/connection.go b/common/connection.go index a20b8cb..81327d5 100644 --- a/common/connection.go +++ b/common/connection.go @@ -16,9 +16,11 @@ type RPCFrontendPacket struct { // ConnectFrontend connects to the frontend RPC server func ConnectFrontend() { + config := GetConfig() + var err error for i := 0; rpcFrontend == nil; i++ { - rpcFrontend, err = rpc.Dial("tcp", "localhost:29998") + rpcFrontend, err = rpc.Dial("tcp", config.BackendFrontendAddress) if err != nil { if i > 20 { panic(err) diff --git a/config_example.xml b/config_example.xml index 4e48094..e34823d 100644 --- a/config_example.xml +++ b/config_example.xml @@ -2,6 +2,18 @@ 127.0.0.1 + + 127.0.0.1:29998 + + + 127.0.0.1:29999 + + + 127.0.0.1:29999 + + + 127.0.0.1:29998 + 127.0.0.1 80 diff --git a/main.go b/main.go index 87196d2..8f1d91a 100644 --- a/main.go +++ b/main.go @@ -12,6 +12,7 @@ import ( "strings" "sync" "syscall" + "time" "wwfc/api" "wwfc/common" "wwfc/gamestats" @@ -77,7 +78,7 @@ func backendMain(noSignal, noReload bool) { } rpc.Register(&RPCPacket{}) - address := "localhost:29999" + address := config.BackendAddress l, err := net.Listen("tcp", address) if err != nil { @@ -328,7 +329,7 @@ func frontendMain(noSignal, noBackend bool) { // startFrontendServer starts the frontend RPC server. func startFrontendServer() { rpc.Register(&RPCFrontendPacket{}) - address := "localhost:29998" + address := config.FrontendAddress l, err := net.Listen("tcp", address) if err != nil { @@ -389,7 +390,7 @@ func waitForBackend() { backendReady = make(chan struct{}) for { - client, err := rpc.Dial("tcp", "localhost:29999") + client, err := rpc.Dial("tcp", config.FrontendBackendAddress) if err == nil { rpcClient = client rpcMutex.Unlock() @@ -398,6 +399,8 @@ func waitForBackend() { return } + + <-time.After(50 * time.Millisecond) } }