| | #!/bin/bash |
| |
|
| | set -e |
| |
|
| | |
| | log() { |
| | echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" |
| | } |
| |
|
| | |
| | cleanup() { |
| | log "Performing frpc installation cleanup..." |
| | rm -rf /tmp/frp* |
| | } |
| |
|
| | |
| | trap cleanup EXIT |
| |
|
| | log "Starting frpc installation..." |
| |
|
| | log "Getting latest frpc version..." |
| | FRPC_VERSION=$(curl -s https://api.github.com/repos/fatedier/frp/releases/latest | \ |
| | grep -Po '"tag_name": "\K.*?(?=")') |
| |
|
| | if [ -z "${FRPC_VERSION}" ]; then |
| | log "ERROR: Failed to get frpc version" |
| | exit 1 |
| | fi |
| |
|
| | log "Latest frpc version: ${FRPC_VERSION}" |
| |
|
| | log "Downloading frpc ${FRPC_VERSION}..." |
| | DOWNLOAD_URL="https://github.com/fatedier/frp/releases/download/${FRPC_VERSION}/frp_${FRPC_VERSION#v}_linux_amd64.tar.gz" |
| | curl -fsSL "${DOWNLOAD_URL}" -o /tmp/frp.tar.gz |
| |
|
| | log "Extracting frpc..." |
| | tar -xzf /tmp/frp.tar.gz -C /tmp |
| |
|
| | log "Installing frpc binary..." |
| | EXTRACT_DIR="/tmp/frp_${FRPC_VERSION#v}_linux_amd64" |
| | if [ ! -f "${EXTRACT_DIR}/frpc" ]; then |
| | log "ERROR: frpc binary not found in extracted archive" |
| | exit 1 |
| | fi |
| |
|
| | mv "${EXTRACT_DIR}/frpc" /usr/local/bin/frpc |
| | chmod +x /usr/local/bin/frpc |
| |
|
| | log "Verifying frpc installation..." |
| | if command -v frpc >/dev/null 2>&1; then |
| | INSTALLED_VERSION=$(frpc --version 2>&1 | head -n1 || echo "Version check failed") |
| | log "frpc installed successfully: ${INSTALLED_VERSION}" |
| | else |
| | log "ERROR: frpc installation failed" |
| | exit 1 |
| | fi |
| |
|
| | log "frpc installation completed successfully" |
| |
|