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:
1 parent
5eafb99639
commit
98484ad220
3 files changed
+71
No files matched your search
@@ -89,6 +89,7 @@ cd ~/dotfiles
|
|||||||
- Создаёт `~/.claude/settings.local.json` с дефолтными model/effortLevel
|
- Создаёт `~/.claude/settings.local.json` с дефолтными model/effortLevel
|
||||||
- Защищает `settings.json` от перезаписи (`chmod 444`)
|
- Защищает `settings.json` от перезаписи (`chmod 444`)
|
||||||
- Автоматически добавляет подключение bash_custom в `~/.bashrc`
|
- Автоматически добавляет подключение bash_custom в `~/.bashrc`
|
||||||
|
- В WSL предлагает настроить автоматический резолв `hproxy.local` (см. ниже)
|
||||||
|
|
||||||
### Stow вручную
|
### Stow вручную
|
||||||
|
|
||||||
@@ -201,6 +202,40 @@ export ZAI_API_KEY="your_zai_api_key_here"
|
|||||||
|
|
||||||
Файл `~/.env.secrets` автоматически подгружается при старте shell.
|
Файл `~/.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
|
### VS Code Server в WSL
|
||||||
|
|
||||||
Файл `vscode/.vscode-server/server-env-setup` выполняется при каждом старте VS Code Server в WSL и делает две вещи:
|
Файл `vscode/.vscode-server/server-env-setup` выполняется при каждом старте VS Code Server в WSL и делает две вещи:
|
||||||
|
|||||||
+24
@@ -65,4 +65,28 @@ else
|
|||||||
info "Добавлено в ~/.bashrc: $BASHRC_LINE"
|
info "Добавлено в ~/.bashrc: $BASHRC_LINE"
|
||||||
fi
|
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 "Готово!"
|
info "Готово!"
|
||||||
Executable
+12
@@ -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
|
||||||
Reference in new issue
Block a user