feat(go): Port full Ananta private server to Go architecture
This commit is contained in:
1 parent
ca2e80f9b7
commit
c73d744649
28 files changed
+3585
-57
No files matched your search
@@ -0,0 +1,91 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"ananta-ps/internal/config"
|
||||
"ananta-ps/internal/gameserver"
|
||||
"ananta-ps/internal/gateway"
|
||||
"ananta-ps/internal/logingate"
|
||||
"ananta-ps/internal/web"
|
||||
)
|
||||
|
||||
const banner = `
|
||||
=====================================================================
|
||||
_ _ ____ ____
|
||||
/ \ _ __ __ _ _ __ _ _ _| |_ __ _ | _ \ / ___|
|
||||
/ _ \ | '_ \ / _` + "`" + ` | '_ \| |_| | _/ _` + "`" + ` | | |_) |\___ \
|
||||
/ ___ \| | | | (_| | | | | _ | || (_| | | __/ ___) |
|
||||
/_/ \_\_| |_|\__,_|_| |_|_| |_|\__\__,_| |_| |____/
|
||||
(Native Go Engine)
|
||||
=====================================================================
|
||||
`
|
||||
|
||||
func main() {
|
||||
configPath := flag.String("config", "config/private-server.json", "Path to private-server.json")
|
||||
flag.Parse()
|
||||
|
||||
fmt.Print(banner)
|
||||
|
||||
cfg, err := config.LoadConfig(*configPath)
|
||||
if err != nil {
|
||||
log.Fatalf("[FATAL] Could not load configuration: %v", err)
|
||||
}
|
||||
|
||||
log.Printf("[INIT] Client Version: %d | Server ID: %d | Aid: %d", cfg.Client.Version, cfg.Client.ServerID, cfg.Client.Aid)
|
||||
log.Printf("[INIT] Player Profile: PID=%d | Account=%s | InitialUnit=%d", cfg.Player.Pid, cfg.Player.AccountId, cfg.Player.InitialUnitId)
|
||||
|
||||
// 1. Start Gateway (Port 443, 80, 5801)
|
||||
gw := gateway.New(cfg, "", "")
|
||||
if err := gw.Start(); err != nil {
|
||||
log.Printf("[GATEWAY] Error starting gateway: %v", err)
|
||||
}
|
||||
defer gw.Stop()
|
||||
|
||||
// 2. Start Login Gate Server (Port 5200, 5201)
|
||||
loginSrv := logingate.New(cfg)
|
||||
if err := loginSrv.Start(); err != nil {
|
||||
log.Fatalf("[LOGIN-GATE] Failed to start login gate: %v", err)
|
||||
}
|
||||
defer loginSrv.Stop()
|
||||
|
||||
// 3. Start Game Server (Port 5202)
|
||||
gameSrv := gameserver.New(cfg, "")
|
||||
if err := gameSrv.Start(); err != nil {
|
||||
log.Fatalf("[GAME-SERVER] Failed to start game server: %v", err)
|
||||
}
|
||||
defer gameSrv.Stop()
|
||||
|
||||
// 4. Start Admin GM Web Panel (Port 17888)
|
||||
adminSrv := web.NewAdmin(cfg, gameSrv)
|
||||
if err := adminSrv.Start(); err != nil {
|
||||
log.Printf("[ADMIN-GM] Warning: admin server error: %v", err)
|
||||
}
|
||||
defer adminSrv.Stop()
|
||||
|
||||
// 5. Start Debug WebUI (Port 5809)
|
||||
debugSrv := web.NewDebug(cfg, gameSrv)
|
||||
if err := debugSrv.Start(); err != nil {
|
||||
log.Printf("[DEBUG-API] Warning: debug server error: %v", err)
|
||||
}
|
||||
defer debugSrv.Stop()
|
||||
|
||||
log.Println("[READY] Ananta Private Server is fully operational!")
|
||||
log.Printf("[READY] Gateway: HTTPS=443, HTTP=80, Mobile/LoginList=%d", cfg.Network.Proxy.LoginListPort)
|
||||
log.Printf("[READY] Game Ports: Login=%v, Game=%d", cfg.Network.LoginPorts, cfg.Network.GamePort)
|
||||
log.Printf("[READY] GM Admin Panel: http://%s:%d/", cfg.Network.AdvertisedHost, cfg.Admin.Port)
|
||||
log.Printf("[READY] Debug WebUI: http://%s:5809/", cfg.Network.AdvertisedHost)
|
||||
log.Println("[INFO] Press Ctrl+C to stop the server.")
|
||||
|
||||
// Wait for termination signal
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
|
||||
<-sigChan
|
||||
|
||||
log.Println("[SHUTDOWN] Stopping all Ananta Private Server services...")
|
||||
}
|
||||
Reference in new issue
Block a user