diff --git a/docker-compose.client.yml b/docker-compose.client.yml index 26f0a3d..8162f77 100644 --- a/docker-compose.client.yml +++ b/docker-compose.client.yml @@ -1,11 +1,11 @@ services: - vpn-proxy-client: + harbor-connect: build: context: . dockerfile: Dockerfile.client args: SINGBOX_VERSION: ${SINGBOX_VERSION:-1.12.13} - container_name: vpn-proxy-client + container_name: harbor-connect environment: APP_MODE: client PORT: ${PORT:-3456} diff --git a/scripts/install-macos-client.sh b/scripts/install-macos-client.sh index fe24c72..fcdab37 100755 --- a/scripts/install-macos-client.sh +++ b/scripts/install-macos-client.sh @@ -8,15 +8,16 @@ COMPOSE_FILE="docker-compose.client.yml" DEFAULT_PROXY_PORT="8082" REQUESTED_PROXY_PORT="${VPN_PROXY_CLIENT_PORT:-}" REQUESTED_UI_PORT="${VPN_PROXY_CLIENT_UI_PORT:-${CLIENT_UI_PORT:-}}" -CLIENT_CONTAINER_NAME="vpn-proxy-client" +CLIENT_CONTAINER_NAME="harbor-connect" +LEGACY_CLIENT_CONTAINER_NAME="vpn-proxy-client" NETWORK_MONITOR_LABEL="com.dokril.harbor-connect.network" log() { - printf '[vpn-proxy-client] %s\n' "$*" + printf '[harbor-connect] %s\n' "$*" } die() { - printf '[vpn-proxy-client] error: %s\n' "$*" >&2 + printf '[harbor-connect] error: %s\n' "$*" >&2 exit 1 } @@ -67,7 +68,7 @@ published_port_conflicts() { while IFS= read -r line; do [ -n "$line" ] || continue case "$line" in - "${CLIENT_CONTAINER_NAME}"$'\t'*) ;; + "${CLIENT_CONTAINER_NAME}"$'\t'*|"${LEGACY_CLIENT_CONTAINER_NAME}"$'\t'*) ;; *) printf '%s\n' "$line" ;; esac done < <(docker ps --filter "publish=${port}" --format '{{.Names}} {{.Ports}}') @@ -86,7 +87,7 @@ assert_proxy_port_available() { return 0 fi - printf '[vpn-proxy-client] proxy port %s is already used:\n%s\n' \ + printf '[harbor-connect] proxy port %s is already used:\n%s\n' \ "$port" "$conflicts" >&2 die "choose another proxy port with VPN_PROXY_CLIENT_PORT= or stop the conflicting container" } @@ -101,7 +102,7 @@ assert_single_port_available() { return 0 fi - printf '[vpn-proxy-client] %s port %s is already used:\n%s\n' \ + printf '[harbor-connect] %s port %s is already used:\n%s\n' \ "$label" "$port" "$conflicts" >&2 die "choose another ${label} port or stop the conflicting container" } @@ -168,11 +169,11 @@ wait_for_client_ui() { sleep 1 done - printf '\n[vpn-proxy-client] client did not become ready at %s\n' "$ui_url" >&2 - printf '[vpn-proxy-client] docker compose status:\n' >&2 + printf '\n[harbor-connect] client did not become ready at %s\n' "$ui_url" >&2 + printf '[harbor-connect] docker compose status:\n' >&2 docker compose -f "$COMPOSE_FILE" ps >&2 || true - printf '\n[vpn-proxy-client] recent service logs:\n' >&2 - docker compose -f "$COMPOSE_FILE" logs --tail=120 vpn-proxy-client >&2 || true + printf '\n[harbor-connect] recent service logs:\n' >&2 + docker compose -f "$COMPOSE_FILE" logs --tail=120 harbor-connect >&2 || true die "client UI is not ready; see Docker status and logs above" } @@ -299,12 +300,12 @@ log "proxy port: 127.0.0.1:${PROXY_PORT}" install_network_monitor log "building and starting Docker client" -docker compose -f "$COMPOSE_FILE" up -d --build +docker compose -f "$COMPOSE_FILE" up -d --build --remove-orphans wait_for_client_ui cat < ( + {digit} + )); +} + function HarborBrand({ isGateway, gatewayAvailable, gatewayDirect, busy, onSetGatewayAuto }) { const [modeAnimating, setModeAnimating] = useState(false); const stopModeAnimationRef = useRef(false); @@ -213,6 +219,9 @@ export function ClientOverviewPage({ const proxyUrls = localProxyUrls(state?.proxyPort, gatewayAddress); const usage = subscriptionUsage(state?.userInfo); const duration = connectionDurationParts(state?.singboxStartedAt, now); + const connectionTitle = connected + ? gatewayDirect ? 'Gateway подключён' : 'VPN включён' + : 'Подключение выключено'; const [displayedUsed, setDisplayedUsed] = useState(usage.used); const hasUsage = Boolean( state?.userInfo && ['upload', 'download', 'total', 'expire'].some((key) => key in state.userInfo), @@ -513,10 +522,10 @@ export function ClientOverviewPage({
-

- {connected - ? gatewayDirect ? 'Gateway подключён' : 'VPN включён' - : 'Подключение выключено'} +

+ + +

{connected ? ( @@ -534,7 +543,7 @@ export function ClientOverviewPage({ > {String(duration.totalHours).padStart(2, '0')} :{String(duration.minutes.value).padStart(2, '0')} - :{String(duration.seconds.value).padStart(2, '0')} + :