--- title: WebDAV и syncevolution tags: webdav --- Понадобилось тут помочь с настройкой синхронизации контактов в телефоне, где нет поддержки 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