Skip to content

Latest commit

 

History

History
105 lines (73 loc) · 4.75 KB

File metadata and controls

105 lines (73 loc) · 4.75 KB

Extranet

🇫🇷 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_allow o force_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.

Uso

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 ignora
  • force_block: solo se aplican las reglas de filtro, ~~EXTRANET~~ se ignora

Configuración

En el gestor de configuración:

  • request_match_key: clave de $_SERVER usada para detectar la extranet, por ejemplo REMOTE_ADDR o una cabecera HTTP_*
  • extranet_match_list: lista de valores separados por comas tratados como extranet
  • extranet_match_regex: regex usada para identificar la extranet a partir del valor configurado
  • default_policy: política de acceso predeterminada
  • filter_list: lista de páginas o archivos multimedia afectados por la política
  • filter_regex: regex adicional para apuntar a páginas o archivos multimedia
  • hide_files: indica si las restricciones también se aplican a los archivos multimedia
  • disable_actions: acciones de DokuWiki desactivadas para visitantes de la extranet
  • restricted_disable_actions: acciones adicionales desactivadas solo cuando la página actual está restringida
  • preserve_first_title: conserva el primer encabezado cuando una página se oculta
  • message_prefix: contenido insertado antes del mensaje de restricción
  • message_suffix: contenido insertado después del mensaje de restricción

Compatibilidad:

  • server_ip_key
  • extranet_ip_list
  • extranet_ip_regex

Estos parámetros antiguos siguen siendo compatibles por razones de compatibilidad, pero conviene usar los nombres nuevos.

Ejemplos

Detección por IP directa:

  • request_match_key = REMOTE_ADDR
  • extranet_match_regex = /^10\.100\./

Detección por cabecera de proxy:

  • request_match_key = HTTP_X_NETWORK_ZONE
  • extranet_match_list = extranet

Detección por nombre del host upstream:

  • request_match_key = HTTP_X_UPSTREAM_HOST
  • extranet_match_regex = /^frontend-ext-/

Lo que ofrece el helper

Cargar el helper:

$extranet = plugin_load('helper', 'extranet');

Métodos principales:

  • getDefaultPolicy(): devuelve la política predeterminada efectiva
  • getRequestMatchKey(): devuelve la clave $_SERVER usada para la detección
  • getExtranetMatchList(): devuelve la lista configurada de valores
  • getExtranetMatchRegex(): devuelve la regex configurada
  • isExtranetRequest(): indica si la solicitud actual se trata como extranet
  • isPageVisibleFromExtranet(): indica si una página es visible desde la extranet
  • isMediaVisibleFromExtranet(): indica si un archivo multimedia es visible desde la extranet
  • isPageAllowed(): indica si una página está permitida en el contexto actual
  • isMediaAllowed(): indica si un archivo multimedia está permitido en el contexto actual
  • parseRuleList(): convierte una lista de reglas en un array utilizable
  • idMatchesRule(): comprueba un ID frente a una regla

Caché y comportamiento

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.

Nota

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.