Design Und Implementierung Eines Clients Um Auf Einen Caldav Server Zuzugreifen
Total Page:16
File Type:pdf, Size:1020Kb
Design und Implementierung eines Clients um auf einen CalDAV Server zuzugreifen Thomas Hunziker Zürich, Schweiz Matrikelnummer: 07-704-844 – Communication Systems Group, Prof. Dr. Burkhard Stiller Betreuer: Martin Waldburger, Hanspeter Kunz ERTIEFUNGSARBEIT V Abgabedatum: 31. Dezember 2011 Universität Zürich Institut für Informatik (IFI) Binzmühlestrasse 14, CH-8050 Zürich, Schweiz Vertiefungsarbeit Communication Systems Group (CSG) Institut für Informatik (IFI) Universität Zürich Binzmühlestrasse 14, CH-8050 Zürich, Schweiz URL: http://www.csg.uzh.ch/ Kurzfassung Das Institut fur¨ Informatik (IFI) der Universit¨at Zurich¨ stellt seinen Mitarbeitern einen Kalenderserver zur Verfugung.¨ Die Mitarbeiter sollen nicht nur mit den g¨angigen CalDAV Clients auf den Server zugreifen k¨onnen, sondern auch mit einem Webinterface. Diese Arbeit stellt eine Bibliothek fur¨ den Zugriff auf einen CalDAV Server zur Verfugung.¨ Durch eine flexible und anpassbare Architektur soll gew¨ahrleistet werden, dass die Biblio- thek durch Erweiterungen auf die Bedurfnisse¨ unterschiedlicher Anwendungen angepasst werden kann. Als Erstes werden bestehende PHP Applikationen und Bibliotheken, die auf einen CalDAV Server zugreifen, beschrieben und evaluiert. Im Anschluss wird die gew¨ahlte Implemen- tierung und deren Herausforderungen beschrieben. Abschliessend wird ein Fazit uber¨ den aktuellen Stand der Bibliothek gezogen und die weiteren Arbeiten aufgezeigt. i ii Inhaltsverzeichnis Abstract i 1 Einfuhrung¨ 1 1.1 Motivation.................................... 1 1.2 Beschreibung des Arbeitsumfangs und der Anforderungen . 2 1.3 Uberblick¨ .................................... 3 2 Verwandte Applikationen 5 2.1 DAViCalClient................................. 5 2.2 AgenDAV Client . 6 2.3 SabreDAVWebDavClient ........................... 7 2.4 Schlussfolgerung................................. 7 3 Implementierung 9 3.1 RelevanteRFC ................................. 9 3.1.1 WebDAV (RFC 4918) . 9 3.1.2 CalDAV (RFC 4791) . 10 3.1.3 iCalendar (RFC 2445) . 10 3.1.4 WeitereRFC .............................. 11 3.2 Architektur des Clients . 11 3.3 WebDAVClient................................. 12 3.3.1 Basis Funktionalit¨at .......................... 12 3.3.2 Erweiterungssystem . 12 iii iv INHALTSVERZEICHNIS 3.3.3 CalDAV Erweiterung . 12 3.3.4 Locking Erweiterung . 14 3.4 iCalendar .................................... 14 3.4.1 Komponenten . 15 3.4.2 Properties . 15 3.4.3 Parameter................................ 15 3.4.4 Datentypen . 16 3.5 Design Entscheidungen . 16 3.5.1 Decorator Pattern . 16 3.5.2 ICalendar Objekte . 16 4 Evaluation 19 5 Zusammenfassung 21 5.1 Zukunftige¨ Arbeiten . 21 5.2 Fazit....................................... 22 Literaturverzeichnis 23 Abkurzungen¨ 25 Abbildungsverzeichnis 25 A Inhalt der CD 29 A.1 Source Code . 29 A.2 Referenzen . 29 Kapitel 1 Einfuhrung¨ Das Institut fur¨ Informatik (IFI) der Universit¨at Zurich¨ stellt seinen Mitarbeitern einen Kalenderserver zur Verfugung.¨ Die Kalender sollen uber¨ ein Web Interface verfugbar¨ und nutzbar sein. 1.1 Motivation CalDAV1 ist ein Protokoll um Kalenderdaten auszutauschen. DAViCal [4] ist eine Open Source Implementierung eines Kalenderservers, welcher das CalDAV Protokoll unter- stutzt.¨ Das IFI verwendet einen DAViCAl Server. Es gibt viele Clients, wie zum Beispiel Mozilla Lightning, Evolution oder Apple's iCal, die das CalDAV Protokoll unterstutzen¨ und so auf Kalender zugreifen k¨onnen. Die mei- sten dieser Clients erlauben den Zugriff auf die E-Mails und auf die Kalender in einer Applikation. Viele Nutzer sind sich an diese Kombination gew¨ohnt. Um von einem beliebigen Computer aus auf diese Daten zuzugreifen, soll ein Web Interface zur Verfugung¨ gestellt werden, welches einen integrierten Zugriff auf die E-Mails und die Kalender erm¨oglicht. Zurzeit wird fur¨ den Mail Zugriff Roundcube [13] verwendet. Roundcube, eine in PHP geschrieben Anwendung, bietet die Einbindung von weiteren Funktionen uber¨ ein Plugin System. Die direkte Integration des Kalenders in Roundcube ist, aufgrund der Komplexit¨at von CalDAV, nicht m¨oglich. Um die Interaktion zu vereinfachen, wird ein Abstraktionslayer zwischen dem Userinterface und dem Backend Server ben¨otigt. 1Calendaring Distributed Authoring and Versioning [8] 1 2 KAPITEL 1. EINFUHRUNG¨ 1.2 Beschreibung des Arbeitsumfangs und der An- forderungen Die Abstraktion vom CalDAV Protokoll soll durch eine Klassenbibliothek erm¨oglicht wer- den. Diese Bibliothek stellt eine Schnittstelle zu einem beliebigen CalDAV Server her. Es sollten auch andere Server neben DAViCal angesprochen werden k¨onnen. Im Folgenden wird mit Client diese Schnittstelle verstanden und nicht der komplette Client inklusive Webfrontend. Der Client muss folgende Anforderungen erfullen:¨ 1. PHP basierte Implementation: Die Implementierung muss in PHP geschehen, da die Roundcube Applikation in PHP geschrieben wurde. 2. Serverf¨ahigkeiten erkennen: Nicht alle CalDAV Server implementieren den gleichen Funktionsumfang. Der Client muss daher erkennen k¨onnen, welche Funktionen der Server unterstutzt.¨ 3. Principal2 auffinden: Der Server stellt nicht immer auf der gleichen URL Infor- mationen zum Principal zur Verfugung.¨ Der Client muss in der Lage sein, diese Informationen selbst¨andig zu finden. 4. Kalender auffinden: Meist kann ein CalDAV Server pro Principal mehrere Kalender verwalten. Der Client muss diese auf dem Server finden. 5. CRUD3 auf Kalender Ressourcen: Das CalDAV Protokoll erlaubt das Anlegen, Ver- ¨andern und L¨oschen von Kalendern. Der Client soll diese Operationen auf den Ka- lender Ressourcen ausfuhren¨ k¨onnen. 6. CRUD auf Principal Ressourcen: Einige CalDAV Server erlauben auch die Mani- pulation von Principal Ressourcen. Der Client soll in der Lage sein, die Principal Ressourcen soweit m¨oglich zu ver¨andern. 7. CRUD von Kalendereintr¨agen: Ein Kalender besteht aus einer Sammlung von Events, Todos, Journaleintr¨agen und FreeBusy-Eintr¨agen. Der Client soll diese erzeugt, ge- lesen, ver¨andert und gel¨oscht k¨onnen. 8. Suche in Kalendereintr¨agen: Ein Kalender kann aus mehreren tausend Eintr¨agen bestehen. Es muss daher eine M¨oglichkeit geben, die Menge aller Eintr¨age einzu- schr¨anken auf ein Subset. 9. Scheduling Unterstutzung:¨ Das Scheduling erm¨oglicht es den Nutzern untereinander Termine zu vereinbaren. 10. Access Control Lists (ACL) Unterstutzung:¨ Auf Ressourcen wie zum Beispiel Events sollen nicht alle User zugreifen k¨onnen. Es soll aber m¨oglich sein, den Zugriff fur¨ einige zu erm¨oglichen. Die ACL Erweiterung von WebDav erm¨oglicht dies. 2Ein Principal im Kontext von WebDAV ist ein Benutzer. 3CRUD = Create Read Update Delete 1.3. UBERBLICK¨ 3 11. Locking von Ressourcen: Typischerweise arbeiten mehrere Nutzer gleichzeitig auf den gleichen Ressourcen. Es muss daher m¨oglich sein, diese Ressourcen in gewissen Situationen zu schutzten.¨ 12. Faktorisierung des Codes: Der Code soll jeden Fakt jeweils nur einmal abbilden. Es sollen keine Redundanzen im Code vorhanden sein. 13. Erweiterbarkeit des Codes: Der Code soll die Erweiterung um weitere Funktionen erm¨oglichen. 14. Pay-As-You-Go Prinzip: Der Client soll sich so anpassen lassen, dass nur genau die Funktionalit¨at geladen wird, die auch ben¨otigt wird. Dies bedeutet, dass zur Laufzeit Funktionalit¨at hinzugefugt¨ werden kann. 15. Dokumentation: Der Code muss ausfuhrlich¨ dokumentiert sein. Diese Anforderungen umfassen das Endprodukt. Diese Arbeit hat zum Ziel m¨oglichst alle diese zu erfullen.¨ 1.3 Uberblick¨ Diese Arbeit stellt bereits existierende CalDAV Client Bibliotheken vor, erkl¨art die ge- w¨ahlte Implementierung und geht auf die Erfullung,¨ der im Abschnitt 1.2 genannten Anforderungen, ein. Als Erstes werden bestehende Applikationen vorgestellt und es wird aufgezeigt welche Anforderungen diese erfullen¨ und welche durch diese entsprechenden Implementierungen nicht erfullt¨ werden k¨onnen. Danach werden die relevanten Protokolle eingefuhrt¨ und darauf aufbauend wird auf die Implementierung der Schnittstelle eingegangen. Insbesondere werden die Probleme bei der Implementierung aufgezeigt und es wird erkl¨art, wie diese gel¨ost wurden. Die Evaluation zeigt auf, welche Anforderungen durch die gew¨ahlte Implementierung er- fullt¨ wurden und welche nicht. Abschliessend wird gezeigt, wo es weiterer Arbeit bedarf und wo die Herausforderungen der Arbeit lagen. 4 KAPITEL 1. EINFUHRUNG¨ Kapitel 2 Verwandte Applikationen Dieses Kapitel behandelt existierende CalDAV Client Applikationen, deren grobe Im- plementierung und zeigt auf weshalb diese Applikationen den in Kapitel 1 definierten Anforderungen nicht genugen.¨ 2.1 DAViCal Client Der DAViCal [4] Server liefert einen Client mit, der den Zugriff auf den CalDAV Server erm¨oglicht. Eine detaillierte Evaluation ist im folgenden Abschnitt zu finden. Die prim¨aren M¨angel sind in der Code Qualit¨at und der fehlenden Funktionalit¨at in den Bereichen Scheduling und Kalendereintr¨agen zu finden. 1. PHP basierte Implementation: DAViCal ist in PHP implementiert. 2. Serverf¨ahigkeiten erkennen: Wird von DAViCal nicht unterstutzt.¨ 3. Principal auffinden: Die Implementierung von DAViCal findet den Principal nicht. 4. Kalender auffinden: DAViCal findet die Kalender nicht. 5. CRUD auf Kalender Ressourcen: Die Kalender Ressourcen k¨onnen durch DAViCal nicht manipuliert werden. 6. CRUD auf Principal Ressourcen: Wird nicht unterstutzt.¨ 7. CRUD von Kalendereintr¨agen: Die Kalender Eintr¨age k¨onnen manipuliert werden. Allerdings werden die Eintr¨age nicht geparst. 8. Suche in Kalendereintr¨agen: