feat: 合并边缘节点运维并完善 Surge 配置安全
迁入通用节点部署工具、离线交付页生成器和共用技能,隔离真实配置与交付产物。统一 Codex 与 Claude Code 开发约定,补充节点迁移与运维文档。 完善 FINAL、策略组引用、输入校验、Surge 字段编码与 AI DNS 例外保护,增加隔离测试和订阅验证工具。 验证:全量类型检查、44 项单测、前端构建、脚本语法、技能入口与凭据隔离检查均通过。
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#
|
||||
# 用法:
|
||||
# api.sh api METHOD PATH [JSON] # 调管理接口;PATH 以 /api/ 或 /sub/ 开头;JSON 作第三参
|
||||
# api.sh api METHOD PATH --body-file FILE # 含凭据或复杂 JSON 优先用权限 600 的文件,避免放入 argv
|
||||
# api.sh backup <context> # 变更前快照 → data/backups/before-<context>-<时间戳>.db
|
||||
# api.sh backups # 列出最近 20 个备份
|
||||
# api.sh counts # 各表行数,变更前后对比用
|
||||
@@ -33,12 +34,19 @@ cmd="$1"; shift
|
||||
case "$cmd" in
|
||||
api)
|
||||
[ $# -ge 2 ] || die "用法:api.sh api METHOD PATH [JSON]"
|
||||
METHOD="$1"; APIPATH="$2"; BODY="${3:-}"
|
||||
METHOD="$1"; APIPATH="$2"; BODY="${3:-}"; BODY_FILE=""
|
||||
if [ "$BODY" = "--body-file" ]; then
|
||||
BODY_FILE="${4:-}"; BODY=""
|
||||
[ -n "$BODY_FILE" ] && [ -f "$BODY_FILE" ] || die "--body-file 需要可读的 JSON 文件"
|
||||
fi
|
||||
case "$METHOD" in GET|POST|PUT|PATCH|DELETE) ;; *) die "METHOD 只能是 GET/POST/PUT/PATCH/DELETE";; esac
|
||||
case "$APIPATH" in /api/*|/sub/*) ;; *) die "PATH 必须以 /api/ 或 /sub/ 开头";; esac
|
||||
case "$APIPATH" in *[!a-zA-Z0-9_./?=%\&~:+-]*) die "PATH 含不安全字符,请先做 URL 编码";; esac
|
||||
# 单引号段内的 $ADMIN_TOKEN 与 ${PORT:-3000} 留给远端 shell 展开:token 不经本地 shell、不落本地磁盘
|
||||
RCMD='. '"$ENV_FILE"' 2>/dev/null; curl -sS -m 60 -X '"$METHOD"' -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: application/json" -w "\n__HTTP_STATUS:%{http_code}__" http://127.0.0.1:${PORT:-3000}'"$APIPATH"
|
||||
if [ -n "$BODY" ]; then
|
||||
RCMD='. '"$ENV_FILE"' 2>/dev/null; curl -sS -m 60 -X '"$METHOD"' -H "Authorization: Bearer $ADMIN_TOKEN" -H "Content-Type: application/json" -w "\n__HTTP_STATUS:%{http_code}__" "http://127.0.0.1:${PORT:-3000}'"$APIPATH"'"'
|
||||
if [ -n "$BODY_FILE" ]; then
|
||||
"${SSH[@]}" "$RCMD --data-binary @-" < "$BODY_FILE"
|
||||
elif [ -n "$BODY" ]; then
|
||||
printf '%s' "$BODY" | "${SSH[@]}" "$RCMD --data-binary @-"
|
||||
else
|
||||
"${SSH[@]}" "$RCMD"
|
||||
|
||||
Reference in New Issue
Block a user