Рассмотрим следующий PAC-файл:
function FindProxyForURL(url, host) {
if (dnsDomainIs(host, "intranet.domain.com"))
return "DIRECT";
if (isInNet(myIpAddress(), "10.10.5.0", "255.255.255.0"))
return "PROXY 1.2.3.4:8080";
return "PROXY 4.5.6.7:8080; PROXY 7.8.9.10:8080";
}
Есть ли способ перенести эти настройки в $http_proxy
переменные $no_proxy
среды?
решение1
no_proxy
можно установить что-то вроде , no_proxy="intranet.domain.com,*.local,..."
но в противном случае переменные окружения являются строками для каждого процесса, поэтому нет способа[†] а) выразить логику того, что isInNet
делает, или б) обновить окружение существующих процессов, которые имеют какой-то старый и теперь недействительный набор строк. Если вы не убиваете все свои процессы, установите новый http_proxy
на основе того, что isInNet
делает, а затем перезапустите все свои процессы, чтобы они fork
получили новую копию нового http_proxy
от родительского процесса.
Если все процессы находятся под вашим контролем, вы можете написать API для настройки переменных окружения. Это не сработает, если вы fork
что-то не контролируете (потому что тогда в этом процессе может быть установлена неверная строка) и, вероятно, будет излишне сложным по сравнению с использованием существующей бизнес-логики.
[†] ну, есть gdb
или иным образом обезьяна патчит память, так что нет легкого или не безумного способа