• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

conf/Today-3129

images/Today-

lang/Today-12096

script/Today-734614

.gitignoreDToday82 87

DOKUDToday6.7 KiB137105

DOKU_DEDToday6.8 KiB137105

DOKU_ENDToday6.2 KiB137105

DOKU_ESDToday6.8 KiB137105

README.mdDToday4.6 KiB10673

README_DE.mdDToday4.7 KiB10673

README_EN.mdDToday4.2 KiB10673

README_ES.mdDToday4.8 KiB10673

action.phpDToday13 KiB356280

helper.phpDToday6.7 KiB225171

plugin.info.txtDToday256 87

script.jsDToday45 20

syntax.phpDToday1.6 KiB5520

README.md

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

README_DE.md

1# Extranet
2
3[���� Français](README.md) | [���� English](README_EN.md) | ���� Deutsch | [���� Español](README_ES.md)
4
5DokuWiki-Plugin zum Einschränken der Anzeige von Seiten, Mediendateien und bestimmten Aktionen, wenn die Anfrage aus dem Extranet kommt.
6
7Das Plugin kann:
8- das Extranet anhand eines konfigurierbaren `$_SERVER`-Werts erkennen;
9- eine Standardrichtlinie `allow`, `block`, `force_allow` oder `force_block` anwenden;
10- Seiten und Mediendateien über exakte IDs, Namensräume, Platzhalter oder Regex filtern;
11- den Inhalt eingeschränkter Seiten durch eine konfigurierbare Meldung ersetzen;
12- eingeschränkte Mediendateien durch ein neutrales Bild ersetzen;
13- ausgewählte DokuWiki-Aktionen für Extranet-Besucher deaktivieren;
14- die Makros `~~NOEXTRANET~~` und `~~EXTRANET~~` verarbeiten;
15- sich in ProseMirror integrieren, damit dieser Zustand im WYSIWYG-Modus korrekt erhalten bleibt.
16
17## Verwendung
18
19In Seiten stehen zwei Makros zur Verfügung:
20
21- `~~NOEXTRANET~~`: sperrt die Seite aus dem Extranet, wenn die Richtlinie dies zulässt;
22- `~~EXTRANET~~`: erlaubt die Seite aus dem Extranet, wenn die Richtlinie dies zulässt.
23
24Das genaue Verhalten hängt von `default_policy` ab:
25
26- `allow`: alles ist erlaubt, außer gefilterten Seiten oder Seiten mit `~~NOEXTRANET~~`
27- `block`: alles ist gesperrt, außer gefilterten Seiten oder Seiten mit `~~EXTRANET~~`
28- `force_allow`: nur Filterregeln gelten, `~~NOEXTRANET~~` wird ignoriert
29- `force_block`: nur Filterregeln gelten, `~~EXTRANET~~` wird ignoriert
30
31## Konfiguration
32
33Im Konfigurationsmanager:
34
35- `request_match_key`: `$_SERVER`-Schlüssel zur Erkennung des Extranets, zum Beispiel `REMOTE_ADDR` oder ein `HTTP_*`-Header
36- `extranet_match_list`: kommagetrennte Liste von Werten, die als Extranet gelten
37- `extranet_match_regex`: Regex zur Erkennung des Extranets aus dem konfigurierten Wert
38- `default_policy`: Standard-Zugriffsrichtlinie
39- `filter_list`: Liste der Seiten oder Mediendateien, auf die die Richtlinie angewendet wird
40- `filter_regex`: zusätzliche Regex zum Ansprechen von Seiten oder Mediendateien
41- `hide_files`: legt fest, ob Einschränkungen auch für Mediendateien gelten
42- `disable_actions`: DokuWiki-Aktionen, die für Extranet-Besucher deaktiviert werden
43- `restricted_disable_actions`: zusätzliche Aktionen, die nur deaktiviert werden, wenn die aktuelle Seite eingeschränkt ist
44- `preserve_first_title`: behält die erste Überschrift bei, wenn eine Seite ausgeblendet wird
45- `message_prefix`: Inhalt vor der Einschränkungsmeldung
46- `message_suffix`: Inhalt nach der Einschränkungsmeldung
47
48Kompatibilität:
49
50- `server_ip_key`
51- `extranet_ip_list`
52- `extranet_ip_regex`
53
54Diese alten Einstellungen werden weiterhin aus Kompatibilitätsgründen unterstützt, bevorzugt werden sollten aber die neuen Namen.
55
56## Beispiele
57
58Erkennung über direkte IP:
59
60- `request_match_key = REMOTE_ADDR`
61- `extranet_match_regex = /^10\.100\./`
62
63Erkennung über Proxy-Header:
64
65- `request_match_key = HTTP_X_NETWORK_ZONE`
66- `extranet_match_list = extranet`
67
68Erkennung über den Upstream-Hostnamen:
69
70- `request_match_key = HTTP_X_UPSTREAM_HOST`
71- `extranet_match_regex = /^frontend-ext-/`
72
73## Was der Helper bereitstellt
74
75Helper laden:
76
77```php
78$extranet = plugin_load('helper', 'extranet');
79```
80
81Wichtige Methoden:
82
83- `getDefaultPolicy()`: gibt die effektive Standardrichtlinie zurück
84- `getRequestMatchKey()`: gibt den für die Erkennung verwendeten `$_SERVER`-Schlüssel zurück
85- `getExtranetMatchList()`: gibt die konfigurierte Werteliste zurück
86- `getExtranetMatchRegex()`: gibt die konfigurierte Regex zurück
87- `isExtranetRequest()`: prüft, ob die aktuelle Anfrage als Extranet gilt
88- `isPageVisibleFromExtranet()`: prüft, ob eine Seite aus dem Extranet sichtbar ist
89- `isMediaVisibleFromExtranet()`: prüft, ob eine Mediendatei aus dem Extranet sichtbar ist
90- `isPageAllowed()`: prüft, ob eine Seite im aktuellen Kontext erlaubt ist
91- `isMediaAllowed()`: prüft, ob eine Mediendatei im aktuellen Kontext erlaubt ist
92- `parseRuleList()`: wandelt eine Regelliste in ein nutzbares Array um
93- `idMatchesRule()`: prüft eine ID gegen eine Regel
94
95## Cache und Verhalten
96
97Das Plugin trennt den Render-Cache, um Intranet- und Extranet-Besucher zu unterscheiden.
98
99Wenn eine Seite eingeschränkt ist, wird ihr Inhalt durch eine konfigurierbare Meldung ersetzt. Wenn `preserve_first_title` aktiviert ist, bleibt die erste Überschrift erhalten.
100
101Wenn `hide_files` aktiviert ist, werden eingeschränkte Mediendateien durch ein spezielles Bild ersetzt.
102
103## Hinweis
104
105Das Plugin basiert auf einem Request-Marker, der von der Web-Infrastruktur geliefert wird. Es eignet sich für die Trennung zwischen Intranet und Extranet, sollte aber nicht als Ersatz für ACLs oder starke Zugriffskontrolle betrachtet werden.
106

