xref: /plugin/extranet/README.md (revision ef5bb1f3884025c3556b3c46e33332ca386a73a6)
1*ef5bb1f3SLORTET# Extranet
2*ef5bb1f3SLORTET
3*ef5bb1f3SLORTET���� Français | [���� English](README_EN.md) | [���� Deutsch](README_DE.md) | [���� Español](README_ES.md)
4*ef5bb1f3SLORTET
5*ef5bb1f3SLORTETPlugin DokuWiki pour restreindre l'affichage des pages, des médias et de certaines actions lorsque la requête provient de l'extranet.
6*ef5bb1f3SLORTET
7*ef5bb1f3SLORTETLe plugin peut :
8*ef5bb1f3SLORTET- détecter l'extranet à partir d'une valeur de `$_SERVER` configurable ;
9*ef5bb1f3SLORTET- appliquer une politique par défaut `allow`, `block`, `force_allow` ou `force_block` ;
10*ef5bb1f3SLORTET- filtrer des pages et médias par identifiant exact, namespace, joker ou regex ;
11*ef5bb1f3SLORTET- masquer le contenu d'une page restreinte par un message configurable ;
12*ef5bb1f3SLORTET- remplacer les médias restreints par une image neutre ;
13*ef5bb1f3SLORTET- désactiver certaines actions DokuWiki pour les visiteurs extranet ;
14*ef5bb1f3SLORTET- gérer les macros `~~NOEXTRANET~~` et `~~EXTRANET~~` ;
15*ef5bb1f3SLORTET- s'intégrer à ProseMirror pour conserver correctement cet état en mode WYSIWYG.
16*ef5bb1f3SLORTET
17*ef5bb1f3SLORTET## Utilisation
18*ef5bb1f3SLORTET
19*ef5bb1f3SLORTETDeux macros sont disponibles dans les pages :
20*ef5bb1f3SLORTET
21*ef5bb1f3SLORTET- `~~NOEXTRANET~~` : interdit la page depuis l'extranet quand la politique le permet ;
22*ef5bb1f3SLORTET- `~~EXTRANET~~` : autorise la page depuis l'extranet quand la politique le permet.
23*ef5bb1f3SLORTET
24*ef5bb1f3SLORTETLe comportement exact dépend de `default_policy` :
25*ef5bb1f3SLORTET
26*ef5bb1f3SLORTET- `allow` : tout est autorisé sauf les pages filtrées ou marquées `~~NOEXTRANET~~`
27*ef5bb1f3SLORTET- `block` : tout est bloqué sauf les pages filtrées ou marquées `~~EXTRANET~~`
28*ef5bb1f3SLORTET- `force_allow` : seules les règles de filtre s'appliquent, `~~NOEXTRANET~~` est ignoré
29*ef5bb1f3SLORTET- `force_block` : seules les règles de filtre s'appliquent, `~~EXTRANET~~` est ignoré
30*ef5bb1f3SLORTET
31*ef5bb1f3SLORTET## Configuration
32*ef5bb1f3SLORTET
33*ef5bb1f3SLORTETDans le gestionnaire de configuration :
34*ef5bb1f3SLORTET
35*ef5bb1f3SLORTET- `request_match_key` : clé `$_SERVER` utilisée pour détecter l'extranet, par exemple `REMOTE_ADDR` ou un header `HTTP_*`
36*ef5bb1f3SLORTET- `extranet_match_list` : liste de valeurs considérées comme extranet, séparées par des virgules
37*ef5bb1f3SLORTET- `extranet_match_regex` : regex permettant d'identifier l'extranet à partir de la valeur lue
38*ef5bb1f3SLORTET- `default_policy` : politique d'accès par défaut
39*ef5bb1f3SLORTET- `filter_list` : liste de pages ou médias concernés par la politique
40*ef5bb1f3SLORTET- `filter_regex` : regex complémentaire pour cibler pages ou médias
41*ef5bb1f3SLORTET- `hide_files` : applique ou non les restrictions aux médias
42*ef5bb1f3SLORTET- `disable_actions` : actions DokuWiki désactivées pour les visiteurs extranet
43*ef5bb1f3SLORTET- `restricted_disable_actions` : actions supplémentaires désactivées seulement si la page courante est restreinte
44*ef5bb1f3SLORTET- `preserve_first_title` : conserve le premier titre lors du masquage d'une page
45*ef5bb1f3SLORTET- `message_prefix` : contenu ajouté avant le message de restriction
46*ef5bb1f3SLORTET- `message_suffix` : contenu ajouté après le message de restriction
47*ef5bb1f3SLORTET
48*ef5bb1f3SLORTETCompatibilité :
49*ef5bb1f3SLORTET
50*ef5bb1f3SLORTET- `server_ip_key`
51*ef5bb1f3SLORTET- `extranet_ip_list`
52*ef5bb1f3SLORTET- `extranet_ip_regex`
53*ef5bb1f3SLORTET
54*ef5bb1f3SLORTETCes anciens paramètres restent acceptés pour compatibilité, mais les nouveaux noms sont à privilégier.
55*ef5bb1f3SLORTET
56*ef5bb1f3SLORTET## Exemples
57*ef5bb1f3SLORTET
58*ef5bb1f3SLORTETDétection par IP directe :
59*ef5bb1f3SLORTET
60*ef5bb1f3SLORTET- `request_match_key = REMOTE_ADDR`
61*ef5bb1f3SLORTET- `extranet_match_regex = /^10\.100\./`
62*ef5bb1f3SLORTET
63*ef5bb1f3SLORTETDétection par header proxy :
64*ef5bb1f3SLORTET
65*ef5bb1f3SLORTET- `request_match_key = HTTP_X_NETWORK_ZONE`
66*ef5bb1f3SLORTET- `extranet_match_list = extranet`
67*ef5bb1f3SLORTET
68*ef5bb1f3SLORTETDétection par nom d'upstream :
69*ef5bb1f3SLORTET
70*ef5bb1f3SLORTET- `request_match_key = HTTP_X_UPSTREAM_HOST`
71*ef5bb1f3SLORTET- `extranet_match_regex = /^frontend-ext-/`
72*ef5bb1f3SLORTET
73*ef5bb1f3SLORTET## Ce que le helper fournit
74*ef5bb1f3SLORTET
75*ef5bb1f3SLORTETCharger le helper :
76*ef5bb1f3SLORTET
77*ef5bb1f3SLORTET```php
78*ef5bb1f3SLORTET$extranet = plugin_load('helper', 'extranet');
79*ef5bb1f3SLORTET```
80*ef5bb1f3SLORTET
81*ef5bb1f3SLORTETMéthodes principales :
82*ef5bb1f3SLORTET
83*ef5bb1f3SLORTET- `getDefaultPolicy()` : retourne la politique par défaut effective
84*ef5bb1f3SLORTET- `getRequestMatchKey()` : retourne la clé `$_SERVER` utilisée pour la détection
85*ef5bb1f3SLORTET- `getExtranetMatchList()` : retourne la liste de valeurs configurées
86*ef5bb1f3SLORTET- `getExtranetMatchRegex()` : retourne la regex configurée
87*ef5bb1f3SLORTET- `isExtranetRequest()` : indique si la requête courante est considérée comme extranet
88*ef5bb1f3SLORTET- `isPageVisibleFromExtranet()` : indique si une page est visible depuis l'extranet
89*ef5bb1f3SLORTET- `isMediaVisibleFromExtranet()` : indique si un média est visible depuis l'extranet
90*ef5bb1f3SLORTET- `isPageAllowed()` : indique si la page est autorisée dans le contexte courant
91*ef5bb1f3SLORTET- `isMediaAllowed()` : indique si le média est autorisé dans le contexte courant
92*ef5bb1f3SLORTET- `parseRuleList()` : convertit une liste de règles en tableau exploitable
93*ef5bb1f3SLORTET- `idMatchesRule()` : teste un identifiant contre une règle
94*ef5bb1f3SLORTET
95*ef5bb1f3SLORTET## Cache et comportement
96*ef5bb1f3SLORTET
97*ef5bb1f3SLORTETLe plugin segmente le cache de rendu pour distinguer les visiteurs intranet et extranet.
98*ef5bb1f3SLORTET
99*ef5bb1f3SLORTETQuand une page est restreinte, son contenu est remplacé par un message configurable. Si `preserve_first_title` est actif, le premier titre est conservé.
100*ef5bb1f3SLORTET
101*ef5bb1f3SLORTETSi `hide_files` est activé, les médias restreints sont remplacés par une image dédiée.
102*ef5bb1f3SLORTET
103*ef5bb1f3SLORTET## Remarque
104*ef5bb1f3SLORTET
105*ef5bb1f3SLORTETLe 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.
106