Simplify client proxy port handling
This commit is contained in:
@@ -59,15 +59,6 @@ ask_proxy_port() {
|
||||
printf '%s\n' "$DEFAULT_PROXY_PORT"
|
||||
}
|
||||
|
||||
port_range_end() {
|
||||
local start="$1"
|
||||
local end="$((start + 10))"
|
||||
if [ "$end" -gt 65535 ]; then
|
||||
end=65535
|
||||
fi
|
||||
printf '%s\n' "$end"
|
||||
}
|
||||
|
||||
published_port_conflicts() {
|
||||
local port="$1"
|
||||
local line
|
||||
@@ -82,18 +73,7 @@ published_port_conflicts() {
|
||||
}
|
||||
|
||||
proxy_port_conflicts() {
|
||||
local start="$1"
|
||||
local end
|
||||
local port
|
||||
local conflicts
|
||||
|
||||
end="$(port_range_end "$start")"
|
||||
for port in $(seq "$start" "$end"); do
|
||||
conflicts="$(published_port_conflicts "$port")"
|
||||
if [ -n "$conflicts" ]; then
|
||||
printf 'port %s: %s\n' "$port" "$conflicts"
|
||||
fi
|
||||
done
|
||||
published_port_conflicts "$1"
|
||||
}
|
||||
|
||||
assert_proxy_port_available() {
|
||||
@@ -105,8 +85,8 @@ assert_proxy_port_available() {
|
||||
return 0
|
||||
fi
|
||||
|
||||
printf '[vpn-proxy-client] proxy port range %s-%s is already used:\n%s\n' \
|
||||
"$port" "$(port_range_end "$port")" "$conflicts" >&2
|
||||
printf '[vpn-proxy-client] proxy port %s is already used:\n%s\n' \
|
||||
"$port" "$conflicts" >&2
|
||||
die "choose another proxy port with VPN_PROXY_CLIENT_PORT=<port> or stop the conflicting container"
|
||||
}
|
||||
|
||||
@@ -170,8 +150,8 @@ choose_ui_port() {
|
||||
}
|
||||
|
||||
assert_ui_outside_proxy_range() {
|
||||
if [ "$UI_PORT" -ge "$PROXY_PORT" ] && [ "$UI_PORT" -le "$PROXY_PORT_END" ]; then
|
||||
die "UI port ${UI_PORT} overlaps proxy port range ${PROXY_PORT}-${PROXY_PORT_END}"
|
||||
if [ "$UI_PORT" = "$PROXY_PORT" ]; then
|
||||
die "UI port ${UI_PORT} overlaps proxy port"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -181,7 +161,7 @@ wait_for_client_ui() {
|
||||
local attempt
|
||||
|
||||
for attempt in $(seq 1 30); do
|
||||
if curl -fsS "$ui_url" >/dev/null 2>&1; then
|
||||
if curl --noproxy "*" -fsS "$ui_url" >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
sleep 1
|
||||
@@ -254,7 +234,7 @@ fi
|
||||
|
||||
PROXY_PORT="$(ask_proxy_port)"
|
||||
assert_proxy_port_available "$PROXY_PORT"
|
||||
PROXY_PORT_END="$(port_range_end "$PROXY_PORT")"
|
||||
PROXY_PORT_END="$PROXY_PORT"
|
||||
UI_PORT="${REQUESTED_UI_PORT:-$(get_env_value CLIENT_UI_PORT)}"
|
||||
UI_PORT="${UI_PORT:-3456}"
|
||||
UI_PORT="$(choose_ui_port "$UI_PORT")"
|
||||
@@ -268,7 +248,7 @@ set_env_value CLIENT_PROXY_PORT_END "$PROXY_PORT_END"
|
||||
set_env_value PROXY_PORT "$PROXY_PORT"
|
||||
|
||||
log "UI port: http://127.0.0.1:${UI_PORT}"
|
||||
log "proxy port: 127.0.0.1:${PROXY_PORT} (reserved range ${PROXY_PORT}-${PROXY_PORT_END})"
|
||||
log "proxy port: 127.0.0.1:${PROXY_PORT}"
|
||||
|
||||
log "building and starting Docker client"
|
||||
docker compose -f "$COMPOSE_FILE" up -d --build
|
||||
@@ -283,7 +263,7 @@ UI:
|
||||
|
||||
Proxy:
|
||||
HTTP/SOCKS5 127.0.0.1:${PROXY_PORT}
|
||||
UI can switch proxy port within the Docker-published ${PROXY_PORT}-${PROXY_PORT_END} range.
|
||||
This is the only Docker-published proxy port. Re-run the installer with VPN_PROXY_CLIENT_PORT=<port> to change it.
|
||||
|
||||
Useful commands:
|
||||
cd ~/.vpn-proxy-client
|
||||
|
||||
Reference in New Issue
Block a user