Files
dotfiles/bash/.bash_functions
T
ddadmin f5e8fec192 fix(bash): добавлена поддержка IPv6 и lower-case переменных в proxy_on/off
- Зачем:
  - локальные MCP/loopback-соединения уходили в SOCKS5 через hproxy.local из-за отсутствия IPv6 в NO_PROXY
  - Python-приложения не видели прокси-переменные в lower-case
- Что:
  - добавлены ::1 и [::1] в список NO_PROXY для IPv6 loopback
  - добавлены lower-case переменные (http_proxy, https_proxy, all_proxy, no_proxy)
  - функция proxy_off теперь сбрасывает все прокси-переменные
- Проверка:
  - source ~/.bash_functions && proxy_on && echo $NO_PROXY && proxy_off
2026-04-19 12:25:03 +03:00

55 lines
2.6 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 (только WSL NAT) ---
update_hproxy() {
local script
script="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/../scripts/setup-hproxy.sh"
if [ ! -f "$script" ]; then
echo "❌ Скрипт не найден: $script"
return 1
fi
if ! awk '/^\[boot\]$/{b=1;next} /^\[/{b=0} b && /^[[:space:]]*command[[:space:]]*=/ && /setup-hproxy\.sh/' \
"${WSL_CONF_PATH:-/etc/wsl.conf}" 2>/dev/null | grep -q .; then
echo "⚠️ Boot command не настроен — update_hproxy работает только для WSL NAT"
return 1
fi
if ! sudo "$script"; then
echo "❌ Ошибка обновления hproxy.local"
return 1
fi
echo "✅ hproxy.local -> $(getent hosts hproxy.local 2>/dev/null | awk '{print $1}')"
}
# Удобные функции-переключатели для терминала
# NO_PROXY: ::1 и [::1] нужны, т.к. localhost в dual-stack Linux резолвится в IPv6,
# и без них локальные MCP/loopback-соединения (chroma-mcp, claude-mem worker и т.п.)
# уходят в SOCKS5 через hproxy.local. Дублируем в lower-case no_proxy для Python-стека.
proxy_on() {
local no_proxy_list="hproxy.local,localhost,127.0.0.1,::1,[::1],.concept-software.ru"
export HTTP_PROXY="http://hproxy.local:12334"
export HTTPS_PROXY="http://hproxy.local:12334"
export ALL_PROXY="socks5://hproxy.local:12334"
export NO_PROXY="$no_proxy_list"
export http_proxy="$HTTP_PROXY"
export https_proxy="$HTTPS_PROXY"
export all_proxy="$ALL_PROXY"
export no_proxy="$no_proxy_list"
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 NO_PROXY
unset http_proxy https_proxy all_proxy no_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)"'