core/readme.md

3.1 KiB

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/build ausführen (Schalter -h anfü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:8000 ausführen
  • CalDAV-Client einrichten mit Ziel-URL
    • URL: http://localhost:8000/calendars/-/rides
    • Nutzername: <realm-name>
    • Passwort: ``

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>