Servereinstellungen¶
Wenn Du den Offenen Web-Kalender auf das anpassen willst, das du brauchst, dann ist das gut möglich. Du kannst
- Ändern, wie der Standard-Kalender aussieht.
- Ändern, wie der Server funtioniert.
Den Standard-Kalender anpassen¶
Die Grundeinstellungen aller Kalender befinden sich in der default_specification. All diese Einstellungen können durch eine Kopie der Datei verändert werden, die irgendwo im Web zu finden ist. Ihre URL muss dann als specification_url
Parameter angegeben werden. Jeder Parameter sollte in der default_specification dokumentiert sein.
Um alle Kalender einer Instanz zu verändern, benutze die Umgebungsvariable OWC_SPECIFICATION. Kalender überschreiben dann immer noch ihre Einstellungen. Die Einstellungen, die die Kalender nicht selbst vornehmen, werden durch diese Voreinstellungen bestimmt. Nicht alle Werte werden auf der Konfigurationsseite angeboten. Trotzdem können sie durch die specification_url
und die URL-Parameter verändert werden.
Wahrscheinlich willst Du die folgenden Werte ändern.
title
¶
Der Titel der Webseite.
language
¶
Das ist die Standart-Sprache. Wenn Du die änderst, haben es Leute einfacher, die lokal mit dir arbeiten.
favicon
¶
Das ist der Link zu dem Bild der Webseite.
source_code
¶
Wenn DU Änderungen vorgenommen hast, bist du legal verpflichtet, diese den Besuchern der Webseite mitzuteilen. Bitte verändere den Link oder füge sie zum Hauptprojekt hinzu.
contributing
¶
Wenn Du auf eine andere Seite verweisen magst, um zu Deinem Projekt beizutragen.
privacy_policy
¶
Wenn Du diesen Dienst auf einem eigenen Server betreibst, dann kannst Du unsere Datenschutzerklärung verwenden.
Solltest Du DIch aus irgendeinem Grund entscheiden, personenbezogene Daten zu speichern, z.B. im HTTPS-Proxy die IP-Adressen, dann musst Du eine eigene Datenschutzerklärung erstellen. Du kannst darin die des Projektes verlinken.
Mehr Werte¶
Es gibt viel mehr Werte, die verändert werden können. Siehe default_specification. Diese Werte sind alle dokumentiert. Benutze die Umgebungsvariable OWC_SPECIFICATION, um sie zu ändern.
Siehe auch:
Den Server Anpassen¶
Umgebungsvariablen beeinflussen nur das Verhalten des Servers. Diese Umgebungsvariablen können für den Server verwendet werden:
ALLOWED_HOSTS¶
Standardwert: leer
Die Klienten durch Komma getrennt, die den Open Web Calendar benutzen dürfen. Du wirst diesen Text sehen, wenn du den Dienst benutzen willst aber nicht darfst:
Forbidden: You don’t have the permission to access the requested resource. It is either read-protected or not readable by the server.*
Examples:
- Nur den eigenen Computer zulassen:
ALLOWED_HOSTS=localhost
- Mehrere Computer zulassen:
ALLOWED_HOSTS=192.168.0.1,192.168.2,api.myserver.com
- Allen erlauben, den Server zu benutzen (Voreinstellung):
ALLOWED_HOSTS=
oderALLOWED_HOSTS=*
Diese Funktionalität wird durch flask-allowed-hosts bereitgestellt.
PORT¶
Standardwert: 5000
, im Docker-Container: 80
Der Netzwerk-Port auf dem der Dienst läuft.
Examples:
- Den HTTP-Port nutzen:
PORT=80
OWC_SPECIFICATION¶
OWC_SPECIFICATION
ist eine optionale Umgebungsvariable.
- Das kann ein Pfad zu einer Datei mit YAML- oder JSON-Inhalt sein.
- Das kann eine YAML oder JSON Zeichenkette sein.
Durch Setzen der OWC_SPECIFICATION
-Variable werden die Voreinstellungen aller Kalender geändert.
Anmerkung
Neue Versionen des Offenen Web-Kalenders können neue Einstellungen hinzufügen. Wenn Deine Voreinstellungen in dieser Variable sind, dann ist sicher gestellt, dass neue Versionen sofort funktionieren. Verändere besser nicht die default_specification
.
Im folgenden Beispiel werden die Titel aller Kalender gesetzt, die nicht ihren eigenen Titel setzen.
OWC_SPECIFICATION='{"title": "calendar"}' gunicorn open_web_calendar:app
Siehe auch:
WORKERS¶
Standardwert: 4
, nur im Docker-Container
Die Anzahl paralleler Arbeiter, um die Anfragen zu beantworten.
Examples:
- Nutze nur einen Arbeiter:
WORKERS=1
CACHE_REQUESTED_URLS_FOR_SECONDS¶
Standartwert: 600
Sekunden, die die Kalenderdateien zwischengespeichert werden, um Bandbreite und Verzögerung zu reduzieren.
Examples:
- Schnelles Neuladen:
CACHE_REQUESTED_URLS_FOR_SECONDS=10
APP_DEBUG¶
Voreinstellung false
, Werte true
oder false
, immer false
im Dockercontainer
Setze das Debug-Flag für die App.
OWC_ENCRYPTION_KEYS¶
Standardwert: leer
Das ist eine Liste von Schlüsseln, die durch Komma getrennt sind. Diese Schlüssel werden genutzt, um vertrauliche Informationen zu verstecken.
Examples:
- Keine Verschlüsselung anbieten (Voreinstellung):
OWC_ENCRYPTION_KEYS=
- Einen Schlüssel benutzen:
OWC_ENCRYPTION_KEYS='Pj...48='
- Mehrere Schlüssel benutzen:
OWC_ENCRYPTION_KEYS='Pj...48=,cx...Fw='
Wenn Du mehrere Schlüssel angibst, wird der erste zum Verschlüsseln genutzt. Die anderen entschlüsseln nur.
Du kannst einen neuen Schlüssel erzeugen, indem du deinen Offenen Web-Kalender auf der /new-key-Seite besuchst oder diesen Befehl ausführst:
python3 -m open_web_calendar.new_key
Siehe auch:
Further Configuration¶
Der offene Web-Kalender nutzt Bibliotheken, mit denen das Verhalten weiter angepasst werden kann.
- Flask hat mehr Umgebungsvariablen, die verändern, wie der Server Inhalte liefert.
- requests wird genutzt, um die
.ics
-Dateien herunterzuladen. Du kannst einen Proxy bestimmen.
Der Offene Web-Kalender braucht einen Proxy, um Folgendes zu erreichen:
- Zugriffsbeschränkung und Nutzerrechte Um zu bestimmen, wer den Offenen Web-Kalender benutzen kann, kannst du
nginx
oderapache
als Reverse-Proxy davorschalten. YuNoHost ist eine andere Option, wie man Zugriff verwalten kann. - HTTPS Verschlüsselung Das kannst Du mit
nginx
,apache
odercaddy
erreichen. - Besseres Caching Rudimentäres Caching ist im Offenen Web-Kalender eingebaut. Um genauere Einstellungen zu treffen, benutze einen Proxy wie
squid
. Sie die Dokumentation darunter an, um so einen Proxy zu benutzen. - Zugriff auf Kalender Standardmäßig wird der Offene Web-Kalender nicht einschränken, welche Kalender angezeigt werden. Benutze einen Proxy, um die Kalender zu filtern. Wenn der Offene Web-Kalender hinter einer Firewall neben anderen Diensten läuft, ist es geraten, einen Proxy zu verwenden, um SSRF-Atacken vorzubeugen.
SSRF-Schutz druch einen Proxy¶
The Open Web Calendar can be used to access the local network behind a firewall, see Issue 250. This free access is intended to show calendars from everywhere. Since requests
is used by the Open Web Calendar, it can use a proxy as described in the requests
documentation. The proxy can then handle the filtering.
export HTTP_PROXY="http://10.10.1.10:3128"
export HTTPS_PROXY="http://10.10.1.10:1080"
export ALL_PROXY="socks5://10.10.1.10:3434"
Siehe auch:
Squid als Proxy-Server¶
Squid ist ein Proxy und Cache, flexibel ein einstellbar. Du kannst ihn vor den Offenen Web-Kalender schalten, um Zugriff und Caching einzustellen.
Betriebssystem
Squid funktioniert auf allen gängigen Plattformen. Für die Kommandos und die Pfade in diesem Tutorial nehmen wir an, dass Squid auf einem Debian/Ubuntu läuft. Die Kommandos können auch auf anderen Systemen funktionieren. Das ist dann aber nicht gestestet.
Nachdem Du den Squid Proxy installiert hast, füge diese Datei in das conf.d
-Verzeichnis ein. Squid wird diese dann beim Start laden.
In Linux, erstelle /etc/squid/conf.d/open-web-calendar.conf
:
## Example rule to deny access to your local networks.
## Adapt to list your (internal) IP networks from where browsing
## should be allowed
acl owc_forbidden dst 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl owc_forbidden dst 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl owc_forbidden dst 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl owc_forbidden dst 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl owc_forbidden dst 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl owc_forbidden dst 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl owc_forbidden dst fc00::/7 # RFC 4193 local private network range
acl owc_forbidden dst fe80::/10 # RFC 4291 link-local (directly plugged) machines
## If the Open Web Calendar runs on another machine, not localhost (127.0.0.1),
## fill in the network or IP of that machine here and allow access from it.
acl owc_host src 127.0.0.1 # Allow Access to Squid from localhost (default)
# acl owc_host src 172.16.0.0/12 # Uncomment if you run the Open Web Calendar as a docker service
## Access from owc_host is allowed to all but forbidden networks
http_access allow owc_host !owc_forbidden
## Use IPv4 for DNS
## See https://superuser.com/a/1443889
dns_v4_first on
Diese Liste verweigert dem Offenen Web-Kalender Zugriff auf lokale und interne Netzwerke. Wenn Du andere lokale Netzwerke hast (IPv4 oder IPv6), dann füge sie der Liste hinzu.
Auf Linux kannst du diese Datei mit diesem Kommando installieren:
sudo wget -O /etc/squid/conf.d/open-web-calendar.conf https://raw.githubusercontent.com/niccokunzmann/open-web-calendar/master/docs/snippets/squid/open-web-calendar.conf
Dann starte den Squid Proxy neu.
sudo service squid reload
Setze die Umgebungsvariablen, um dem Offenen Web-Kalender mitzuteilen, dass er den Squid Proxy benutzen soll, der auf localhost
läuft. Wie genau diese Variable gesetzt wird, unterscheidet sich je nach dem, wie der Offene Web-Kalender ausgeführt wird.
Solltest du z.B. ihn mit Python installiert haben, dann kannst du die Umgebung so konfigurieren:
export HTTP_PROXY="http://localhost:3128"
export HTTPS_PROXY="http://localhost:3128"
export ALL_PROXY="http://localhost:3128"
gunicorn open_web_calendar:app
Wenn Du versuchst, einen verbotenen Kalender mit dem lokalen open-web-calendar
zu besuchen, z.B. http://172.16.0.1/calendar.ics
, dann siehst du diese Nachricht:
403 Client Error: Forbidden for url: http://172.16.0.1/calendar.ics