|
|
#!/bin/bash |
|
|
|
|
|
set -e |
|
|
|
|
|
|
|
|
log() { |
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [FRPC] $*" |
|
|
} |
|
|
|
|
|
log "Starting frpc (Fast Reverse Proxy Client)..." |
|
|
|
|
|
|
|
|
if [[ -z "${FRPC_SERVER_ADDR}" ]]; then |
|
|
log "ERROR: FRPC_SERVER_ADDR environment variable is required" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
if [[ -z "${FRPC_SERVER_PORT}" ]]; then |
|
|
export FRPC_SERVER_PORT=7000 |
|
|
log "Using default server port: ${FRPC_SERVER_PORT}" |
|
|
fi |
|
|
|
|
|
if [[ -z "${FRPC_AUTH_TOKEN}" ]]; then |
|
|
log "ERROR: FRPC_AUTH_TOKEN environment variable is required" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
log "Environment variables validated successfully" |
|
|
log "Server: ${FRPC_SERVER_ADDR}:${FRPC_SERVER_PORT}" |
|
|
log "Auth token: ${FRPC_AUTH_TOKEN:0:8}..." |
|
|
|
|
|
|
|
|
if [[ ! -f "/home/user/config/frpc.toml" ]]; then |
|
|
log "ERROR: frpc configuration template not found at /home/user/config/frpc.toml" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
log "Creating runtime configuration from template..." |
|
|
mkdir -p /home/user/log |
|
|
envsubst < /home/user/config/frpc.toml > /home/user/log/frpc_runtime.toml |
|
|
|
|
|
|
|
|
if ! command -v frpc &> /dev/null; then |
|
|
log "ERROR: frpc binary not found in PATH" |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
|
|
|
log "Validating frpc runtime configuration..." |
|
|
if ! frpc verify -c /home/user/log/frpc_runtime.toml; then |
|
|
log "ERROR: Invalid frpc runtime configuration" |
|
|
log "Generated configuration:" |
|
|
cat /home/user/log/frpc_runtime.toml |
|
|
exit 1 |
|
|
fi |
|
|
|
|
|
log "frpc runtime configuration is valid" |
|
|
|
|
|
|
|
|
if [[ "${FRPC_ENABLED:-true}" != "true" ]]; then |
|
|
log "frpc is disabled via FRPC_ENABLED environment variable" |
|
|
exit 0 |
|
|
fi |
|
|
|
|
|
|
|
|
log "Starting frpc with runtime configuration: /home/user/log/frpc_runtime.toml" |
|
|
exec frpc -c /home/user/log/frpc_runtime.toml |
|
|
|