67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"net/http"
|
|
"os"
|
|
"time"
|
|
|
|
"git.jojodev.com/Canopy/mineauth/server"
|
|
|
|
"github.com/peterbourgon/ff/v3"
|
|
"github.com/peterbourgon/ff/v3/fftoml"
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
)
|
|
|
|
func main() {
|
|
fs := flag.NewFlagSet("mineauth", flag.ExitOnError)
|
|
portFlag := fs.Int("port", 25565, "Port to listen on")
|
|
timeoutFlag := fs.Int("timeout", 15, "HTTP timeout")
|
|
pingMessageFlag := fs.String("ping", "Login to authenticate!", "Message for the server list")
|
|
communityFlag := fs.String("community", "", "URL to community")
|
|
faviconFlag := fs.String("favicon", "", "Path to a favicon image for server list ping")
|
|
hooksFlag := make([]string, 0)
|
|
fs.Func("hook", "Hook to run", func(hook string) error {
|
|
hooksFlag = append(hooksFlag, hook)
|
|
return nil
|
|
})
|
|
debugFlag := fs.Bool("debug", false, "Debug Logging")
|
|
jsonFlag := fs.Bool("json", false, "JSON Logging")
|
|
if err := ff.Parse(fs, os.Args[1:],
|
|
ff.WithEnvVarPrefix("MINEAUTH"),
|
|
ff.WithConfigFileFlag("config"),
|
|
ff.WithAllowMissingConfigFile(true),
|
|
ff.WithConfigFileParser(fftoml.New().Parse),
|
|
); err != nil {
|
|
panic(err)
|
|
return
|
|
}
|
|
|
|
if *debugFlag {
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
}
|
|
|
|
if !*jsonFlag {
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stdout})
|
|
}
|
|
|
|
http.DefaultClient.Timeout = time.Second * time.Duration(*timeoutFlag)
|
|
|
|
serv, err := server.New(server.Options{
|
|
PingMessage: *pingMessageFlag,
|
|
CommunityURL: *communityFlag,
|
|
FaviconPath: *faviconFlag,
|
|
Hooks: hooksFlag,
|
|
})
|
|
if err != nil {
|
|
log.Err(err).Msg("")
|
|
return
|
|
}
|
|
|
|
log.Info().Msgf("Listening on http://localhost:%d", *portFlag)
|
|
if err := serv.Start(*portFlag); err != nil {
|
|
log.Err(err).Msg("")
|
|
}
|
|
}
|