#!/bin/bash

### 配置变更回调(应用设置向导提交后):更新 app.env,向导留空的项保持不变

CFG="${TRIM_PKGETC}/app.env"
[ -f "${CFG}" ] || exit 0

if [ -n "${wizard_port}" ]; then
    sed -i "s|^HY_PORT=.*|HY_PORT=${wizard_port}|" "${CFG}"
fi

if [ -n "${wizard_dbdir}" ]; then
    if [ ! -d "${wizard_dbdir}" ]; then
        if mkdir -p "${wizard_dbdir}" 2>/dev/null; then
            [ -n "${TRIM_UID}" ] && chown "${TRIM_UID}:${TRIM_GID}" "${wizard_dbdir}" 2>/dev/null
        else
            echo "警告:数据目录 ${wizard_dbdir} 创建失败,保持原目录不变" >> "${TRIM_TEMP_LOGFILE}" 2>/dev/null
        fi
    fi
    [ -d "${wizard_dbdir}" ] && sed -i "s|^HY_DB_DIR=.*|HY_DB_DIR=${wizard_dbdir}|" "${CFG}"
fi

# 管理密码(留空不修改;更新盐+哈希两行,不存在则追加)
if [ -n "${wizard_admin_pwd}" ]; then
    SALT="$(date +%s%N)$RANDOM"
    HASH="$(printf '%s' "${SALT}${wizard_admin_pwd}" | sha256sum | cut -d' ' -f1)"
    if grep -q "^ADMIN_PWD_SALT=" "${CFG}"; then
        sed -i "s|^ADMIN_PWD_SALT=.*|ADMIN_PWD_SALT=${SALT}|" "${CFG}"
    else
        echo "ADMIN_PWD_SALT=${SALT}" >> "${CFG}"
    fi
    if grep -q "^ADMIN_PWD_SHA256=" "${CFG}"; then
        sed -i "s|^ADMIN_PWD_SHA256=.*|ADMIN_PWD_SHA256=${HASH}|" "${CFG}"
    else
        echo "ADMIN_PWD_SHA256=${HASH}" >> "${CFG}"
    fi
fi

echo "$(date '+%Y-%m-%d %H:%M:%S') - config updated port=${wizard_port:-保持} dbdir=${wizard_dbdir:-保持} admin_pwd=$([ -n "${wizard_admin_pwd}" ] && echo 已修改 || echo 保持)" >> "${TRIM_PKGVAR}/app.log" 2>/dev/null

exit 0