README_EN.md

1# Extranet
2
3[���� Français](README.md) | ���� English | [���� Deutsch](README_DE.md) | [���� Español](README_ES.md)
4
5DokuWiki plugin to restrict the display of pages, media files and some actions when the request comes from the extranet.
6
7The plugin can:
8- detect the extranet from a configurable `$_SERVER` value;
9- apply a default policy of `allow`, `block`, `force_allow` or `force_block`;
10- filter pages and media files by exact ID, namespace, wildcard or regex;
11- replace restricted page content with a configurable message;
12- replace restricted media files with a neutral image;
13- disable selected DokuWiki actions for extranet visitors;
14- handle the `~~NOEXTRANET~~` and `~~EXTRANET~~` macros;
15- integrate with ProseMirror so this state is preserved correctly in WYSIWYG mode.
16
17## Usage
18
19Two macros are available in pages:
20
21- `~~NOEXTRANET~~`: blocks the page from the extranet when the policy allows it;
22- `~~EXTRANET~~`: allows the page from the extranet when the policy allows it.
23
24The exact behavior depends on `default_policy`:
25
26- `allow`: everything is allowed except filtered pages or pages marked with `~~NOEXTRANET~~`
27- `block`: everything is blocked except filtered pages or pages marked with `~~EXTRANET~~`
28- `force_allow`: only filter rules apply, `~~NOEXTRANET~~` is ignored
29- `force_block`: only filter rules apply, `~~EXTRANET~~` is ignored
30
31## Configuration
32
33In the configuration manager:
34
35- `request_match_key`: `$_SERVER` key used to detect the extranet, for example `REMOTE_ADDR` or an `HTTP_*` header
36- `extranet_match_list`: comma-separated list of values treated as extranet
37- `extranet_match_regex`: regex used to identify the extranet from the configured value
38- `default_policy`: default access policy
39- `filter_list`: list of pages or media files affected by the policy
40- `filter_regex`: additional regex to target pages or media files
41- `hide_files`: whether restrictions also apply to media files
42- `disable_actions`: DokuWiki actions disabled for extranet visitors
43- `restricted_disable_actions`: additional actions disabled only when the current page is restricted
44- `preserve_first_title`: keeps the first heading when a page is hidden
45- `message_prefix`: content inserted before the restriction message
46- `message_suffix`: content inserted after the restriction message
47
48Compatibility:
49
50- `server_ip_key`
51- `extranet_ip_list`
52- `extranet_ip_regex`
53
54These legacy settings are still supported for compatibility, but the new names should be preferred.
55
56## Examples
57
58Detection by direct IP:
59
60- `request_match_key = REMOTE_ADDR`
61- `extranet_match_regex = /^10\.100\./`
62
63Detection by proxy header:
64
65- `request_match_key = HTTP_X_NETWORK_ZONE`
66- `extranet_match_list = extranet`
67
68Detection by upstream host name:
69
70- `request_match_key = HTTP_X_UPSTREAM_HOST`
71- `extranet_match_regex = /^frontend-ext-/`
72
73## What the helper provides
74
75Load the helper:
76
77```php
78$extranet = plugin_load('helper', 'extranet');
79```
80
81Main methods:
82
83- `getDefaultPolicy()`: returns the effective default policy
84- `getRequestMatchKey()`: returns the `$_SERVER` key used for detection
85- `getExtranetMatchList()`: returns the configured list of values
86- `getExtranetMatchRegex()`: returns the configured regex
87- `isExtranetRequest()`: tells whether the current request is treated as extranet
88- `isPageVisibleFromExtranet()`: tells whether a page is visible from the extranet
89- `isMediaVisibleFromExtranet()`: tells whether a media file is visible from the extranet
90- `isPageAllowed()`: tells whether a page is allowed in the current context
91- `isMediaAllowed()`: tells whether a media file is allowed in the current context
92- `parseRuleList()`: converts a list of rules into a usable array
93- `idMatchesRule()`: tests an ID against a rule
94
95## Cache and behavior
96
97The plugin splits the render cache to distinguish intranet and extranet visitors.
98
99When a page is restricted, its content is replaced with a configurable message. If `preserve_first_title` is enabled, the first heading is kept.
100
101If `hide_files` is enabled, restricted media files are replaced with a dedicated image.
102
103## Note
104
105The plugin relies on a request marker provided by the web infrastructure. It is suitable for intranet/extranet segmentation, but should not be treated as a replacement for ACLs or strong access control.
106

