fix(launch): 上线切换脚本 sudo 场景两处致命伤
- 深度扫描从 server_name 行起算须以 depth=1 为初值(server{ 开栏在
该行之前;0 起算在下一行即误判闭合,块切片只剩一行导致 location /
永不匹配——Phase 0 artalk 插入带同款 bug 但恰好落在块顶部而无害)
- STAGING 写死 /home/wait4x 绝对路径(sudo 下 /home/wait4x=/root,计划行
曾显示 /root/docker_apps/...)
验证: 只读模拟 start=94 end=128(真实闭合行),regex 命中,块内
artalk/halo 双 location 齐全;用户首跑在断言处安全中止(写入
前拦截),nginx 配置未受影响
Spec: none (上线脚本热修复,Phase 4 归档后用户执行面缺陷)
Co-authored-by: GLM-5.3
This commit is contained in:
1 parent
7c15b0dbc1
commit
c1085de1a0
1 file changed
+5
-2
@@ -6,7 +6,8 @@ set -eu
|
|||||||
DRY=1
|
DRY=1
|
||||||
[ "${1:-}" = "--exec" ] && DRY=0
|
[ "${1:-}" = "--exec" ] && DRY=0
|
||||||
NGINX_DEFAULT=/etc/nginx/sites-available/default
|
NGINX_DEFAULT=/etc/nginx/sites-available/default
|
||||||
STAGING="$HOME/docker_apps/blog/www-staging"
|
# sudo 下 $HOME=/root:路径必须写死用户绝对路径,不能用 $HOME
|
||||||
|
STAGING="/home/wait4x/docker_apps/blog/www-staging"
|
||||||
TS=$(date +%Y%m%d-%H%M%S)
|
TS=$(date +%Y%m%d-%H%M%S)
|
||||||
|
|
||||||
# 目标:wait4x.online server 块内 location / 的 proxy_pass 换为静态 root。
|
# 目标:wait4x.online server 块内 location / 的 proxy_pass 换为静态 root。
|
||||||
@@ -35,7 +36,9 @@ path = sys.argv[1]
|
|||||||
s = open(path, encoding="utf-8").read()
|
s = open(path, encoding="utf-8").read()
|
||||||
lines = s.splitlines(keepends=True)
|
lines = s.splitlines(keepends=True)
|
||||||
start = next(i for i, l in enumerate(lines) if "server_name wait4x.online;" in l)
|
start = next(i for i, l in enumerate(lines) if "server_name wait4x.online;" in l)
|
||||||
depth = 0
|
# server{ 开栏在 server_name 之前——从这行起算时已身处一层花括号内,
|
||||||
|
# 深度须从 1 起算(0 起算会在下一行误判块闭合,切片只剩一行)
|
||||||
|
depth = 1
|
||||||
for i in range(start, len(lines)):
|
for i in range(start, len(lines)):
|
||||||
depth += lines[i].count("{") - lines[i].count("}")
|
depth += lines[i].count("{") - lines[i].count("}")
|
||||||
if i > start and depth == 0:
|
if i > start and depth == 0:
|
||||||
|
|||||||
Reference in new issue
Block a user