Dans le billet Problème de connexion si on passe par un firewall/proxy (??) (dans le forum [dc1] Bugs), il est fait mention de personnes ayant des difficultées car ils sont derrières une ferme de proxy (comme moi). Or les 3 peerings que j'ai au boulot font que le premier octet de l'IP de chaque proxy est différent.

Alors voici un petit hack de rien du tout :

Une rapide modification de inc/clearbricks/common/lib.http.php peut aider les utilisateurs de proxy.

En modifiant la fonction browserUID, on peut faire un petit hack qui baisse la sécurité en remplaçant la ligne :

$uid .= substr($ip,0,strpos($ip,'.'));

par

if ($ip != 'ip_de_proxy_1' && $ip != 'ip_de_proxy_2') {
        $uid .= substr($ip,0,strpos($ip,'.'));
}

Etant donné que j'ai du BlueCoat comme proxy, je me base aussi sur le HTTP_X_BLUECOAT_VIA et le HTTP_VIA pour ajouter un peu de sécurité quand les IP du Proxy sont utilisées.

Ma petite fonction browserUID est plus dans ce genre :

if ($ip != 'ip_de_proxy_1' && $ip != 'ip_de_proxy_2') {
        $uid .= substr($ip,0,strpos($ip,'.'));
} else {
        $uid .= $_SERVER[HTTP_X_BLUECOAT_VIA];
}

Cela n'est bien sûr applicable que si mon HTTP_X_BLUECOAT_VIA me renvoie toujours la même information pour un site donné (idem avec le HTTP_VIA).

Le mieux serait que je me sorte les doigts et que je modifie l'admin pour avoir un champ 'liste de proxy' et un autre champ qui contiendrait la variable d'environnement du serveur à utiliser à la place du REMOTE_ADDR pour chaque utilisateur.

Ce billet est aussi sur le forum de Dotclear.