top of page

Scripts

Public·1 membre

Script PAC - Répartition de charge

Les fichiers PAC sont utilisés par les navigateurs pour déterminer le chemin à emprunter pour une URL, passer par un proxy ou par le routage.


Ci-dessous la fonction à mettre en place afin d'effectuer de la répartition de charge depuis votre fichier PAC si vous possédez une architecture proxy Actif/Actif, afin de répartir les flux entre les deux équipements par rapport à l'IP source du client (Paire ou Impaire).


ree



  • Fonction pour récupérer l'adresse IP du client :

var myIp = myIpAddress();

  • Fonction pour récupérer le dernier octet de l'adresse IP :

var ipBits = myIp.split("."); 
var mySeg = parseInt(ipBits[3]);

  • Fonction pour déterminer si l'IP est paire ou impaire :

function IsPair(octet) 
{
if((octet % 2) == 0
{
return true;
}
else
{
return false;
}
}

  • Fonction pour dispatcher le flux vers les différents proxys :

if (IsPair(mySeg) == true)
{
return "PROXY PROXY_1:8080;PROXY PROXY_2:8080";
}
else
{
return "PROXY PROXY_2:8080;PROXY PROXY_1:8080";
}


  • Ci-dessous un exemple de fichier PAC avec cette solution :

function FindProxyForURL(url, host)
{

// Resolution du nom de domaine accédé
var resolved_ip = dnsResolve(host);
// Récupération de l’adresse IPv4 du poste client
var myIp = myIpAddress();
// Récupération du dernier octet de l’adresse IP pour définir la parité : IP paire ou impaire
var ipBits = myIp.split(".");
var mySeg = parseInt(ipBits[3]);
// Si le site Internet demande est heberge dans le reseau interne, acceder en direct
if (
isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(resolved_ip, "10.0.0.0", "255.0.0.0") ||
isInNet(resolved_ip, "172.16.0.0", "255.240.0.0") ||
isInNet(resolved_ip, "192.168.0.0", "255.255.0.0") ||
isInNet(resolved_ip, "127.0.0.0", "255.255.255.0")
)
return "DIRECT";
// Ressources internes exclues du proxy
if (
shExpMatch(host,"*.frenchnetworkengineer.fr") ||
shExpMatch(host,"*.facebook.com") ||
shExpMatch(host,"*.youtube.com")
)
return "DIRECT";
// Pour tout le reste
if (IsPair(mySeg) == true)
{
return "PROXY PROXY_1:8080;PROXY PROXY_2:8080";
} else {
return "PROXY PROXY_2:8080;PROXY PROXY_1:8080";
}
}

function IsPair(octet)
{
if((octet % 2) == 0)
{
return true;
}
else
{
return false;
}

}

  • Afin de tester votre fichier PAC je vous conseille "Pactester"



Pour plus d'information sur le fichier PAC :


https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file

https://findproxyforurl.com/pac-functions/


47 vues
bottom of page