diff --git a/cmd/sfb/main.go b/cmd/sfb/main.go index e8f8859..ba8c99e 100644 --- a/cmd/sfb/main.go +++ b/cmd/sfb/main.go @@ -10,10 +10,24 @@ import ( ) const ( - EXIT_SUCCESS = 0 - EXIT_ERROR = 1 + EXIT_SUCCESS = iota + EXIT_ERROR ) +// default values +var port uint32 = 8000 +var logslevel uint = 1 + +// read config/config.yml +func init() { + if err := config.Init(); err != nil { + log.Printf("%s", err.Error()) + os.Exit(EXIT_ERROR) + } + port = viper.GetUint32("port") + logslevel = viper.GetUint("logslevel") +} + // @title Shutdown from browser // @version 0.1 // @description Linux service for shutdown PC from the browser (Go, React) @@ -24,19 +38,7 @@ const ( // @contact.name korovindenis // @contact.url https://github.com/korovindenis func main() { - if err := config.Init(); err != nil { - log.Printf("%s", err.Error()) - os.Exit(EXIT_ERROR) - } - port := viper.GetString("port") - logslevel := viper.GetUint("logslevel") - - sfb, err := transport.NewSfb(logslevel) - if err != nil { - log.Printf("%s", err.Error()) - os.Exit(EXIT_ERROR) - } - if err := sfb.Run(port, logslevel); err != nil { + if err := transport.Exec(port, logslevel); err != nil { log.Printf("%s", err.Error()) os.Exit(EXIT_ERROR) } diff --git a/internal/transport/transport.go b/internal/transport/transport.go index 9d5e0cc..70c0899 100644 --- a/internal/transport/transport.go +++ b/internal/transport/transport.go @@ -28,9 +28,9 @@ func (s *Sfb) FindBox() (res bool, err error) { return true, nil } -func (s *Sfb) Run(port string, logslevel uint) error { +func (s *Sfb) Run(port uint32, logslevel uint) error { s.HttpServer = &http.Server{ - Addr: ":" + port, + Addr: ":" + string(port), ReadTimeout: 10 * time.Second, WriteTimeout: 10 * time.Second, MaxHeaderBytes: 1 << 20, @@ -67,8 +67,10 @@ func NewSfb(logslevel uint) (*Sfb, error) { http.HandleFunc("/", serveAppHandler(newApp.WebFolder)) http.HandleFunc("/api/v1/server-power/", handler.PowerHandler) http.HandleFunc("/api/v1/get-time-autopoweroff/", handler.GetTimePOHandler) + // Server static files http.Handle("/static/", http.FileServer(newApp.WebFolder.HTTPBox())) + // Swagger http.HandleFunc("/swagger/", httpSwagger.WrapHandler) go service.New(&handler.MyServer, logslevel) @@ -76,6 +78,20 @@ func NewSfb(logslevel uint) (*Sfb, error) { return &newApp, nil } +func Exec(port uint32, logslevel uint) error { + sfb, err := NewSfb(logslevel) + if err != nil { + return err + } + + err = sfb.Run(port, logslevel) + if err != nil { + return err + } + + return nil +} + func serveAppHandler(app *rice.Box) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { indexFile, err := app.Open("index.html")