Exemples de fichier JavaScript ou JScript de proxy automatique

Les dix scripts suivants constituent des exemples d'utilisation d'un fichier .pac pour spécifier une URL de proxy automatique. Pour utiliser ces fonctions, vous devez changer les noms de proxy, les numéros de port et les adresses IP.

Remarques

Exemple 1 : Les hôtes locaux se connectent directement, tandis que tous les autres se connectent via un proxy

La fonction suivante détermine si le nom d'hôte est celui d'un hôte local et, le cas échéant, si la connexion est directe. Si le nom d'hôte n'est pas celui d'un hôte local, la connexion est établie via le proxy (proxy).

function FindProxyForURL(url, hôte)
    {
        if (isPlainHostName(hôte))
            return "DIRECT";
        else
            return "PROXY proxy:80";
    }

La fonction isPlainHostName() vérifie si le nom d'hôte contient des points. Si c'est le cas, elle renvoie la valeur false, sinon elle renvoie la valeur true.

Exemple 2 : Les hôtes situés à l'intérieur du pare-feu se connectent directement, tandis que les serveurs locaux externes se connectent via le proxy.

La fonction suivante vérifie si l'hôte est un nom d'hôte à part entière (c'est-à-dire que le nom de domaine n'est pas inclus) ou s'il fait partie d'un domaine particulier (.société.com) mais que le nom d'hôte n'est ni www ni home.

function FindProxyForURL(url, hôte)
    {
        if ((isPlainHostName(hôte) ||
             dnsDomainIs(hôte, ".société.com")) &&
            !localHostOrDomainIs(hôte, "www.société.com") &&
            !localHostOrDoaminIs(hôte, "home.société.com"))

            return "DIRECT";
        else
            return "PROXY proxy:80; PROXY proxy:80";
    }

Remarques

Exemple 3 : Si l'hôte peut être résolu, il se connecte directement. Dans le cas contraire, la connexion s'effectue via le proxy.

La fonction suivante demande au serveur DNS d'essayer de résoudre le nom d'hôte qui lui a été communiqué. S'il y parvient, une connexion directe est alors établie. Dans le cas contraire, la connexion est établie via le proxy. Cette fonction est utile lorsqu'un serveur DNS interne est utilisé pour résoudre tous les noms d'hôte internes.

function FindProxyForURL(url, hôte)
    {
        if (isResolvable(hôte))
            return "DIRECT";
        else
            return "PROXY proxy:80";
    }

Consultez plus haut la remarque sur la fonction isResolvable().

Exemple 4 : Si l'hôte se trouve dans un sous-réseau spécifié, il se connecte directement. Dans le cas contraire, la connexion s'effectue via le proxy.

La fonction suivante compare un modèle donné d'adresse IP et le masque avec le nom d'hôte. Cette fonction est utile si certains hôtes d'un sous-réseau doivent être connectés directement tandis que d'autres doivent l'être via le proxy.

function FindProxyForURL(url, hôte)
    {
        if (isInNet(hôte, "999.99.9.9", "255.0.255.0"))
            return "DIRECT";
        else
            return "PROXY proxy:80";
    }

Consultez plus haut la remarque sur la fonction isInNet().

La fonction isInNet(hôte, modèle, masque) renvoie la valeur true si l'adresse IP de l'hôte correspond au modèle spécifié. Le masque indique la partie de l'adresse IP où la correspondance doit être trouvée (255=match, 0=ignore).

Exemple 5 : Déterminez le type de connexion en fonction du domaine de l'hôte.

La fonction suivante permet de spécifier une connexion directe si l'hôte est local. Si l'hôte n'est pas local, cette fonction permet de déterminer le proxy à utiliser en fonction du domaine de l'hôte. Cette fonction est utile si le nom du domaine de l'hôte constitue l'un des critères de sélection du proxy.

function FindProxyForURL(url, hôte)
    {
        if (isPlainHostName(hôte))
            return "DIRECT";
        else if (shExpMatch(hôte, "*.com"))
            return "PROXY comproxy:80";
        else if (shExpMatch(hôte, "*.edu"))
            return "PROXY eduproxy:80";
        else
            return "PROXY proxy";
    }

La fonction shExpMatch(str, shexp) renvoie la valeur true si str correspond à shexp en utilisant les modèles d'expression de l'interpréteur de commandes.

Exemple 6 : Déterminez le type de connexion en fonction du protocole utilisé.

