#!/bin/bash
set -e

# 配置变量
SERVICE_NAME="easytier"
APP_DIR="/root/app/tier"
EXEC_PATH="${APP_DIR}/easytier-core"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"

# 参数定义
NETWORK_NAME="test"
NETWORK_SECRET="123456"
PEER_ADDR="tcp://1.2.3.4:11010"
IPV4="10.126.126.103"
HOSTNAME="zcl_01"

# 检查可执行文件是否存在
if [ ! -f "$EXEC_PATH" ]; then
    echo "错误: 未找到可执行文件: $EXEC_PATH"
    exit 1
fi

# 确保具备执行权限
chmod +x "$EXEC_PATH"

echo "正在生成/更新 systemd 服务文件: ${SERVICE_FILE}..."

# 写入 Systemd 配置文件
cat <<EOF > "$SERVICE_FILE"
[Unit]
Description=EasyTier Service
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
WorkingDirectory=${APP_DIR}
ExecStart=${EXEC_PATH} --network-name ${NETWORK_NAME} --network-secret ${NETWORK_SECRET} -p ${PEER_ADDR} -i ${IPV4} --hostname ${HOSTNAME}
# 进程异常退出或丢失时自动重启
Restart=always
RestartSec=5s
KillMode=process
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd 配置
echo "重新加载 systemd 守护进程..."
systemctl daemon-reload

# 设置开机自启并启动/重启服务
echo "配置开机自启并重启服务..."
systemctl enable "$SERVICE_NAME"
systemctl restart "$SERVICE_NAME"

# 检查运行状态
echo "=========================================="
if systemctl is-active --quiet "$SERVICE_NAME"; then
    echo "✅ EasyTier 服务启动成功并已设置开机自启！"
    systemctl status "$SERVICE_NAME" --no-pager -n 5
else
    echo "❌ EasyTier 服务启动失败，请使用 journalctl -u ${SERVICE_NAME} 查看日志。"
fi
echo "=========================================="
