1*ef5bb1f3SLORTET# Extranet 2*ef5bb1f3SLORTET 3*ef5bb1f3SLORTET[ Français](README.md) | [ English](README_EN.md) | Deutsch | [ Español](README_ES.md) 4*ef5bb1f3SLORTET 5*ef5bb1f3SLORTETDokuWiki-Plugin zum Einschränken der Anzeige von Seiten, Mediendateien und bestimmten Aktionen, wenn die Anfrage aus dem Extranet kommt. 6*ef5bb1f3SLORTET 7*ef5bb1f3SLORTETDas Plugin kann: 8*ef5bb1f3SLORTET- das Extranet anhand eines konfigurierbaren `$_SERVER`-Werts erkennen; 9*ef5bb1f3SLORTET- eine Standardrichtlinie `allow`, `block`, `force_allow` oder `force_block` anwenden; 10*ef5bb1f3SLORTET- Seiten und Mediendateien über exakte IDs, Namensräume, Platzhalter oder Regex filtern; 11*ef5bb1f3SLORTET- den Inhalt eingeschränkter Seiten durch eine konfigurierbare Meldung ersetzen; 12*ef5bb1f3SLORTET- eingeschränkte Mediendateien durch ein neutrales Bild ersetzen; 13*ef5bb1f3SLORTET- ausgewählte DokuWiki-Aktionen für Extranet-Besucher deaktivieren; 14*ef5bb1f3SLORTET- die Makros `~~NOEXTRANET~~` und `~~EXTRANET~~` verarbeiten; 15*ef5bb1f3SLORTET- sich in ProseMirror integrieren, damit dieser Zustand im WYSIWYG-Modus korrekt erhalten bleibt. 16*ef5bb1f3SLORTET 17*ef5bb1f3SLORTET## Verwendung 18*ef5bb1f3SLORTET 19*ef5bb1f3SLORTETIn Seiten stehen zwei Makros zur Verfügung: 20*ef5bb1f3SLORTET 21*ef5bb1f3SLORTET- `~~NOEXTRANET~~`: sperrt die Seite aus dem Extranet, wenn die Richtlinie dies zulässt; 22*ef5bb1f3SLORTET- `~~EXTRANET~~`: erlaubt die Seite aus dem Extranet, wenn die Richtlinie dies zulässt. 23*ef5bb1f3SLORTET 24*ef5bb1f3SLORTETDas genaue Verhalten hängt von `default_policy` ab: 25*ef5bb1f3SLORTET 26*ef5bb1f3SLORTET- `allow`: alles ist erlaubt, außer gefilterten Seiten oder Seiten mit `~~NOEXTRANET~~` 27*ef5bb1f3SLORTET- `block`: alles ist gesperrt, außer gefilterten Seiten oder Seiten mit `~~EXTRANET~~` 28*ef5bb1f3SLORTET- `force_allow`: nur Filterregeln gelten, `~~NOEXTRANET~~` wird ignoriert 29*ef5bb1f3SLORTET- `force_block`: nur Filterregeln gelten, `~~EXTRANET~~` wird ignoriert 30*ef5bb1f3SLORTET 31*ef5bb1f3SLORTET## Konfiguration 32*ef5bb1f3SLORTET 33*ef5bb1f3SLORTETIm Konfigurationsmanager: 34*ef5bb1f3SLORTET 35*ef5bb1f3SLORTET- `request_match_key`: `$_SERVER`-Schlüssel zur Erkennung des Extranets, zum Beispiel `REMOTE_ADDR` oder ein `HTTP_*`-Header 36*ef5bb1f3SLORTET- `extranet_match_list`: kommagetrennte Liste von Werten, die als Extranet gelten 37*ef5bb1f3SLORTET- `extranet_match_regex`: Regex zur Erkennung des Extranets aus dem konfigurierten Wert 38*ef5bb1f3SLORTET- `default_policy`: Standard-Zugriffsrichtlinie 39*ef5bb1f3SLORTET- `filter_list`: Liste der Seiten oder Mediendateien, auf die die Richtlinie angewendet wird 40*ef5bb1f3SLORTET- `filter_regex`: zusätzliche Regex zum Ansprechen von Seiten oder Mediendateien 41*ef5bb1f3SLORTET- `hide_files`: legt fest, ob Einschränkungen auch für Mediendateien gelten 42*ef5bb1f3SLORTET- `disable_actions`: DokuWiki-Aktionen, die für Extranet-Besucher deaktiviert werden 43*ef5bb1f3SLORTET- `restricted_disable_actions`: zusätzliche Aktionen, die nur deaktiviert werden, wenn die aktuelle Seite eingeschränkt ist 44*ef5bb1f3SLORTET- `preserve_first_title`: behält die erste Überschrift bei, wenn eine Seite ausgeblendet wird 45*ef5bb1f3SLORTET- `message_prefix`: Inhalt vor der Einschränkungsmeldung 46*ef5bb1f3SLORTET- `message_suffix`: Inhalt nach der Einschränkungsmeldung 47*ef5bb1f3SLORTET 48*ef5bb1f3SLORTETKompatibilität: 49*ef5bb1f3SLORTET 50*ef5bb1f3SLORTET- `server_ip_key` 51*ef5bb1f3SLORTET- `extranet_ip_list` 52*ef5bb1f3SLORTET- `extranet_ip_regex` 53*ef5bb1f3SLORTET 54*ef5bb1f3SLORTETDiese alten Einstellungen werden weiterhin aus Kompatibilitätsgründen unterstützt, bevorzugt werden sollten aber die neuen Namen. 55*ef5bb1f3SLORTET 56*ef5bb1f3SLORTET## Beispiele 57*ef5bb1f3SLORTET 58*ef5bb1f3SLORTETErkennung über direkte IP: 59*ef5bb1f3SLORTET 60*ef5bb1f3SLORTET- `request_match_key = REMOTE_ADDR` 61*ef5bb1f3SLORTET- `extranet_match_regex = /^10\.100\./` 62*ef5bb1f3SLORTET 63*ef5bb1f3SLORTETErkennung über Proxy-Header: 64*ef5bb1f3SLORTET 65*ef5bb1f3SLORTET- `request_match_key = HTTP_X_NETWORK_ZONE` 66*ef5bb1f3SLORTET- `extranet_match_list = extranet` 67*ef5bb1f3SLORTET 68*ef5bb1f3SLORTETErkennung über den Upstream-Hostnamen: 69*ef5bb1f3SLORTET 70*ef5bb1f3SLORTET- `request_match_key = HTTP_X_UPSTREAM_HOST` 71*ef5bb1f3SLORTET- `extranet_match_regex = /^frontend-ext-/` 72*ef5bb1f3SLORTET 73*ef5bb1f3SLORTET## Was der Helper bereitstellt 74*ef5bb1f3SLORTET 75*ef5bb1f3SLORTETHelper laden: 76*ef5bb1f3SLORTET 77*ef5bb1f3SLORTET```php 78*ef5bb1f3SLORTET$extranet = plugin_load('helper', 'extranet'); 79*ef5bb1f3SLORTET``` 80*ef5bb1f3SLORTET 81*ef5bb1f3SLORTETWichtige Methoden: 82*ef5bb1f3SLORTET 83*ef5bb1f3SLORTET- `getDefaultPolicy()`: gibt die effektive Standardrichtlinie zurück 84*ef5bb1f3SLORTET- `getRequestMatchKey()`: gibt den für die Erkennung verwendeten `$_SERVER`-Schlüssel zurück 85*ef5bb1f3SLORTET- `getExtranetMatchList()`: gibt die konfigurierte Werteliste zurück 86*ef5bb1f3SLORTET- `getExtranetMatchRegex()`: gibt die konfigurierte Regex zurück 87*ef5bb1f3SLORTET- `isExtranetRequest()`: prüft, ob die aktuelle Anfrage als Extranet gilt 88*ef5bb1f3SLORTET- `isPageVisibleFromExtranet()`: prüft, ob eine Seite aus dem Extranet sichtbar ist 89*ef5bb1f3SLORTET- `isMediaVisibleFromExtranet()`: prüft, ob eine Mediendatei aus dem Extranet sichtbar ist 90*ef5bb1f3SLORTET- `isPageAllowed()`: prüft, ob eine Seite im aktuellen Kontext erlaubt ist 91*ef5bb1f3SLORTET- `isMediaAllowed()`: prüft, ob eine Mediendatei im aktuellen Kontext erlaubt ist 92*ef5bb1f3SLORTET- `parseRuleList()`: wandelt eine Regelliste in ein nutzbares Array um 93*ef5bb1f3SLORTET- `idMatchesRule()`: prüft eine ID gegen eine Regel 94*ef5bb1f3SLORTET 95*ef5bb1f3SLORTET## Cache und Verhalten 96*ef5bb1f3SLORTET 97*ef5bb1f3SLORTETDas Plugin trennt den Render-Cache, um Intranet- und Extranet-Besucher zu unterscheiden. 98*ef5bb1f3SLORTET 99*ef5bb1f3SLORTETWenn eine Seite eingeschränkt ist, wird ihr Inhalt durch eine konfigurierbare Meldung ersetzt. Wenn `preserve_first_title` aktiviert ist, bleibt die erste Überschrift erhalten. 100*ef5bb1f3SLORTET 101*ef5bb1f3SLORTETWenn `hide_files` aktiviert ist, werden eingeschränkte Mediendateien durch ein spezielles Bild ersetzt. 102*ef5bb1f3SLORTET 103*ef5bb1f3SLORTET## Hinweis 104*ef5bb1f3SLORTET 105*ef5bb1f3SLORTETDas Plugin basiert auf einem Request-Marker, der von der Web-Infrastruktur geliefert wird. Es eignet sich für die Trennung zwischen Intranet und Extranet, sollte aber nicht als Ersatz für ACLs oder starke Zugriffskontrolle betrachtet werden. 106