SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

278 Plugins, 195 contribs sur SPIP-Zone, 44 visiteurs en ce moment

Accueil > Auteurs, authentification et autorisations > Accès restreints > Accès restreint par adresse IP

Accès restreint par adresse IP

26 octobre 2007 – par Gefonline – 13 commentaires

3 votes

Définir un intranet accessible selon l’adresse IP du visiteur

Introduction

Bonjour, l’objectif de cette contrib est de proposer une solution simple de mise en place d’un intranet par adresse IP dans un site entièrement sous SPIP. Elle ne fait appel à aucun plugin mais seulement aux fonctionnalités de SPIP. La démarche est on ne peut plus simple !

Étape 1 :


Définir dans l’espace privé de son site une rubrique Intranet qui contiendra l’ensemble des sous-rubriques et articles dont on veut limiter l’accès. On supposera ici que cette rubrique est la numéro 10.

Étape 2 :


Créer à la racine du site un dossier que l’on appelera ici mon_dossier (personnellement j’ai choisi Intranet ;). On supposera par ailleurs que l’ensemble des squelettes du site sont dans le dossier squelettes.

Étape 3 :

-  Créer un premier jeu de squelettes pour la rubrique 10 : rubrique-10.html, article-10.html et si besoin est rubrique=10.html (en particulier si la page d’accueil de l’intranet doit proposer un contenu différent des autres rubriques de l’intranet) [1]
Dans ce jeu de squelettes, on y incluera toutes les boucles et les balises nécessaires à l’affichage de notre contenu intranet. Ce jeu de squelettes est ensuite placé dans le dossier mon_dossier.
-  Créer un deuxième jeu de squelettes équivalent au premier (mêmes noms) mais avec un contenu différent. Cette fois on ne laisse s’afficher que ce que l’on veut que l’utilisateur lambda puisse voir : ça peut être un message simple indiquant que l’on n’est pas dans l’environnement requis pour accéder à l’intranet, on peut vouloir malgré tout afficher le titre des sous-rubriques ou autres infos de l’intranet, ou bien tout simplement afficher la page d’erreur 403... L’essentiel étant bien entendu de ne pas utiliser de balise ou de boucle qui afficheraient des informations auquelles on veut restreindre l’accès ! Ce deuxième jeu est placé quand à lui dans le dossier squelettes.

Étape 4 :


c’est là que toute la flexibilté de SPIP rentre en jeu. Il s’agit désormais d’appliquer notre restriction. Si l’utilisateur a la bonne adresse IP, alors SPIP utilisera les squelettes du dossier mon_dossier, sinon il utilisera ceux du dossier squelettes. Pour ce faire, on utilise le fichier mes_options.php [2] dans lequel on insère le code suivant :

La première ligne permet de récupérer l’adresse IP du visiteur. Cette valeur est ensuite utilisée pour appliquer les conditions définies par le code php dans les lignes suivantes. C’est tout !

J’espère que vous trouverez cette contrib utile, les solutions proposées à ce jour pour définir un espace intranet dans son site sous SPIP ne sont pas légion.

P.-S.

Pour info, dans mon cas, l’accès implique différents domaines d’adresse IP. Aussi, pour la condition, le code utilisé est le suivant :

if((preg_match('/170[.][0]*38[.][0-9]+[.][0-9]+/',$ip)==1)||
  (preg_match('/170[.][0]*40[.]100[.][0-9]+/',$ip)==1)||
  (preg_match('/170[.][0]*42[.]101[.][0-9]+/',$ip)==1))

Notes

