diff --git a/abyss.go b/abyss.go index b968ca9..20dac63 100644 --- a/abyss.go +++ b/abyss.go @@ -13,6 +13,28 @@ import ( func main() { app := new(Application) + parseEnv(app) + + mux := http.NewServeMux() + + setupHandlers(mux, app) + + srv := &http.Server{ + Addr: app.port, + Handler: mux, + IdleTimeout: 10 * time.Second, + ReadTimeout: 10 * time.Second, + WriteTimeout: 60 * time.Second, + } + + log.Printf("starting server on %s", srv.Addr) + + if err := srv.ListenAndServe(); err != nil { + log.Fatalf("Failed to start server: %v", err) + } +} + +func parseEnv(app *Application) { err := godotenv.Load() if err != nil { slog.Warn("no .env file detected, getting env from running process") @@ -25,7 +47,7 @@ func main() { app.filesDir = os.Getenv("ABYSS_FILEDIR") app.port = os.Getenv("ABYSS_PORT") - auth := os.Getenv("SHOULD_AUTH") + app.authText = os.Getenv("SHOULD_AUTH") if app.auth.username == "" { log.Fatal("basic auth username must be provided") @@ -56,9 +78,11 @@ func main() { slog.Warn("no root url detected, defaulting to localhost.") app.url = "localhost" + app.port } +} - mux := http.NewServeMux() +func setupHandlers(mux *http.ServeMux, app *Application) { mux.HandleFunc("/", app.indexHandler) + mux.Handle( "/tree/", http.StripPrefix( @@ -66,26 +90,14 @@ func main() { app.basicAuth(app.fileListingHandler), ), ) + mux.HandleFunc("/last", app.lastUploadedHandler) - if auth == "yes" { + + if app.authText == "yes" { mux.HandleFunc("/upload", app.basicAuth(app.uploadHandler)) slog.Warn("text uploading through the browser will be restricted") } else { mux.HandleFunc("/upload", app.uploadHandler) slog.Warn("text uploading through the browser will NOT be restricted") } - - srv := &http.Server{ - Addr: app.port, - Handler: mux, - IdleTimeout: time.Minute, - ReadTimeout: 10 * time.Second, - WriteTimeout: 60 * time.Second, - } - - log.Printf("starting server on %s", srv.Addr) - - if err := srv.ListenAndServe(); err != nil { - log.Fatalf("Failed to start server: %v", err) - } } diff --git a/handlers.go b/handlers.go index 56ff74e..4bae77c 100644 --- a/handlers.go +++ b/handlers.go @@ -22,6 +22,7 @@ type Application struct { key string filesDir string port string + authText string lastUploadedFile string }