Delegieren lernen

Wer kennt es nicht. Kollegen und Vorgesetzte fragen nach den Verbindungseinstellungen ihres Browsers der Stunde, oder Betriebssystems. Der Hinweis auf das obligatorische Firmen-Wiki wird gerne und ausgiebig ignoriert. Das Diktieren von Zahlen und Punkten macht auch nicht wirklich Spaß. Abhilfe kann hier ein sehr einfaches ‚auto-config‘-Skript schaffen. Es lässt sich einfach über einen internen (oder ggf. externen) Webserver an Clients im Unternehmen ausbringen. Damit müssen Clients nicht mehr manuell angewiesen werden.


Nach wie vor in der Verantwortung des Administrators bleibt allerdings das Ausbringen zu den Clients. In einem finalen Schritt kann das Skript bspw über eine Group Policy im (Windows) Netzwerk verteilt werden.

// Proxy Auto Configuration
// author   chris moeser
// version  1.1.1129

// ---- everything not served by a proxy service is called DIRECT
var direct      = "DIRECT";

// ---- several services/daemons of delegated listening on different ports
//      expecting different protocols
var dele8080    = "PROXY 10.2.4.2:8080";  // HTTP
var dele9090    = "PROXY 10.2.4.2:9090";  // HTTPS
var dele8021    = "PROXY 10.2.4.2:8021";  // FTP
var dele1080    = "SOCKS 10.2.4.2:1080";  // SOCKS v5

function FindProxyForURL(url, host) {

        // ---- URLs called by the hostname do not to be proxified
        var resolved_ip = dnsResolve(host);

        // ---- local URLs do not need to be proxified
        if(shExpMatch(url,"*.domain.local/*") ||
           shExpMatch(url,"*.domain.local:*") ||
           shExpMatch(url,"*.mac/*")) { return direct; }

        // ---- stuff called by its hostname e.g. Sharepoint
        if(isPlainHostName(host))  { return direct; }

        // ---- connected hosts, the one or other way (vpn, etc.)
        if(isInNet(resolved_ip, "127.0.0.0", "255.255.255.0")       ||
           isInNet(resolved_ip, "10.2.3.0", "255.255.255.0")        ||
           isInNet(resolved_ip, "10.2.4.0", "255.255.255.0")        ||
           isInNet(resolved_ip, "10.85.17.0", "255.255.255.0")      ||
           isInNet(resolved_ip, "111.222.333.44", "255.255.255.255")  ||
           isInNet(resolved_ip, "111.222.333.55", "255.255.255.255"))  { return direct; }

        // ---- certain domains are provided by e.g. a hosts file hence we like
        //      to serve them directly
        if(dnsDomainIs(host, "ticket.domain.com/*") ||
           dnsDomainIs(host, "remote.domain.com/*") ||
           dnsDomainIs(host, "some-test.domain.com/*") ||
           dnsDomainIs(host, "*.customer-server.com/*"))  { return direct; }

        // ---- FTP is send to delegate on port 8021
        if(shExpMatch(url, "ftp:*")) { return dele8021; }

        // ---- HTTP is send to delegate on port 8080
        if(shExpMatch(url, "http:*")) { return dele8080; }

        // ---- HTTPS is served bei delegated on port 9090
        if(shExpMatch(url, "https:*")) { return dele9090; }

        // ---- everything else should go through the proxy defined below
        return dele1080;

}

Weiterführende Informationen:
http://en.wikipedia.org/wiki/Proxy_auto-config


Beitrag veröffentlicht

in

von

Schlagwörter:

Kommentare

Schreibe einen Kommentar