Tagged: Proxy

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.