lsyupdate/lsy-frpc/data/lsyfrpc/frp_install.sh
2025-01-09 16:06:12 +08:00

94 lines
2.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
FRPC_FILE="/data/lsyfrpc/frpc"
FRPC_DIR="/data/lsyfrpc"
# 下载 FRPC可保留原逻辑不过在打包时可能已经包含了二进制文件这里可按需调整
function down_frpc() {
if [ ! -e "$FRPC_FILE" ]; then
echo "[INFO] Installing FRPC to '$FRPC_DIR'..."
mkdir -p "$FRPC_DIR"
wget "https://box.jxm.cool/download/frpc" -O "$FRPC_FILE"
chmod u+x "$FRPC_FILE"
else
echo "[INFO] FRPC 已安装,跳过下载。"
fi
}
# 安装和配置 FRPC调整后的逻辑先创建基础配置文件模板后续首次运行再完善
function install_frpc() {
mac_address=$(cat /sys/class/net/eth0/address)
echo "MAC Address: $mac_address"
new_mac_assress="$mac_address-v1"
# 创建或更新 FRPC 配置文件(先只写公共部分,端口相关留空,后续补全)
cat > "$FRPC_DIR/frpc.ini" <<EOF
[common]
server_addr = box.jxm.cool
server_port = 8000
token = 92098d16-1961-4bda-902b-e43e3d41d5a9
[$new_mac_assress]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port =
EOF
# 创建 systemd 服务文件(路径适配新目录)
cat > "/etc/systemd/system/lsyfrpc.service" <<EOF
[Unit]
Description=FRP Client
After=network.target
[Service]
Type=simple
# ExecStartPre=/bin/mkdir -p "$FRPC_DIR/var/"
# ExecStartPre=/bin/bash -c "$FRPC_DIR/check_config.sh &"
ExecStart="$FRPC_FILE" -c "$FRPC_DIR/frpc.ini"
ExecStartPost=/bin/bash -c "$FRPC_DIR/check_config.sh &"
TimeoutSec=60
# PIDFile="$FRPC_DIR/frpc.pid"
Restart=always
RestartSec=60
User=root
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo chmod 644 "$FRPC_DIR/frpc.ini"
sudo chmod 655 "$FRPC_DIR/check_config.sh"
sudo systemctl daemon-reload
sudo systemctl enable lsyfrpc
# sudo systemctl start lsyfrpc
# 首次运行时,获取端口并更新配置文件逻辑(可添加到脚本末尾,比如添加到一个新的函数里)
# 获取端口并更新配置文件
response=$(curl -s -X 'POST' \
'https://frp-box.jxm.cool/request_port/' \
-H 'accept: application/json' \
-H 'Authorization: Basic NTI0NzgxNTctMjY1Zi00ZGNjLWE0NDMtODE0YzJhMDMxYjhjOmM2ZDI3Nzc1LTJhMDgtNDkyZS1iMTExLTg5YWQzZDY5ZTliMA==' \
-H 'Content-Type: application/json' \
-d "{\"mac_address\": \"$mac_address\"}")
port=$(echo "$response" | grep -o '"port":[0-9]*' | awk -F: '{print $2}')
if [ -z "$port" ]; then
echo "[ERROR] Failed to get port from the response."
exit 1
fi
echo "Port retrieved: $port"
# 更新配置文件中的 remote_port 字段
sed -i "s/remote_port = /remote_port = $port/" "$FRPC_DIR/frpc.ini"
sudo systemctl start lsyfrpc
}
# 主函数,调用相关函数来完成安装等操作
main() {
down_frpc
install_frpc
}
main