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("") } }