Syncs only own collections as opposed to all calendars one is allowed to see



  • When adding a new account, only one's own calendars are proposed to be synchronised. But some of my users have access to other people's calendars (e.g. secretary access to boss calendar, boss&coworker read-only access to employees calendar for supervision & collaboration, ...). FWIW CalDAV-Sync (from dmfs.org) proposes all calendars one has access to.

    DAVdroid 0.5.13-alpha from F-Droid
    Oppo N1 running Android 4.4.2 (CyanogenMod 11-20140505-SNAPSHOT-M6-n1)
    DAViCal 1.1.1-1 running on own server

    Anonymized Log:

    I/davdroid.QueryServerDialogFragment( 4929): onCreateLoader
    D/davdroid.DavHttpClient( 4929): Disabling compression for debugging purposes
    D/davdroid.DavHttpClient( 4929): Logging network traffic for debugging purposes
    D/davdroid.WebDavResource( 4929): Using preemptive authentication (not compatible with Digest auth)
    D/davdroid.SNISocketFactory( 4929): Preparing direct SSL connection (without proxy) to https://calendar.example.org:443
    D/davdroid.SNISocketFactory( 4929): Using documented SNI with host name calendar.example.org
    I/davdroid.SNISocketFactory( 4929): Established TLSv1.2 connection with calendar.example.org using SSL_RSA_WITH_RC4_128_SHA
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 >> "OPTIONS / HTTP/1.1[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 >> "Host: calendar.example.org[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 >> "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 >> "User-Agent: DAVdroid/0.5.13-alpha[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 >> "Authorization: xxxxxxxx[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 >> "[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "HTTP/1.1 200 OK[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Date: Mon, 12 May 2014 13:48:22 GMT[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Server: Apache/2.2.22 (Debian)[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "X-Powered-By: PHP/5.3.3-7+squeeze16[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "DAV: extended-mkcol, bind, addressbook, calendar-proxy[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Allow: OPTIONS, PROPFIND, REPORT[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "X-DAViCal-Version: DAViCal/1.1.1; DB/1.2.11[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Vary: Accept-Encoding[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Content-Length: 0[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Keep-Alive: timeout=5, max=100[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "Content-Type: text/plain; charset="utf-8"[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-11 << "[\r][\n]"
    D/davdroid.SNISocketFactory( 4929): Preparing direct SSL connection (without proxy) to https://calendar.example.org:443
    D/davdroid.SNISocketFactory( 4929): Using documented SNI with host name calendar.example.org
    I/davdroid.SNISocketFactory( 4929): Established TLSv1.2 connection with calendar.example.org using SSL_RSA_WITH_RC4_128_SHA
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "PROPFIND / HTTP/1.1[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Content-Type: text/xml; charset=UTF-8[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Depth: 0[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Content-Length: 88[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Host: calendar.example.org[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "User-Agent: DAVdroid/0.5.13-alpha[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Authorization: xxxxxxxx[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "<propfind xmlns="DAV:">[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <current-user-principal/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "</propfind>"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "HTTP/1.1 207 Multi-Status[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Date: Mon, 12 May 2014 13:48:22 GMT[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Server: Apache/2.2.22 (Debian)[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "X-Powered-By: PHP/5.3.3-7+squeeze16[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "DAV: extended-mkcol, bind, addressbook, calendar-proxy[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "ETag: "552b793989f9f33157869bc5ed805eb9"[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "X-DAViCal-Version: DAViCal/1.1.1; DB/1.2.11[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Content-Length: 305[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Vary: Accept-Encoding[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Keep-Alive: timeout=5, max=100[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Content-Type: text/xml; charset="utf-8"[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "<?xml version="1.0" encoding="utf-8" ?>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "<multistatus xmlns="DAV:">[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " <response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <href>/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <current-user-principal>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <href>/caldav.php/user/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </current-user-principal>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <status>HTTP/1.1 200 OK</status>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  </propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " </response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "</multistatus>[\n]"
    D/davdroid.WebDavResource( 4929): Processing multi-status element: https://calendar.example.org/
    I/davdroid.ServerInfoLoader( 4929): Found principal path: /caldav.php/user/
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "PROPFIND /caldav.php/user/ HTTP/1.1[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Content-Type: text/xml; charset=UTF-8[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Depth: 0[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Content-Length: 200[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Host: calendar.example.org[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "User-Agent: DAVdroid/0.5.13-alpha[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Authorization: xxxxxxxx[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "<propfind xmlns="DAV:">[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <CD:addressbook-home-set xmlns:CD="urn:ietf:params:xml:ns:carddav"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <C:calendar-home-set xmlns:C="urn:ietf:params:xml:ns:caldav"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "</propfind>"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "HTTP/1.1 207 Multi-Status[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Date: Mon, 12 May 2014 13:48:22 GMT[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Server: Apache/2.2.22 (Debian)[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "X-Powered-By: PHP/5.3.3-7+squeeze16[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "DAV: extended-mkcol, bind, addressbook, calendar-proxy[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "ETag: "9b3ba9349defc6bd9558b59d1fd804ac"[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "X-DAViCal-Version: DAViCal/1.1.1; DB/1.2.11[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Content-Length: 498[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Vary: Accept-Encoding[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Keep-Alive: timeout=5, max=99[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Content-Type: text/xml; charset="utf-8"[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "<?xml version="1.0" encoding="utf-8" ?>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "<multistatus xmlns="DAV:" xmlns:VC="urn:ietf:params:xml:ns:carddav" xmlns:C="urn:ietf:params:xml:ns:caldav">[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " <response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <href>/caldav.php/user/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <VC:addressbook-home-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <href>/caldav.php/user/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </VC:addressbook-home-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C:calendar-home-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <href>/caldav.php/user/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </C:calendar-home-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <status>HTTP/1.1 200 OK</status>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  </propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " </response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "</multistatus>[\n]"
    D/davdroid.WebDavResource( 4929): Processing multi-status element: https://calendar.example.org/caldav.php/user/
    I/davdroid.ServerInfoLoader( 4929): Found address book home set: /caldav.php/user/
    I/davdroid.ServerInfoLoader( 4929): Found calendar home set: /caldav.php/user/
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "PROPFIND /caldav.php/user/ HTTP/1.1[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Content-Type: text/xml; charset=UTF-8[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Depth: 1[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Content-Length: 558[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Host: calendar.example.org[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "User-Agent: DAVdroid/0.5.13-alpha[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "Authorization: xxxxxxxx[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "<propfind xmlns="DAV:">[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <CD:addressbook-description xmlns:CD="urn:ietf:params:xml:ns:carddav"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <A:calendar-color xmlns:A="http://apple.com/ns/ical/"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <C:calendar-description xmlns:C="urn:ietf:params:xml:ns:caldav"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <C:calendar-timezone xmlns:C="urn:ietf:params:xml:ns:caldav"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <current-user-privilege-set class="java.util.LinkedList"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <displayname/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <resourcetype/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "      <C:supported-calendar-component-set class="java.util.LinkedList" xmlns:C="urn:ietf:params:xml:ns:caldav"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 >> "</propfind>"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "HTTP/1.1 207 Multi-Status[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Date: Mon, 12 May 2014 13:48:22 GMT[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Server: Apache/2.2.22 (Debian)[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "X-Powered-By: PHP/5.3.3-7+squeeze16[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "DAV: extended-mkcol, bind, addressbook, calendar-proxy[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "ETag: "d3fcc99045abdd57118c100bba78d307"[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "X-DAViCal-Version: DAViCal/1.1.1; DB/1.2.11[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Content-Length: 9874[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Vary: Accept-Encoding[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Keep-Alive: timeout=5, max=98[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Connection: Keep-Alive[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "Content-Type: text/xml; charset="utf-8"[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "[\r][\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "<?xml version="1.0" encoding="utf-8" ?>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav" xmlns:A="http://apple.com/ns/ical/" xmlns:C1="urn:ietf:params:xml:ns:caldav" xmlns:C2="http://calendarserver.org/ns/">[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " <response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <href>/caldav.php/user/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <current-user-privilege-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <all/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <unlock/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read-acl/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read-current-user-privilege-set/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-acl/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-properties/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-content/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <bind/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <unbind/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </current-user-privilege-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <displayname>Jo[0xc3][0xab]lle Mamane</displayname>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <resourcetype>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <collection/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <principal/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </resourcetype>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <status>HTTP/1.1 200 OK</status>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  </propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C:addressbook-description/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <A:calendar-color/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C1:calendar-description/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C1:calendar-timezone/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C1:supported-calendar-component-set/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <status>HTTP/1.1 404 Not Found</status>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  </propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " </response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " <response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <href>/caldav.php/user/calendar/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <current-user-privilege-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <all/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <unlock/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read-acl/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read-current-user-privilege-set/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-acl/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <C1:read-free-busy/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-properties/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-content/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <bind/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <unbind/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </current-user-privilege-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <displayname>Agenda Jo[0xc3][0xab]lle Gestman</displayname>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <resourcetype>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <collection/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:calendar/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </resourcetype>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C1:supported-calendar-component-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:comp name="VEVENT"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:comp name="VTODO"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:comp name="VJOURNAL"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:comp name="VTIMEZONE"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:comp name="VFREEBUSY"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:comp name="VPOLL"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <C1:comp name="VAVAILABILITY"/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </C1:supported-calendar-component-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <status>HTTP/1.1 200 OK</status>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  </propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C:addressbook-description/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <A:calendar-color/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C1:calendar-description/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <C1:calendar-timezone/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   </prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <status>HTTP/1.1 404 Not Found</status>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  </propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " </response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << " <response>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <href>/caldav.php/user/second_calendar/</href>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "  <propstat>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "   <prop>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    <current-user-privilege-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <all/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <unlock/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read-acl/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <read-current-user-privilege-set/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-acl/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <C1:read-free-busy/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-properties/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <write-content/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <bind/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     <privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "      <unbind/>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "     </privilege>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-outgoing-12 << "    </current-user-privilege-set>[\n]"
    D/ch.boye.httpclientandroidlib.wire( 4929): http-out…
    
    [truncated while importing]

  • developer

    Which resources do you want to be shown in your case?

    I guess that the problem is not caused by read/write access (DAVdroid supports read-only calendars), but by the empty supported-calendar-component-set property which means that this collection MUST not contain ANY calendar component types, thus no events, so it's useless to show it.



  • On Tue, May 13, 2014 at 05:51:56AM -0700, rfc2822 wrote:

    Which resources do you want to be shown in your case?

    /caldav.php/user1/calendar
    /caldav.php/user2/calendar
    /caldav.php/user3/calendar
    /caldav.php/user4/calendar
    /caldav.php/user4/second_calendar
    /caldav.php/user5/calendar
    /caldav.php/user6/calendar

    Where user1, user2, user3, user4, user5 and user6 are user names of
    other users on the DAViCal server.

    I guess that the problem is not caused by read/write access
    (DAVdroid supports read-only calendars), but by the empty
    supported-calendar-component-set
    property which means that this collection MUST not contain ANY
    calendar component types, thus no events, so it's useless to show
    it.

    No, the collection with empty supported-calendar-component-set is the
    address book. That's normal. I think that DAVdroid only asks for the
    list of calendars under /caldav.php/user/ instead of all calendars
    of all users.

    DAVdroid makes:

    PROPFIND /caldav.php/user/ HTTP/1.1
    Depth: 1
    Host: calendar.example.org

    I did manually (with telnet):

    PROPFIND /caldav.php/ HTTP/1.1
    Depth: 2
    Host: calendar.example.org

    Then I get a reasonable list, with other user's calendar. DAVdroid may
    want to do recursive lookup / multiple requests with depth 1 (one
    depth 1 request per user on the server).

    --
    Lionel


  • developer

    . I think that DAVdroid only asks for the list of calendars under /caldav.php/user/ instead of all calendars of all users.

    OK, that's true. DAVdroid asks for the calendar home-set of the specified user (see also: https://tools.ietf.org/html/rfc6764#section-6). Why should it look up at / or /asdf or /dzu7 ?

    So, if I understand your point correctly, you're suggesting that not only the "home calendar set" should be shown, but also other ones. Do you know if there's a way to enumerate other ("all") collections on a server? I have never seen it, but only the "home calendar set" way for auto-detection.



  • So, if I understand your point correctly, you're suggesting that not
    only the "home calendar set" should be shown, but also other
    ones. Do you know if there's a way to enumerate other ("all")
    collections on a server? I have never seen it, but only the "home
    calendar set" way for auto-detection.

    From looking at logs of how another CalDAV sync app does it, my
    guess is that it uses the calendar-proxy-write-for and
    calendar-proxy-read-for to enumerate the other calendars the user has
    access to.

    Also, it seems you can use calendar-user-address-set to autosniff the
    right email address to put as organizer, instead of asking it from the
    user?

    This is all just educated guesses from looking at the server logs, but
    it seems to hold :)

    davical: LOG: :***************** Request Header **************** 
    davical: LOG: :PROPFIND /caldav.php/user/ 
    davical: LOG: headers:-->Content-Type: application/xml; charset="utf-8" 
    davical: LOG: headers:-->Cache-Control: no-cache 
    davical: LOG: headers:-->Pragma: no-cache 
    davical: LOG: headers:-->Prefer: return-minimal 
    davical: LOG: headers:-->Depth: 0 
    davical: LOG: headers:-->Content-Length: 285 
    davical: LOG: headers:-->Host: calendar.example.com 
    davical: LOG: headers:-->Connection: Keep-Alive 
    davical: LOG: headers:-->User-Agent: CalDAV-Sync (Android) (like iOS/5.0.1 (9A405) dataaccessd/1.0) gzip 
    davical: LOG: headers:-->Authorization: Delicious tasty password eaten by debugging monster! 
    davical: LOG: headers:-->Accept-Encoding: gzip 
    davical: LOG: :******************** Request ******************** 
    davical: LOG: request:--><?xml version="1.0" encoding="utf-8" ?><A:propfind xmlns:B="http://calendarserver.org/ns/" xmlns:A="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"><A:prop><B:calendar-proxy-write-for/><B:calendar-proxy-read-for/><C:calendar-user-address-set/><C:calendar-home-set/></A:prop></A:propfind> (...) 
    davical: LOG: :***************** Response Header **************** 
    davical: LOG: headers:-->X-Powered-By: PHP/version 
    davical: LOG: headers:-->Server: 1.1 
    davical: LOG: headers:-->DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule 
    davical: LOG: headers:-->DAV: extended-mkcol, bind, addressbook, calendar-proxy 
    davical: LOG: headers:-->ETag: "13f30da42b51d80e0df8a973424d8ed3" 
    davical: LOG: headers:-->X-DAViCal-Version: DAViCal/1.1.1; DB/1.2.11 
    davical: LOG: headers:-->Content-type: text/xml; charset="utf-8" 
    davical: LOG: :******************** Response ******************** 
    davical: LOG: response:--><?xml version="1.0" encoding="utf-8" ?> 
    davical: LOG: response:--><multistatus xmlns="DAV:" xmlns:A="http://calendarserver.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav"> 
    davical: LOG: response:--> <response> 
    davical: LOG: response:--> <href>/caldav.php/user/</href> 
    davical: LOG: response:--> <propstat> 
    davical: LOG: response:--> <prop> 
    davical: LOG: response:--> <A:calendar-proxy-write-for> 
    davical: LOG: response:--> <href>/caldav.php/user1/</href> 
    davical: LOG: response:--> <href>/caldav.php/user2/</href> 
    davical: LOG: response:--> <href>/caldav.php/user3/</href> 
    davical: LOG: response:--> <href>/caldav.php/user4/</href> 
    davical: LOG: response:--> <href>/caldav.php/user5/</href> 
    davical: LOG: response:--> <href>/caldav.php/user6/</href> 
    davical: LOG: response:--> </A:calendar-proxy-write-for> 
    davical: LOG: response:--> <A:calendar-proxy-read-for> 
    davical: LOG: response:--> <href>/caldav.php/user7/</href> 
    davical: LOG: response:--> <href>/caldav.php/user8/</href> 
    davical: LOG: response:--> <href>/caldav.php/user9/</href> 
    davical: LOG: response:--> <href>/caldav.php/user10/</href> 
    davical: LOG: response:--> <href>/caldav.php/user11/</href> 
    davical: LOG: response:--> <href>/caldav.php/user12/</href> 
    davical: LOG: response:--> <href>/caldav.php/user13/</href> 
    davical: LOG: response:--> <href>/caldav.php/user14/</href> 
    davical: LOG: response:--> <href>/caldav.php/user15/</href> 
    davical: LOG: response:--> <href>/caldav.php/user16/</href> 
    davical: LOG: response:--> <href>/caldav.php/user17/</href> 
    davical: LOG: response:--> <href>/caldav.php/user18/</href> 
    davical: LOG: response:--> <href>/caldav.php/user19/</href> 
    davical: LOG: response:--> </A:calendar-proxy-read-for> 
    davical: LOG: response:--> <C:calendar-user-address-set> 
    davical: LOG: response:--> <href>mailto:user@domain.tld</href> 
    davical: LOG: response:--> <href>/caldav.php/user/</href> 
    davical: LOG: response:--> </C:calendar-user-address-set> 
    davical: LOG: response:--> <C:calendar-home-set> 
    davical: LOG: response:--> <href>/caldav.php/user/</href> 
    davical: LOG: response:--> </C:calendar-home-set> 
    davical: LOG: response:--> </prop> 
    davical: LOG: response:--> <status>HTTP/1.1 200 OK</status> 
    davical: LOG: response:--> </propstat> 
    davical: LOG: response:--> </response> 
    davical: LOG: response:--></multistatus>
    

  • developer

    The Calendar User Proxy is a draft that can be found here: http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk/doc/Extensions/caldav-proxy.txt

    It will maybe be implemented in DAVdroid, but I'd like to know about its status and whether making it a real standard/RFC is planned/scheduled.

    Mabe you can help me finding information about that?



  • Calendar User Proxy is apparently supported by Sabre/dav (see http://sabre.io/dav/caldav-proxy/), and I would assume also by the Darwin Calendar Server, but it is not supported by some other servers such as Radicale (which I am using). I didn't find anything about standardization or making it an RFC, maybe you should contact the author (Cyrus Daboo) and ask him.

    Anyway, as this looks like something which will take quite some time until it appears both in davdroid and most servers, why not support something simpler at least until then? I still think that the patch I proposed is a quick fix which allows to use davdroid with slightly more complicated calendar settings without investing more than a few minutes of time.

    And yes, I know that it has some drawbacks (you can accidently edit the calendar, and davdroid cannot write the change back since it has read-only access). But at least it gives users which know the URLs of the calendars a way to add them.



  • I would also like to be able to use an addressbook whihc is not located in my "addressbook-home-set" because I have read access in a public adressbook on my server and read/write access in my personal adressbook. Davdroid currently always selects my personal adressbook only because I have to logon with my "individual" credentials. Even if I give the complete path to the public adressbook in the "base-url" it will logon correctly but only show my "personal addressbook" and not the one entered.
    I want to access the public addressbook with one account and use the additional contacts of my personal addressbook.



  • I am new to java, but the change could maybe made in QueryServerDialogFragment.java adding something like
    if (base.isAddressBook()) {
    Log.i(TAG, "Adding base address book: " + base.getLocation().getRawPath());
    ServerInfo.ResourceInfo info = new ServerInfo.ResourceInfo(
    ServerInfo.ResourceInfo.Type.ADDRESS_BOOK,
    base.isReadOnly(),
    base.getLocation().toASCIIString(),
    base.getDisplayName(),
    base.getDescription(), base.getColor()
    );
    addressBooks.add(info);
    }



  • This function seems to be in DavResourceFinder.java now. I had the old source of 0.5.14 downloaded here...


  • developer

    I would also like to be able to use an addressbook whihc is not located in my "addressbook-home-set" because I have read access in a public adressbook on my server and read/write access in my personal adressbook.

    Most servers I have seen just add a shared address book to the home-set (quite like a symlink). Which server do you use? Wouldn't that be possible and maybe more useful? Available address books should be auto-detectable.



  • I am using radicale 0.7 on a raspi for storing calendars and addressbooks.
    According to rfc4791 the calendar-home-set in Caldav "is meant to allow users to easily find the calendar collections OWNED by the principal". Accoding to rc6352 this is valid for CardDav respectively for addressbook-home-set. So calendars and adressbooks owned by others to which I have read-rights should not be returned by these requests.



  • I think it is an acceptable workaround for this "limitation" of the -home-set-requests to retrieve all the addressbooks or calendars a principal has access to, is to "respect" the base-url the user has entered to retrieve additionally the calendars or addressbooks at the base-url and let the user choose one adressbook or select the calendars he/she wants.


  • developer

    So calendars and adressbooks owned by others to which I have read-rights should not be returned by these requests.

    You may report this in the bug trackers of the OwnCloud etc. I think that basically you're right, but on the other side, there's no reliable way to detect readable address books (calendars). There's an Apple-internal extension called caldav-proxy, but it's only for CalDAV and it's not even a proposed standard. Some servers/clients use it, though. By the way, read-only address books are not supported by Android and thus not by DAVdroid.

    Read-only calendars are possible, though. Calendars which are found using calendar-home-set may be read-only (DAVdroid evaluates the DAV privilige set); so I guess the concept of "owning" a calendar can be (over)interpreted as "have access to it" and not only "fully owning" it, meaning read/write access.

    I think it is an acceptable workaround for this "limitation" of the -home-set-requests to retrieve all the addressbooks or calendars a principal has access to, is to "respect" the base-url the user has entered to retrieve additionally the calendars or addressbooks at the base-url and let the user choose one adressbook or select the calendars he/she wants.

    Sounds like a very "hacky" workaround for me. This way, only one resource can be added per account. Also, the decision to not use the user-given path for other purposes than as initial context path when .well-known doesn't work is because of the reason that 99% of users don't know what the pathes are for (for instance, how many people who just want to add a calendar know about principal paths or even that address books are "virtual folders" with .vcfs in it?) and enter some garbage – which I fully understand because of the complexity of CalDAV/CardDAV. This is why we have chosen to support auto-detected resources, only.



  • To help the 99% of the users I think "auto-detection" should not be switched off in any way. I think DAVdroid could try additonally to find and adress book at the entered base-url. If it cannot find an address book there no harm is done in case the user "entered some garbage" as you stated. Still I would be good to enable a more "knowing" user so he/she can add "public" or "other owners" addresbooks or calendars at "other" places. Yes this would enable only 1 additional address book per account and only calendars in one additional "virtual folder", but would help several people around. I think it would not be "against standard". I also think enumerating all calendars a user has read access to or enumerating all calendars a user has read/write access to would be potentially time consuming and not useful. But there should be an option by "server adminstrators" to "point" their users to other resources. Giving them access rights to resources of other owener is another "thing" handled in the CAlDAV/Carddav-server. But beeing able to access these resources from other owners is also a "feature" of the client. I don't think enabling this "additional try at the base url" wouldd not doany harm regarding the auto-detection for other users.
    Currently I see otherwise no way for me to access those calendars owned by other principals with Davdroid.
    Thanks for the hint that I will have to set the access rights for the public addressbook to read/write for every principal that shall use it.
    Is there an "easy describable" way for me to "compile" my own version of davdroid from the sources and "try" it on my android device? Can you point me to a description on "how to build from the sources" for this java-bases application? My phone is not rooted.


  • developer

    Sounds reasonable, but we have to think about how this can be handled.

    In the meanwhile, you may of course patch and compile DAVdroid for yourself.


  • i18n

    Why not add an option on the setup page? Just a checkbox under "the root URL" saying "Disable auto-detect (advanced)" is OK.



  • I have tried compiling davdroid myself and have done successfully this. After some fiddling around it even worked.
    I have recently decided to set up 2 davdroid accounts pointing to the same server and retrieve the "public" and the "personal" addressbook and calendars this way.
    This works goods enough so I reverted to the vanilla davdroid 0.10 now.



  • Just a quick "me too"; we have some shared calendars here, of other folks etc, and it would be really useful to be able to see these via davdroid. Has there been any more thought about how this might be implemented?



  • As my ticket 492 was linked here and closed, I'll continue my exchange with davdroid team here.

    A right way of managing authorisation in a caldav/carddav server is to create collection, and then defining authorisation depending of credentials of the user.

    The result of this is tha fact that a user might have access in RO or RW to collections which are not the principal one of the user.

    I fork localy the davdroid code for making a POC, by unactivating the getprop:current_user_principal URI and it is working. I'm adding a checkbox in the login URL page to leave the user the possibility to choose if the getprop should be called (and also this allow us to leave the default comportement).

    Are you interested in this modification?

    Below an answer I did in ticket 492:

    Yes, I agree with that, but I'm not good enough to know an other way to get a such good management of authorisation.

    Maybe an other caldav/carddav server is listing all accessible collection by a user in its own collection as virtual calendar maybe, but I don't know a such server.

    I agree what I'm asking for is for advanced user and configuration. That's why my patch on the fork I've done keep the default way of working of davdroid, but it could be changed as davdroid suggest a premptive login mode.

    Cheers,
    handfreezer


Log in to reply
 

Looks like your connection to Bitfire App Forums was lost, please wait while we try to reconnect.