chore: Update server configuration flags for Discord Bot Token and Guild ID

This commit is contained in:
Frederico Santos 2024-09-01 20:45:44 +01:00
parent dff7579360
commit 3ccc000646

View File

@ -19,11 +19,11 @@ package main
import ( import (
"encoding/gob" "encoding/gob"
"flag"
"log" "log"
"net" "net"
"net/http" "net/http"
"os" "os"
"strconv"
"github.com/bwmarrin/discordgo" "github.com/bwmarrin/discordgo"
"github.com/pagefaultgames/rogueserver/api" "github.com/pagefaultgames/rogueserver/api"
@ -32,58 +32,56 @@ import (
) )
func main() { func main() {
// flag stuff // env stuff
debug := flag.Bool("debug", false, "use debug mode") debug, _ := strconv.ParseBool(os.Getenv("debug"))
proto := flag.String("proto", "tcp", "protocol for api to use (tcp, unix)") proto := getEnv("proto", "tcp")
addr := flag.String("addr", "0.0.0.0:8001", "network address for api to listen on") addr := getEnv("addr", "0.0.0.0:8001")
tlscert := flag.String("tlscert", "", "tls certificate path") tlscert := getEnv("tlscert", "")
tlskey := flag.String("tlskey", "", "tls key path") tlskey := getEnv("tlskey", "")
dbuser := flag.String("dbuser", "pokerogue", "database username") dbuser := getEnv("dbuser", "pokerogue")
dbpass := flag.String("dbpass", "pokerogue", "database password") dbpass := getEnv("dbpass", "pokerogue")
dbproto := flag.String("dbproto", "tcp", "protocol for database connection") dbproto := getEnv("dbproto", "tcp")
dbaddr := flag.String("dbaddr", "localhost", "database address") dbaddr := getEnv("dbaddr", "localhost")
dbname := flag.String("dbname", "pokeroguedb", "database name") dbname := getEnv("dbname", "pokeroguedb")
discordclientid := flag.String("discordclientid", "dcid", "Discord Oauth2 Client ID") discordclientid := getEnv("discordclientid", "")
discordsecretid := flag.String("discordsecretid", "dsid", "Discord Oauth2 Secret ID") discordsecretid := getEnv("discordsecretid", "")
googleclientid := flag.String("googleclientid", "gcid", "Google Oauth2 Client ID") googleclientid := getEnv("googleclientid", "")
googlesecretid := flag.String("googlesecretid", "gsid", "Google Oauth2 Secret ID") googlesecretid := getEnv("googlesecretid", "")
callbackurl := flag.String("callbackurl", "http://localhost:8001/", "Callback URL for Oauth2 Client") callbackurl := getEnv("callbackurl", "http://localhost:8001/")
gameurl := flag.String("gameurl", "https://pokerogue.net", "URL for game server") gameurl := getEnv("gameurl", "https://pokerogue.net")
discordbottoken := flag.String("discordbottoken", "", "Discord Bot Token") discordbottoken := getEnv("discordbottoken", "")
discordguildid := flag.String("discordguildid", "", "Discord Guild ID") discordguildid := getEnv("discordguildid", "")
flag.Parse() account.GameURL = gameurl
account.GameURL = *gameurl account.DiscordClientID = discordclientid
account.DiscordClientSecret = discordsecretid
account.DiscordCallbackURL = callbackurl + "/auth/discord/callback"
account.DiscordClientID = *discordclientid account.GoogleClientID = googleclientid
account.DiscordClientSecret = *discordsecretid account.GoogleClientSecret = googlesecretid
account.DiscordCallbackURL = *callbackurl + "/auth/discord/callback" account.GoogleCallbackURL = callbackurl + "/auth/google/callback"
account.DiscordSession, _ = discordgo.New("Bot " + discordbottoken)
account.GoogleClientID = *googleclientid account.DiscordGuildID = discordguildid
account.GoogleClientSecret = *googlesecretid
account.GoogleCallbackURL = *callbackurl + "/auth/google/callback"
account.DiscordSession, _ = discordgo.New("Bot " + *discordbottoken)
account.DiscordGuildID = *discordguildid
// register gob types // register gob types
gob.Register([]interface{}{}) gob.Register([]interface{}{})
gob.Register(map[string]interface{}{}) gob.Register(map[string]interface{}{})
// get database connection // get database connection
err := db.Init(*dbuser, *dbpass, *dbproto, *dbaddr, *dbname) err := db.Init(dbuser, dbpass, dbproto, dbaddr, dbname)
if err != nil { if err != nil {
log.Fatalf("failed to initialize database: %s", err) log.Fatalf("failed to initialize database: %s", err)
} }
// create listener // create listener
listener, err := createListener(*proto, *addr) listener, err := createListener(proto, addr)
if err != nil { if err != nil {
log.Fatalf("failed to create net listener: %s", err) log.Fatalf("failed to create net listener: %s", err)
} }
@ -97,14 +95,14 @@ func main() {
// start web server // start web server
handler := prodHandler(mux, gameurl) handler := prodHandler(mux, gameurl)
if *debug { if debug {
handler = debugHandler(mux) handler = debugHandler(mux)
} }
if *tlscert == "" { if tlscert == "" {
err = http.Serve(listener, handler) err = http.Serve(listener, handler)
} else { } else {
err = http.ServeTLS(listener, handler, *tlscert, *tlskey) err = http.ServeTLS(listener, handler, tlscert, tlskey)
} }
if err != nil { if err != nil {
log.Fatalf("failed to create http server or server errored: %s", err) log.Fatalf("failed to create http server or server errored: %s", err)
@ -131,11 +129,11 @@ func createListener(proto, addr string) (net.Listener, error) {
return listener, nil return listener, nil
} }
func prodHandler(router *http.ServeMux, clienturl *string) http.Handler { func prodHandler(router *http.ServeMux, clienturl string) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Access-Control-Allow-Headers", "Authorization, Content-Type") w.Header().Set("Access-Control-Allow-Headers", "Authorization, Content-Type")
w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, GET, POST") w.Header().Set("Access-Control-Allow-Methods", "OPTIONS, GET, POST")
w.Header().Set("Access-Control-Allow-Origin", *clienturl) w.Header().Set("Access-Control-Allow-Origin", clienturl)
if r.Method == "OPTIONS" { if r.Method == "OPTIONS" {
w.WriteHeader(http.StatusOK) w.WriteHeader(http.StatusOK)
@ -160,3 +158,11 @@ func debugHandler(router *http.ServeMux) http.Handler {
router.ServeHTTP(w, r) router.ServeHTTP(w, r)
}) })
} }
func getEnv(key string, defaultValue string) string {
if value, ok := os.LookupEnv(key); ok {
return value
}
return defaultValue
}