Skip to content

Kalender-Push mit OpenExchange

Die Kalenderintegration in der Fachschaft ist seit längerer Zeit nicht funktionsfähig. Ich habe mal angefangen das zu debuggen:

principal.calendars() führt einen PROPFIND-Request nach DAV::calendar-home-set auf der URL /principals/users/<UID> aus. Dieser bricht mit caldav.lib.error.PropfindError: 405 Not Allowed ab. Mir scheint der Request soweit Standard-konform. Warum das bei OpenExchange nicht geht, weiß ich nicht, allerdings funktioniert das Principal-Object mit der URL /caldav/ ohne Probleme. Das ist dann wiederum nicht Standard-konform.

Ich sehe zwei Lösungsansätze:

  1. Das Principal-Objekt (nur!) bei OpenExchange statt mit client.principal() mit Principal(client, client.url) initialisieren.
  2. Die Liste der Kalender anders abrufen. vdirsyncer macht das z.B. mit einem PROPFIND-Request nach DAV::resourcetype auf die Basis-URL mit Tiefe 1. Die Calendar-Objekte kann man dann mit den URLs aus der Response instanzieren und wie gehabt verwenden. Das sähe dann etwa wie folgt aus.

client.propfind(client.url, b'<d:propfind xmlns:d="DAV:"><d:prop><d:resourcetype/></d:prop><d:prop><d:displayname/></d:prop></d:propfind>', depth='1')

Variante 1 wäre sehr einfach. Variante 2 hätte den Vorteil, dass sie vmtl. auch mit anderen Servern als OpenExchange funktioniert.

Meinungen, was sinnvoller ist?