summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--flake.nix2
-rw-r--r--go.mod1
-rw-r--r--go.sum4
-rw-r--r--roseh.moe.go12
4 files changed, 16 insertions, 3 deletions
diff --git a/flake.nix b/flake.nix
index d09ded1..ad0970c 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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=";
};
});
diff --git a/go.mod b/go.mod
index 894f88a..a4982c9 100644
--- a/go.mod
+++ b/go.mod
@@ -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
diff --git a/go.sum b/go.sum
index b64ec56..85b5e94 100644
--- a/go.sum
+++ b/go.sum
@@ -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)