Skip to content

Latest commit

 

History

History
105 lines (73 loc) · 4.6 KB

File metadata and controls

105 lines (73 loc) · 4.6 KB

Extranet

🇫🇷 Français | 🇬🇧 English | 🇩🇪 Deutsch | 🇪🇸 Español

Plugin DokuWiki pour restreindre l'affichage des pages, des médias et de certaines actions lorsque la requête provient de l'extranet.

Le plugin peut :

  • détecter l'extranet à partir d'une valeur de $_SERVER configurable ;
  • appliquer une politique par défaut allow, block, force_allow ou force_block ;
  • filtrer des pages et médias par identifiant exact, namespace, joker ou regex ;
  • masquer le contenu d'une page restreinte par un message configurable ;
  • remplacer les médias restreints par une image neutre ;
  • désactiver certaines actions DokuWiki pour les visiteurs extranet ;
  • gérer les macros ~~NOEXTRANET~~ et ~~EXTRANET~~ ;
  • s'intégrer à ProseMirror pour conserver correctement cet état en mode WYSIWYG.

Utilisation

Deux macros sont disponibles dans les pages :

  • ~~NOEXTRANET~~ : interdit la page depuis l'extranet quand la politique le permet ;
  • ~~EXTRANET~~ : autorise la page depuis l'extranet quand la politique le permet.

Le comportement exact dépend de default_policy :

  • allow : tout est autorisé sauf les pages filtrées ou marquées ~~NOEXTRANET~~
  • block : tout est bloqué sauf les pages filtrées ou marquées ~~EXTRANET~~
  • force_allow : seules les règles de filtre s'appliquent, ~~NOEXTRANET~~ est ignoré
  • force_block : seules les règles de filtre s'appliquent, ~~EXTRANET~~ est ignoré

Configuration

Dans le gestionnaire de configuration :

  • request_match_key : clé $_SERVER utilisée pour détecter l'extranet, par exemple REMOTE_ADDR ou un header HTTP_*
  • extranet_match_list : liste de valeurs considérées comme extranet, séparées par des virgules
  • extranet_match_regex : regex permettant d'identifier l'extranet à partir de la valeur lue
  • default_policy : politique d'accès par défaut
  • filter_list : liste de pages ou médias concernés par la politique
  • filter_regex : regex complémentaire pour cibler pages ou médias
  • hide_files : applique ou non les restrictions aux médias
  • disable_actions : actions DokuWiki désactivées pour les visiteurs extranet
  • restricted_disable_actions : actions supplémentaires désactivées seulement si la page courante est restreinte
  • preserve_first_title : conserve le premier titre lors du masquage d'une page
  • message_prefix : contenu ajouté avant le message de restriction
  • message_suffix : contenu ajouté après le message de restriction

Compatibilité :

  • server_ip_key
  • extranet_ip_list
  • extranet_ip_regex

Ces anciens paramètres restent acceptés pour compatibilité, mais les nouveaux noms sont à privilégier.

Exemples

Détection par IP directe :

  • request_match_key = REMOTE_ADDR
  • extranet_match_regex = /^10\.100\./

Détection par header proxy :

  • request_match_key = HTTP_X_NETWORK_ZONE
  • extranet_match_list = extranet

Détection par nom d'upstream :

  • request_match_key = HTTP_X_UPSTREAM_HOST
  • extranet_match_regex = /^frontend-ext-/

Ce que le helper fournit

Charger le helper :

$extranet = plugin_load('helper', 'extranet');

Méthodes principales :

  • getDefaultPolicy() : retourne la politique par défaut effective
  • getRequestMatchKey() : retourne la clé $_SERVER utilisée pour la détection
  • getExtranetMatchList() : retourne la liste de valeurs configurées
  • getExtranetMatchRegex() : retourne la regex configurée
  • isExtranetRequest() : indique si la requête courante est considérée comme extranet
  • isPageVisibleFromExtranet() : indique si une page est visible depuis l'extranet
  • isMediaVisibleFromExtranet() : indique si un média est visible depuis l'extranet
  • isPageAllowed() : indique si la page est autorisée dans le contexte courant
  • isMediaAllowed() : indique si le média est autorisé dans le contexte courant
  • parseRuleList() : convertit une liste de règles en tableau exploitable
  • idMatchesRule() : teste un identifiant contre une règle

Cache et comportement

Le plugin segmente le cache de rendu pour distinguer les visiteurs intranet et extranet.

Quand une page est restreinte, son contenu est remplacé par un message configurable. Si preserve_first_title est actif, le premier titre est conservé.

Si hide_files est activé, les médias restreints sont remplacés par une image dédiée.

Remarque

Le plugin repose sur un marqueur de requête fourni par l'infrastructure web. Il est adapté à une logique de segmentation intranet/extranet, mais ne doit pas être considéré comme un remplacement des ACL ou d'un contrôle d'accès fort.