#!/bin/bash
# 资源监控台 —— 应用设置「运行设置」保存前校验
#
# ⚠️ 这个脚本对飞牛来说"必须永远成功"：
#    访问权限、运行设置等任何改动都会先走它，一旦返回非 0，
#    飞牛就弹「执行配置初始化脚本失败」，用户什么都保存不了。
#    所以这里只做"记录 + 提醒"，绝不 exit 非 0。
set -u

TRACE="/vol1/@appshare/zyjkw-monitor/data/logs/cmd_trace.log"
mkdir -p "$(dirname "$TRACE")" 2>/dev/null || true
{
    echo "==== $(date '+%Y-%m-%d %H:%M:%S') config_init called ===="
    echo "0=$0  args=$*"
    env | grep -E '^wizard_|^TRIM_' | sed 's/^/  /'
} >> "$TRACE" 2>/dev/null || true

_source="$(dirname "$0")/common.sh"
[ -f "$_source" ] || _source="/var/apps/zyjkw-monitor/cmd/common.sh"
. "$_source" 2>/dev/null || true

LOG="${TRIM_TEMP_LOGFILE:-/dev/null}"
warn() {
    echo "[zyjkw-monitor] $1" > "$LOG" 2>/dev/null
    echo "[zyjkw-monitor][warn] $1" >> "$TRACE" 2>/dev/null
}

HP="${wizard_http_port:-}"
HS="${wizard_https_port:-}"
MODE="${wizard_password_mode:-keep}"
PWD_NEW="${wizard_admin_password:-}"

# 端口：不合法只提醒，不拦（真正写入时 config_callback 还会再校验一次并回滚）
if [ -n "$HP" ]; then
    case "$HP" in
        *[!0-9]*) warn "HTTP 端口不是数字，已忽略：$HP" ;;
        *) [ "$HP" -ge 1024 ] && [ "$HP" -le 65535 ] || warn "HTTP 端口超出范围，已忽略：$HP" ;;
    esac
fi
if [ -n "$HS" ]; then
    case "$HS" in
        *[!0-9]*) warn "HTTPS 端口不是数字，已忽略：$HS" ;;
        *) [ "$HS" -ge 1024 ] && [ "$HS" -le 65535 ] || warn "HTTPS 端口超出范围，已忽略：$HS" ;;
    esac
fi

# 密码：只有真的填了新密码才检查；空 = 不改密码（改访问权限时会带过来空密码）
if [ "$MODE" = "custom" ] && [ -n "$PWD_NEW" ]; then
    [ ${#PWD_NEW} -ge 8 ] || warn "新密码不足 8 位（保存后请重新设置）"
fi

echo "[zyjkw-monitor] 校验通过" > "$LOG" 2>/dev/null
echo "  → ok" >> "$TRACE" 2>/dev/null
exit 0
