rogueserver/pokerogue-server.go

91 lines
2.5 KiB
Go
Raw Normal View History

2023-12-05 10:28:08 -08:00
package main
import (
"encoding/gob"
2023-12-05 10:28:08 -08:00
"flag"
"log"
2024-04-19 03:05:52 -07:00
"strings"
2023-12-05 10:28:08 -08:00
2024-04-14 16:25:36 -07:00
"github.com/pagefaultgames/pokerogue-server/api"
"github.com/pagefaultgames/pokerogue-server/db"
2024-04-19 03:05:52 -07:00
"github.com/valyala/fasthttp"
2023-12-05 10:28:08 -08:00
)
2024-04-19 03:05:52 -07:00
var serveStaticContent fasthttp.RequestHandler
2023-12-05 10:28:08 -08:00
func main() {
2024-04-17 16:31:12 -07:00
// flag stuff
2024-04-19 00:27:47 -07:00
addr := flag.String("addr", "0.0.0.0:80", "network address for api to listen on")
wwwpath := flag.String("wwwpath", "www", "path to static content to serve")
tlscert := flag.String("tlscert", "", "path to tls certificate to use for https")
tlskey := flag.String("tlskey", "", "path to tls private key to use for https")
2023-12-05 10:28:08 -08:00
dbuser := flag.String("dbuser", "pokerogue", "database username")
dbpass := flag.String("dbpass", "", "database password")
dbproto := flag.String("dbproto", "tcp", "protocol for database connection")
2023-12-28 19:18:57 -08:00
dbaddr := flag.String("dbaddr", "localhost", "database address")
2023-12-28 17:08:58 -08:00
dbname := flag.String("dbname", "pokeroguedb", "database name")
2023-12-05 10:28:08 -08:00
flag.Parse()
// register gob types
gob.Register([]interface{}{})
gob.Register(map[string]interface{}{})
2024-04-17 16:31:12 -07:00
// get database connection
2023-12-05 10:28:08 -08:00
err := db.Init(*dbuser, *dbpass, *dbproto, *dbaddr, *dbname)
if err != nil {
log.Fatalf("failed to initialize database: %s", err)
}
2024-04-17 16:31:12 -07:00
// start web server
2024-04-19 03:05:52 -07:00
serveStaticContent = fasthttp.FSHandler(*wwwpath, 0)
api.Init()
2024-04-19 00:27:47 -07:00
if *tlscert != "" && *tlskey != "" {
2024-04-19 03:05:52 -07:00
err = fasthttp.ListenAndServeTLS(*addr, *tlscert, *tlskey, serve)
2024-04-19 00:27:47 -07:00
} else {
2024-04-19 03:05:52 -07:00
err = fasthttp.ListenAndServe(*addr, serve)
2024-04-17 16:31:12 -07:00
}
2024-04-19 00:27:47 -07:00
if err != nil {
log.Fatalf("failed to create http server or server errored: %s", err)
2024-04-17 16:31:12 -07:00
}
}
2024-04-19 03:05:52 -07:00
func serve(ctx *fasthttp.RequestCtx) {
if strings.HasPrefix(string(ctx.Path()), "/api") {
switch string(ctx.Path()) {
case "/api/account/info":
api.HandleAccountInfo(ctx)
case "/api/account/register":
api.HandleAccountRegister(ctx)
case "/api/account/login":
api.HandleAccountLogin(ctx)
case "/api/account/logout":
api.HandleAccountLogout(ctx)
case "/api/game/playercount":
api.HandleGamePlayerCount(ctx)
case "/api/game/titlestats":
api.HandleGameTitleStats(ctx)
case "/api/game/classicsessioncount":
api.HandleGameClassicSessionCount(ctx)
case "/api/savedata/get", "/api/savedata/update", "/api/savedata/delete", "/api/savedata/clear":
api.HandleSaveData(ctx)
case "/api/daily/seed":
api.HandleDailySeed(ctx)
case "/api/daily/rankings":
api.HandleDailyRankings(ctx)
case "/api/daily/rankingpagecount":
api.HandleDailyRankingPageCount(ctx)
}
return
}
serveStaticContent(ctx)
}