Suche
Kategorien
Getaggte Artikel
Impressum
Max-Planck-Ring 6d
98693 Ilmenau
Tel./Fax: +49 3677 691929
info@fem.tu-ilmenau.de
www.fem.tu-ilmenau.de
Vertretungs-
berechtigter Vorstand:
Vorsitzender:
Adrian Schollmeyer
Stellvertretender Vorsitzender:
Robin Lehmann
Schatzmeisterin:
Anna Brede
Stellvertretender Schatzmeister:
Maximilian Klook
Registergericht:
Amtsgericht Ilmenau
Registernummer: 120483
Datenschutzerklärung
Verwaltung des Blogs
Thursday, 1. October 2009
Synchronisieren könnte soooo einfach sein ...
... denn es gibt ja wie bei vielem Anderen auch standardisierte Protokolle. Leider existieren für die meisten Aufgaben entweder eine große Auswahl unterschiedlichster Standards oder jeder spricht so ein Bisschen seinen eigenen Dialekt.
Ein gutes Beispiel für den letzteren Fall ist das Protokoll SyncML zur Synchronisierung von Kalender-, Kontakt und ähnlichen Daten. Auch die von FeM benutzte Webmail- und Groupware-Lösung Horde bietet dafür eine Schnittstelle an. Einem Backup seines externen Gedächtnisses in Form seines Mobiltelefons oder PDAs stünde von dieser Seite nichts im Weg.
So weit so gut. Leider ist die Auswahl an Clients für derartige Geräte nicht sonderlich groß. Die größte Verbreitung in dieser Geräteklasse hat der Client von Funambol. Aber wie bei Monopolisten üblich, spricht auch dieser seinen eigenen Dialekt und funktioniert out-of-the-box nur mit dem Haus-eigenen SyncML-Server.
Grund hierfür ist die Abfrage einer im Standard nicht vorgesehenen Tabelle 'configuration'. Existiert diese nicht, bricht der Client ohne genaue Fehlermeldung ab. Interessant hierbei ist, dass anscheinend in der aktuellen Version gar keine benötigte Daten in der Tabelle ablegtund sie auch nur bei der ersten Verbindung abfragt werden.
Leider stößt man auf der Suche nach einer Lösung sowohl beim Hersteller des Clients als auch dem Horde-Projekt auf taube Ohren.
Es gibt jedoch verschiedene Workarounds:
Die einfachste Lösung besteht in der Benutzung einer älteren Client-Version vor Version 7. Einfach, aber sicherlich nicht wünschenswert.
Alternativ sieht die von Horde vorgeschlagene Lösung zuerst eine Synchronisierung gegen eine ältere Horde-Version vor, gefolgt von einem anschließenden Ändern des Servers in der Registry. Leider hat man meistens keinen solchen Server zur Hand und auch das ändern von Registry-Einträgen ist eher als Ausnahme zu empfehlen.
Oder man folgt dem Vorschlag von Pascal Gienger und gaukelt dem Clienten einfach vor er könne Daten in dieser Tabelle schreiben.
Da auch bei FeM die ersten beiden Möglichkeiten praktisch nur schwer umsetzbar sind, wurde kurzerhand letztere Lösung umgesetzt. Auf das sich jemand Neues eine weitere "praktische Erweiterung" zu einem existierenden Standard ausdenkt .
Für Interessierte hier noch eine Zusammenfassung in Form eines Patches, der zumindest bei den von uns eingesetzten Horde Webmail Edition 1.2.3 und 1.2.4 funktioniert:
diff -Naur webmail.orig/config/registry.php webmail/config/registry.php
--- webmail.orig/config/registry.php 2009-05-01 12:12:37.000000000 +0200
+++ webmail/config/registry.php 2009-09-30 21:23:54.000000000 +0200
@@ -525,3 +525,10 @@
return $webroot;
}
+
+$this->applications['syncconf'] = array(
+ 'fileroot' => dirname(__FILE__) . '/../syncconf',
+ 'name' => 'Funambol Configuration',
+ 'status' => 'hidden',
+ 'provides' => array('configuration/listBy','configuration/list','configuration/import')
+);
diff -Naur webmail.orig/lib/SyncML/Backend/Sql.php webmail/lib/SyncML/Backend/Sql.php
--- webmail.orig/lib/SyncML/Backend/Sql.php 2009-05-01 12:12:36.000000000 +0200
+++ webmail/lib/SyncML/Backend/Sql.php 2009-09-30 21:26:46.000000000 +0200
@@ -120,6 +120,7 @@
case 'calendar';
case 'notes';
case 'contacts';
+ case 'configuration';
case 'events':
case 'memo':
return true;
diff -Naur webmail.orig/lib/SyncML/Backend.php webmail/lib/SyncML/Backend.php
--- webmail.orig/lib/SyncML/Backend.php 2009-05-01 12:12:36.000000000 +0200
+++ webmail/lib/SyncML/Backend.php 2009-09-30 21:26:08.000000000 +0200
@@ -457,6 +457,7 @@
case 'calendar';
case 'notes';
case 'contacts';
+ case 'configuration';
return true;
default:
diff -Naur webmail.orig/syncconf/config/conf.php webmail/syncconf/config/conf.php
--- webmail.orig/syncconf/config/conf.php 1970-01-01 01:00:00.000000000 +0100
+++ webmail/syncconf/config/conf.php 2009-09-30 21:22:16.000000000 +0200
@@ -0,0 +1,2 @@
+ array('content' => 'string', 'contentType' => 'string', 'source' => 'string'),
+ 'type' => 'string',
+);
+
+$_services['listBy'] = array(
+ 'type' => '{urn:horde}stringArray'
+);
+
+$_services['list'] = array(
+ 'type' => '{urn:horde}stringArray'
+);
+
+function _syncconf_import($content, $contentType = 'array', $import_source = null)
+{
+ $result="";
+ return $result;
+}
+
+function _syncconf_listBy()
+{
+ $ar=array();
+ return $ar;
+}
+
+function _syncconf_list()
+{
+ $ar=array();
+ return $ar;
+}
Kommentare
Im Übrigen ist das wirklich ein Bug im Funambol-Client, was auch ein Kommentator auf meinem Eintrag richtigerweise gesagt hat. Sollte eigentlich in der nächsten Funambol-Client-Version korrigiert sein.
Der "configuration"-Tree ist keine unerlaubte Erweiterung sondern einfach der Name einer weiteren SyncML-Datenbank - da kann man soviele definieren wie man möchte. Der Funambol-Client holt sich über diese Datenbank alle Einstellungen vom Funambol-Server, die er benötigt - der Benutzer muss dann gar nix einstellen. Der Bug ist nur, dass der aktuelle Client bei Nichtvorhandensein dieses "configuration"-Trees jegliche Mitarbeit verweigert.
Grüße aus Konstanz!
Trackbacks