Start refactoring
This commit is contained in:
73
main.go
73
main.go
@@ -1,17 +1,82 @@
|
||||
//go:build !windows
|
||||
// +build !windows
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/rsa"
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"opensavecloudserver/config"
|
||||
"opensavecloudserver/config/security"
|
||||
"opensavecloudserver/constant"
|
||||
"opensavecloudserver/data/datasource/pgsql"
|
||||
"opensavecloudserver/data/datasource/pgsql/models/game"
|
||||
"opensavecloudserver/data/datasource/pgsql/models/user"
|
||||
"opensavecloudserver/server"
|
||||
"opensavecloudserver/server/authentication/impl"
|
||||
"os"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Printf("Open Save Cloud (Server) %s (%s %s)\n", constant.Version, runtime.GOOS, runtime.GOARCH)
|
||||
InitCommon()
|
||||
server.Serve()
|
||||
fmt.Printf("Open Save Cloud (Server) v%s %s/%s\n", constant.Version, runtime.GOOS, runtime.GOARCH)
|
||||
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
_, err := fmt.Fprintln(os.Stderr, "the server has encountered an error and must stop: ", err)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
os.Exit(1)
|
||||
}
|
||||
}()
|
||||
|
||||
if err := initLogger(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
path := flag.String("config", "./config.yml", "Set the configuration file path")
|
||||
generateRSAKey := flag.Bool("new-rsa-key", false, "Generate a new RSA key. This key will be written to the rsa_key path set in the configuration file")
|
||||
flag.Parse()
|
||||
appConfiguration, err := config.Load(*path)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var pk *rsa.PrivateKey
|
||||
if *generateRSAKey {
|
||||
pk, err = security.GenerateNewRSAKey(appConfiguration.Path.RSAKey, 2048)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
} else {
|
||||
pk, err = security.LoadPrivateKey(appConfiguration.Path.RSAKey)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
dao := pgsql.NewDatabaseDatasource()
|
||||
err = dao.Connect(appConfiguration.Database.URL)
|
||||
if err != nil {
|
||||
log.Fatal("failed to connect to the datasource: ", err)
|
||||
}
|
||||
|
||||
userRepo := user.NewUserDatasource(dao)
|
||||
jwtAuthenticator, err := impl.NewJWTAuthenticator(pk, userRepo)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
deps := server.DatasourceDependencies{
|
||||
UserRepository: userRepo,
|
||||
GameRepository: game.NewGameDatasource(dao),
|
||||
Authenticator: jwtAuthenticator,
|
||||
}
|
||||
|
||||
appServer := server.NewServer(appConfiguration, deps)
|
||||
log.Println("the server is up and ready to listen on", appServer.Server.Addr)
|
||||
err = appServer.Server.ListenAndServe()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user