Web Client SyncML
From Kolab wiki
The Kolab Web Client, based on Horde offers a SyncML-Interface. In Server Distribution 2.2.2, if the web client is installed, the URL to access the interface is
https://your.kolabserver.example.org/client/rpc.php
Also check out http://wiki.horde.org/SyncHowTo .
Events and contacts are known to work in beta quality. The quality of the service will depend on the features of the used SyncML client.
The Kolab Web Client and Horde developers welcome any help in getting more devices supported.
Contents |
Compatibility List
| Device / Software | Connector | License | How To | Supported Features | |
|---|---|---|---|---|---|
| Microsoft Outlook 2007 | Funambol Outlook Client (Version 7.2.1) | AGPLv3 | (How Sync Outlook 2007 via the Funambol SyncML Client) | Calender, Contacts, Tasks, Notes | |
| Mozilla Thunderbird | Funambol Thunderbird Client (Version 0.9.1) | GPLv2 | (How Sync Thunderbird via the Funambol SyncML Client) | Calendar, Contacts, Tasks | |
| Nokia E71 | Internal Synchronisation Application | (How to sync Nokia E71) | Calendar (incl. Tasks), Contacts, Notes; beware! and beware! | ||
| Nokia E90 | Internal Syncronisations | (How Sync Nokia E90) | Calendar (for the moment) | ||
| Blackberry 8310 alias Curve | Funambol Blackberry Client (Version 7.2) | (How Sync Blackberry 8310) | Calendar, Contacts | ||
| IPhone | SyncML plug-in from Synthesis | synthesis.ch | The iPhone can synchronise calendars, contacts and todo's with Kolab 2.2.3. Didn't try shared resources yet. | ||
| IPhone | kolabiphone by Stefan Zimmermann | sourceforge.net | The iPhone can directly use contacts on the Kolab 2.x server. Reads Kolab.xml | ||
| Xperia X1 | SyncML plug-in from Synthesis | synthesis.ch | The Sony Ericsson Xperia X1 seems to work nearly perfect except one Thing (See WinMobile specials) | ||
| Samsung Omnia i900 | SyncML plug-in from Synthesis | synthesis.ch | The Samsung Omnia i900 seems to work nearly perfect except one Thing (See WinMobile specials) | ||
| Sony Ericsson G705 | Internal Synchronisation Application | Doesn't work. | |||
| Sony Ericsson G700 | Internal Synchronisation Application | Seems to work perfectly |
WinMobile special
Using Kolab 2.2.3 and Synthesis SyncML Client (Basic) for PDA.
- Entering Dates in Horde with PARTICIPANTS and REMINDER works great! Sync is done perfectly.
- Entering Dates on mobile devices with PARTICIPANTS behaves strange: Date is synchronised perfectly, but the PARTICIPANTS are LOST! Synthesis told us it must be a Server issue, could not find an error within the logs.
Contacts and Tasks are PERFECT!
Funambol, WinMobile,and Kolab
Using Kolab 2.2.4 and Funambol SyncML Client There's apparently a problem with the way Funambol works now. See this Horde bug. It appears to have been patched upstream, so hopefully this will eventually resolve itself.
# /kolab/bin/openpkg rc all stop
Files to edit (patch):
- /kolab/var/kolab/www/client/lib/SyncML/Command/Alert.php
*** /kolab/var/kolab/www/client/lib/SyncML/Command/Alert.php 2010-07-05 11:32:54.000000000 -0500
--- Alert.php 2010-08-30 17:54:13.000000000 -0500
***************
*** 152,157 ****
--- 152,162 ----
// @TODO: proper error handling!
return;
}
+ //adding next 4 lines for funambol
+ if ($database == 'configuration') {
+ $this->_outputHandler->outputStatus($this->_cmdID, $this->_cmdName,
+ RESPONSE_OK);
+ }
$clientAnchorNext = $this->_metaAnchorNext;
- /kolab/var/kolab/www/client/lib/SyncML/Backend.php
*** /kolab/var/kolab/www/client/lib/SyncML/Backend.php 2010-07-05 11:32:54.000000000 -0500
--- Backend.php 2010-08-30 17:54:03.000000000 -0500
***************
*** 446,462 ****
function isValidDatabaseURI($databaseURI)
{
$database = $this->_normalize($databaseURI);
!
switch($database) {
! case 'tasks';
! case 'calendar';
! case 'notes';
! case 'contacts';
return true;
default:
! $this->logMessage('Invalid database ' . $database
! . '. Try tasks, calendar, notes or contacts.',
__FILE__, __LINE__, PEAR_LOG_ERR);
return false;
}
--- 446,467 ----
function isValidDatabaseURI($databaseURI)
{
$database = $this->_normalize($databaseURI);
! //add case configuration for funambol
! //change semi-colons to colons in tasks calendar notes contacts
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.',
! //next two lines added for funambol
! $this->logMessage('Invalid database "' . $database
! . '". Try tasks, calendar, notes or contacts.',
__FILE__, __LINE__, PEAR_LOG_ERR);
return false;
}
- /kolab/var/kolab/www/client/lib/SyncML/Sync.php
*** /kolab/var/kolab/www/client/lib/SyncML/Sync.php 2010-07-05 11:32:53.000000000 -0500
--- Sync.php 2010-08-30 17:53:37.000000000 -0500
***************
*** 624,629 ****
--- 624,633 ----
function _retrieveChanges($syncDB, &$adds, &$replaces, &$deletes)
{
$adds = $replaces = $deletes = array();
+ //next 3 lines added for funambol
+ if ($syncDB == 'configuration') {
+ return;
+ }
$result = $GLOBALS['backend']->getServerChanges($syncDB,
$this->_serverAnchorLast,
$this->_serverAnchorNext,
# /kolab/bin/openpkg rc all start
It should work fine now; however, you may have to do the same to the following files:
- /kolab/var/kolab/www/fbview/lib/SyncML/Sync.php
- /kolab/var/kolab/www/fbview/lib/SyncML/Backend.php
- /kolab/var/kolab/www/fbview/lib/SyncML/Command/Alert.php
Known Issues
Unable to Sync Calendar / PHP Fatal error compareDateTime()
Open the file /kolab/var/kolab/www/client/kronolith/lib/Driver/kolab.php and edit according to the following lines.
Replace "if (is_null($startDate)) {" with "if (empty($startDate)) {"
and
Replace "if (is_null($endDate)) {" with "if (empty($endDate)) {"
Solution from the Kolab Mailinglist
Double Sync with SyncML when using external client
Horde is currently agnostic of external clients to the storage backend used by Horde/Kolab. For SyncML any storage changes need to get logged in order to be exchanged with the mobile clients.
Currently the Kolab drivers within Horde will create the necessary changelog. But this currently only happens after synchronization started. Which means that you need to syncronize twice in order to get changes from an external client if you did not log in via Horde after changing something with an external client.
The attached patch has been provided by Univention but needs some cleanup to go in upstream. We mainly need a clean library call in the Horde application libraries that will be called for synchronization.
Double Sync Patch
Solution from the Intevation Mailinglist
Clearing the SyncML info
It could be necessary to clear all the sync info. F.e. if you cleared your phone and want to resync all the info. In my case the synchronisation went wrong and clearing the syncml info in the database helped. So how to do on a openpkg kolab 2.2.2 installation.
Warning You CAN destroy all info allthough Kolab info should be untouched
These instructions delete ALL syncml data for ALL phones
- Become root
- go to the right folder: cd /kolab/var/kolab/www/client/storage
- open the database: /kolab/bin/sqlite horde.db
- delete all info from horde_syncml_anchors: delete from horde_syncml_anchors;
- delete all info from horde_syncml_map: delete from horde_syncml_map;
- quit the database: .quit
