start-relay-tcp.sh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #!/usr/bin/env bash
  2. set -euo pipefail
  3. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  4. source "$SCRIPT_DIR/runtime-lib.sh"
  5. TOKEN="${MYNETSPEEDER_RELAY_TCP_TOKEN:-${1:-}}"
  6. LISTEN_HOST="${MYNETSPEEDER_RELAY_TCP_HOST:-0.0.0.0}"
  7. LISTEN_PORT="${MYNETSPEEDER_RELAY_TCP_PORT:-9009}"
  8. INSTALL_DIR="${MYNETSPEEDER_INSTALL_DIR:-/opt/mynetspeeder}"
  9. INSTALL_PARENT="$(dirname "$INSTALL_DIR")"
  10. PACKAGE_NAME="$(basename "$INSTALL_DIR")"
  11. RUNTIME_USER="${MYNETSPEEDER_RELAY_TCP_USER:-mynetspeeder}"
  12. PID_FILE="/var/run/mynetspeeder-relay-tcp.pid"
  13. LOG_FILE="/var/log/mynetspeeder-relay-tcp.log"
  14. require_root
  15. if [[ -z "$TOKEN" ]]; then
  16. echo "missing tcp relay token"
  17. exit 1
  18. fi
  19. if ! [[ "$LISTEN_PORT" =~ ^[0-9]+$ ]]; then
  20. echo "listen port must be numeric"
  21. exit 1
  22. fi
  23. ensure_runtime_user "$RUNTIME_USER"
  24. ensure_log_file "$LOG_FILE" "$RUNTIME_USER"
  25. stop_pid_file "$PID_FILE" "relay-tcp --listen-host ${LISTEN_HOST} --listen-port ${LISTEN_PORT} --token ${TOKEN}"
  26. ARGV_JSON="$(python3 - <<'PY' "$PACKAGE_NAME" "$LISTEN_HOST" "$LISTEN_PORT" "$TOKEN"
  27. import json, sys
  28. package_name, listen_host, listen_port, token = sys.argv[1:]
  29. print(json.dumps([
  30. "python3", "-m", package_name, "relay-tcp",
  31. "--listen-host", listen_host,
  32. "--listen-port", listen_port,
  33. "--token", token,
  34. ]))
  35. PY
  36. )"
  37. start_python_service "$RUNTIME_USER" "$INSTALL_PARENT" "$INSTALL_PARENT" "$LOG_FILE" "$PID_FILE" \
  38. "relay-tcp --listen-host ${LISTEN_HOST} --listen-port ${LISTEN_PORT} --token ${TOKEN}" "$ARGV_JSON" >/dev/null
  39. if ! wait_for_tcp_listen "$LISTEN_HOST" "$LISTEN_PORT" 15; then
  40. tail -n 50 "$LOG_FILE" || true
  41. stop_pid_file "$PID_FILE" "relay-tcp --listen-host ${LISTEN_HOST} --listen-port ${LISTEN_PORT} --token ${TOKEN}"
  42. exit 1
  43. fi
  44. echo "tcp relay started on ${LISTEN_HOST}:${LISTEN_PORT}"