Kann ich in der Umgebung manuell mehrere Proxys festlegen?

Kann ich in der Umgebung manuell mehrere Proxys festlegen?

Betrachten Sie die folgende PAC-Datei:

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";
}

Gibt es eine Möglichkeit, diese Einstellungen in Umgebungsvariablen zu $http_proxyübertragen $no_proxy?

Antwort1

no_proxykönnte auf etwas wie gesetzt werden no_proxy="intranet.domain.com,*.local,...", aber ansonsten sind Umgebungsvariablen prozessbezogene Zeichenfolgen, sodass es keine Möglichkeit[†] gibt, a) die Logik dessen auszudrücken, was auch immer isInNetgeschieht, oder b) die Umgebung bestehender Prozesse zu aktualisieren, die einige alte und jetzt ungültige Zeichenfolgensätze haben. Sofern Sie nicht alle Ihre Prozesse beenden, einen neuen http_proxybasierend auf dem, was auch immer isInNetgeschieht, festlegen und dann alle Ihre Prozesse neu starten, sodass sie beim forkAusführen eine neue Kopie des neuen http_proxyvom übergeordneten Prozess erhalten.

Wenn Sie alle Prozesse unter Kontrolle haben, können Sie eine API zum Anpassen von Umgebungsvariablen schreiben. Dies schlägt fehl, wenn Sie forketwas tun, das nicht unter Ihrer Kontrolle ist (weil in diesem Prozess dann möglicherweise eine falsche Zeichenfolge festgelegt ist) und ist wahrscheinlich unnötig kompliziert im Vergleich zur Verwendung der vorhandenen Geschäftslogik.

[†] Nun, es gibt gdboder sonst Monkey Patching Speicher so keine einfache oder nicht verrückte Art und Weise

verwandte Informationen