All checks were successful
Build Slideshow App / build (amd64, .exe, windows) (push) Successful in 2m7s
Build Slideshow App / build (amd64, , linux) (push) Successful in 2m25s
Build Slideshow App / build (arm, 7, , linux) (push) Successful in 2m2s
Build Slideshow App / build (arm64, , linux) (push) Successful in 2m1s
88 lines
2.7 KiB
Go
88 lines
2.7 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
"slideshowApp/env"
|
|
"slideshowApp/handlers"
|
|
"slideshowApp/utils"
|
|
"time"
|
|
|
|
"gitea.tecamino.com/paadi/tecamino-logger/logging"
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
var staticFolder = "./web/static/"
|
|
|
|
func main() {
|
|
|
|
logConfig := logging.DefaultConfig()
|
|
logConfig.Debug = env.Env.GetValue() == "debug"
|
|
|
|
logger, err := logging.NewLogger(env.LogPath.GetValue(), logConfig)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
logger.Debug("main", "load enviroment variable")
|
|
env.Load(".env")
|
|
|
|
r := mux.NewRouter()
|
|
|
|
uploadFolder := env.PhotoDir.GetValue()
|
|
logger.Debug("main", "uploadfolder: "+uploadFolder)
|
|
|
|
if _, err := os.Stat(uploadFolder); err != nil {
|
|
fmt.Println("upload folder for images not found: ", uploadFolder)
|
|
logger.Error("main", "upload folder for images not found: "+uploadFolder)
|
|
fmt.Println("use fallback folder")
|
|
uploadFolder = "./images"
|
|
logger.Info("main", "use fallback uploadfolder: "+uploadFolder)
|
|
env.PhotoDir.SetValue(uploadFolder)
|
|
|
|
}
|
|
|
|
fmt.Println("upload folder for images: ", uploadFolder)
|
|
|
|
r.PathPrefix("/uploads/").Handler(http.StripPrefix("/uploads/", http.FileServer(http.Dir(uploadFolder))))
|
|
r.HandleFunc("/api/images", handlers.ListFilesHandler).Methods("GET")
|
|
r.HandleFunc("/ws", handlers.Websocket)
|
|
r.HandleFunc("/upload", handlers.UploadHandler).Methods("POST")
|
|
r.HandleFunc("/settings", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, staticFolder+"settings.html") })
|
|
r.HandleFunc("/api/save-schedule", handlers.SaveSchedule).Methods("POST")
|
|
r.HandleFunc("/api/get-schedule", handlers.GetSchedule).Methods("GET")
|
|
|
|
r.HandleFunc("/api/delete", handlers.DeleteHandler).Methods("POST")
|
|
r.HandleFunc("/manage", func(w http.ResponseWriter, r *http.Request) {
|
|
http.ServeFile(w, r, staticFolder+"manage.html")
|
|
})
|
|
|
|
r.HandleFunc("/api/info", handlers.InfoHandler).Methods("GET")
|
|
|
|
r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
http.ServeFile(w, r, staticFolder+"index.html")
|
|
})
|
|
// We add a route for the slideshow page specifically
|
|
r.HandleFunc("/slideshow", func(w http.ResponseWriter, r *http.Request) {
|
|
http.ServeFile(w, r, staticFolder+"frame.html")
|
|
})
|
|
|
|
host := env.Host.GetValue()
|
|
port := env.Port.GetValue()
|
|
url := fmt.Sprintf("%s:%s", host, port)
|
|
go func() {
|
|
logger.Debug("main", "start go routine with a 3 second wait")
|
|
time.Sleep(3 * time.Second)
|
|
if err := utils.OpenBrowser(logger, fmt.Sprintf("%s:%s/slideshow", handlers.GetLocalIP(), port)); err != nil {
|
|
logger.Error("main", err)
|
|
}
|
|
}()
|
|
fmt.Println("Server running at", url)
|
|
logger.Info("main", "Server running at: "+url)
|
|
if err := http.ListenAndServe(url, r); err != nil {
|
|
logger.Error("main", err)
|
|
}
|
|
}
|