package main import ( "embed" "encoding/base64" "log" "net/http" "os" "time" "git.1e99.eu/1e99/passed/middlewares" "git.1e99.eu/1e99/passed/routes" "git.1e99.eu/1e99/passed/storage" ) //go:embed static/* var embedFS embed.FS func run() error { storage, err := storage.NewStore() if err != nil { return err } defer storage.Close() mux := http.NewServeMux() mux.Handle("GET /", routes.ServeFiles(embedFS, "static")) mux.Handle( "POST /api/password", middlewares.RateLimiter( routes.CreatePassword(storage, 12*1024, base64.StdEncoding), 1*time.Minute, 5, ), ) mux.Handle("GET /api/password/{id}", routes.GetPassword(storage, base64.StdEncoding)) mux.Handle("HEAD /api/password/{id}", routes.HasPassword(storage)) address := os.Getenv("PASSED_ADDRESS") if address == "" { log.Printf("No PASSED_ADDRESS provided, defaulting to \":3000\"") address = ":3000" } err = http.ListenAndServe(address, middlewares.Logger(mux)) if err != nil { return err } return nil } func main() { err := run() if err != nil { log.Fatalf("%s", err) } }