Inhaltsverzeichnis
Horde3 - SyncML
Horde Groupware ist eine freie, für den professionellen Einsatz, Browser basierte Kommunikationsanwendung. Benutzer können e-Mails lesen, versenden und verwalten. Es können gemeinsam genutzte Kalender, Kontakte, Aufgaben und Notizen mit Standard Komponenten des Horde-Projekts realisiert werden.
SyncML ist ein Zusatzpaket von Horde, welches einen Server emuliert, welcher als Synchronisationsserver für z.B. PoketPC, SmartPhones usw. dienen kann.
WICHTIG - Die Verwendung setzte einen Funambol-Client voraus !!!
Installation
Nachfolgende Befehle installieren alle benötigten PHP Extension and Application Repository's (PEAR)-Module, aus denen SyncML prinzipiell besteht:
# pear channel-discover pear.horde.org; pear install --force horde/SyncML horde/XML_WBXML ... # pear install --force horde/iCalendar ...
Nachfolgend muss eine Datei im z.B. Verzeichnis /tmp
mit nachfolgendem Inhalt angelegt werden, was mit dem Befehl z.B. vim
durchgeführt werden kann - der Name ist hier z.B.
syncml.sql
CREATE DATABASE syncml; USE syncml; CREATE TABLE syncml_data( syncml_id VARCHAR(255), syncml_db VARCHAR(255), syncml_uid VARCHAR(255), syncml_data TEXT, syncml_contenttype VARCHAR(255), syncml_created_ts INTEGER, syncml_modified_ts INTEGER ); CREATE TABLE syncml_map( syncml_syncpartner VARCHAR(255), syncml_db VARCHAR(255), syncml_uid VARCHAR(255), syncml_cuid VARCHAR(255), syncml_suid VARCHAR(255), syncml_timestamp INTEGER ); CREATE INDEX syncml_syncpartner_idx ON syncml_map (syncml_syncpartner); CREATE INDEX syncml_db_idx ON syncml_map (syncml_db); CREATE INDEX syncml_uid_idx ON syncml_map (syncml_uid); CREATE INDEX syncml_cuid_idx ON syncml_map (syncml_cuid); CREATE INDEX syncml_suid_idx ON syncml_map (syncml_suid); CREATE TABLE syncml_anchors( syncml_syncpartner VARCHAR(255), syncml_db VARCHAR(255), syncml_uid VARCHAR(255), syncml_clientanchor VARCHAR(255), syncml_serveranchor VARCHAR(255) ); CREATE TABLE syncml_suidlist( syncml_syncpartner VARCHAR(255), syncml_db VARCHAR(255), syncml_uid VARCHAR(255), syncml_suid VARCHAR(255) ); CREATE TABLE syncml_uids( syncml_uid VARCHAR(255), syncml_password VARCHAR(255) );
Anschließend werden mit nachfolgendem Befehl alle relevanten Komponenten in der Datenbank - hier MySQL angelegt:
# mysql -h localhost -u root -p horde < /tmp/syncml.sql Enter password:
Konfiguration
HINWEIS - Die Original-Installationsanleitung kann unter folgendem Link gefunden werden:
Hier wie wesentliche Schritte in komprimierter Form.
Folgende Verzeichnisse müssen als erstes angelegt werden, was mit nachfolgenden Befehlen durchgeführt werden kann:
# mkdir /usr/share/horde/syncconf # mkdir /usr/share/horde/syncconf/config # mkdir /usr/share/horde/syncconf/lib
Als erstes muss eine Datei in folgendem Verzeichnis
/usr/share/horde/syncconf/lib
mit folgendem Namen
api.php
mit nachfolgendem Inhalt, z.B. mit dem Editor vi
erstellt werden:
<?php $_services['import'] = array( 'args' => 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; }
HINWEIS - Es darf kein schließendes ?>
am Ende der Datei vorkommen !!!
Als nächstes muss eine Datei in folgendem Verzeichnis
/usr/share/horde/syncconf/config
mit folgendem Namen
conf.php
mit nachfolgendem Inhalt, z.B. mit dem Editor vi
erstellt werden:
<?php $conf['syncconf']['Funambol'] = true;
HINWEIS - Es darf kein schließendes ?>
am Ende der Datei vorkommen !!!
Zusätzlich muss die Konfigurationsdatei
/usr/share/horde/config/registry.php
am nachfolgenden Eintrag ergänzt werden (nur relevanter Ausschnitt):
... $this->applications['syncconf'] = array( 'fileroot' => dirname(__FILE__) . '/../syncconf', 'name' => 'Funambol Configuration', 'status' => 'hidden', 'provides' => array('configuration/listBy','configuration/list','configuration/import') ); ...
Die Konfigurationsdatei
/usr/share/horde/lib/SyncML/Backend.php
muss ebenfalls an gezeigter Stelle wie folgt ergänzt werden (nur relevanter Ausschnitt):
... function isValidDatabaseURI($databaseURI) { $database = $this->_normalize($databaseURI); switch($database) { case 'tasks': case 'calendar': case 'notes': case 'contacts': case 'configuration': return true; default: $this->logMessage('Invalid database "' . $database . '". Try tasks, calendar, notes or contacts.', __FILE__, __LINE__, PEAR_LOG_ERR); return false; } } ...
Die Ergänzung lautet hier
// Tachtler case 'configuration':
Die Konfigurationsdatei
/usr/share/horde/lib/SyncML/Backend/Sql.php
muss ebenfalls an gezeigter Stelle wie folgt ergänzt werden (nur relevanter Ausschnitt):
... function isValidDatabaseURI($databaseURI) { $database = $this->_normalize($databaseURI); switch($database) { case 'tasks': case 'calendar': case 'notes': case 'contacts': case 'configuration': case 'events': case 'memo': return true; default: $this->logMessage('Invalid database "' . $database . '". Try tasks, calendar, notes or contacts.', __FILE__, __LINE__, PEAR_LOG_ERR); return false; } } ...
Die Ergänzung lautet hier ebenfalls
// Tachtler case 'configuration':
HINWEIS - Damit sollte der Kontakt via SyncML hergestellt werden können !!!