Zum Inhalt

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= oder ALLOWED_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.

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 oder apache als Reverse-Proxy davorschalten. YuNoHost ist eine andere Option, wie man Zugriff verwalten kann.
  • HTTPS Verschlüsselung Das kannst Du mit nginx, apache oder caddy 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