- Зачем:
- копии списка в профилях разошлись: в PowerShell и VS Code не хватало
::1 и [::1], из-за чего один и тот же хост то шёл мимо прокси, то нет.
- Что:
- profile.ps1 и server-env-setup приведены к выдаче proxy-client.
- добавлен tests/test_proxy_env_sync.py — сверяет каждую копию с эталоном
DEFAULT_NO_PROXY_EXTRA и списки обхода Windows между собой.
- в файлах-копиях и README указан эталон и тест, который ловит расхождение.
- Проверка:
- python3 tests/test_proxy_env_sync.py (2 OK, на подложенном расхождении падает).
- python3 tests/test_proxy_client.py (54 OK), bash tests/test_proxy_launchers.sh (8 PASS).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
40 lines
1.6 KiB
Bash
Executable File
40 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Хук запуска сервера VS Code в WSL.
|
|
# Загружает приватные переменные окружения и настраивает прокси, если доступен hproxy.local.
|
|
|
|
secrets_file="$HOME/.env.secrets"
|
|
|
|
warn() {
|
|
printf 'server-env-setup: %s\n' "$1" >&2
|
|
}
|
|
|
|
# 1. Загрузка приватных секретов (API ключи и т.д.)
|
|
if [ -f "$secrets_file" ]; then
|
|
# shellcheck disable=SC1090
|
|
if ! source "$secrets_file"; then
|
|
warn "warning: не удалось загрузить $secrets_file"
|
|
fi
|
|
fi
|
|
|
|
# 2. Автоматическая настройка прокси, если hproxy.local резолвится
|
|
# Используем getent, так как имя может быть в /etc/hosts или в DNS (режим mirror)
|
|
if getent hosts hproxy.local >/dev/null 2>&1; then
|
|
proxy_url="http://hproxy.local:12334"
|
|
|
|
export HTTP_PROXY="$proxy_url"
|
|
export HTTPS_PROXY="$proxy_url"
|
|
export ALL_PROXY="socks5://hproxy.local:12334"
|
|
# Список обязан совпадать с выдачей proxy-client (DEFAULT_NO_PROXY_EXTRA);
|
|
# расхождение ловит tests/test_proxy_env_sync.py.
|
|
export NO_PROXY="hproxy.local,localhost,127.0.0.1,::1,[::1],.concept-software.ru,dementev.space,.dementev.space"
|
|
|
|
# Дублируем в нижнем регистре для лучшей совместимости с инструментами
|
|
export http_proxy="$HTTP_PROXY"
|
|
export https_proxy="$HTTPS_PROXY"
|
|
export all_proxy="$ALL_PROXY"
|
|
export no_proxy="$NO_PROXY"
|
|
fi
|
|
|
|
return 0 2>/dev/null || exit 0
|