summaryrefslogtreecommitdiff
path: root/controller
diff options
context:
space:
mode:
Diffstat (limited to 'controller')
-rw-r--r--controller/app.go15
-rw-r--r--controller/file.go25
-rw-r--r--controller/template/uploaded.html1
3 files changed, 40 insertions, 1 deletions
diff --git a/controller/app.go b/controller/app.go
index f145ce2..c22f165 100644
--- a/controller/app.go
+++ b/controller/app.go
@@ -3,7 +3,9 @@ package controller
import (
"embed"
"html/template"
+ "log"
"net/http"
+ "time"
"drop.janw.name/config"
"drop.janw.name/storage"
@@ -37,3 +39,16 @@ func (app App) requireAuth(res http.ResponseWriter, req *http.Request) bool {
return false
}
+
+func (app *App) StartScheduler() {
+ log.Println("starting scheduler")
+
+ go func() {
+ for true {
+ time.Sleep(time.Minute * 13)
+
+ log.Println("running scheduled tasks")
+ app.storage.GarbageCollect()
+ }
+ }()
+}
diff --git a/controller/file.go b/controller/file.go
index 53121d5..7aed104 100644
--- a/controller/file.go
+++ b/controller/file.go
@@ -1,12 +1,17 @@
package controller
import (
+ "encoding/base64"
"fmt"
+ "html/template"
"io"
+ "log"
"net/http"
+ "net/url"
"time"
"drop.janw.name/storage"
+ qrcode "github.com/skip2/go-qrcode"
)
const MAX_FILESIZE = (1 << 19) * 100
@@ -44,10 +49,26 @@ func (app App) FilePost(res http.ResponseWriter, req *http.Request) {
panic(err)
}
+ log.Println("received new file:", key)
+
+ downloadURL := fmt.Sprintf("%s/%s", app.config.Http.BaseAddress, key)
+ qrcodePng, err := qrcode.Encode(downloadURL, qrcode.Medium, 256)
+
+ if err != nil {
+ panic(err)
+ }
+
+ qrcodeDataUrl := fmt.Sprintf(
+ "data:image/png;base64,%s",
+ url.QueryEscape(base64.StdEncoding.WithPadding('=').EncodeToString(qrcodePng)),
+ )
+
app.tmpl.ExecuteTemplate(res, "uploaded", struct {
DownloadURL string
+ QRCode template.URL
}{
- DownloadURL: fmt.Sprintf("%s/%s", app.config.Http.BaseAddress, key),
+ DownloadURL: downloadURL,
+ QRCode: template.URL(qrcodeDataUrl),
})
}
@@ -75,5 +96,7 @@ func (app App) FileGet(res http.ResponseWriter, req *http.Request) {
if _, err := res.Write(file.Data); err != nil {
panic(err)
+ } else {
+ log.Println("served file:", fileId, file.Filename)
}
}
diff --git a/controller/template/uploaded.html b/controller/template/uploaded.html
index 1324082..11fe558 100644
--- a/controller/template/uploaded.html
+++ b/controller/template/uploaded.html
@@ -5,6 +5,7 @@
<p>
<a href="{{.DownloadURL}}">{{.DownloadURL}}</a>
</p>
+ <img src="{{.QRCode}}">
</main>
{{template "footer" .}}
{{end}}