68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"net/http"
|
|
"os"
|
|
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
"kumoly.io/lib/guard"
|
|
"kumoly.io/tools/kconfig"
|
|
)
|
|
|
|
var (
|
|
flagAddr string
|
|
flagAppName string
|
|
|
|
flagDev bool
|
|
flagLogLevel int
|
|
flagLogPretty bool
|
|
)
|
|
|
|
func init() {
|
|
flag.StringVar(&flagAddr, "addr", ":8000", "address to listen")
|
|
flag.StringVar(&flagAppName, "name", "kconfig", "name of the app")
|
|
|
|
flag.BoolVar(&flagDev, "dev", false, "turn on dev mode")
|
|
flag.IntVar(&flagLogLevel, "level", 1, "log level [-1:5] 7 to disable")
|
|
flag.BoolVar(&flagLogPretty, "pretty", false, "log message in human readable format (the original log is json)")
|
|
|
|
flag.Usage = func() {
|
|
fmt.Fprintf(os.Stderr, "Usage: kconfig [options]\n")
|
|
flag.PrintDefaults()
|
|
}
|
|
}
|
|
func main() {
|
|
flag.Parse()
|
|
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
|
|
zerolog.SetGlobalLevel(zerolog.Level(flagLogLevel))
|
|
if flagLogPretty {
|
|
log.Logger = log.Output(zerolog.ConsoleWriter{
|
|
Out: os.Stdout,
|
|
TimeFormat: "2006/01/02 15:04:05",
|
|
})
|
|
}
|
|
if flagDev {
|
|
log.Logger = log.With().Caller().Logger()
|
|
}
|
|
|
|
mux := http.NewServeMux()
|
|
// mux.Handle("/k/", http.StripPrefix("/k", kconfig.New()))
|
|
mux.Handle("/", kconfig.New())
|
|
|
|
g := guard.New()
|
|
|
|
server := &http.Server{
|
|
Addr: flagAddr,
|
|
Handler: g.Guard(mux),
|
|
}
|
|
|
|
log.Info().Msgf("%s started at %s", flagAppName, flagAddr)
|
|
err := server.ListenAndServe()
|
|
if err != nil {
|
|
log.Error().Err(err)
|
|
}
|
|
}
|