---
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