From 68b003fd8065ad404451909ffa7f2c39d5af1607 Mon Sep 17 00:00:00 2001 From: ws50529 Date: Thu, 14 May 2026 17:28:33 +0800 Subject: [PATCH] feat: enable HTTPS for API and update MCU Web Serial connection UI --- .gitignore | 3 ++ certs/generate_cert.sh | 27 ++++++++++++ dea.service | 2 +- src/App.vue | 33 +++++++------- src/app-options.js | 98 +++++++++++++++++++----------------------- static/build/app.css | 2 +- static/build/app.js | 5 ++- 7 files changed, 98 insertions(+), 72 deletions(-) create mode 100644 certs/generate_cert.sh diff --git a/.gitignore b/.gitignore index 5dec41a..6150ebf 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ Desktop.ini # Agent Skills .agents/ + +# SSL certs (private keys) +certs/*.pem diff --git a/certs/generate_cert.sh b/certs/generate_cert.sh new file mode 100644 index 0000000..472cefc --- /dev/null +++ b/certs/generate_cert.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash +# 產生自簽 SSL 憑證供 Uvicorn HTTPS 使用 +# 用法: bash certs/generate_cert.sh + +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +CERT_FILE="${SCRIPT_DIR}/cert.pem" +KEY_FILE="${SCRIPT_DIR}/key.pem" +DAYS=3650 + +if [ -f "$CERT_FILE" ] && [ -f "$KEY_FILE" ]; then + echo "憑證已存在: ${CERT_FILE}, ${KEY_FILE}" + echo "如需重新產生,請先刪除後再執行。" + exit 0 +fi + +openssl req -x509 -newkey rsa:2048 -nodes \ + -keyout "$KEY_FILE" \ + -out "$CERT_FILE" \ + -days "$DAYS" \ + -subj "/CN=$(hostname)" \ + -addext "subjectAltName=DNS:$(hostname),IP:0.0.0.0" + +echo "已產生自簽憑證(有效 ${DAYS} 天):" +echo " cert: ${CERT_FILE}" +echo " key: ${KEY_FILE}" diff --git a/dea.service b/dea.service index e890e84..6f52803 100644 --- a/dea.service +++ b/dea.service @@ -6,7 +6,7 @@ After=network.target User=wisetop WorkingDirectory=/home/wisetop/diff-eq-analyzer Environment="PATH=/home/wisetop/diff-eq-analyzer/.venv/bin" -ExecStart=/home/wisetop/diff-eq-analyzer/.venv/bin/uvicorn dea_api:app --host 0.0.0.0 --port 8000 +ExecStart=/home/wisetop/diff-eq-analyzer/.venv/bin/uvicorn dea_api:app --host 0.0.0.0 --port 8000 --ssl-keyfile=/home/wisetop/diff-eq-analyzer/certs/key.pem --ssl-certfile=/home/wisetop/diff-eq-analyzer/certs/cert.pem Restart=always RestartSec=3 diff --git a/src/App.vue b/src/App.vue index 3018ea0..6307e81 100644 --- a/src/App.vue +++ b/src/App.vue @@ -74,7 +74,7 @@
@@ -83,22 +83,25 @@
-
- - +
+

+ ⚠ 此瀏覽器不支援 Web Serial。MCU 寫值功能需使用 Chrome 或 Edge,且透過 HTTPS 連線。 +

{{ mcuStatus }}