Могу ли я вручную настроить несколько прокси-серверов в среде?

Могу ли я вручную настроить несколько прокси-серверов в среде?

Рассмотрим следующий 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или иным образом обезьяна патчит память, так что нет легкого или не безумного способа

Связанный контент