WebDAV и syncevolution
Понадобилось тут помочь с настройкой синхронизации контактов в телефоне, где нет поддержки webdav'а и его вариаций.
Ниже вы можете наблюдать развесистое дерево конфигов, необходимое для простой двухсторонней синхронизации типа "точка-точка". Всё это счастье располагается в ~/.config/syncevolution/
`syncevolution
├── owncloud
│ ├── peers
│ │ └── owncloud
│ │ ├── config.ini
│ │ └── sources
│ │ ├── addressbook
│ │ │ └── config.ini
│ │ ├── calendar
│ │ │ └── config.ini
│ │ ├── memo
│ │ │ └── config.ini
│ │ └── todo
│ │ └── config.ini
│ └── sources
│ ├── addressbook
│ │ └── config.ini
│ ├── calendar
│ │ └── config.ini
│ ├── memo
│ │ └── config.ini
│ └── todo
│ └── config.ini
└── owncloud-target
├── config.ini
├── peers
│ └── target-config
│ ├── config.ini
│ └── sources
│ ├── addressbook
│ │ └── config.ini
│ ├── calendar
│ │ └── config.ini
│ ├── memo
│ │ └── config.ini
│ └── todo
│ └── config.ini
└── sources
├── addressbook
│ └── config.ini
├── calendar
│ └── config.ini
├── memo
│ └── config.ini
└── todo
└── config.ini
27 directories, 19 files
Вводные:
- owncloud, это, внезапно, наш локальный источник данных
- owncloud-target - это удалённый источник
- memo и todo - не используется, поскольку локальный источник не может их выгружать, оставлены в листинге для примера.
- как я понял, конфиг не особо рассчитан на правку руками, и может быть переписан программой в любой момент
- предполагается, что под owncloud выделен отдельный hostname и включен https
Содержимое файлов, с комментариями. Все пути указываются относительно ~/.config/
. Во все места, где используются переменные, должны быть вписаны нужные значения, сам syncevolution переменные не понимает!
######## Локальный источник
# ./syncevolution/owncloud/sources/addressbook/config.ini
# смотрите внимательно комментарии в конфиге выше этой директивы,
# при неверном выборе выдаётся крайне невразумительная диагностика
backend = addressbook
# смотреть через `syncevolution --print-databases`
database = qtcontacts:org.nemomobile.contacts.sqlite:
# ./syncevolution/owncloud/sources/calendar/config.ini
# аналогично пункту выше
backend = calendar
# смотреть через `syncevolution --print-databases`
database = uid:70f9eee1-866e-4606-912c-2b1c94c084d1
# ./syncevolution/owncloud/peers/owncloud/sources/addressbook/config.ini
# в первый раз - ставится merge, потом переключается на two-way
# merge никогда ничего не удаляет!
sync = two-way
# ./syncevolution/owncloud/peers/owncloud/sources/calendar/config.ini
# аналогично пункту выше
sync = two-way
# ./syncevolution/owncloud/peers/owncloud/sources/memo/config.ini
# важно - отключить, иначе выдаст ошибку синхронизации
# и засоряет лог
sync = disabled
# ./syncevolution/owncloud/peers/owncloud/sources/todo/config.ini
# аналогично пункту выше
sync = disabled
# ./syncevolution/owncloud/peers/owncloud/config.ini
# самый главный конфиг
syncURL = local://@owncloud-target
printChanges = 0
PeerIsClient = 1
# чисто косметическая настройка - название пира
PeerName = owncloud
# показывать ли этот источник в gui
ConsumerReady = 1
######## Удалённый источник
# ./syncevolution/owncloud-target/sources/addressbook/config.ini
# ВАЖНО! если указан просто addreddbook или что-то подобное
# оно таки пытается использовать сеть, из-за того, что указано http://*
# но ломится при этом на localhost!
# также, "ADDR" - название адресной книги owncloud'а, см вебинтерфейс
backend = CardDAV
database = https://$HOSTNAME/remote.php/carddav/addressbooks/$USER/$ADDR
# ./syncevolution/owncloud-target/sources/calendar/config.ini
# $CAL - то же самое, что и выше, см вебинтерфейс
backend = CalDAV
database = https://$HOSTNAME/remote.php/caldav/calendars/$USER/$CAL
# ./syncevolution/owncloud-target/peers/target-config/sources/addressbook/config.ini
# merge - в первый раз, two-way - второй и последующие
sync = two-way
# ./syncevolution/owncloud-target/peers/target-config/sources/calendar/config.ini
# аналогично
sync = two-way
# ./syncevolution/owncloud-target/peers/target-config/config.ini
syncURL = https://$HOSTNAME/remote.php/
username = $USER
password = $PASS # пароль от owncloud'а
printChanges = 0
dumpData = 0
useProxy = 0
PeerName = owncloud
SSLVerifyServer = 0 # выставить в случае самоподписного сертификата
SSLVerifyHost = 0
ConsumerReady = 0
peerType = WebDAV
# ./syncevolution/owncloud-target/config.ini
# должен выставится сам при первом запуске, не трогать
deviceId = syncevolution-6ed8351d-76bb-4ee9-9c25-063849780848