#!/bin/bash

# 定义frpc版本号
FRPC_VERSION="v0.51.3"
# 定义下载链接，根据实际架构可能需要调整，这里以amd64为例
DOWNLOAD_URL="https://github.com/fatedier/frp/releases/download/${FRPC_VERSION}/frpc_0.51.3_linux_amd64.tar.gz"
# 定义解压后的目录名，一般按下载的包名来
FRPC_DIR="frp_0.51.3_linux_amd64"

# 1. 下载frpc
wget ${DOWNLOAD_URL}
if [ $? -ne 0 ]; then
    echo "下载frpc失败，请检查网络或下载链接是否正确"
    exit 1
fi

# 2. 解压frpc
tar -zxvf frpc_0.51.3_linux_amd64.tar.gz
if [ $? -ne 0 ]; then
    echo "解压frpc失败"
    exit 1
fi

# 3. 配置frpc.ini文件
cat > ${FRPC_DIR}/frpc.ini << EOF
[common]
server_addr = hk-3.lcf.icu
server_port = 2333
tcp_mux = true
protocol = tcp
user = 393df975d0e9943fd1c5c11cdc048b9c
token = LoCyanToken
dns_server = 223.6.6.6
tls_enable = false

[bbbb]
privilege_mode = true
type = tcp
local_ip = 127.0.0.1
local_port = 8888
remote_port = 23263
EOF

# 4. 后台运行frpc的函数
function start_frpc() {
    nohup ${FRPC_DIR}/frpc -c ${FRPC_DIR}/frpc.ini &
}

# 5. 启动frpc（直接运行，非后台）的函数
function run_frpc() {
    ${FRPC_DIR}/frpc -c ${FRPC_DIR}/frpc.ini
}

# 6. 设置开机自启（使用systemd服务方式，仅供参考，需根据实际调整）
cat > /etc/systemd/system/frpc.service << EOF
[Unit]
Description=FRPC Service
After=network.target

[Service]
Type=simple
ExecStart=${PWD}/${FRPC_DIR}/frpc -c ${PWD}/${FRPC_DIR}/frpc.ini
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable frpc.service

# 根据传入参数决定执行哪种操作，参数示例：start（后台启动）、run（前台运行）、enable（设置开机自启）
case "$1" in
    start)
        start_frpc
        ;;
    run)
        run_frpc
        ;;
    enable)
        systemctl enable frpc.service
        ;;
    *)
        echo "请指定参数，可选参数为：start（后台启动）、run（前台运行）、enable（设置开机自启）"
        ;;
esac