feat(web): allow insecure HTTP connections via environment variable NYATERM_WEB_ALLOW_INSECURE_HTTP

This commit is contained in:
Kang committed 2026-10-04 01:16:30 +08:00
1 parent 5d1df9e237
commit 60c15946de
2 files changed
+9 -1

No files matched your search

+1
View File
@@ -7,6 +7,7 @@ services:
ports:
- "8080:8080"
environment:
NYATERM_WEB_ALLOW_INSECURE_HTTP: ${NYATERM_WEB_ALLOW_INSECURE_HTTP:-false}
NYATERM_WEB_PUBLIC_URL: ${NYATERM_WEB_PUBLIC_URL:-http://localhost:8080/}
NYATERM_WEB_PASSWORD: ${NYATERM_WEB_PASSWORD:?Set a random login password of at least 32 characters}
NYATERM_WEB_ENCRYPTION_KEY: ${NYATERM_WEB_ENCRYPTION_KEY:?Set a persistent base64-encoded 32-byte encryption key}
+8 -1
View File
@@ -44,7 +44,14 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
return Err("Invalid public URL".into());
}
let loopback = matches!(url.host_str(), Some("localhost" | "127.0.0.1" | "[::1]"));
if url.scheme() != "https" && !loopback {
let allow_insecure_http = std::env::var("NYATERM_WEB_ALLOW_INSECURE_HTTP")
.unwrap_or_else(|_| "false".into())
.parse()
.unwrap_or(false);
if url.scheme() != "https"
&& !loopback
&& !allow_insecure_http
{
return Err("Non-loopback public URLs require HTTPS".into());
}
let base_path = url.path().trim_end_matches('/').to_owned();