diff --git a/lts.go b/lts.go index b0e5e2d..3f67405 100644 --- a/lts.go +++ b/lts.go @@ -11,7 +11,9 @@ import ( "net" "net/http" "os" + "os/exec" "path/filepath" + "strconv" "strings" "sync" @@ -109,6 +111,34 @@ func handleUpload(w http.ResponseWriter, r *http.Request) { limit := int64(10737418240) // 10GiB r.ParseMultipartForm(limit) + hours_str := r.FormValue("hours") + mins_str := r.FormValue("mins") + secs_str := r.FormValue("secs") + + hours, err := strconv.ParseInt(hours_str, 10, 32) + if err != nil { + http.Error(w, "Could not parse timeout hours", http.StatusBadRequest) + return + } + mins, err := strconv.ParseInt(mins_str, 10, 32) + if err != nil { + http.Error(w, "Could not parse timeout mins", http.StatusBadRequest) + return + } + secs, err := strconv.ParseInt(secs_str, 10, 32) + if err != nil { + http.Error(w, "Could not parse timeout secs", http.StatusBadRequest) + return + } + + if (hours < 0 || hours > 24) || (mins < 0 || mins > 60) || (secs < 0 || secs > 60) { + http.Error(w, "Max values: 24 hours, 60 mins, 60 secs, all cannot be < 0", http.StatusBadRequest) + return + } + total := secs + mins*60 + hours*60*60 + + log.Printf("h: %d m: %d s: %d, total: %d\n", hours, mins, secs, total) + file, handler, err := r.FormFile("myfile") if err != nil { log.Println("Error getting file from form: ", err) @@ -130,7 +160,19 @@ func handleUpload(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Uploaded file: %s\n", handler.Filename) fmt.Fprintf(w, "File size: %s\n", byteCountSI(handler.Size)) + fmt.Fprintf(w, "Lifetime: %02d:%02d:%02d total %d\n", hours, mins, secs, total); fmt.Fprintf(w, "Link: %s", fmt.Sprintf("%s/%s", listener.Addr().String(), dst.Name())) + + cmd := exec.Command("./ltscleanerd", dst.Name(), strconv.FormatInt(total, 10)) + log.Println("Started ", cmd.String()) + err = cmd.Start() + if err != nil { + log.Println("Could not start cleaner daemon: ", err) + } + err = cmd.Process.Release() + if err != nil { + log.Fatal("Could not detach from cleaner daemon: ", err) + } } func handleHome(w http.ResponseWriter, r *http.Request) { diff --git a/tmpls/home.html b/tmpls/home.html index 3b9bc2a..591a868 100644 --- a/tmpls/home.html +++ b/tmpls/home.html @@ -22,6 +22,9 @@ + + +

@@ -44,8 +47,15 @@ upload_form.addEventListener("submit", async function (event) { return; } + const hours = document.getElementById("hours").value; + const mins = document.getElementById("mins").value; + const secs = document.getElementById("secs").value; + const form_data = new FormData(); form_data.append("myfile", file); + form_data.append("hours", hours); + form_data.append("mins", mins); + form_data.append("secs", secs); const user = document.getElementById("user").value; const pass = document.getElementById("pass").value;