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