lsyupdate/lsy-frpc/data/lsyfrpc/frp_install.sh

101 lines
2.8 KiB
Bash
Raw Normal View History

2024-12-26 18:58:46 +08:00
#!/bin/bash
FRPC_FILE="/data/lsyfrpc/frpc"
FRPC_DIR="/data/lsyfrpc"
# 下载 FRPC可保留原逻辑不过在打包时可能已经包含了二进制文件这里可按需调整
function down_frpc() {
2025-01-08 18:21:45 +08:00
if [ ! -e "$FRPC_FILE" ]; then
2024-12-26 18:58:46 +08:00
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"
2025-02-25 14:36:08 +08:00
new_mac_address="$mac_address-v1"
new_mac_address_9100="$mac_address-v2"
2024-12-26 18:58:46 +08:00
# 创建或更新 FRPC 配置文件(先只写公共部分,端口相关留空,后续补全)
cat > "$FRPC_DIR/frpc.ini" <<EOF
[common]
server_addr = box.jxm.cool
server_port = 8000
token = 92098d16-1961-4bda-902b-e43e3d41d5a9
2025-02-25 14:36:08 +08:00
[$new_mac_address]
2024-12-26 18:58:46 +08:00
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port =
2025-02-25 14:36:08 +08:00
[$new_mac_address_9100]
type = tcp
local_ip = 127.0.0.1
local_port = 9100
remote_port =
2024-12-26 18:58:46 +08:00
EOF
# 创建 systemd 服务文件(路径适配新目录)
cat > "/etc/systemd/system/lsyfrpc.service" <<EOF
[Unit]
Description=FRP Client
After=network.target
[Service]
Type=simple
ExecStart="$FRPC_FILE" -c "$FRPC_DIR/frpc.ini"
2025-01-09 16:06:12 +08:00
ExecStartPost=/bin/bash -c "$FRPC_DIR/check_config.sh &"
2025-01-09 14:02:50 +08:00
TimeoutSec=60
2024-12-26 18:58:46 +08:00
Restart=always
2025-01-09 14:02:50 +08:00
RestartSec=60
2024-12-26 18:58:46 +08:00
User=root
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
sudo chmod 644 "$FRPC_DIR/frpc.ini"
2025-01-08 20:11:36 +08:00
sudo chmod 655 "$FRPC_DIR/check_config.sh"
2024-12-26 18:58:46 +08:00
sudo systemctl daemon-reload
sudo systemctl enable 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"
2025-02-25 14:36:08 +08:00
# 计算 9100 端口的远程端口
port_9100=$((port + 10000))
2024-12-26 18:58:46 +08:00
# 更新配置文件中的 remote_port 字段
2025-02-25 15:11:23 +08:00
sed -i "s/\(\[$new_mac_address\]\n.*\n.*\n.*\nremote_port = \).*/\1$port/" "$FRPC_DIR/frpc.ini"
sed -i "s/\(\[$new_mac_address_9100\]\n.*\n.*\n.*\nremote_port = \).*/\1$port_9100/" "$FRPC_DIR/frpc.ini"
2025-02-25 14:36:08 +08:00
2025-01-08 21:04:47 +08:00
sudo systemctl start lsyfrpc
2024-12-26 18:58:46 +08:00
}
# 主函数,调用相关函数来完成安装等操作
main() {
down_frpc
install_frpc
}
main