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