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