-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDOKU_DE
More file actions
136 lines (105 loc) · 6.81 KB
/
DOKU_DE
File metadata and controls
136 lines (105 loc) · 6.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
====== Extranet Plugin ======
---- plugin ----
description: Beschränkt Seiten, Medien und Aktionen für Extranet-Besucher
author : Valentin LORTET
email : contact@valentinlortet.fr
type : Action, Syntax, Helper
lastupdate : 2026-03-13
compatible : Librarian
depends : prosemirror
conflicts :
similar :
tags : Access, Extranet, Intranet, Proxy, Security, Helper
downloadurl: https://github.com/Lortet/dokuwiki-plugin-extranet/zipball/master
bugtracker : https://github.com/Lortet/dokuwiki-plugin-extranet/issues
sourcerepo : https://github.com/Lortet/dokuwiki-plugin-extranet/
donationurl:
screenshot_img :
----
[[fr:plugin:extranet|🇫🇷 Français]] | [[plugin:extranet|🇬🇧 English]] | 🇩🇪 **Deutsch** | [[es:plugin:extranet|🇪🇸 Español]]
===== Installation =====
Das Plugin über den [[plugin:extension|Erweiterungs-Manager]] mit der obigen URL installieren oder den Ordner nach ''lib/plugins/extranet'' kopieren.
===== Beschreibung =====
Das Plugin **extranet** kann:
* erkennen, ob eine Anfrage aus dem Extranet kommt, basierend auf einem konfigurierbaren Wert aus ''$_SERVER'';
* die Anzeige von Seiten und Mediendateien einschränken;
* ausgewählte DokuWiki-Aktionen für Extranet-Besucher deaktivieren;
* globale Regeln über Filter anwenden;
* seitenbezogene Ausnahmen mit ''~~NOEXTRANET~~'' und ''~~EXTRANET~~'' hinzufügen;
* sich in ProseMirror integrieren, damit diese Makros im WYSIWYG-Modus erhalten bleiben.
Das Plugin eignet sich für die Trennung zwischen Intranet und Extranet. Es ergänzt ACLs, ersetzt aber keine echte Zugriffskontrolle.
===== Einstellungen =====
^ Name ^ Beschreibung ^ Standardwert ^
| request_match_key | ''$_SERVER''-Schlüssel, mit dem festgestellt wird, ob die Anfrage aus dem Extranet kommt. Kann ''REMOTE_ADDR'' oder ein ''HTTP_*''-Schlüssel sein. | '''' |
| extranet_match_list | Durch Kommas getrennte Liste von Werten, die als Extranet gelten. | '''' |
| extranet_match_regex | Regex zur Erkennung einer Extranet-Anfrage anhand des konfigurierten Werts. | '''' |
| default_policy | Standardrichtlinie: ''allow'', ''block'', ''force_allow'' oder ''force_block''. | ''allow'' |
| filter_list | Liste von Seiten- oder Medien-IDs, auf die die Richtlinie angewendet wird. Unterstützt exakte IDs, Namensraum-Präfixe mit '':'', und Platzhalter ''*''. | '''' |
| filter_regex | Zusätzliche Regex zum Ansprechen von Seiten oder Mediendateien. | '''' |
| hide_files | Behandlung eingeschränkter Mediendateien: ''all'', ''except_pageicons'' oder ''none''. | ''none'' |
| disable_actions | DokuWiki-Aktionen, die für Extranet-Besucher deaktiviert werden. | ''admin,edit,preview,save,revisions,diff,export_raw,export_xhtml,export_xhtmlbody,permalink,register'' |
| restricted_disable_actions | Zusätzliche Aktionen, die nur deaktiviert werden, wenn die aktuelle Seite eingeschränkt ist. | '''' |
| preserve_first_title | Erste Überschrift beibehalten, wenn eine Seite ausgeblendet wird. | ''true'' |
| message_prefix | Präfix vor der Einschränkungsmeldung. | '''' |
| message_suffix | Suffix nach der Einschränkungsmeldung. | '''' |
===== Kompatibilität =====
Die folgenden alten Konfigurationsschlüssel werden weiterhin akzeptiert:
* ''server_ip_key''
* ''extranet_ip_list''
* ''extranet_ip_regex''
Bevorzugt werden sollten jedoch die neuen Namen:
* ''request_match_key''
* ''extranet_match_list''
* ''extranet_match_regex''
===== Verwendung =====
Es stehen zwei Makros zur Verfügung:
* ''~~NOEXTRANET~~'' : sperrt die Seite aus dem Extranet, wenn die Richtlinie dies zulässt;
* ''~~EXTRANET~~'' : erlaubt die Seite aus dem Extranet, wenn die Richtlinie dies zulässt.
Verhalten je nach ''default_policy'':
* ''allow'' : alles ist erlaubt, außer gefilterten Seiten oder Seiten mit ''~~NOEXTRANET~~'';
* ''block'' : alles ist gesperrt, außer gefilterten Seiten oder Seiten mit ''~~EXTRANET~~'';
* ''force_allow'' : nur Filterregeln gelten, ''~~NOEXTRANET~~'' wird ignoriert;
* ''force_block'' : nur Filterregeln gelten, ''~~EXTRANET~~'' wird ignoriert.
===== Beispiele =====
Erkennung über direkte IP:
* ''request_match_key = REMOTE_ADDR''
* ''extranet_match_regex = /^10\.100\./''
Erkennung über Proxy-Header:
* ''request_match_key = HTTP_X_NETWORK_ZONE''
* ''extranet_match_list = extranet''
Erkennung über den Namen des Upstream-Hosts:
* ''request_match_key = HTTP_X_UPSTREAM_HOST''
* ''extranet_match_regex = /^frontend-ext-/''
===== Helper-API =====
Helper laden:
''$extranet = plugin_load('helper', 'extranet');''
==== Hauptmethoden ====
^ Methode ^ Seit ^ Beschreibung ^
| ''getDefaultPolicy()'' | ''2026-03-13'' | Gibt die effektive Standardrichtlinie zurück. |
| ''getRequestMatchKey()'' | ''2026-03-13'' | Gibt den für die Erkennung verwendeten ''$_SERVER''-Schlüssel zurück. |
| ''getExtranetMatchList()'' | ''2026-03-13'' | Gibt die Liste der als Extranet behandelten Werte zurück. |
| ''getExtranetMatchRegex()'' | ''2026-03-13'' | Gibt die Extranet-Erkennungs-Regex zurück. |
| ''isExtranetRequest()'' | ''2026-03-13'' | Prüft, ob die aktuelle Anfrage als Extranet behandelt wird. |
| ''isPageVisibleFromExtranet($id, $content = null)'' | ''2026-03-13'' | Prüft, ob eine Seite aus dem Extranet sichtbar ist. |
| ''isMediaVisibleFromExtranet($mediaID)'' | ''2026-03-13'' | Prüft, ob eine Mediendatei aus dem Extranet sichtbar ist. |
| ''isPageAllowed($id, $content = null)'' | ''2026-03-13'' | Prüft, ob eine Seite im aktuellen Kontext erlaubt ist. |
| ''isMediaAllowed($mediaID)'' | ''2026-03-13'' | Prüft, ob eine Mediendatei im aktuellen Kontext erlaubt ist. |
| ''parseRuleList($raw)'' | ''2026-03-13'' | Wandelt eine Regelkonfiguration in ein nutzbares Array um. |
| ''idMatchesRule($id, $rule)'' | ''2026-03-13'' | Prüft eine ID gegen eine exakte Regel, einen Namensraum, einen Platzhalter oder eine Regex. |
===== Funktionsweise =====
Die Extranet-Erkennung basiert auf einem aus ''$_SERVER'' gelesenen Wert:
* der vollständige Rohwert wird geprüft;
* wenn er Kommata enthält, wird auch jedes einzelne Element geprüft.
Damit lassen sich abdecken:
* eine direkte IP;
* ein Header im Stil von ''X-Forwarded-For'';
* ein vom Proxy injizierter Netzwerk-Marker;
* ein Upstream- oder Frontend-Hostname.
Wenn eine Seite eingeschränkt ist:
* wird der Cache zwischen Intranet und Extranet getrennt;
* wird der Wiki-Inhalt durch eine konfigurierbare Meldung ersetzt;
* kann die erste Überschrift erhalten bleiben, wenn ''preserve_first_title'' aktiviert ist.
Wenn eine Mediendatei eingeschränkt ist und ''hide_files'' nicht ''none'' ist, liefert das Plugin ein spezielles Bild statt der echten Datei aus.
===== Hinweise =====
* Das Plugin ist kein Ersatz für ACLs.
* Die Zuverlässigkeit hängt vom Request-Marker ab, den die Web-Infrastruktur liefert. Ein nicht vertrauenswürdiger oder fälschbarer Header macht die Erkennung unsicher.