Files
ctbjrj/会员服务器/cmd/install_callback
T
dqb-dev 65755bf520 会员服务器:上传肥牛应用源码 v1.5.1(fnnas.huiyuan 完整 fpk 工程结构)
含 app/server/server.cjs 服务端、app/www 网页(admin/auth/项目云/库备份/settings)、
app/ui 图标、cmd 安装脚本、config、wizard、manifest、图标与对接文档。
按仓库规则排除构建产物 *.fpk 与 .mimosa 缓存。
2026-10-02 00:03:20 +08:00

51 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
### 安装完成回调:把向导值合并写入 app.env(cmd/main 与服务进程读取)。
### 合并式:只覆盖本脚本管理的键(HY_PORT/HY_DB_DIR/ADMIN_*),设置页保存的其他键(如 HY_REG_OPEN)保留。
mkdir -p "${TRIM_PKGETC}" 2>/dev/null
CFG="${TRIM_PKGETC}/app.env"
PORT="${wizard_port}"
DBDIR="${wizard_dbdir}"
[ -z "${PORT}" ] && PORT="${TRIM_SERVICE_PORT:-12701}"
# 向导填了自定义数据目录:目录不存在则创建,新建目录归属应用用户(已存在的目录不动,由 ACL/目录授权控制)
if [ -n "${DBDIR}" ] && [ ! -d "${DBDIR}" ]; then
if mkdir -p "${DBDIR}" 2>/dev/null; then
[ -n "${TRIM_UID}" ] && chown "${TRIM_UID}:${TRIM_GID}" "${DBDIR}" 2>/dev/null
else
echo "警告:数据目录 ${DBDIR} 创建失败,将使用默认目录" >> "${TRIM_TEMP_LOGFILE}" 2>/dev/null
DBDIR=""
fi
fi
# 合并旧配置:跳过本脚本管理的键,其余原样保留
TMP="${CFG}.new"
: > "${TMP}"
if [ -f "${CFG}" ]; then
while IFS='=' read -r k v; do
[ -z "${k}" ] && continue
case "${k}" in
HY_PORT|HY_DB_DIR|ADMIN_PWD_SALT|ADMIN_PWD_SHA256) ;;
*) printf '%s=%s\n' "${k}" "${v}" >> "${TMP}" ;;
esac
done < "${CFG}"
fi
# 管理密码(向导必填;留空则保留旧哈希,若从未设置过则服务端登录时会提示未设置)
if [ -n "${wizard_admin_pwd}" ]; then
SALT="$(date +%s%N)$RANDOM${TRIM_APPNAME:-hy}"
HASH="$(printf '%s' "${SALT}${wizard_admin_pwd}" | sha256sum | cut -d' ' -f1)"
printf 'ADMIN_PWD_SALT=%s\n' "${SALT}" >> "${TMP}"
printf 'ADMIN_PWD_SHA256=%s\n' "${HASH}" >> "${TMP}"
fi
printf 'HY_PORT=%s\n' "${PORT}" >> "${TMP}"
printf 'HY_DB_DIR=%s\n' "${DBDIR}" >> "${TMP}"
mv "${TMP}" "${CFG}"
echo "$(date '+%Y-%m-%d %H:%M:%S') - installed v${TRIM_APPVER} port=${PORT} dbdir=${DBDIR:-默认} admin_pwd=$([ -n "${wizard_admin_pwd}" ] && echo 已设置 || echo 保持)" >> "${TRIM_PKGVAR}/app.log" 2>/dev/null
exit 0