syncevolution/src/backends/activesync/README

158 lines
5.7 KiB
Plaintext

Compilation
===========
activesyncd development files must be installed so that pkg-config
finds libeassync.pc. --enable-activesync then enables the ActiveSync
backend. It is off by default, even if development files are found.
Quickstart
==========
Check that it is enabled:
$ syncevolution backend=? | grep -i activesync
ActiveSync Address Book = eas-contacts
ActiveSync Events = eas-events
ActiveSync Todos = eas-todos
ActiveSync Memos = eas-memos
Configure access to the server:
$ syncevolution --configure \
syncURL= \
username=<email adddress identifying the account> \
addressbook/backend=eas-contacts \
calendar/backend=eas-events \
todo/backend=eas-todos \
memo/backend=eas-memos \
target-config@exchange addressbook calendar todo memo
List items:
$ syncevolution --print-items target-config@exchange [calendar|addressbook|todo|memo]
Debugging:
- run with --daemon=no (otherwise syncevo-dbus-server will execute the operation)
- set SYNCEVOLUTION_DEBUG (otherwise SyncEvolution will suppress stdout/stderr from libs)
Configure synchronization:
$ syncevolution --configure \
--template SyncEvolution_Client \
syncURL=local://@exchange \
username= \
password= \
exchange
Run a sync (involving all four data types!):
$ syncevolution exchange
Sync only events:
$ syncevolution exchange calendar
Note that it is not possible to share the same username in the target
config between different sync configs, because change tracking is tied
to the account, not the config using it. For the same reason, listing
items will affect syncing if the same username (= account) is used in
both.
As a workaround it is possible to set up different accounts for the
same server, see below.
Backend Testing
===============
In addition to an activesyncd account called <EAS account ID> (usually
an email adddress), also create an activesyncd account called <EAS
account ID>_B ("_B" appended) with the same settings *plus*
"device_id" set explicitly. The value must be different than the one
chosen automatically (see apps/activesyncd/device_id key). Because
Exchange might not accept arbitrary strings, stick to the scheme of
"32 digit hexadecimal number".
This second accounts is required for Client::Source::*::testChanges,
which must simulate two independent ActiveSync clients.
Configure "local" testing (backend is covered, no syncing involved):
./syncevolution --configure username=<EAS account ID> \
eas_event/backend=eas-events \
eas_event/database= \
eas_contact/backend=eas-contacts \
eas_contact/database= \
--template SyncEvolution target-config@client-test-exchange
On MeeGo:
- install syncevolution-test and syncevolution-synccompare
- create an empty directory, enter it
- copy /usr/share/doc/syncevolution/testcases
- CLIENT_TEST_UNIQUE_UID=1 \
CLIENT_TEST_SERVER=exchange \
client-test Client::Source::eas_event
When compiling SyncEvolution:
- enter the src directory
- CLIENT_TEST_UNIQUE_UID=1 \
CLIENT_TEST_SERVER=exchange \
PATH=.:$PATH \
./client-test Client::Source::eas_event
CLIENT_TEST_UNIQUE_UID is necessary to avoid a UID conflict in a
simple-minded insertion test. The proper solution is to add an "item
exists" error to activesyncd and handle that in
ActiveSyncSource::insertItem().
The test data that is used for testImport is in:
testcases/eds_event.ics
This data was meant for Evolution. Because it is standard iCalendar 2.0,
it is a suitable starting point for Exchange. If it turns out that this
data doesn't work with Exchange, then a simplified/adapter version of
the file can be put into:
testcases/eds_event.ics.exchange.tem
Sync Testing
============
- Configure target-config@exchange with source 'calendar' and 'addressbook'.
- Create two sync configs:
syncevolution --configure \
syncURL=local://@exchange \
username=<EAS account ID> \
eds_event/backend=evolution-calendar \
eds_event/uri=eas_event \
eds_event/database=SyncEvolution_Test_eds_event_1 \
eds_contact/backend=evolution-contacts \
eds_contact/uri=eas_contact \
eds_contact/database=SyncEvolution_Test_eds_contact_1 \
--template SyncEvolution_Client exchange_1@client-test-1 eds_event eds_contact
syncevolution --configure \
syncURL=local://@exchange \
username=<EAS account ID>_B \
eds_event/backend=evolution-calendar \
eds_event/uri=eas_event \
eds_event/database=SyncEvolution_Test_eds_event_2 \
eds_contact/backend=evolution-contacts \
eds_contact/uri=eas_contact \
eds_contact/database=SyncEvolution_Test_eds_contact_2 \
--template SyncEvolution_Client exchange_2@client-test-2 eds_event eds_contact
- Create calendars named as follows in Evolution:
SyncEvolution_Test_eds_event_1
SyncEvolution_Test_eds_event_2
- run test (see above for invoking client-test and setting up "testcases"):
CLIENT_TEST_UNIQUE_UID=1 CLIENT_TEST_SERVER=exchange \
client-test Client::Sync::eds_event::testCopy
This setup depends on overriding the username in
target-config@exchange with different usernames in each sync
config. This is necessary because change tracking depends on that
username.
Google via ActiveSync
=====================
- Use "googleeas" instead of "exchange", because ActiveSyncSourceRegister.cpp
needs to know that it is talking to Google, to work around the lack of
Fetch command support.