| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/usr/bin/env bash
- set -euo pipefail
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- source "$SCRIPT_DIR/runtime-lib.sh"
- TOKEN="${MYNETSPEEDER_RELAY_UDP_TOKEN:-${1:-}}"
- LISTEN_HOST="${MYNETSPEEDER_RELAY_UDP_HOST:-0.0.0.0}"
- LISTEN_PORT="${MYNETSPEEDER_RELAY_UDP_PORT:-9010}"
- INSTALL_DIR="${MYNETSPEEDER_INSTALL_DIR:-/opt/mynetspeeder}"
- INSTALL_PARENT="$(dirname "$INSTALL_DIR")"
- PACKAGE_NAME="$(basename "$INSTALL_DIR")"
- RUNTIME_USER="${MYNETSPEEDER_RELAY_UDP_USER:-mynetspeeder}"
- PID_FILE="/var/run/mynetspeeder-relay-udp.pid"
- LOG_FILE="/var/log/mynetspeeder-relay-udp.log"
- require_root
- if [[ -z "$TOKEN" ]]; then
- echo "missing udp relay token"
- exit 1
- fi
- if ! [[ "$LISTEN_PORT" =~ ^[0-9]+$ ]]; then
- echo "listen port must be numeric"
- exit 1
- fi
- ensure_runtime_user "$RUNTIME_USER"
- ensure_log_file "$LOG_FILE" "$RUNTIME_USER"
- stop_pid_file "$PID_FILE" "relay-udp --listen-host ${LISTEN_HOST} --listen-port ${LISTEN_PORT} --token ${TOKEN}"
- ARGV_JSON="$(python3 - <<'PY' "$PACKAGE_NAME" "$LISTEN_HOST" "$LISTEN_PORT" "$TOKEN"
- import json, sys
- package_name, listen_host, listen_port, token = sys.argv[1:]
- print(json.dumps([
- "python3", "-m", package_name, "relay-udp",
- "--listen-host", listen_host,
- "--listen-port", listen_port,
- "--token", token,
- ]))
- PY
- )"
- start_python_service "$RUNTIME_USER" "$INSTALL_PARENT" "$INSTALL_PARENT" "$LOG_FILE" "$PID_FILE" \
- "relay-udp --listen-host ${LISTEN_HOST} --listen-port ${LISTEN_PORT} --token ${TOKEN}" "$ARGV_JSON" >/dev/null
- if ! wait_for_tcp_listen "$LISTEN_HOST" "$LISTEN_PORT" 15; then
- tail -n 50 "$LOG_FILE" || true
- stop_pid_file "$PID_FILE" "relay-udp --listen-host ${LISTEN_HOST} --listen-port ${LISTEN_PORT} --token ${TOKEN}"
- exit 1
- fi
- echo "udp relay started on ${LISTEN_HOST}:${LISTEN_PORT}"
|