44 lines
1.0 KiB
Go
44 lines
1.0 KiB
Go
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
|
|
}
|