mirror of
https://github.com/Mo3he/Axis_Cam_Tailscale.git
synced 2026-09-26 01:34:15 +00:00
77 lines
2.2 KiB
Bash
77 lines
2.2 KiB
Bash
#!/bin/sh
|
|
# Tailscale VPN run script — called by the param_bridge C binary.
|
|
# Config is sourced from $STATE_DIR/params.conf (written by param_bridge).
|
|
killall tailscaled 2>/dev/null || true
|
|
|
|
APP_DIR="/usr/local/packages/Tailscale_VPN"
|
|
STATE_DIR="$APP_DIR/localdata"
|
|
TAILSCALED_PATH="$APP_DIR/lib/tailscaled"
|
|
TAILSCALE_PATH="$APP_DIR/lib/tailscale"
|
|
SOCKET_PATH="$STATE_DIR/tailscaled.sock"
|
|
|
|
mkdir -p "$STATE_DIR"
|
|
chmod 755 $TAILSCALED_PATH
|
|
chmod 755 $TAILSCALE_PATH
|
|
|
|
# Defaults — overridden by sourcing params.conf written by param_bridge
|
|
CUSTOM_SERVER=""
|
|
AUTH_KEY=""
|
|
CONF_HTTP="8080"
|
|
CONF_SOCKS="1080"
|
|
|
|
if [ -f "$STATE_DIR/params.conf" ]; then
|
|
. "$STATE_DIR/params.conf"
|
|
fi
|
|
|
|
logger -t "Tailscale_VPN" "Starting: http_port=$CONF_HTTP socks_port=$CONF_SOCKS custom_server=${CUSTOM_SERVER:-(default)}"
|
|
|
|
# Check whether a TCP port is already bound
|
|
is_port_in_use() {
|
|
local port=$1
|
|
local hex_port
|
|
hex_port=$(printf '%04X' "$port")
|
|
grep -q ":${hex_port} " /proc/net/tcp 2>/dev/null && return 0
|
|
grep -q ":${hex_port} " /proc/net/tcp6 2>/dev/null && return 0
|
|
return 1
|
|
}
|
|
|
|
if is_port_in_use "$CONF_HTTP"; then
|
|
logger -t "Tailscale_VPN" "ERROR: HTTP proxy port $CONF_HTTP is already in use. Change it in Settings."
|
|
exit 1
|
|
fi
|
|
if is_port_in_use "$CONF_SOCKS"; then
|
|
logger -t "Tailscale_VPN" "ERROR: SOCKS5 port $CONF_SOCKS is already in use. Change it in Settings."
|
|
exit 1
|
|
fi
|
|
|
|
logger -t "Tailscale_VPN" "Starting tailscaled daemon"
|
|
$TAILSCALED_PATH \
|
|
--state="$STATE_DIR/tailscaled.state" \
|
|
--socket=$SOCKET_PATH \
|
|
--socks5-server=localhost:$CONF_SOCKS \
|
|
--outbound-http-proxy-listen=localhost:$CONF_HTTP \
|
|
--tun=userspace-networking \
|
|
>/dev/null 2>&1 &
|
|
TAILSCALED_PID=$!
|
|
|
|
sleep 2
|
|
|
|
TAILSCALE_CMD="$TAILSCALE_PATH --socket=$SOCKET_PATH up --hostname=$(hostname)"
|
|
|
|
if [ -n "$CUSTOM_SERVER" ]; then
|
|
TAILSCALE_CMD="$TAILSCALE_CMD --login-server $CUSTOM_SERVER"
|
|
fi
|
|
|
|
if [ -n "$AUTH_KEY" ]; then
|
|
TAILSCALE_CMD="$TAILSCALE_CMD --authkey $AUTH_KEY"
|
|
fi
|
|
|
|
eval $TAILSCALE_CMD
|
|
UP_EXIT=$?
|
|
|
|
logger -t "Tailscale_VPN" "Tailscale VPN is running"
|
|
logger -t "Tailscale_VPN" "HTTP/HTTPS proxy: http://127.0.0.1:$CONF_HTTP"
|
|
logger -t "Tailscale_VPN" "SOCKS5 proxy: 127.0.0.1:$CONF_SOCKS"
|
|
|
|
wait $TAILSCALED_PID
|