#!/bin/bash
# 升级后：对齐端口三处副本 + 重启服务（数据目录完全不动）
set -u

# ---- 调用追踪（飞牛调了哪个脚本、带了什么参数，都会记下来）----
_TR="/vol1/@appshare/zyjkw-monitor/data/logs/cmd_trace.log"
mkdir -p "$(dirname "$_TR")" 2>/dev/null || true
{ echo "==== $(date '+%Y-%m-%d %H:%M:%S') $(basename "$0") called ====";
  echo "0=$0  args=$*";
  env | grep -E '^wizard_|^TRIM_' | sed 's/^/  /'; } >> "$_TR" 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}"
log() { echo "[zyjkw-monitor] $1" > "$LOG" 2>/dev/null; echo "[zyjkw-monitor] $1"; }

# 升级会替换 manifest（service_port 回到包里的默认值），而数据目录里的实际端口不会变，
# 这里必须把两者重新对齐，否则「打开」按钮会跳到错误端口。
_HP="$(cfg_port http_port "${WJK_HTTP_PORT:-10001}")"
_HS="$(cfg_port https_port "${WJK_HTTPS_PORT:-10002}")"
_ROOT="$(app_root)"

if [ -f "${_ROOT}/manifest" ]; then
    sed -i "s/^service_port .*/service_port          = ${_HP}/" "${_ROOT}/manifest" 2>/dev/null || true
    log "manifest 端口已对齐为 ${_HP}"
fi
if [ -f "${_ROOT}/wizard/config.tpl" ]; then
    render_config_wizard "${_ROOT}/wizard/config.tpl" "${_ROOT}/wizard/config" "$_HP" "$_HS"
    log "设置页端口已渲染为 ${_HP}/${_HS}"
fi

chmod -R a+rX "${_ROOT}/target" 2>/dev/null || true
log "升级完成，重启服务…"
"${_ROOT}/cmd/main" start >/dev/null 2>&1 || log "重启失败，请看 ${PKGVAR}/server.log"
exit 0
