update at 2026-07-26 10:50:03

This commit is contained in:
douboer@gmail.com
2026-07-26 10:50:03 +08:00
parent ede44d43cb
commit ab25cab481

View File

@@ -9,6 +9,7 @@ SERVER_WEB="${SERVER_WEB:-myweb}"
REMOTE_WORKDIR="${REMOTE_WORKDIR:-/home/gavin/font2svg}"
SKIP_PUSH="${SKIP_PUSH:-0}"
SKIP_SUDO="${SKIP_SUDO:-0}"
MYWEB_SUDO_PASSWORD="${MYWEB_SUDO_PASSWORD:-}"
COLOR_RESET=$'\033[0m'
COLOR_INFO=$'\033[1;36m'
@@ -34,6 +35,41 @@ ssh_web() {
ssh -o BatchMode=yes -o ConnectTimeout=12 "$SERVER_WEB" "$@"
}
load_sudo_password() {
if [[ -n "$MYWEB_SUDO_PASSWORD" ]]; then
return
fi
[[ -r .env ]] || {
log_error '未找到 .env请设置 MYWEB_SUDO_PASSWORD 或在 .env 中配置密码。'
exit 1
}
local line secret='' plain_lines=()
while IFS= read -r line || [[ -n "$line" ]]; do
case "$line" in
MYWEB_SUDO_PASSWORD=*|SUDO_PASSWORD=*) secret="${line#*=}" ;;
''|'#'*) ;;
*) plain_lines+=("$line") ;;
esac
done < .env
if [[ -z "$secret" && ${#plain_lines[@]} -eq 1 ]]; then
secret="${plain_lines[0]}"
fi
# 兼容 .env 中常见的单引号或双引号包裹形式,不执行其中任何内容。
if [[ ${#secret} -ge 2 ]] && { [[ ${secret:0:1} == '"' && ${secret: -1} == '"' ]] || [[ ${secret:0:1} == "'" && ${secret: -1} == "'" ]]; }; then
secret="${secret:1:${#secret}-2}"
fi
[[ -n "$secret" ]] || {
log_error '无法从 .env 读取 sudo 密码;请使用 MYWEB_SUDO_PASSWORD=密码。'
exit 1
}
MYWEB_SUDO_PASSWORD="$secret"
}
check_local_environment() {
log_step '1/8 检查 M4 本机环境'
for tool in git pnpm node python3 rsync ssh curl; do
@@ -107,8 +143,9 @@ apply_nginx_and_restart() {
log_warn 'SKIP_SUDO=1跳过需要 sudo 的 Nginx/API 重启'
return
fi
log_info '将要求输入 myweb 的 sudo 密码,用于安装配置、校验并重载 Nginx。'
ssh -tt -o ConnectTimeout=12 "$SERVER_WEB" "sudo install -m 644 '$REMOTE_WORKDIR/fonts.conf' /etc/nginx/conf.d/fonts.conf && sudo nginx -t && sudo systemctl reload nginx && sudo systemctl restart font2svg-api"
load_sudo_password
log_info '从 .env 读取 sudo 密码,用于安装配置、校验并重载 Nginx。'
printf '%s\n' "$MYWEB_SUDO_PASSWORD" | ssh -tt -o ConnectTimeout=12 "$SERVER_WEB" "sudo -S -p '' install -m 644 '$REMOTE_WORKDIR/fonts.conf' /etc/nginx/conf.d/fonts.conf && sudo -S -p '' nginx -t && sudo -S -p '' systemctl reload nginx && sudo -S -p '' systemctl restart font2svg-api"
log_ok 'Nginx 已重载Font2SVG API 已重启'
}