On Mon, 2009-02-02 at 00:30 +0100, Sidney Amani wrote:
> Hi list,
> 
> We are currently developing an Gcal mapiproxy module which allows
> synchronization between Exchange calendar and Google Calendar.
> We have a draft that Julien saw, and we are going to release a new
> version, we would need some advices and recommendations to do so.
> In order to manage multi-user we heard about mpm_session, is there
> code using it we can inspire?

Hi Sidney,

Nice to hear you wish to continue this module development ;-)

Regarding mpm_session API, you can have a look at
mapiproxy/modules/mpm_cache.c. The module doesn't use it a 100% but you
should anyway find the snipset you're looking for.

The overall idea with mpm_session is to associate a user session
(server_id and context_id) with private data (void *) so each session
can keep specific data.

> To be able to delete and edit calendar events we need something to
> match gcal events with exchange ones.
> We heard about pdb database, any doc?  any code?

Hum I assume you meant TDB here.

Have a look at samba4/lib/tdb/docs/README. This should cover your
preliminary needs.

TDB is IMHO a good database for this purpose - wild guess - as long as
you are able to retrieve a unique ID from GCAL. You can next associate
PR_FID/PR_MID (Key) and GCAL ID (data).

e.g.:

Key 0x1234000000000001/0x3330000000000001
Data: http://google.com/.../appointment_url


> Delete Event
> - detect Deletion, don't know the Mapi function name but shouldn't be
> the hardest thing

DeleteMessages?


> gCal -> Outlook
> 
> This part is still obscure but I think about getting all gCal events
> from current time, and check if they are in our database else we add
> them.

By any hazard, does google calendar provides some kind of notification
system?

> We also check whether hashes are equal and we update the exchange
> event and the hash if needed.
> 
> But the question is when do we launch this synchronization ?
> I think we can run it every minute, is this a bad idea?

gcal -> Outlook sync is indeed a different problematic. You can:

        1. have a stand-alone service running which will push
        modifications from gcal and push it into Exchange. The main
        drawback with this method is that the "service" needs to have
        credentials for both Exchange and gcal accounts.
        
        2. Have a stand-alone service running and pushing modifications
        into a queue shared with your module. The module would be
        responsible for replicating changes as soon as the user perform
        operations on Exchange (idle or anything else). The main
        advantage is that you inject data within the user session, so
        you don't need to know about its credentials.
        
        3. Run the synchronization code within mapiproxy. IMO not a good
        idea, this may be really slow...

> Else libgcal provide functions to get gcal contacts so there is
> probably potential interesting features  with this...

Indeed.

> This mail is about announcing our module development and getting some advices.
> Any help will be welcomed.

Keep asking questions, we'll be happy to help as much as we can ;-)

-- 
Julien Kerihuel
[email protected]
OpenChange Project Manager

GPG Fingerprint: 0B55 783D A781 6329 108A  B609 7EF6 FE11 A35F 1F79

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
devel mailing list
[email protected]
http://mailman.openchange.org/listinfo/devel

Reply via email to