数字我 Digital Me:全量入库(大文件走 Git LFS)
nginx serve /uploads direct (audio speed) / patch-nginx (push) Failing after 1m34s

This commit is contained in:
2026-10-10 16:24:43 +08:00
commit 0593ff7e62
1893 changed files with 361723 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
name: Check Auth Flags (只读诊断)
# 只读:打印生产 .env 里【登录相关开关】的值。不打印任何密钥/AppSecret/AccessKey。
#
# 要确认的事:生产上 ALLOW_STUB_LOGIN 是不是 true。
# 如果是 true 且没接真实短信服务商,那么 POST /api/auth/sms/send 会把 6 位验证码
# 【直接放进 HTTP 响应里返回】——任何人填上别人的手机号,就能拿到验证码,
# 再调 /sms/verify 直接登录成那个人的账号。这不是"测试便利",这是一扇开着的门。
on:
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Print auth flags (no secrets)
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.ECS_HOST }}
username: ${{ secrets.ECS_USER }}
password: ${{ secrets.ECS_PASSWORD }}
command_timeout: 3m
script: |
set -e
cd /var/www/digitalme-api.invoratec.cn
[ -f .env ] || { echo "❌ 生产 .env 缺失"; exit 1; }
echo "===== 生产登录相关开关(只看开关,不看密钥)====="
for k in NODE_ENV ALLOW_STUB_LOGIN SMS_PROVIDER EMAIL_PROVIDER FEATURE_MARKETPLACE; do
v=$(grep -E "^${k}=" .env | head -1 | cut -d= -f2- || true)
printf '%-22s = %s\n' "$k" "${v:-(未设置)}"
done
echo
echo "===== 是否配了真实短信/微信(只判断有没有,不打印值)====="
for k in ALIYUN_ACCESS_KEY_ID WECHAT_APP_ID; do
if grep -qE "^${k}=.+" .env; then echo "$k = 已配置"; else echo "$k = 未配置"; fi
done
echo
echo "===== 结论 ====="
STUB=$(grep -E '^ALLOW_STUB_LOGIN=' .env | head -1 | cut -d= -f2- || true)
SMSP=$(grep -E '^SMS_PROVIDER=' .env | head -1 | cut -d= -f2- || true)
if [ "$STUB" = "true" ] && [ "$SMSP" != "aliyun" ]; then
echo "🔴 危险:ALLOW_STUB_LOGIN=true 且没接真实短信服务商。"
echo " → /api/auth/sms/send 会把验证码放进响应里返回。"
echo " → 任何人填别人的手机号即可拿到验证码,然后登录成那个人。"
echo " → 手机注册的账号目前全部可被任意接管。"
elif [ "$STUB" = "true" ]; then
echo "🟡 注意:ALLOW_STUB_LOGIN=true,但短信走的是 aliyun(真实发送)。"
echo " 短信这条路是安全的;但微信仍是 mock 扫码,建议一并关掉 stub。"
else
echo "🟢 安全:ALLOW_STUB_LOGIN 未开启,验证码不会出现在响应里。"
fi