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
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.
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
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().
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).
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.
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é.
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().
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.
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.
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™.