HTTP ist heute allgegenwaertig, primaer jedoch als Transportmethode vom Server zum Nutzer. Mittels webDAV ist es schliesslich auch moeglich, Daten auf den Server zu bewegen. Das kann man entweder als verteiltes Dateisystem betrachten (und entsprechend einbinden) oder aber zum gemeinsamen Nutzen einzelner Dateien verwenden. Hier soll der letztgenannte Weg gezeigt werden -- am Beispiel eines verteilten Kalenders. Dabei wird allerdinga auch auffallen, dass es keine Universalloesungen auf diesem Gebiet gibt.

WebDAV fuer sich betrachtet

Bei WebDAV handelt es sich um eine standardisierte Erweiterung des HTTP-Protokolls. Waehrend HTTP ueber die allgemein bekannten und geschaetzten Kommandos wie "get" und "post" verfuegt, gibt es in WebDAV noch weitere Kommandos, beispielsweise zum Erstellen von Verzeichnissen (die in der WebDAV-Terminologie "collections" heissen) oder aber das modifizieren von Dateien. Von einem gewissen Standpunkt aus, den ich mir bisweilen zueigen mache, ist die Existenz von WebDAV ueberfluessig. Protokolle wie NFS oder SMB beherrschen die Netzwerkfreigabe von Dateien wesentlich effizienter und es ist eigentlich voellig ueberfluessig, ein solches Protokoll auch noch auf HTTP aufzusetzen. Aber in der Praxis ist es so, dass HTTP dasjenige Protokoll ist, welches die wenigsten Restriktionen zu erdulden hat. HTTP wird durch sogut wie alle Firewalls, Router und Proxies durchgelassen -- im Gegensatz zu den ebengenannten Alternativen. Also gibt es eine Daseinsberechtigung fuer WebDAV. Immerhin erfordert WebDAV keinen eigenen Server, man kann es einfach einem bestehenden Apache mitgeben.

Wie ich zu WebDAV komme

Ich waere von alleine ganz sicher nicht auf die Idee gekommen, mich mit WebDAV zu beschaeftigen. Aber ich wurde von einem Komilitonen darauf angesprochen, ob man auf dem von mir verwalteten Webserver der Studierendenschaft des Fachbereichs Informatik der Uni Rostock nicht WebDAV als Mittel zur Kalendersynchronisation anbieten koenne. Also habe ich mich endlich mal damit befasst. Und es zm laufen gebracht.

Server einrichten

Da ich bereits den Subversion-Server installiert hatte, musste ich keine weiteren Module fuer den Apachen installieren. Entsprechend muss das dav_module geladen sein. Als naechstes muss noch ein Verzeichnis in der httpd.conf als WebDAV-Verzeichnis eingerichtet werden:

[ad001@ikaria ~]$ less /usr/local/etc/apache22/Includes/dav.conf
DavLockDB /tmp/DavLock
<Location /ad001/davFolder>
        Allow from all
        DAV on
        AuthType Basic
	AuthName "WebDAV-Verzeichnis"
        AuthUserFile /var/db/svn/access/users/ad001
        ForceType text/plain
	<LimitExcept GET HEAD OPTIONS>
                Require user ad001
	</LimitExcept>
</Location>
			
Dieser Eintrag sieht folgendes vor:
Der Ordner ad001/davFolder wird hiermit zu einem WebDAV-gesgteuerten Verzeichnis gemacht (DAV on). Ferner wird eine basic-Authentifizierung eingerichtet (spaetestens jetzt sollte der Nutzer nach https verlangen, denn auth-basic-daten werden unverschluesselt uebers Netzwerk uebertragen). Dazu wird ein AuthName und ein AuthUserFile festgelegt. Anstelle des bekannte require valid-user werden hier die Rechte in einer LimitExcept-Klausel festgelegt. Nun noch ein Neustart des apachen und es sollte eigentlich alles funktionieren.

Erster Test

