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