Die iKolab-Tools sind dazu geeignet, Kalender- und Aufgabeneinträge via IMAP aus einem Kolab2-Server in iCal-Dateien einzulesen und derartige Einträge aus iCal-Dateien in den Kolab2-Server zurückzuschreiben. Ferner können iCal-Dateien (z.B. aus Apple iCal, Mozilla Sunbird oder den iKolab-Tools) miteinander synchronisiert werden, so daß ein Austausch von Kalender- und Aufgabendaten zwischen dem Kolab2-Server und iCal-Applikationen möglich wird.
Schon seit geraumer Zeit experimentieren wir mit verschiedenen Groupware-Servern, um eine geeignete Open-Source-Lösung zu finden, welche die wesentlichen Funktionalitäten eines Microsoft-Exchange™-Servers abbilden kann - vor allem die Anbindung von Microsoft Outlook™ stellt die Anbieter von Groupware-Lösungen immer wieder vor Probleme.
Als auf diesem Feld aussichtsreichster Kandidat stellte sich der Kolab2-Server heraus. Kolab2 speichert alle Daten (z.B. eMail, Termine, Aufgaben, Kontakte, Journale und Notizen) auf einem leicht modifizierten Cyrus-IMAP4-Server, und zwar in einem offenen, gut dokumentierten XML-Format. Auf die Daten kann sowohl von Linux (mithilfe des KDE-PIMs KDE Kontact) als auch von Microsoft Windows™ aus zugegriffen werden. Die Anbindung von Microsoft Outlook™ wird durch zwei verschiedene, proprietäre Plugins gewährleistet (Konsec Konnektor v. 1 und Toltec Connector v. 2) - da der Toltec Connector stabil läuft, zu einem realistischen Preis erhältlich ist, alle erforderlichen Funktionalitäten enthält und einen guten Support bietet, setzen wir ihn inzwischen auch im Produktionsbetrieb ein.
Die Verwendung des Kolab2-Server birgt allerdings zwei wesentliche Nachteile, die nicht verschwiegen werden sollen: Weder existiert ein brauchbares Web-Backend zur Ansicht und Verwaltung der gespeicherten Daten (das Horde-Projekt will ein solches Backend produzieren, wird aber in absehbarer Zeit keine im Produktionsalltag einsetzbare Version herausbringen), noch ist z.Zt. die Anbindung von Apple-Rechnern an den Kolab-Server möglich. Sogar im Kalender iCal der Apple-Betriebssystemversion Mac OS X werden die Daten noch im veralteten ical/vcal-Format gespeichert; Datenaustausch und -synchronisation außerhalb kostenpflichtiger .Mac-Accounts und/oder mit Groupware-Servern ist bisher nicht möglich.
Da wir zur Anzeige MacOS-generierter Kalenderdaten das Web-Backend PHP iCalendar benutzen, lag es nahe, die Kolab2-Daten im iCal-Format zu exportieren und sie so im PHP iCalendar sichtbar zu machen. Aus diesem Vorhaben entstand ein Satz kleiner Tools, mit denen sich Kalenderdaten aus Kolab2 nicht nur exportieren, sondern auch synchronisieren und anschließend wieder importieren lassen, so daß grundsätzlich ein automatischer Abgleich der Kalenderdaten zwischen Microsoft Outlook™, Apple iCal, KDE Kontact und Kolab2 möglich wird.
<WARNUNG>: Die iKolab-Tools liegen bisher lediglich in Alpha-Versionen vor und sind nicht für den Produktionseinsatz gedacht. Es kann bei der Benutzung dieser Tools jederzeit zu Datenverlusten kommen, für die wir - wie auch für alle weiteren Gefahren, die eventuell mit der Benutzung dieser Software verbunden sein könnten - selbstverständlich keinerlei Verantwortung übernehmen können und werden. Mit einem Wort: Die Benutzung dieser Software geschieht vollständig auf eigene Gefahr. </WARNUNG>
Die iKolab-Tools bestehen aus drei Perl-Scripten: writekolab.pl, readkolab.pl und calsync.pl. Die Benutzung dieser Scripte setzt eine Perl-Version > 5.6.1 und die Installation einiger Module voraus:
Die Scripte sind von der Kommandozeile aus direkt lauffähig und können mit beliebigen, auch entfernten IMAP-(Kolab2-)Servern über eine via SSL gesicherte Verbindung kommunizieren. Verarbeitet werden können zur Zeit: Kalendereinträge/Termine (Events), Aufgaben (Tasks), Alarme in Kalendereinträgen und Aufgaben. Terminwiederholungen werden von readkolab.pl vollständig, von writekolab.pl bislang gar nicht unterstützt. Hinweise auf bekannte Bugs, ToDos & und Eigenarten finden sich jeweils im Kopfbereich der Scripte selbst.
readkolab.pl liest Kalenderdaten aus einem IMAP-Folder des Zielservers und schreibt diese Daten in eine iCal-Datei (*.ics); analog schreibt writekolab.pl die aus einer iCal-Datei gelesenen Daten in einen IMAP-Folder. Die Kommandozeilenoptionen sind bei beiden Scripten dieselben:
Optionen:
perl readkolab.pl/writekolab.pl -server foo.bar.test -port 993 -user "foo" -pass "bar" -eventfolder "INBOX/Kalender" -taskfolder "INBOX/Aufgaben" -file kolabdaten.ics
Alternative Optionen:
perl readkolab.pl/writekolab.pl -server foo.bar.test -port 993 -user "foo" -pass "bar" -l
gibt alle für den Benutzer "foo" freigegebenen IMAP-Folder aus, während
perl readkolab.pl/writekolab.pl -h (oder --help)
eine Übersicht der hier erwähnten Optionen erzeugt.
writekolab.pl liest und verarbeitet automatisch eine eventuell vorhandene, von calsync.pl (s.u.) angelegte *.del-Datei, um gelöschte Einträge auch auf dem IMAP-Server zu erkennen und zu löschen.
Beispiele:
Nur die Termine aus einem IMAP-Kalenderordner auslesen:
perl readkolab.pl -server foo.bar.test -port 993 -user "foo" -pass "bar" -eventfolder "INBOX/Kalender" -taskfolder off -file kolabdaten.ics
Nur die Aufgaben in einen IMAP-Aufgabenordner schreiben:
perl writekolab.pl -server foo.bar.test -port 993 -user "foo" -pass "bar" -eventfolder off -taskfolder "INBOX/Aufgaben" -file icaldaten.ics
calsync.pl vergleicht und synchronisiert zwei iCal-Dateien. Die Synchronisation findet anhand der UID und des Datums der letzten Änderung statt; UIDs gelöschter Termine und/oder Aufgaben werden in einer Datei mit der Endung *.del abgelegt, um gelöschte Einträge nicht versehentlich "zurückzusynchronisieren". Am Ende des Vorganges stehen zwei Dateien mit demselben Inhalt, die bspw. mit writekolab.pl dem IMAP-Server wieder übergeben werden können.
Optionen:
perl calsync.pl Datei1.ics Datei2.ics
calsync.pl kann bisher nur Termine und Aufgaben (inkl. der dazugehörigen Alarme) verarbeiten.
Wie schon erwähnt, handelt es sich bei diesen Scripten um Alpha-Versionen bzw. Machbarkeitsstudien. Der Perl-Code ist leider nicht sehr elegant und daher auch nicht leicht zu verstehen & und/oder zu verbessern - wer es dennoch wagt, sei hierzu herzlich eingeladen.
readkolab.pl und writekolab.pl: Die Elemente priority und status in Aufgaben/Tasks werden von jedem Client anders interpretiert, so daß es zu falschen Angaben kommen kann. Eine entsprechende Umsetzung muß noch implementiert werden.
readkolab.pl: Die Kolab-XML Elemente line-attachment und link-attachment werden nicht verarbeitet, ebensowenig wie eventuelle Attachments des Kolab-Datensatzes. Einge Optionen der Terminwiederholung, die zwar in Microsoft Outlook™, nicht aber in der Kolab-Spezifikation enthalten und daher in den Toltec- bzw. Konsec-Plugins jeweils unterschiedlich "implementiert" worden sind, können nicht gelesen werden.
writekolab.pl: Da der iCal-Standard eine vollkommen unüberschaubare Anzahl von Möglichkeiten besitzt, ein- und denselben Sachverhalt auszudrücken, kann writekolab.pl bisher nur iCal-Daten in den Formaten lesen & und verarbeiten, die von Mozilla Sunbird und Apple iCal bereitgestellt werden. Andere Formate des iCal-Standards werden möglicherweise nicht oder nicht korrekt gelesen und verarbeitet. Einige iCal-Elemente wie RRULE (Terminwiederholungen) und ATTENDEE werden übergangen und gehen daher bei einer vollständigen Synchronisationskette readkolab.pl - calsync.pl - writekolab.pl verloren. Falsche Zeilenterminierungen (z.B. LF statt CRLF) im iCal werden zwar größtenteils abgefangen, können aber dennoch zu vollkommen unvorhersehbaren Ergebnissen führen. writekolab.pl kann noch nicht mit Zeitzonen aus iCal-Dateien umgehen. Wenn die Zeitangabe der iCal-Daten nicht in UTC vorliegt, wird stattdessen eine lokale Zeitzone verwendet, die sich in den Variablen $conf{'DTIMEZ'} und $conf{'DTIMEO'} festlegen läßt.
calsync.pl: Zeilenumbrüche in langen iCal-Feldern (z.B. DESCRIPTION) werden vollständig vernichtet, so daß die entstehenden iCal-Dateien nicht mehr standardkonform sind - die meisten iCal-Programme verarbeiten diese Dateien zwar ohne Probleme, aber es kann dennoch zu Unfällen kommen.
Wir stellen hier die jeweils aktuellen Versionen der iKolab-Tools unter den Bedingungen der GPL zur Verfügung. An konstruktiver Kritik, Verbesserungsvorschlägen, Weiterentwicklungen und natürlich an Bugfixes sind wir jederzeit interessiert. Viel Vergnügen mit den iKolab-Tools!
Download (*.tgz): 20060607.iKolab-Tools.tgz (ca. 53kB)
• Festplattencheck und -backup CD (ISO, 700MB)
• Download LQ: low Quality (PDF 1.3, RGB, 145KB)
• Download NQ: normal Quality (PDF 1.3, RGB, 425KB)
• Download HQ: high Quality (PDF 1.4, CMYK, 1,5MB)