[Kroupware] Kolab iCal <-> IMAP converter

Jason A. Pattie pattieja at pcxperience.com
Tue May 27 17:31:50 CEST 2003


Hello,

In our quest to provide functionality to non-kroupware enabled clients
(like Evolution, Mozilla Calendar, Apples' iCal, etc.) we have come up
with the following approach that should enable those clients to
communicate their iCal data back and forth with other Kroupware enabled
clients.

The following ASCII art should give an overall picture of the components
involved:

 ------------------------        ---------        ------------
| Kolab cyrus-imap store | <==> | Modules | <==> | Web Server |
 ------------------------        ---------        ------------
                                 imap2ical         WebDAV
                                 ical2imap         CGI (mod_perl?)

--------BIG NOTE!-------
| IMAP is the ultimate |
| authority for the    |
| ical events!!        |
------------------------
Any time a change happens in the IMAP server, the ical file needs to be
re-exported to the Web Server so that clients pulling the ical file
don't force an ical generation on every request.  This includes
uploading an ical file to the Web Server interface.  Can the IMAP server
notify us of changes or run external programs on changes.  We really
don't want to have to add this feature to Cyrus IMAP.

imap2ical
---------
0. Authentication?
1. Get list of e-mails in Calendar folder
2. Create array of ical events from e-mails
3. Create master ical file from list

ical2imap
---------
0. Authentication
1. Split ical file into events
2. Get ical events from mail server
3. Process incoming events against the Deleted Events Log
4. Update events in mail server
5. Return modified ical file

Handling deleted events
-----------------------
We are assuming the Deleted Events Log is being updated by the Kroupware
client or by monitoring the imap store.  Caveat: the act of modifying an
event deletes the original event e-mail and creates a new one!  Thus we
cannot update on every event?

-----------
How do we handle "different" events that have the same UID and Sequence
number?
Example: Two clients synchronized, then made changes to the same event.
 Hence, the UID and sequence numbers are the same, but the contents are
very different (i.e., subject, description, comments, alarm times, alarm
set, date, recurrence, times, etc.).

2 modes:
--------
1. Do not care about properly synchronizing deletes
2. Keep track of deleted events so we can synchronize correctly


An alternative to using the same password for mail and web authentication:
--------------------------------
Our imap "proxy" connects as "ical", where "ical" has write permissions
on all Kolab accounts.  We then only need the username to validly read,
delete, insert events.

Drawbacks:
----------
. Management of accounts is more complex
. No immediate way to prevent spoofing without an ical password or some
authentication means to the proxy


We have thrown more ideas around than this, but wanted to get these out
so people could analyze and give feedback.

Is anyone doing this or thinking along any of these lines as we do not
want to duplicate work?

Thanks for your help.

Xperience, Inc.
http://www.xperienceinc.com

-- 
Jason A. Pattie
pattieja at xperienceinc.com


-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.



More information about the Kroupware mailing list