mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-16 08:55:31 +01:00
Refactor servers
This commit is contained in:
99
main.go
99
main.go
@@ -3,58 +3,117 @@ package main
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"time"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"github.com/Andoryuuta/Erupe/channelserver"
|
||||
"github.com/Andoryuuta/Erupe/signserver"
|
||||
"github.com/Andoryuuta/Erupe/config"
|
||||
"github.com/Andoryuuta/Erupe/entranceserver"
|
||||
"github.com/Andoryuuta/Erupe/launcherserver"
|
||||
"github.com/Andoryuuta/Erupe/signserver"
|
||||
_ "github.com/lib/pq"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("Starting!")
|
||||
zapLogger, _ := zap.NewDevelopment()
|
||||
defer zapLogger.Sync()
|
||||
logger := zapLogger.Named("main")
|
||||
|
||||
// Load the config.toml configuration.
|
||||
// TODO(Andoryuuta): implement config loading.
|
||||
logger.Info("Starting Erupe")
|
||||
|
||||
// Load the configuration.
|
||||
erupeConfig, err := config.LoadConfig()
|
||||
if err != nil {
|
||||
logger.Fatal("Failed to load config", zap.Error(err))
|
||||
}
|
||||
|
||||
// Create the postgres DB pool.
|
||||
db, err := sql.Open("postgres", "host=localhost port=5432 user=postgres password=admin dbname=erupe sslmode=disable")
|
||||
connectString := fmt.Sprintf(
|
||||
"host=%s port=%d user=%s password=%s dbname= %s sslmode=disable",
|
||||
erupeConfig.Database.Host,
|
||||
erupeConfig.Database.Port,
|
||||
erupeConfig.Database.User,
|
||||
erupeConfig.Database.Password,
|
||||
erupeConfig.Database.Database,
|
||||
)
|
||||
|
||||
db, err := sql.Open("postgres", connectString)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
logger.Fatal("Failed to open sql database", zap.Error(err))
|
||||
}
|
||||
|
||||
// Test the DB connection.
|
||||
err = db.Ping()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
logger.Fatal("Failed to ping database", zap.Error(err))
|
||||
}
|
||||
logger.Info("Connected to database.")
|
||||
|
||||
// Finally start our server(s).
|
||||
go serveLauncherHTML(":80", false)
|
||||
go entranceserver.DoEntranceServer(":53310")
|
||||
// Now start our server(s).
|
||||
|
||||
// Launcher HTTP server.
|
||||
launcherServer := launcherserver.NewServer(
|
||||
&launcherserver.Config{
|
||||
Logger: logger.Named("launcher"),
|
||||
ErupeConfig: erupeConfig,
|
||||
DB: db,
|
||||
UseOriginalLauncherFiles: false,
|
||||
})
|
||||
err = launcherServer.Start()
|
||||
if err != nil {
|
||||
logger.Fatal("Failed to start launcher server", zap.Error(err))
|
||||
}
|
||||
logger.Info("Started launcher server.")
|
||||
|
||||
// Entrance server.
|
||||
entranceServer := entranceserver.NewServer(
|
||||
&entranceserver.Config{
|
||||
Logger: logger.Named("entrance"),
|
||||
ErupeConfig: erupeConfig,
|
||||
DB: db,
|
||||
})
|
||||
err = entranceServer.Start()
|
||||
if err != nil {
|
||||
logger.Fatal("Failed to start entrance server", zap.Error(err))
|
||||
}
|
||||
logger.Info("Started entrance server.")
|
||||
|
||||
// Sign server.
|
||||
signServer := signserver.NewServer(
|
||||
&signserver.Config{
|
||||
DB: db,
|
||||
ListenAddr: ":53312",
|
||||
Logger: logger.Named("sign"),
|
||||
ErupeConfig: erupeConfig,
|
||||
DB: db,
|
||||
})
|
||||
err = signServer.Start()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
logger.Fatal("Failed to start sign server", zap.Error(err))
|
||||
}
|
||||
logger.Info("Started sign server.")
|
||||
|
||||
// Channel Server
|
||||
channelServer := channelserver.NewServer(
|
||||
&channelserver.Config{
|
||||
DB: db,
|
||||
ListenAddr: ":54001",
|
||||
Logger: logger.Named("channel"),
|
||||
ErupeConfig: erupeConfig,
|
||||
DB: db,
|
||||
})
|
||||
|
||||
err = channelServer.Start()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
logger.Fatal("Failed to start channel server", zap.Error(err))
|
||||
}
|
||||
logger.Info("Started channel server.")
|
||||
|
||||
for {
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
// Wait for exit or interrupt with ctrl+C.
|
||||
c := make(chan os.Signal, 1)
|
||||
signal.Notify(c, os.Interrupt, syscall.SIGTERM)
|
||||
<-c
|
||||
|
||||
logger.Info("Trying to shutdown gracefully.")
|
||||
signServer.Shutdown()
|
||||
entranceServer.Shutdown()
|
||||
launcherServer.Shutdown()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user