Scrivere un PAC

Un PAC. Chi era costui?

Sicuramente sapete bene cos'e' un proxy server, e quanto puo' essere utile.
Un proxy server puo' essere utilizzato per trattare le connessioni da browser verso sistemi locali o su Internet. L'utilizzo dei proxy server presenta pero' alcuni problemi se utilizzato all'interno di grosse reti aziendali. Utilizzare un proxy server per accedere a sistemi che si trovano sulla stessa tratta di rete e' inefficiente (vengono raddoppiati i pacchetti che circolano sulla tratta di rete locale). Inoltre il proxy server puo' diventare una risorsa critica sia per le prestazioni che per le esentuali attivita' di manutenzione.

Per ovviare a questi problemi e' possibile utilizzare un Proxy AutoConfiguration file: PAC. Dal punto di vista tecnico un PAC e' molto semplice. Si tratta di una funzione realizzata in Java Script che riceve come parametro l'URL e l'host cui l'utente vuole collegarsi. La funzione deve restituire l'IP:port del proxy da utilizzare oppure "DIRECT" per indicare una connessione diretta.

Chi scrive la funzione del PAC? E' molto semplice TU! (se sei il webadmin)

Con un PAC si possono fare molte cose. Modificando la funzione: e' possibile creare una configurazione che funziona senza interventi dell'utente anche per PC che vengono utilizzati su tratte differenti della rete interna o via modem (come spesso avviene con i portatili); e' possibile far puntare gli utenti ad un nuovo proxy appena installato senza riconfigurare tutti i PC; e' possibile suddividere gli utenti (senza che questi se ne accorgano) bilanciando il carico tra piu' proxy server; e' possibile bloccare parte del traffico a seconda dell'ora o di altre condizioni a scelta; e' possibile fare scherzi bellissimi a chi vi e' antipatico...
Non male vero?

I PAC sono supportati da tutte le piu' recenti (ma anche dalle vecchie) versioni di Netscape ed Internet Explorer. Per far utilizzare un PAC e' sufficiente ospitare il PAC su un web server e quindi indicare l'URL sui browser.
Con Netscape: Edit->Preferences-+>Advanced-+>Proxy->Automatic proxy configuration Configuration Location (URL). Con Explorer: Tools->Internet Options-T>Connections-B>Lan Setting-o>Use automatic configuration script. O simili...

Consigli sulle prestazioni

Affinche' il PAC sia efficiente (e di conseguenza anche l'accesso ai servizi Intranet/Internet) e' opportuno seguire alcune indicazioni.

Un esempio

Ecco un semplice esempio:
/* 
 * Proxy AutoConfig file 
 * Created by mail@meo.bogliolo.name
 * Generated on 30 Oct 1998
 * 
 * Last update on 31 July 2000 - Sample file for documatation only
 *                               all the addresses are fictious
 * 
 */

function FindProxyForURL(url, host)
{
        // Direct connections to non-FQDN hosts
        if (isPlainHostName(host)) 
            return "DIRECT";

        // Direct connections to local domains
        if (dnsDomainIs(host, ".company.it") ||
	    dnsDomainIs(host, ".company.com") ) 
            	return "DIRECT";

        // Direct connections to local networks (distinct from the above
	// for performance since require DNS lookup)
        if (isInNet(host, "194.243.246.0", "255.255.255.0"))
    	        return "DIRECT";

        // Otherwise use proxy
	myIP=myIpAddress();

	if (myIP.substring(0,4) == "10.1"
		|| myIP.substring(0,4) == "10.2")	// My subnetwork on 10.X
		{ return "PROXY 10.1.1.80:8080"; }	// PROXY1
	else if (myIP.substring(0,3) == "194")
		{ return "PROXY 194.243.246.2:8080"; }	// PROXY2
	else return "PROXY 194.243.246.3:8080";		// PROXY3
}

Il codice e' commentato in inglese perche' fa piu' professionale. Non preoccupatevi l'ho scritto io: sicuramente non funziona!

Proxy

Non sapete cos'e' un proxy server? Vergogna! Lo sanno anche i bambini (con tutto il rispetto per i bambini, che in effetti ne sanno sempre piu' di me!). Comunque ecco qualche semplice commento sui proxy.
Vi sono diversi tipi di proxy server. Quello che ci interessa in questo caso e' un proxy server per il protocollo HTTP (insomma quello del WWW). Un proxy server e' un "delegato" che fa un operazione per conto di qualcun'altro. Ad esempio un browser anziche' collegarsi direttamente ad un web server remoto chiede ad un proxy server di farlo per lui. Un proxy server di questo servizio presenta diversi vantaggi:

Direi che come ragioni per l'utilizzo di un proxy server per le connessioni ad Internet ne ho riportate a sufficienza. Penso anche che come introduzione sui proxy possa bastare... (se non sapete il significato di qualche parola come firewall comprate Topolino: incredibile ma c'e' tutto spiegato benissimo - l'ho capito anch'io!)

Come si configura su un browser l'utilizzo di un proxy server? Facile!
Con Netscape:Edit->Preferences-+>Advanced-+>Proxy->...
Con Explorer:Tools->Internet Options-T>Connections-B>Lan Setting-o>
Naturalmente mutatis mutandis per tutte le diverse versioni possibili!


Testo: I PAC

Data: 1 Aprile 2000

Versione: 1.0.2

Autore: Meo Bogliolo