🇫🇷 Français | 🇬🇧 English | 🇩🇪 Deutsch | 🇪🇸 Español
Plugin de DokuWiki para restringir la visualización de páginas, archivos multimedia y algunas acciones cuando la solicitud proviene de la extranet.
El plugin puede:
- detectar la extranet a partir de un valor configurable de
$_SERVER; - aplicar una política predeterminada
allow,block,force_allowoforce_block; - filtrar páginas y archivos multimedia por ID exacto, espacio de nombres, comodín o regex;
- reemplazar el contenido de una página restringida por un mensaje configurable;
- reemplazar archivos multimedia restringidos por una imagen neutra;
- desactivar acciones seleccionadas de DokuWiki para visitantes de la extranet;
- gestionar las macros
~~NOEXTRANET~~y~~EXTRANET~~; - integrarse con ProseMirror para conservar correctamente ese estado en modo WYSIWYG.
Hay dos macros disponibles en las páginas:
~~NOEXTRANET~~: bloquea la página desde la extranet cuando la política lo permite;~~EXTRANET~~: permite la página desde la extranet cuando la política lo permite.
El comportamiento exacto depende de default_policy:
allow: todo está permitido excepto las páginas filtradas o marcadas con~~NOEXTRANET~~block: todo está bloqueado excepto las páginas filtradas o marcadas con~~EXTRANET~~force_allow: solo se aplican las reglas de filtro,~~NOEXTRANET~~se ignoraforce_block: solo se aplican las reglas de filtro,~~EXTRANET~~se ignora
En el gestor de configuración:
request_match_key: clave de$_SERVERusada para detectar la extranet, por ejemploREMOTE_ADDRo una cabeceraHTTP_*extranet_match_list: lista de valores separados por comas tratados como extranetextranet_match_regex: regex usada para identificar la extranet a partir del valor configuradodefault_policy: política de acceso predeterminadafilter_list: lista de páginas o archivos multimedia afectados por la políticafilter_regex: regex adicional para apuntar a páginas o archivos multimediahide_files: indica si las restricciones también se aplican a los archivos multimediadisable_actions: acciones de DokuWiki desactivadas para visitantes de la extranetrestricted_disable_actions: acciones adicionales desactivadas solo cuando la página actual está restringidapreserve_first_title: conserva el primer encabezado cuando una página se ocultamessage_prefix: contenido insertado antes del mensaje de restricciónmessage_suffix: contenido insertado después del mensaje de restricción
Compatibilidad:
server_ip_keyextranet_ip_listextranet_ip_regex
Estos parámetros antiguos siguen siendo compatibles por razones de compatibilidad, pero conviene usar los nombres nuevos.
Detección por IP directa:
request_match_key = REMOTE_ADDRextranet_match_regex = /^10\.100\./
Detección por cabecera de proxy:
request_match_key = HTTP_X_NETWORK_ZONEextranet_match_list = extranet
Detección por nombre del host upstream:
request_match_key = HTTP_X_UPSTREAM_HOSTextranet_match_regex = /^frontend-ext-/
Cargar el helper:
$extranet = plugin_load('helper', 'extranet');Métodos principales:
getDefaultPolicy(): devuelve la política predeterminada efectivagetRequestMatchKey(): devuelve la clave$_SERVERusada para la deteccióngetExtranetMatchList(): devuelve la lista configurada de valoresgetExtranetMatchRegex(): devuelve la regex configuradaisExtranetRequest(): indica si la solicitud actual se trata como extranetisPageVisibleFromExtranet(): indica si una página es visible desde la extranetisMediaVisibleFromExtranet(): indica si un archivo multimedia es visible desde la extranetisPageAllowed(): indica si una página está permitida en el contexto actualisMediaAllowed(): indica si un archivo multimedia está permitido en el contexto actualparseRuleList(): convierte una lista de reglas en un array utilizableidMatchesRule(): comprueba un ID frente a una regla
El plugin separa la caché de renderizado para distinguir entre visitantes de intranet y de extranet.
Cuando una página está restringida, su contenido se reemplaza por un mensaje configurable. Si preserve_first_title está activo, se conserva el primer encabezado.
Si hide_files está activo, los archivos multimedia restringidos se reemplazan por una imagen dedicada.
El 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.