- Зачем: - локальные 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
55 lines
2.6 KiB
Bash
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)"'
|
|
|