Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:horde3_-_syncml

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 !!!

Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
tachtler/horde3_-_syncml.txt · Zuletzt geändert: 2012/07/24 23:20 von klaus