La fonction suivante extrait le protocole utilisé et sélectionne le proxy en conséquence. Si aucune correspondance n'est trouvée dans le protocole, une connexion directe est établie. Cette fonction est utile si le protocole utilisé constitue l'un des critères de sélection du proxy.

function FindProxyForURL(url, hôte)
    {
	    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 fonction substring() extrait de la chaîne le nombre de caractères spécifié.

Exemple 7 : Déterminez la configuration du proxy en vérifiant si le nom d'hôte correspond à l'adresse IP.

La fonction suivante permet de sélectionner un proxy en traduisant le nom d'hôte en adresse IP, puis en le comparant avec une chaîne spécifique.

function FindProxyForURL(url, hôte)
    {
	    if (dnsResolve(host) == "999.99.99.999") {  // = http://secproxy
		return "PROXY secproxy:8080";
	    }
	    else {
		return "PROXY proxy:80";
	    }
    }
	

Consultez plus haut la remarque sur la fonction dnsResolve().

Exemple 8 : Si l'IP de l'hôte correspond à l'IP spécifiée, l'hôte se connecte via le proxy. Dans le cas contraire, la connexion s'effectue directement.

La fonction suivante est un autre moyen de sélectionner un proxy en spécifiant une adresse IP. Cet exemple, à la différence de l'exemple 7, utilise l'appel de fonction pour obtenir explicitement l'adresse IP numérique (l'exemple 7 utilise la fonction dnsResolve() pour traduire le nom d'hôte en adresse IP numérique).

function FindProxyForURL(url, hôte)
    {
	    if (myIpAddress() == "999.99.999.99") { 
		return "PROXY proxy:80";
	    }
	    else {
		return "DIRECT";
	    }
    }

La fonction myIpAddress() renvoie l'adresse IP (au format nombre entier/point) de l'hôte sur lequel le navigateur s'exécute.

Exemple 9 : Si le nom d'hôte contient un point, l'hôte se connecte via le proxy. Dans le cas contraire, la connexion s'effectue directement.

La fonction suivante vérifie le nombre de points contenus dans le nom d'hôte. Si le nom d'hôte contient des points, la connexion s'effectue via le proxy. Dans le cas contraire, elle est directe. Cette fonction offre un autre moyen de déterminer les types de connexions en fonction des caractéristiques du nom d'hôte.

function FindProxyForURL(url, hôte)
    {
	    if (dnsDomainLevels(hôte) > 0) {  // si le nombre de points dans l'hôte > 0
		return "PROXY proxy:80";
	    }
		return "DIRECT";
    }

La fonction dnsDomainLevels() renvoie un nombre entier égal au nombre de points contenus dans le nom d'hôte.

Exemple 10 : Spécifiez les jours de la semaine où la connexion s'effectue via le proxy. Les autres jours, elle est établie directement.

La fonction suivante détermine le type de connexion en spécifiant des jours de la semaine où la connexion sera établie via le proxy. La connexion sera établie directement les jours qui ne correspondent pas à ces paramètres. Cette fonction peut être utile si vous souhaitez utiliser un proxy lorsque l'activité est importante et permettre une connexion directe lorsqu'elle est moins élevée.

function FindProxyForURL(url, hôte)
    {
	if(weekdayRange("WED", "SAT", "GMT")) 
	  return "PROXY proxy:80";
	else 
	  return "DIRECT";
    }

La fonction weekdayRange( <jour1> [,<jour2>] [,<fGMT>] ) indique si le temps système courant est compris dans la plage spécifiée par les paramètres <jour1>, <jour2> et <fGMT>. Seul le premier paramètre est nécessaire. Le paramètre GMT spécifie que l'heure doit être définie en GMT, et non par rapport au fuseau horaire local.

Remarque
Lorsque la fonction est appelée avec <jour1> == <jour2>, les versions antérieures de Microsoft Internet Explorer donnent des résultats différents de ceux de Netscape Navigator™. Spécifiquement, elles interprètent cette plage de jours comme une semaine entière, alors que Microsoft Internet Explorer 4.0 et Netscape Navigator™ l'interprètent comme un seul jour. Par exemple, si le jour courant est lundi, la fonction weekdayRange("TUE", "TUE") renvoie la valeur true sur les versions antérieures d'Internet Explorer et la valeur false sur Microsoft Internet Explorer 4.0 et Netscape Navigator™.