package web import ( "fmt" "net/http" "github.com/rs/zerolog" "github.com/spf13/viper" ) type configObj struct { logger zerolog.Logger port int imageDir string } var config = configObj{} // Run starts up the webserver part of hasshelper. It writes to exitch if // the webserver ends unexpectedly. Config values will be read from viper. func Run(rootLogger zerolog.Logger, exitch chan bool) { config.logger = rootLogger.With().Str("name", "web").Logger() config.port = viper.GetInt("webserver_port") config.imageDir = viper.GetString("image_dir") http.Handle("/img/", http.StripPrefix("/img", imageHandler())) http.HandleFunc("/randimg/", randomImageFunc) var logger = config.logger logger.Info(). Int("port", config.port). Str("imageDir", config.imageDir). Msg("Webserver startup") addr := fmt.Sprintf(":%d", config.port) if err := http.ListenAndServe(addr, nil); err != nil { logger.Error().Err(err).Msg("Webserver fatal error") } else { logger.Info().Msg("webserver shutting down") } exitch <- true }