Files
dotfiles/bash/.bash_functions
T
ddadmin 984db1b6d7 feat(dotfiles): улучшена установка и управление конфигурацией
- Зачем:
  - нужен воспроизводимый способ установки на новую машину и защита от перезаписи tracked-файлов ИИ-инструментами.
- Что:
  - добавлен install.sh: stow всех пакетов, создание settings.local.json, chmod 444 на settings.json, автопатч .bashrc.
  - claude/settings.json разделён на базовый (permissions, statusLine) и локальный (model, effortLevel в settings.local.json).
  - добавлен .concept-software.ru в NO_PROXY в server-env-setup и bash_functions.
  - README переработан: install.sh как рекомендуемый способ, документация двухуровневых настроек Claude, Developer Mode hint, расширенное описание VS Code прокси.
- Проверка:
  - git clone + ./install.sh на чистой машине.
2026-03-14 11:31:10 +03:00

68 lines
3.1 KiB
Bash

# --- Proxy Settings ---
# Переменные для прокси по умолчанию (если нужно, чтобы он был включен всегда)
# export HTTP_PROXY="http://127.0.0.1:10809"
# export HTTPS_PROXY="http://127.0.0.1:10809"
# --- WSL Host Update ---
update_hproxy() {
echo "🔄 Обновление IP-адреса для hproxy.local..."
local host_ip=""
local wslconfig=$(ls /mnt/c/Users/*/.wslconfig 2>/dev/null | head -n 1)
local win_hosts="/mnt/c/Windows/System32/drivers/etc/hosts"
# Проверяем наличие параметра networkingMode=mirror в конфиге Windows
if [ -f "$wslconfig" ] && grep -qiE '^[[:space:]]*networkingMode[[:space:]]*=[[:space:]]*mirror' "$wslconfig"; then
echo "🔍 Обнаружен режим Mirror."
# Читаем hosts из Windows
if [ -f "$win_hosts" ] && grep -qiw "hproxy.local" "$win_hosts"; then
# Извлекаем IP (первый столбец) и чистим от виндовых символов возврата каретки (\r)
host_ip=$(grep -iw "hproxy.local" "$win_hosts" | awk '{print $1}' | tr -d '\r' | head -n 1)
echo "📂 Взят IP из Windows hosts: $host_ip"
else
# Фолбэк на случай, если записи в Windows нет
host_ip="127.0.0.1"
echo "⚠️ Запись hproxy.local в Windows hosts не найдена, используем дефолтный $host_ip"
fi
else
echo "🔍 Обнаружен режим NAT."
# Формируем IP на лету из маршрута по умолчанию
host_ip=$(ip route show default | awk '{print $3}')
echo "🌐 Вычислен IP шлюза WSL: $host_ip"
fi
if [ -z "$host_ip" ]; then
echo "❌ Ошибка: Не удалось определить IP-адрес."
return 1
fi
# Обновляем /etc/hosts в Ubuntu
sudo sed -i '/hproxy.local/d' /etc/hosts
echo "$host_ip hproxy.local" | sudo tee -a /etc/hosts > /dev/null
echo "✅ Готово! hproxy.local теперь указывает на $host_ip"
}
# Удобные функции-переключатели для терминала
proxy_on() {
export HTTP_PROXY="http://hproxy.local:12334"
export HTTPS_PROXY="http://hproxy.local:12334"
export ALL_PROXY="socks5://hproxy.local:12334"
export NO_PROXY="hproxy.local,localhost,127.0.0.1,.concept-software.ru"
echo "✅ Proxy enabled. Checking route..."
# Подставляем результат выполнения curl прямо в строку
echo "🌍 Current IP: $(curl -s --max-time 3 https://ifconfig.me)"
}
proxy_off() {
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
echo "❌ Proxy disabled. Checking route..."
echo "🏠 Current IP: $(curl -s --max-time 3 https://ifconfig.me)"
}
# Заодно можно добавить алиас, чтобы быстро чекать IP в любой момент без переключения
alias myip='echo "IP: $(curl -s --max-time 3 https://ifconfig.me)"'