diff --git a/TODO.md b/TODO.md index 4640904..a240ca9 100644 --- a/TODO.md +++ b/TODO.md @@ -1 +1,30 @@ # TODO + +## proxy-client: список NO_PROXY дублируется на Windows + +Источник истины — `DEFAULT_NO_PROXY_EXTRA` в +`proxy-client/.local/bin/proxy-client`. На Linux он расходится автоматически: +`shell.bash` в `proxy_on()` вызывает `proxy-client env` и экспортирует то, что +вернули. На Windows автоматики нет — список продублирован литералом в пяти +файлах: + +- `chezmoi/dot_config/powershell/profile.ps1` +- `chezmoi/dot_local/bin/start-claude-proxy.ps1` +- `chezmoi/dot_local/bin/start-codex-proxy.ps1` +- `chezmoi/dot_codex/dot_env` (в двух регистрах) +- `vscode/.vscode-server/server-env-setup` + +Связь держится комментарием «список обязан совпадать», а не проверкой: +`tests/test_proxy_launchers.sh` гоняет механику на подставных значениях +(`proxy.test`, `.example.test`) и синхронность копий с источником не утверждает. +Рассинхрон проходит молча и всплывает как оборванное соединение. + +Что сделать: + +- тест, сравнивающий литералы в пяти файлах с выдачей `proxy-client env` — + закрывает класс целиком, а не отдельный домен; +- решить, должен ли `no_proxy_extra` из машинного конфига **дополнять** + `DEFAULT_NO_PROXY_EXTRA`, а не замещать его (сейчас замещает — + `proxy-client:262`, `environment_values()` клеит только loopback и + `config.no_proxy_extra`). До решения замещение помечено предупреждением в + README и в обоих примерах конфига. diff --git a/proxy-client/.config/proxy-client/examples/config.external b/proxy-client/.config/proxy-client/examples/config.external index 1a077ff..37047de 100644 --- a/proxy-client/.config/proxy-client/examples/config.external +++ b/proxy-client/.config/proxy-client/examples/config.external @@ -3,4 +3,6 @@ type = external name = Hiddify address = hproxy.local port = 12334 +# Внимание: no_proxy_extra ЗАМЕЩАЕТ DEFAULT_NO_PROXY_EXTRA целиком, а не +# дополняет его — перечисляйте здесь все нужные домены, включая рабочие. no_proxy_extra = .example.internal,git.example.internal diff --git a/proxy-client/.config/proxy-client/examples/config.xray b/proxy-client/.config/proxy-client/examples/config.xray index 55e9cc9..c5eb7ac 100644 --- a/proxy-client/.config/proxy-client/examples/config.xray +++ b/proxy-client/.config/proxy-client/examples/config.xray @@ -3,4 +3,6 @@ type = xray name = Local Xray address = 127.0.0.1 port = 12334 +# Внимание: no_proxy_extra ЗАМЕЩАЕТ DEFAULT_NO_PROXY_EXTRA целиком, а не +# дополняет его — перечисляйте здесь все нужные домены, включая рабочие. no_proxy_extra = .example.internal,git.example.internal diff --git a/proxy-client/README.md b/proxy-client/README.md index 1166da2..b5b9a3c 100644 --- a/proxy-client/README.md +++ b/proxy-client/README.md @@ -329,8 +329,9 @@ source ~/.config/proxy-client/shell.bash - `address` — IPv4, IPv6 без квадратных скобок или ASCII DNS-имя без схемы и порта; - `port` — TCP-порт локального входа; -- `no_proxy_extra` — дополнительные IP и домены через запятую, значение может - быть пустым. +- `no_proxy_extra` — IP и домены через запятую, значение может быть пустым. + Список **замещает** встроенный `DEFAULT_NO_PROXY_EXTRA` целиком, а не + дополняет его: домены, нужные постоянно, придётся перечислить здесь заново. Поддержка CIDR в `NO_PROXY` различается между программами, поэтому надёжнее указывать точные IP и домены. Без машинного файла внешний режим дополнительно