| lib/composer | ||
| misc | ||
| source | ||
| tools | ||
| .gitignore | ||
| readme.md | ||
davina
Beschreibung
- bereitet rohe Kalender-Daten aus verschiedenen Quellen mittels CalDAV auf und stellt diese als Server bereit
- basiert auf sabre/dav
Erstellung
Voraussetzungen
(keine)
Anweisungen
tools/buildausführen (Schalter-hanfügen für Erklärungen)
Betrieb
Voraussetzungen
- Web-Server mit PHP-FPM-Unterstützung (für Test-Zwecke reicht der PHP-Development-Server)
Anweisungen
Zum lokalen Testen:
- im build-Verzeichnis
php -S localhost:8000ausführen - CalDAV-Client einrichten mit Ziel-URL
- URL:
http://localhost:8000/calendars/-/rides - Nutzername:
<realm-name> - Passwort: ``
- URL:
Für den Produktiv-Betrieb:
- Host-Konfiguration für den Web-Server anlegen
- Web-Server neustarten
Dokumentation
Der grobe Aufbau einer Konfigurations-Datei lässt sich in der Beispiel-Konfiguration sehen.
Bezüge
Bezüge/Realms dienen die Daten-Quellen. Sie sind in der Konfiguration im Knoten realms zu erfassen. Jeder Bezug hat:
- einen Namen (
name), - eine Zugangs-Definition (
auth) - eine Quell-Definition (
source)
Beispiel:
"realms": [
{
"name": "foo",
"auth": …
"source": …
},
{
"name": "bar",
"auth": …
"source": …
}
]
…
Authentifizierungen
Authentifizierungen steuern wie auf einen Bezug zugegriffen wird.
Fest
- es wird ein festes Passwort erwartet
- Beispiel:
"auth": {
"kind": "static",
"data": {
"password": "secret"
}
}
Durchleiten
- es wird kein bestimmtes Passwort erwartet
- das eingegebene Passwort wird an den Aufruf der Quelle weitergeleitet
- Beispiel:
"auth": {
"kind": "pass_through"
}
Quellen
Quellen sind die Stellen, die aufgerufen werden um die rohen Kalender-Daten zu erhalten.
ICS-Feed
Kalender-Daten, welche im iCalendar-Format ics vorliegen, können wie folgt eingebunden werden:
"source" :{
"kind": "ics_feed",
"data": {
"url": "https://events.example.org/concerts.ics",
"conflate": true
}
}
url ist hierbei schlicht die URL zur ics-Datei. Diese kann man den Platzhaltern {{username}} und {{password}} versehen sein. Im Fall einer Authentifizierung mittels Durchleiten, werden diese Platzhalter durch die konkret vorliegenden Werte ersetzt.
Der Schalter conflate steuert, ob die erhaltenen Termine in einen Kalender zusammengefasst werden sollen, statt sie gemäß ihrer VEVENT-Feld-Werte CATEGORIES aufzutrennen. Das hat Auswirkungen auf die URL, die man im CalDAV-Client einstellen muss. Kommen in einer ics-Datei bspw. die CATEGORIES-Werte day und night vor und der Bezug hat den Name music, dann würden bei "conflate": false die Ziel-URL-Pfade /calendars/-/music-day und /calendars/-/music-night anliegen; bei "conflate": true nur /calendars/-/music.
Angaben für Clients
- Kalender-URL:
<url-base>/calendars/-/<realm-name>[-<calendar-name>] - Nutzername:
<realm-name>[-<auth-username>] - Passwort:
<auth-password>