diff options
| -rw-r--r-- | flake.nix | 2 | ||||
| -rw-r--r-- | go.mod | 1 | ||||
| -rw-r--r-- | go.sum | 4 | ||||
| -rw-r--r-- | roseh.moe.go | 12 |
4 files changed, 16 insertions, 3 deletions
@@ -48,7 +48,7 @@ # remember to bump this hash when your dependencies change. # vendorHash = pkgs.lib.fakeHash; - vendorHash = "sha256-qVPU4qAb1nseD1qR2icJPzxQAaaRfvRqVrR1b/3AiMU="; + vendorHash = "sha256-1SZw/xXJS5Vz4ZxD4M+DiILSbOgl72ME6L05cxtvb24="; }; }); @@ -3,6 +3,7 @@ module roseh.moe/pkg/roseh.moe go 1.24.0 require ( + github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e golang.org/x/term v0.36.0 roseh.moe/pkg/ccl v0.1.0 roseh.moe/pkg/wordlist v1.0.2 @@ -1,11 +1,11 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= +github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M= golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= -roseh.moe/pkg/ccl v0.0.0-20251029033439-2ffdc8b3ded7 h1:WmW1ymMGGFX9Ml9AlOvBCfzRjlrwnqfp2RonWIkHLAE= -roseh.moe/pkg/ccl v0.0.0-20251029033439-2ffdc8b3ded7/go.mod h1:OCcZ30pQDtjXgqgpN8eLo6f/pTi6XVKIHPs1k+gups0= roseh.moe/pkg/ccl v0.1.0 h1:7F6k8JVe5XnwDsK3nEqULJiajeUUwdxsDeeLWhe3v84= roseh.moe/pkg/ccl v0.1.0/go.mod h1:OCcZ30pQDtjXgqgpN8eLo6f/pTi6XVKIHPs1k+gups0= roseh.moe/pkg/wordlist v1.0.2 h1:riB2RqCU5zXfCQjaPHYTXV/688FV9/Bp6Hnb0IAkP9c= diff --git a/roseh.moe.go b/roseh.moe.go index 3a53208..19d6109 100644 --- a/roseh.moe.go +++ b/roseh.moe.go @@ -21,6 +21,7 @@ import ( "sync" "time" + "github.com/skip2/go-qrcode" "roseh.moe/pkg/ccl" "roseh.moe/pkg/roseh.moe/internal/pwhash" "roseh.moe/pkg/wordlist" @@ -284,6 +285,16 @@ func wormholeRecv(w http.ResponseWriter, r *http.Request) { } } +func wormholeQR(w http.ResponseWriter, r *http.Request) { + qr, err := qrcode.Encode(*selfURL+"/wormhole/"+r.PathValue("hole"), qrcode.Medium, 200) + if err != nil { + http.Error(w, fmt.Sprintf("failed to encode QR code: %s", err), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "image/png") + w.Write(qr) +} + func mac(msg []byte) []byte { mac := hmac.New(sha256.New, secretKey) mac.Write(msg) @@ -534,6 +545,7 @@ func main() { http.HandleFunc("GET /wormhole/{hole}/upload", wormhole) http.HandleFunc("POST /wormhole/{hole}/upload", wormholeSend) http.HandleFunc("GET /wormhole/{hole}", wormholeRecv) + http.HandleFunc("GET /wormhole/{hole}/qr.png", wormholeQR) http.HandleFunc("POST /login", login) http.HandleFunc("GET /notepad", notepad) http.HandleFunc("POST /notepad", autosave) |
