refactor(wsl): унифицирована логика hproxy.local и добавлена миграция legacy boot command
- Зачем:
- setup-hproxy.sh удалял запись из hosts до проверки gateway — при ошибке hosts ломался.
- update_hproxy() дублировала логику скрипта с багами и не тестировалась.
- legacy inline boot command в wsl.conf не мигрировался автоматически.
- Что:
- setup-hproxy.sh: безопасный порядок (gateway → hosts), set -e, экранированная точка в sed.
- update_hproxy() заменена на thin wrapper с проверкой wsl.conf и ошибок sudo.
- install.sh: интерактивная замена legacy boot command, детекция существующих [boot] command,
принимает русскую «у» наравне с «y».
- README.md: описаны три сценария (WSL NAT, WSL mirrored — host-side resolution, native Linux).
- добавлены тесты: existing boot command preserved, legacy command migration hint.
- Проверка:
- bash tests/test_install.sh
- ./install.sh (интерактивно, ответить «y» на миграцию legacy command)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
1963b6a117
commit
898db1098d
5 files changed
+131
-66
No files matched your search
@@ -113,13 +113,21 @@ EOF
|
||||
|
||||
После изменения `wsl.conf` — `wsl --shutdown`. Обновить без перезапуска: `sudo scripts/setup-hproxy.sh` или `update_hproxy`.
|
||||
|
||||
**WSL Mirror mode** (`networkingMode=mirrored`) — IP не меняется, достаточно одной записи:
|
||||
**WSL mirrored mode** (`networkingMode=mirrored`) — имя резолвится из WSL через DNS/hosts хоста. Достаточно записи на стороне Windows:
|
||||
|
||||
```
|
||||
# C:\Windows\System32\drivers\etc\hosts
|
||||
192.168.1.100 hproxy.local
|
||||
```
|
||||
|
||||
Проверка: `getent hosts hproxy.local` (запись в Linux `/etc/hosts` не обязательна).
|
||||
|
||||
**Native Linux** — прокси на localhost, нужна запись в `/etc/hosts`:
|
||||
|
||||
```bash
|
||||
echo '127.0.0.1 hproxy.local' | sudo tee -a /etc/hosts
|
||||
```
|
||||
|
||||
**VS Code Server** — `vscode/.vscode-server/server-env-setup` автоматически подхватывает `hproxy.local` и выставляет все proxy-переменные (HTTP_PROXY, HTTPS_PROXY, ALL_PROXY, NO_PROXY и lowercase-варианты). Если `hproxy.local` не резолвится — прокси не включается, запуск не блокируется.
|
||||
|
||||
**Windows pwsh** — `proxy_on` / `proxy_off` / `myip` работают аналогично bash-версиям.
|
||||
@@ -161,7 +169,7 @@ EOF
|
||||
| `proxy_on` | Включает HTTP/HTTPS/SOCKS5 прокси через `hproxy.local:12334` |
|
||||
| `proxy_off` | Очищает proxy-переменные |
|
||||
| `myip` | Показывает текущий внешний IP |
|
||||
| `update_hproxy` | Обновляет `hproxy.local` в `/etc/hosts` (WSL NAT mode) |
|
||||
| `update_hproxy` | Обновляет `hproxy.local` в `/etc/hosts` через `setup-hproxy.sh` (WSL NAT) |
|
||||
|
||||
### PowerShell-функции (`~/.config/powershell/profile.ps1`)
|
||||
|
||||
|
||||
Reference in new issue
Block a user