README_ES.md

1# Extranet
2
3[���� Français](README.md) | [���� English](README_EN.md) | [���� Deutsch](README_DE.md) | ���� Español
4
5Plugin de DokuWiki para restringir la visualización de páginas, archivos multimedia y algunas acciones cuando la solicitud proviene de la extranet.
6
7El plugin puede:
8- detectar la extranet a partir de un valor configurable de `$_SERVER`;
9- aplicar una política predeterminada `allow`, `block`, `force_allow` o `force_block`;
10- filtrar páginas y archivos multimedia por ID exacto, espacio de nombres, comodín o regex;
11- reemplazar el contenido de una página restringida por un mensaje configurable;
12- reemplazar archivos multimedia restringidos por una imagen neutra;
13- desactivar acciones seleccionadas de DokuWiki para visitantes de la extranet;
14- gestionar las macros `~~NOEXTRANET~~` y `~~EXTRANET~~`;
15- integrarse con ProseMirror para conservar correctamente ese estado en modo WYSIWYG.
16
17## Uso
18
19Hay dos macros disponibles en las páginas:
20
21- `~~NOEXTRANET~~`: bloquea la página desde la extranet cuando la política lo permite;
22- `~~EXTRANET~~`: permite la página desde la extranet cuando la política lo permite.
23
24El comportamiento exacto depende de `default_policy`:
25
26- `allow`: todo está permitido excepto las páginas filtradas o marcadas con `~~NOEXTRANET~~`
27- `block`: todo está bloqueado excepto las páginas filtradas o marcadas con `~~EXTRANET~~`
28- `force_allow`: solo se aplican las reglas de filtro, `~~NOEXTRANET~~` se ignora
29- `force_block`: solo se aplican las reglas de filtro, `~~EXTRANET~~` se ignora
30
31## Configuración
32
33En el gestor de configuración:
34
35- `request_match_key`: clave de `$_SERVER` usada para detectar la extranet, por ejemplo `REMOTE_ADDR` o una cabecera `HTTP_*`
36- `extranet_match_list`: lista de valores separados por comas tratados como extranet
37- `extranet_match_regex`: regex usada para identificar la extranet a partir del valor configurado
38- `default_policy`: política de acceso predeterminada
39- `filter_list`: lista de páginas o archivos multimedia afectados por la política
40- `filter_regex`: regex adicional para apuntar a páginas o archivos multimedia
41- `hide_files`: indica si las restricciones también se aplican a los archivos multimedia
42- `disable_actions`: acciones de DokuWiki desactivadas para visitantes de la extranet
43- `restricted_disable_actions`: acciones adicionales desactivadas solo cuando la página actual está restringida
44- `preserve_first_title`: conserva el primer encabezado cuando una página se oculta
45- `message_prefix`: contenido insertado antes del mensaje de restricción
46- `message_suffix`: contenido insertado después del mensaje de restricción
47
48Compatibilidad:
49
50- `server_ip_key`
51- `extranet_ip_list`
52- `extranet_ip_regex`
53
54Estos parámetros antiguos siguen siendo compatibles por razones de compatibilidad, pero conviene usar los nombres nuevos.
55
56## Ejemplos
57
58Detección por IP directa:
59
60- `request_match_key = REMOTE_ADDR`
61- `extranet_match_regex = /^10\.100\./`
62
63Detección por cabecera de proxy:
64
65- `request_match_key = HTTP_X_NETWORK_ZONE`
66- `extranet_match_list = extranet`
67
68Detección por nombre del host upstream:
69
70- `request_match_key = HTTP_X_UPSTREAM_HOST`
71- `extranet_match_regex = /^frontend-ext-/`
72
73## Lo que ofrece el helper
74
75Cargar el helper:
76
77```php
78$extranet = plugin_load('helper', 'extranet');
79```
80
81Métodos principales:
82
83- `getDefaultPolicy()`: devuelve la política predeterminada efectiva
84- `getRequestMatchKey()`: devuelve la clave `$_SERVER` usada para la detección
85- `getExtranetMatchList()`: devuelve la lista configurada de valores
86- `getExtranetMatchRegex()`: devuelve la regex configurada
87- `isExtranetRequest()`: indica si la solicitud actual se trata como extranet
88- `isPageVisibleFromExtranet()`: indica si una página es visible desde la extranet
89- `isMediaVisibleFromExtranet()`: indica si un archivo multimedia es visible desde la extranet
90- `isPageAllowed()`: indica si una página está permitida en el contexto actual
91- `isMediaAllowed()`: indica si un archivo multimedia está permitido en el contexto actual
92- `parseRuleList()`: convierte una lista de reglas en un array utilizable
93- `idMatchesRule()`: comprueba un ID frente a una regla
94
95## Caché y comportamiento
96
97El plugin separa la caché de renderizado para distinguir entre visitantes de intranet y de extranet.
98
99Cuando una página está restringida, su contenido se reemplaza por un mensaje configurable. Si `preserve_first_title` está activo, se conserva el primer encabezado.
100
101Si `hide_files` está activo, los archivos multimedia restringidos se reemplazan por una imagen dedicada.
102
103## Nota
104
105El plugin depende de un marcador de solicitud proporcionado por la infraestructura web. Es adecuado para una lógica de segmentación intranet/extranet, pero no debe considerarse un sustituto de las ACL ni de un control de acceso fuerte.
106