Design Und Implementierung Eines Clients Um Auf Einen Caldav Server Zuzugreifen

Design Und Implementierung Eines Clients Um Auf Einen Caldav Server Zuzugreifen

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:

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    35 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us