[1Pour en savoir plus sur ces nominations de fichier voir l’article Les variantes de squelette.

[2Pour en savoir plus sur la définition d’un dossier squelette à l’aide du fichier mes_options, voir les articles Où placer les fichiers de squelettes  ? et Les variables de personnalisation.

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 2 mars 2009 à 18:53, par jamijam En réponse à : Accès restreint par adresse IP

    Bonjour,

    J’aurai aimé utiliser ce type d’accès en ajoutant un squelette alternatif pour les auteurs identifies..

    (je suis en spip 2 pour info)

    mais hélas, je n’arrive pas à récupérer la variable « $auteur_session »...

    j’ai du faire une erreur très basique, je suppose,

    auriez-vous une solution, svp

    Quoiqu’il en soit, merci beaucoup pour cette contrib

    • Le 3 mars 2009 à 16:32, par Gefonline En réponse à : Accès restreint par adresse IP

      On n’est plus dans le registre des adresses ip, mais le principe reste valable. La solution fournie ici par denisb est :

      <?php
         if (isset($GLOBALS['auteur_session']))
             {
             $GLOBALS['dossier_squelettes'] = 'mon_dossier_squelettes_auteurs';
             }
      ?>

      Pour l’avoir testée en local, je peux dire que ça semble marcher sur la version 1.9.2g

    • Le 9 mars 2009 à 10:50, par jamijam En réponse à : Accès restreint par adresse IP

      bon, hélas ça ne marche pas avec spip 2

      je vais utiliser une solution plus « bidouille » du coup

      Merci pour le coup de main

    Répondre à ce message

  • Le 10 avril 2008 à 09:56, par ? En réponse à : Accès restreint par adresse IP

    Bonjour,

    Est-ce que cette méthode peut fonctionner avec des squelettes gérés comme (ou par) des plugins ?

    • Le 10 avril 2008 à 10:57, par ? En réponse à : Accès restreint par adresse IP

      Bonjour,

      tout ce que fait cette méthode c’est utiliser deux jeux de squelettes, l’un situé dans un dossier dont les droits d’accès sont définis dans le fichier mes_options.php et l’autre du même nom mais au contenu différent que tu laisses dans un dossier non protégé.

      Par conséquent si tu sais oú sont localisés les squelettes utilisés par ton plugin tu peux à priori appliquer cette méthode. Maintenant, avec le peu d’information que tu as fourni il est difficile de dire quel est le résultat escompté et si cette méthode sera adaptée ou non pour l’atteindre.

    • Le 11 avril 2008 à 13:20, par ? En réponse à : Accès restreint par adresse IP

      Bonjour,

      En fait, nous utilisons un Spip multilingue (1.9.2.d) avec un squelette « alternatives » contenu dans (themes/nom_du_squelette) et piloté par le plugin « sktheme ». Nous voudrions dédier ce Spip entièrement à notre intranet et rediriger les autres IP vers une page 403 ou autre redirection (URL de notre site web).

      Merci beaucoup !

    • Le 11 avril 2008 à 13:36, par Gefonline En réponse à : Accès restreint par adresse IP

      Dans ce cas, il me semble que tout ce que vous avez a faire c’est remplacer mon_dossier dans le code php par le nom de votre dossier, soit « themes » et a ce moment la les squelettes ne seront accessibles que pour l’adresse ip choisie. Dans le cas d’une autre adresse ip spip recherchera les squelettes dans le dossier « squelettes » s’il existe puis « dist ». A vous de mettre ce qui convient dans ce(s) dossier(s) la (une page d’erreur, des squelettes sommaire, rubrique et article avec information de refus d’accès et redirection, etc...)

      Je serai absent pendant 10 jours et espère que vos essais seront fructueux. N’hésitez pas à me donner le résultat !

    • Le 6 mai 2008 à 13:39, par ? En réponse à : Accès restreint par adresse IP

      Nous avons essayé en remplaçant le fichier « mes_options.php » dans « ecrire », mais ça ne marche pas (test sur une seule IP) ; si vous avez une idée :

      <?php
          $ip
      =$_SERVER['REMOTE_ADDR'];
          if(
      $ip=="172.16.102.40")
              {
              
      $GLOBALS['dossier_squelettes'] = 'themes/CSI/';
              }
          else
              {
      '404.html'}

             
          
      $forcer_lang true ;



          
      $table_des_traitements['TITRE'][]= 'supprimer_numero(typo(%s))';

      ?>

      merci beaucoup !

    • Le 6 mai 2008 à 17:59, par Gefonline En réponse à : Accès restreint par adresse IP

      Je suis allé faire un tour rapide sur le plugin sktheme. Le pb doit venir du fait que ce plugin gère lui-même les dossiers squelettes, c’est d’ailleurs le but principal du plugin. C’est donc au niveau du plugin et non pas au niveau du fichier mes_options qu’il doit falloir rajouter la condition sur l’adresse ip. J’ignore dans quel fichier du plugin la gestion des dossiers squelettes se fait (la syntaxe doit être similaire, une recherche sur « dossier_squelette » doit pouvoir aider) mais c’est sans doute là qu’il faut intervenir. Avez vous posé la question à l’auteur du plugin sktheme ?

      Si j’ai l’occasion d’ulitiser sktheme je me pencherai sur la question. Désolé de ne pas pouvoir être plus utile !

    • Le 9 mai 2008 à 09:17, par ? En réponse à : Accès restreint par adresse IP

      Merci beaucoup, on comprend mieux la raison de nos échecs...

    Répondre à ce message

  • Le 26 octobre 2007 à 20:11, par Julien Falconnet En réponse à : Accès restreint par adresse ip

    Excellent !
    Robuste, efficace et SIMPLE.

    En plus je suppose que le cache doit bien retrouver ses petits.
    Question : Est-ce que le « else » de mes_options.php est nécessaire dans la mesure ou cela correspond au comportement par défaut de spip ?

    Ah oui, sinon j’ai un peu buté sur le if($ip==«  »), j’ai d’abord cru que c’était vraiment une chaine vide qu’on cherchait. Est-ce que if($ip=« monreseaulocal ») ne serait pas plus clair.

    • Le 29 octobre 2007 à 07:33, par Gefonline En réponse à : Accès restreint par adresse ip

      Tout d’abord merci pour ta suggestion. J’ai modifié l’article pour plus de clarté. En ce qui concerne le « else », ta remarque est sans doute vrai dans le cas d’un dossier par défaut de SPIP, et donc dans le cas présenté ci-dessus ; perso, j’ai pas essayé.
      D’une manière plus générale, cette contrib permet de définir deux types de contenus pour une même rubrique selon l’adresse ip du visiteur lui permettant d’accéder aux pages du dossier spécifié dans le if ou celui spécifié dans le else et leurs squelettes respectifs. Ce dernier ne sera pas forcément un dossier par défaut. Je préfère donc laisser le code complet pour ceux qui comme moi ne maitrisent pas tout à fait le php et ses finesses...

    • Le 10 avril 2008 à 10:52, par ? En réponse à : Accès restreint par adresse ip

      Maintenant que j’en sais un peu plus sur le php je peux dire que oui, en effet, le else est accessoire dans le cas ou le second choix est celui par défaut pour SPIP.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Afficher les articles en entier ou en résumé selon leur nombre dans une rubrique

    22 octobre 2006 – commentaires

    Selon le contenu de rubrique, afficher les articles dans leurs intégralités (si 1 seul article dans la rubrique) ou leurs résumés (si plusieurs articles). Cette boucle peut être donc pratique pour réaliser le squelette d’un site contenant beaucoup de (...)

  • Afficher les données EXIF des images

    12 mai 2008 – commentaires

    Plugin pour disposer le la balise EXIF pour SPIP 1.9.2 et squelette EXIF pour afficher les données de l’appareil photo.

  • Dépublication

    16 décembre 2010 – 80 commentaires

    Parfois des articles n’ont plus d’intérêt à une date donnée et vous souhaitez programmer leur dépublication pour qu’elle s’effectue automatiquement. Vous pouvez aussi renseigner une date d’expiration des droits d’un auteur. A la date donnée, (...)

  • Rechercher remplacer

    17 octobre 2011 – commentaires

    Ce plugin permet de simplement rechercher une chaine dans les champs textes de la base de donnée, et éventuellement de la remplacer par une autre chaine. Cet outil peut servir tant à l’administrateur d’un site, qu’à son rédacteur en chef. (...)

  • Réaliser un champ de formulaire avec autocomplétion avec jQuery UI

    27 février 2013 – commentaires

    Cet article est un tutoriel pour montrer la simplicité d’intégration de jQuery UI dans SPIP 3. Dans un premier temps, nous allons intégrer tout le code « à la main » pour analyser le mode de fonctionnement. En fin d’article on proposera la même solution (...)