43 lines
992 B
Go
43 lines
992 B
Go
package web
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
|
|
"github.com/spf13/viper"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type configObj struct {
|
|
logger *zap.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 *zap.Logger, exitch chan bool) {
|
|
config.logger = rootLogger.Named("web")
|
|
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.Sugar()
|
|
|
|
logger.Infow("Webserver startup",
|
|
"port", config.port,
|
|
"imageDir", config.imageDir)
|
|
|
|
addr := fmt.Sprintf(":%d", config.port)
|
|
|
|
if err := http.ListenAndServe(addr, nil); err != nil {
|
|
logger.Errorf("Webserver fatal error: %s", err)
|
|
} else {
|
|
logger.Info("webserver shutting down")
|
|
}
|
|
exitch <- true
|
|
}
|