Nachdem der Apache sich ohne weitere Fehlermeldungen starten liess (ich kaempfe bisweilen ein wenig mit der Syntax der httpd.conf ;) war ein erster Test faellig. Dazu sollte hier das Kommandozeilenprogramm cadaver (auf freeBSD in /usr/ports/www/cadaver/ zu finden und zu bauen) genutzt werden, um zu verbinden und eine Dateiauflistung sowie das ablegen einer Datei zu testen.

[ad001@glas ~]$ cadaver http://139.30.1.202/ad001/davFolder
Authentication required for WebDAV-Verzeichnis on server `139.30.1.202':
Username: ad001
Password:
dav:/ad001/davFolder/> ls
Listing collection `/ad001/davFolder/': succeeded.
Coll:   contacts                               0  May  9 22:36
        Text File                              2  May  9 09:18
        blubb.ics                           1710  May 11 00:05
dav:/ad001/davFolder/> put execplugin.tex
Uploading execplugin.tex to `/ad001/davFolder/execplugin.tex':
Progress: [=============================>] 100.0% of 197 bytes succeeded.
dav:/ad001/davFolder/>
			
Scheint also alles zu klappen. Unter KDE 3.5 laesst sich das Verzeichnis auch problemlos ansprechen und ich kann darauf wie auf einem lokalen Datentraeger arbeiten. Und was macht man nun damit?

Synchronisierte Kalender

Es gibt viele Gruende, mehrere Kalenderprogramme (neuerdings als "PIM" -- Personal Information Management bezeichnet) synchronisieren zu wollen. Sei es, weil man mit mehreren Personen einen gemeinsamen Kalender fuehren moechte (Projektkalender, Familienkalender, Firmenkalender, ...) oder einfach nur fuer sich selbst an zwei Rechnern mit dem selben Kalender arbeiten moechte, ohne staendig von Hand die Dateisynchronisation uebernehmen zu muessen. Nun mag der Ein oder Andere einwenden, dass man dann doch etwas benutzen koenne, was ein Webinterface hat; damit waere das Problem ja auch geloest. Dabei stellen sich zwei Probleme: Zum einen mag ich persoenlich Webanwendungen nicht. Ich finde einen Browser keine geeignete Arbeitsumgebung fuer einen Kalender, eine Kontaktverwaltung oder einen Mailer. Zum zweiten waere dabei immer die Abhaengigkeit von einem dezentralen Programm; ein synchronisiertes Kalendeprogramm wird minimal auf jedem System einen Cache halten, damit der Kalender auch ohne unmittelbaren Netzzugriff nutzbar bleibt. Ohne Netzzugang faellt natuerlich die Syncronisierung weg, aber verglichen mit dem Verlust des gesamten Kalenders ist dies wohl durchaus das kleinere Uebel.
Da es eine Unzahl von Kalendersoftwares gibt, habe ich mich mal ein wenig umgeschaut, welche sich auf ein WebDAV ansetzen und damit synchronisieren lassen.

Kontact

Die KDE-Suite bringt als PIM eine Sammlung von Programmen fuer Mailing, Kontakteverwaltung, Kalender mit, die entweder einzeln als "kmail", "kaddressbook" usw. zu benutzen sind oder aber eingebettet in "kontact". Nach der ueblichen KDE-Startup-Minute (in meinem XFCE muss im Hintergrund erstmal eine halbe KDE zum Laufen kommen (mit kdecore, ...)) steht ein durchaus brauchbar aussehendes Programm zur Verwaltung persoenlicher Informationen vor mir. Nun zum Kalender: Man erstelle einen neuen Kalender und gebe als Typ "Calendar in Remote File" und gebe als Download- und Upload-URL eine Adresse wie "webdav://ikaria.informatik.uni-rostock.de/ad001/davFolder/test.ics" angeben. Das sollte es im Kern (abgesehen von der Passwortabfrage) gewesen sein, der neue Kalender sollte nun ohne Probleme nutzbar sein. Und zwar schon mal zwischen mehreren Rechnern mit Kontact synchron. :)

Thunderbird mit Lightning

Wer als Mailer Thunderbird in Benutzung hat, der wird sich vielleicht auch mit Thunderbird und dem Lightning-Plugin als Kalender anfreunden koennen. Auch hier ist das Anlegen eines syncronisierten Kalenders nicht weiter schwierig: Im Auswahlmenue zu den verschiedenen Kalendern (so etwas scheint heutzutage notwendig zu sein, offensichtlich reicht ein einzelner Kalender nicht mehr...) ueber das Kontextmenue oder ueber die normale Menueleiste und File - New - Calendar.. gelangt man zu einem Assistenten, der den Nutzer zunaechst fragt, ob ein lokaler oder ein im Netzwerk abgelegter Kalender erstellt werden soll. Hier nun das Naheliegende auswaehlen (also nicht lokal ;). Als Format ist iCal mit Kontact kompatibel, also habe ich es beibehalten; in das Textfeld habe ich eine entsprechende URL zum Kalender eingegeben. Vorsicht: Hier sollte die URL auch mit "http://" beginnen, einen webdav://-handler kennt Firefox erstmal nicht.
Mit Thunderbird habe ich nun auch das erste Programm gefunden, welches unter Windows lauffaehig ist und synchonisierte Kalender bietet (ohne Exchange vorauszusetzen...) :D

Apple iCal

Als purern Kalender liefert Apple mit MacOS X iCal aus. Ich habe das Importieren eines Kalenders aus einem WebDAV mit iCal in der Version 2.0.5 auf einem MacOS X 10.4 (Tiger) ausprobiert. Ergebnis: Ueber den Menuepunkt Calendar - Subscribe ist es denkbar einfach einen Kalender anzusehen. Jedoch ist ein importierter Kalender schreibgeschuetzt, so dass es erforderlich ist, einen zweiten, lokalen Kalender zu halten, wenn man auch Termine veroeffentlichen moechte. Und damit beginnen die Probleme: Ein Termin wird lokal angelegt und soll veroeffentlicht werden. Tja, welchen Kalender laesst man iCal nun hochladen? Den lokalen? Dann kann es passieren, dass die Eintraege anderer Benutzer verlorengehen werden -- dise stehen ja nicht in der lokalen Datei. Oder aber man veroeffentlicht beide? Wiedemauchimmer, nicht so intuitiv wie erhofft. Oder ich hab einfach die Option noch nicht gefunden, die es erlaubt, Kalender aus einem WebDAV ohne Schreibschutz zu importieren...

Microsoft Outlook

Ich habe einige Zeit damit verbracht, zu versuchen, meinen Kalender aus dem WebDAV in MS Outlook 2003 zu importieren -- leider irgendwie ohne Erfolg. Ich habe keinen adaequaten Menuepunkt finden koennen :(

Microsoft Outlook 2007

Einen WebDAV-Kalender zu importieren stellte sich als schwieriger heraus, als ihn zu exportieren... denn das laesst sich recht einfach ueber einen Kontextmenueaufruf ueber der Ueberschrift "Kalender" und den Befehl "Im Internet veroeffentlichen" nebst anschliessendem Dialog erledigen. Das Importieren hingegen war nicht so trivial. Zwar gibt es einen Import-Dialog und er enthaelt auch ics-Dateien. Aber diese kann man nur von der lokalen Platte laden. Also erst Download mit IE, dann in Outlook importieren...
Entweder ist das Marketing um mehr Exchange-Server zu pushen -- oder ich habe den Import von ics aus WebDAV nur nicht gefunden.. was ja auch nicht auszuschliessen ist.

Eine Frage bleibt

Eine Frage bleibt natuerlich bei aller Euphorie: Welcher der Benutzer eines gemeinsamen Kalenders schafft es als erster, seinen Privatkalender zu veroeffentlichen? Oder den gemeinsamen Kalender zu loeschen und einen Kalender mit nur einem Termin (dem neu erstellten) zu veroeffentlichen? Backups sind gut, und Backups sind sicherelich hier besonders notwendig.

Stichworte:


Impressum