From bc46fd80b34a0476e88dc436cad9d6f7b6684e92 Mon Sep 17 00:00:00 2001 From: Aryan Singh Date: Tue, 4 Aug 2026 12:09:51 -0500 Subject: [PATCH] Add single-user GitHub OAuth, hardened for internet exposure muse drives a download client and writes to the media library, so exposing it publicly needs more than a login form. It fails closed. Auth is on unless MUSE_AUTH=off is set explicitly, and when it is on with incomplete config the app refuses to start rather than serving open. The mode worth engineering against is not a broken login page, it is a misconfigured deploy quietly publishing an unauthenticated download client. Sessions are server-side: the cookie carries a 256-bit random token and nothing else, and only its SHA-256 is stored. There is no signed payload to get subtly wrong, a stolen database yields no usable cookies, and logout revokes for real. The allowlist is re-checked on every request so removing a user takes effect immediately rather than at session expiry. OAuth state is compared with secrets.compare_digest, so a callback the user did not initiate is rejected. MUSE_BASE_URL comes from config rather than X-Forwarded-* because those headers are attacker-controllable and this one is a redirect target. CSP is default-src 'self' with no unsafe-inline, which is why the stylesheet and script moved out of index.html into static files -- an injected
-

muse search a song → it lands in Navidrome

+

muse search a song → it lands in Navidrome +

@@ -81,7 +24,7 @@ Juice WRLD - Lucid Dreams Tory Lanez - The Color Violet Or paste a Deezer album / playlist URL to expand it."> -
+
Top Deezer match is taken automatically — check the list below.
@@ -92,129 +35,9 @@ Or paste a Deezer album / playlist URL to expand it.">

Requests

- +
nothing requested yet
-