Consultant freelance solutions collaboratives IBM


Au sujet de Dominux :
Consultant freelance depuis avril 2012 sur les solutions Lotus d'IBM (14 ans d'expérience). Que vous soyez une SSII, une PME/PMI ou un grand compte, n'hésitez pas à me contacter si vous souhaitez un accompagnement d'expert dans vos projets autours de ces solutions.
En savoir plus ...

Partenaires

    Partenaire IBM
    Cooperteam Affiliate


dominoblog.ntf derrière un reverse proxy

Olivier FRANCHET  28 Mai 2012 18:13:41

Partager cet article :


Le modèle standard dominoblog.ntf intègre une gestion d'anti-spam pour les commentaires, qui pour faire simple et court fonctionne sur la détection de lien dans le commentaire suivant leur nombre (seuil définissable dans le document de configuration) et sur le blocage ou non de l'IP du client direct.
Cette fonctionnalités est très pratiques sauf que ce modèle n'est pas prévue pour être derrière un reverse proxy. Je m'explique ...
Ce modèle utilise dans ces différents points d'entrés (masque commentaire, publication RSS, etc) les variables CGI pour connaître l'émetteur de la requête POST, en l'occurence 'Remote_Addr'; or cette variable référence le client direct de la requête qui dans le cas d'une architecture avec un reverse proxy ... est l'IP du reverse proxy.
Il est d'usage dans la configuration d'un reverse proxy de transmettre l'IP du client direct qui attaque le reverse proxy via une variable d'entête nommée X_Forwarded_For.

Sous NGinX cela donne la directive :

set_proxy_header X-Forwarded-For $proxy_add_x_forwarded_for


Pour la récupérer dans une application Domino, il suffit d'utiliser la variable CGI HTTP_X_Forwarded_For ... tout simplement (voir dans l'aide de Domino Designer pour utiliser les variables CGI dans les applications Lotus Domino).

Maintenant en ce qui concerne le modèle de dominoblog.ntf, il faut modifier quelques éléments de conception pour prendre en compte cette particularité et profiter au mieux de l'anti-spam. Je ne vais pas vous énumérer tous les éléments à modifier mais à minima pour l'anti-spam il vous faut modifier :
  • Le sous-masque 'comment Web' en ajoutant un champ modifiable HTTP_X_Forwarded_For (juste à coté du champ Remote_Addr par exemple) avec pour valeur par défaut ... HTTP_X_Forwarded_For
  • L'agents 'PostComment' en modifiant le code en gras dans la fonction 'Initialize' :

Set doc=session.documentcontext
QueryString=doc.QUERY_STRING_SAFE(0)
Dim realIP As String  'Custom pour la gestion derrière un reverse proxy

If doc.http_x_forwarded_for(0) = "" Then realIP=doc.Remote_Addr(0) Else realIP=doc.http_x_forwarded_for(0)

Set docIP=viewIP.GetDocumentByKey(realIP,True)

If Not docIP Is Nothing Then


Pour faire le tour global des modifications, je vous invite à faire une recherche de 'Remote_Addr' dans l'outil de recherche dans les fichiers (Ctrl+H).
Commentaires
Aucun commentaire trouvé
WORLD IPV6 LAUNCH is 6 June 2012 – The Future is Forever

Autres liens