IMAP 2 SyncML connector
Project goal: marry CommuiGate Pro and Funambol SyncML.
Last update: 31.8.2010
Warning: this is alpha software! Not everything is tested.
Please take into account that you might loose
all calendar data (on the server as well as on the device)
Prequisites:
Current state
- events, repeating events supported, no alarms
- new on server -> device: works
- updated on server -> device: works
- delete from server -> device: works
- new on device -> server: works
- updated on device -> server: works
- delete on device -> server: works
- timezones: not tested
- true incremental updates to SyncML Server (programs using WebDAV based calendars write the whole calendar at any change
and update ALL events);
imap2syncml checks the content of the data!
- SMS notification on change (PIM and e-mail)
- New contacts are now sent to CG (currently only new on device -> CG)
- sync-direction (between back-end and IMAP-Server) can be controled
- alarms are synced
- categories working
- different sync sources:
- extended feature: ICS files accessible via wget get synced read-only
- Funambol IMAP e-mail sync works out-of-the box (tested with Funambol BlackBerry e-mail client)
To-do
- verify attribute transformation (especially repeating-rules)
- check syncing to different devices
succesfully tested:
- Synthesis SyncML client on Palm Treo 650 via GPRS/EDGE and via Bluetooth
- Synthesis SyncML client on Palm Tungsten T5 with WiFi extension card via WLAN and via Bluetooth
- Synthesis SyncML client on Palm Tungsten TX via WLAN
- Synthesis SyncML client on iPAQ PocketPC via Bluetooth
- native client on Motorola Razr V3 via GPRS
- native client on Nokia 6300 via GPRS
- Funambol client on BlackBerry 8700g, 8707v and 8310 via Bluetooth and GPRS/EDGE (8707v via UMTS too)
- contacts
- notes
- tasks
Preparing the database back-end
Create a PostgreSQL database named "funambol" with password "funambol"
Install and configure Funambol
Install funambol. Prior to starting the SyncML server perform the following steps:
- change install.properties in the ds-server path like this
server-uri=
# The context path to use to access SyncServer
context-path=/funambol
#
# The DBMS name. One of:
# - hypersonic
# - postgresql
# - mysql
#
dbms=postgresql
# PostgreSQL
# ==========
#
jdbc.classpath=/usr/share/java/postgresql.jar
jdbc.driver=org.postgresql.Driver
jdbc.url=jdbc:postgresql://sts/funambol
jdbc.user=funambol
jdbc.password=funambol
#
#jdbc.driver=org.hsqldb.jdbcDriver
#jdbc.url=jdbc:hsqldb:hsql://localhost/funambol
#jdbc.user=sa
#jdbc.password=
#
# Modules definitions
#
modules-to-install=foundation-6.5.12,funambol-phones-support-6.5.6,funambol-email-6.5.12
- invoke "bin/install.sh" from the ds-server directory, let Funambol recreate the databases
- log-in to the database an do
- alter table fnbl_pim_calender add suid varchar(255);
- alter table fnbl_pim_calender add stouch int;
- alter table fnbl_pim_contact add suid varchar(255);
- alter table fnbl_pim_contact add stouch int;
- alter table fnbl_device add push int;
- update fnbl_device set push=0;
- now start the SyncML server
Initial tasks
- Create a CG user "sync4j" with password "sync4j".
- register all sync-users with Funambol, each user shall grant "sync4j" read/write permissions to
his calendar folder (right now the calendar folder is assumed to be named "Kalender", maildir format
is required)
- register all devices (this could be done by an initial sync to the SyncML server), best do it with an
empty device calendar
Attention: Timezone is crucial: set the approriate timezone of your device in the SyncML server
and allow automatic time conversion
- To enable SMS push you need an e-mail to sms gateway. Make sure the mobile phone numer of your device
is stored in the MSISDN field of fnbl_device (usually set via the Funambol admin tool).
Nearly done
Compile the connector (PostgreSQL developement files are required) by typing "make".
Start the connector with: "imap2syncml your-cg-host your-syncml-host"
Now make an initial sync with your device ...
You may set up a cron-job which invokes the above command periodically.
If you want to join in an contribute critics, codes and solutions your are welcome to
contact me via "n dot schmeisser at fzd dot de".
Nils