feat(wsl): добавлен boot-скрипт для автоматического резолва hproxy.local

- Зачем:
  - старая команда в wsl.conf дублировала записи в /etc/hosts при каждом ребуте.
  - настройка hproxy.local не была задокументирована в репозитории.
- Что:
  - создан идемпотентный скрипт scripts/setup-hproxy.sh (sed + append).
  - в install.sh добавлен интерактивный вопрос о подключении скрипта в wsl.conf.
  - в README.md добавлена документация по настройке hproxy.local (NAT и Mirror).
- Проверка:
  - cat /etc/wsl.conf, wsl --shutdown, getent hosts hproxy.local.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ddadminandClaude Opus 4.6 committed 2026-03-18 11:11:03 +03:00
1 parent 5eafb99639
commit 98484ad220
3 files changed
+71

No files matched your search

+35
View File
@@ -89,6 +89,7 @@ cd ~/dotfiles
- Создаёт `~/.claude/settings.local.json` с дефолтными model/effortLevel
- Защищает `settings.json` от перезаписи (`chmod 444`)
- Автоматически добавляет подключение bash_custom в `~/.bashrc`
- В WSL предлагает настроить автоматический резолв `hproxy.local` (см. ниже)
### Stow вручную
@@ -201,6 +202,40 @@ export ZAI_API_KEY="your_zai_api_key_here"
Файл `~/.env.secrets` автоматически подгружается при старте shell.
### WSL: настройка hproxy.local
Имя `hproxy.local` используется как алиас для хоста, на котором работает прокси-сервер. Это позволяет функциям `proxy_on`/`proxy_off` и VS Code Server не зависеть от конкретного IP-адреса.
**NAT mode** (по умолчанию в WSL2) — IP шлюза меняется при каждом запуске, поэтому нужен автоматический boot-скрипт:
```bash
# Вариант 1: через install.sh (интерактивно)
./install.sh # ответьте "y" на вопрос про wsl.conf
# Вариант 2: вручную
sudo tee -a /etc/wsl.conf <<'EOF'
[boot]
command = "/path/to/dotfiles/scripts/setup-hproxy.sh"
EOF
```
После изменения `wsl.conf` перезапустите WSL: `wsl --shutdown`.
Обновить `hproxy.local` без перезапуска WSL:
```bash
sudo scripts/setup-hproxy.sh
# или
update_hproxy # интерактивная функция из .bash_functions
```
**Mirror mode** (`networkingMode=mirrored` в `.wslconfig`) — WSL разделяет сетевой стек с хостом, IP не меняется. Достаточно один раз прописать запись в Windows hosts:
```
# C:\Windows\System32\drivers\etc\hosts
192.168.1.100 hproxy.local
```
### VS Code Server в WSL
Файл `vscode/.vscode-server/server-env-setup` выполняется при каждом старте VS Code Server в WSL и делает две вещи:
+24
View File
@@ -65,4 +65,28 @@ else
info "Добавлено в ~/.bashrc: $BASHRC_LINE"
fi
# --- WSL: hproxy.local (автоматический резолв при старте) ---
if [ -n "${WSL_DISTRO_NAME:-}" ]; then
HPROXY_SCRIPT="$DOTFILES_DIR/scripts/setup-hproxy.sh"
if grep -q "hproxy.local" /etc/wsl.conf 2>/dev/null; then
warn "/etc/wsl.conf уже содержит hproxy.local, пропускаю"
else
echo ""
info "Обнаружен WSL. Скрипт $HPROXY_SCRIPT может автоматически"
info "прописывать hproxy.local в /etc/hosts при каждом старте WSL (NAT mode)."
echo -ne "${YELLOW}[?]${NC} Добавить boot command в /etc/wsl.conf? [y/N] "
read -r answer
if [[ "$answer" =~ ^[Yy]$ ]]; then
# Добавляем [boot] секцию, если её нет
if ! grep -q '^\[boot\]' /etc/wsl.conf 2>/dev/null; then
printf '\n[boot]\n' | sudo tee -a /etc/wsl.conf > /dev/null
fi
sudo sed -i "/^\[boot\]/a command = \"$HPROXY_SCRIPT\"" /etc/wsl.conf
info "Добавлено в /etc/wsl.conf. Перезапустите WSL: wsl --shutdown"
else
warn "Пропущено. Можно настроить вручную — см. README.md"
fi
fi
fi
info "Готово!"
+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
# Прописывает hproxy.local в /etc/hosts (WSL NAT mode).
# Gateway IP WSL = адрес хоста, на котором слушает прокси.
#
# Использование:
# Вручную: sudo ./setup-hproxy.sh
# При старте WSL — добавить в /etc/wsl.conf:
# [boot]
# command = "/path/to/setup-hproxy.sh"
sed -i '/hproxy.local/d' /etc/hosts
ip route show default | awk '{print $3 " hproxy.local"}' >> /etc/hosts