Esempi
File di esempio del proxy automatico in JavaScript o JScript
Di seguito sono riportati esempi di utilizzo di un file pac per specificare un . Per utilizzare queste funzioni, è necessario modificare i nomi dei proxy, i numeri di porta e gli .
Note
- Le funzioniisInNet, isResolvable, e dnsResolve consentono di effettuare una ricerca in un .
- Riferimenti ad oggetti, proprietà o metodi del modello di oggetti provocano un errore nel file di configurazione automatica del proxy. Ad esempio, i riferimenti window.open(...), alert(...), e password(...) provocano un errore nel file di configurazione automatica del proxy su Internet Explorer.
La funzione riportata di seguito verifica che il nome dell'host corrisponda a un host locale e, in caso affermativo, che la connessione sia diretta. Se il nome dell'host non corrisponde a un host locale, la connessione avverrà attraverso il proxy (proxy).
funzione FindProxyForURL(url, host)
{
if (isPlainHostName(host))
return "DIRECT";
else
return "PROXY proxy:80";
}
La funzione isPlainHostName controlla se vi sono punti nel nome dell'host. In caso affermativo, restituisce false, altrimenti restituisce true.
La funzione riportata di seguito verifica che il nome dell'host non includa il nome del dominio oppure che sia parte di un particolare dominio (.societa.it), ma che non sia né www né home.
function FindProxyForURL(url, host)
{
if ((isPlainHostName(host) ||
dnsDomainIs(host, ".societa.it")) &&
!localHostOrDomainIs(host, "www.societa.it") &&
!localHostOrDoaminIs(host, "home.societa.it"))
return "DIRECT";
else
return "PROXY proxy:80";
}
Note
- La funzione localHostOrDomainIs viene eseguita solo per gli URL del dominio locale.
- La funzione dnsDomainIs restituisce true se il dominio del nome dell'host corrisponde al dominio dato.
La funzione riportata di seguito richiede al server DNS di risolvere il nome dell'host che gli viene passato. Se questo è possibile, viene effettuata una connessione diretta, in caso contrario attraverso un proxy. Questa funzione risulta utile quando viene utilizzato un server interno DNS per la risoluzione di tutti i nomi interni degli host.
function FindProxyForURL(url, host)
{
if (isResolvable(host))
return "DIRECT";
else
return "PROXY proxy:80";
}
Vedere la nota sulla funzione isResolvable all'inizio della pagina.
La funzione riportata di seguito confronta una maschera e un modello di indirizzo IP specificati con il nome dell'host. Questa funzione è utile quando alcuni host di una subnet devono essere connessi direttamente ed altri attraverso un proxy.
function FindProxyForURL(url, host)
{
if (isInNet(host, "999.99.9.9", "255.0.255.0"))
return "DIRECT";
else
return "PROXY proxy:80";
}
Vedere la nota sulla funzione isInNet all'inizio della pagina.
La funzione isInNet(host, modello, maschera) restituisce true se l'indirizzo IP dell'host corrisponde al modello specificato. La maschera indica quale parte dell'indirizzo IP deve corrispondere (255=ricerca corrispondenza, 0=ignora).
La funzione riportata di seguito specifica una connessione diretta se l'host è locale. In caso contrario, la funzione determinerà quale proxy dovrà essere utilizzato a seconda del dominio dell'host. Questa funzione è utile se il è uno dei criteri di selezione del proxy.
function FindProxyForURL(url, host)
{
if (isPlainHostName(host))
return "DIRECT";
else if (shExpMatch(host, "*.com"))
return "PROXY comproxy:80";
else if (shExpMatch(host, "*.edu"))
return "PROXY eduproxy:80";
else
return "PROXY proxy";
}
La funzione shExpMatch(str, shexp) restituisce true se, tramite l'utilizzo di modelli di espressione di shell, str corrisponde a shexp.
La funzione riportata di seguito estrae il protocollo utilizzato e sulla base di questo esegue una selezione di proxy. Se non è possibile trovare una corrispondenza con un protocollo, verrà effettuata una connessione diretta. Questa funzione è utile quando il protocollo utilizzato è uno dei criteri di selezione del proxy.
function FindProxyForURL(url, host)
{
if (url.substring(0, 5) == "http:") {
return "PROXY proxy:80";
}
else if (url.substring(0, 4) == "ftp:") {
return "PROXY fproxy:80";
}
else if (url.substring(0, 7) == "gopher:") {
return "PROXY gproxy";
}
else if (url.substring(0, 6) == "https:") {
return "PROXY secproxy:8080";
}
else {
return "DIRECT";
}
}
La funzione substring estrae da una stringa il numero di caratteri specificato.
La funzione riportata di seguito effettua la selezione di un proxy convertendo il nome dell'host in un indirizzo IP e confrontandolo con una stringa specificata.
function FindProxyForURL(url, host)
{
if (dnsResolve(host) == "999.99.99.999") { // = http://secproxy
return "PROXY secproxy:8080";
}
else {
return "PROXY proxy:80";
}
}
Vedere la nota sulla funzione dnsResolve all'inizio della pagina.
La funzione riportata di seguito consente di effettuare la selezione di un proxy sulla base di un indirizzo IP specificato. A differenza dell'esempio 7, nel quale viene utilizzata la funzione dnsResolve per convertire il nome dell'host nell'indirizzo IP numerico, in questo esempio la funzione viene chiamata per recuperare esplicitamente l'indirizzo IP numerico.
function FindProxyForURL(url, host)
{
if (myIpAddress() == "999.99.999.99") {
return "PROXY proxy:80";
}
else {
return "DIRECT";
}
}
La funzione myIpAddress restituisce in formato composto da numeri interi separati da punti l'indirizzo IP dell'host sul quale è in esecuzione il browser.
La funzione riportata di seguito verifica il numero dei punti contenuti nel nome dell'host. Se vengono rilevati dei punti, effettuare la connessione attraverso un proxy. In caso contrario, effettuare una connessione diretta. Questa funzione consente di determinare il tipo di connessione sulla base delle caratteristiche del nome dell'host.
function FindProxyForURL(url, host)
{
if (dnsDomainLevels(host) > 0) { // se il numero di punti in host > 0
return "PROXY proxy:80";
}
return "DIRECT";
}
La funzione dnsDomainLevels restituisce un numero intero uguale al numero di punti contenuti nel nome dell'host.
La funzione riportata di seguito determina il tipo di connessione specificando i giorni della settimana in cui utilizzare un proxy. Nei giorni non inclusi tra quelli specificati, effettuare una connessione diretta. Questa funzione potrebbe essere utilizzata per impiegare un proxy quando il traffico di dati è intenso e per consentire una connessione diretta quando il traffico è irrilevante.
function FindProxyForURL(url, host)
{
if(weekdayRange("WED", "SAT", "GMT"))
return "PROXY proxy:80";
else
return "DIRECT";
}
La funzione weekdayRange(giorno1 [,giorno2] [,GMT] ) restituisce true se l'ora di sistema corrente si trova all'interno dell'intervallo specificato dai parametri giorno1, giorno2, e GMT. È richiesto solo il primo parametro. Il parametro GMT stabilisce che l'ora debba essere considerata in base all'ora di Greenwich (GMT, Greenwich Mean Time) anziché in base al fuso orario locale.