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