36 lines
1.0 KiB
Bash
36 lines
1.0 KiB
Bash
|
|
#!/usr/bin/env bash
|
|||
|
|
# 纯静态语音确认页:必须用 HTTP(S) 打开(勿用 file://),否则麦克风等行为异常。
|
|||
|
|
# 用法: ./start_http.sh [端口],默认 8080;监听地址由环境变量 VOCH_HTTP_BIND 指定,默认 0.0.0.0。
|
|||
|
|
set -euo pipefail
|
|||
|
|
DIR="$(cd "$(dirname "$0")" && pwd)"
|
|||
|
|
cd "$DIR"
|
|||
|
|
PORT="${1:-8080}"
|
|||
|
|
BIND="${VOCH_HTTP_BIND:-0.0.0.0}"
|
|||
|
|
|
|||
|
|
LAN_IP="$(python3 - <<'PY'
|
|||
|
|
import socket
|
|||
|
|
|
|||
|
|
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|||
|
|
try:
|
|||
|
|
s.connect(("8.8.8.8", 80))
|
|||
|
|
print(s.getsockname()[0])
|
|||
|
|
except OSError:
|
|||
|
|
print("")
|
|||
|
|
finally:
|
|||
|
|
s.close()
|
|||
|
|
PY
|
|||
|
|
)"
|
|||
|
|
|
|||
|
|
echo "语音确认静态页监听: ${BIND}:${PORT}"
|
|||
|
|
if [[ "${BIND}" == "0.0.0.0" || "${BIND}" == "::" ]]; then
|
|||
|
|
echo "本机访问: http://127.0.0.1:${PORT}/"
|
|||
|
|
if [[ -n "${LAN_IP}" ]]; then
|
|||
|
|
echo "局域网访问: http://${LAN_IP}:${PORT}/"
|
|||
|
|
echo "服务端 Base URL 常用: http://${LAN_IP}:38080"
|
|||
|
|
fi
|
|||
|
|
else
|
|||
|
|
echo "访问: http://${BIND}:${PORT}/"
|
|||
|
|
fi
|
|||
|
|
echo "Ctrl+C 停止"
|
|||
|
|
exec python3 -m http.server "$PORT" --bind "$BIND" --directory "$DIR"
|