proxy.pac

Sitter och väntar på en installation (av OpsMgr 2007… !) och passade på att reda ut lite om PAC-file under tiden… pratade med en kund om detta igår…

Om du tar javascript-filen som finns nedan och klipper in den i en fil som heter wpad.dat och lägger upp den på någon lämplig webserver.
Sen pekar du ut ett c-name (mot den servern, *doh*) som blir wpad.mindomän.se eller vart nu era klienter sitter (wpad.klient.domänen.net) så kommer automatiska inställningarna för proxy fungera finfint (Internet Explorer).

Ett alternativ är att klippa in den i en fil som heter proxy.pac och lägga upp den på en webbserver. Sen pekar man ut den flien som proxy-inställningsfil mha en gpo.

Det man måste göra på webbservern är att lägga till en mime-type så att .pac blir application/x-ns-proxy-autoconfig.
IIS’ens tjänstehanterare och väljer egenskaper för den aktuella webb-platsen.
- Välj filken http Headers
- Tryck på File Types
- Skriv in .PAC och application/x-ns-proxy-autoconfig
… ok, ok… ok ok ok … fix färdigt…

Fördelen med wpad-grejjen är att bärbara klienter inte får någon proxy när dom sitter hemma eller på något annat nät…

function FindProxyForURL(url, host) {
        // Sätter variabler
        var stdProxy = "PROXY 192.168.100.10:8080; DIRECT";
        var noProxy = "DIRECT";

        var clientIP = myIpAddress();

        // Mot lokal maskinen
        if (dnsDomainIs(host, "localhost")) { return noProxy; }
        if (isInNet(host,"127.0.0.1","255.255.255.255")) { return noProxy; }
        if (isInNet(host,clientIP,"255.255.255.255")) { return noProxy; }

        // Servrar innanför egna domänen
        if (shExpMatch(host,"*.mindomän.se")) { return noProxy; }
        if (shExpMatch(host,"*.minandradomän.se")) { return noProxy; }

        // Lokala servrar
        if (isPlainHostName(host)) { return noProxy; }
        if (shExpMatch(url, "http://minserver*")) { return noProxy; }

        // Direkt till vissa nät
        if (isInNet(host,"123.1.1.0","255.255.255.0")) { return noProxy; }
        if (isInNet(host,"123.123.123.0","255.255.255.0")) { return noProxy; }

        // Skicka till windows update utan proxy
        if ((url.substring(0, 6) == "https:") && (!dnsDomainIs(host,"windowsupdate.microsoft.com"))) { return noProxy; }

        // Skicka alla andra till proxy
        return stdProxy;
}

Jag har inte testat den här PAC-filen, men det är ett ganska bra-att-ha-exempel i alla fall. :-)

Edit 2007-02-05: Rättat upp lite små-fel i koden, saknade lite parenteser.