Hello,

what is the status of this?  Are the theoretical concerns clarified by
now?

About CALDAV:calendar-home-set:

While after logging in a user is supposed to find the list of the owned
calendars available with CALDAV:calendar-home-set, the specification
says this is an URL and the calendars owned by the user are  below that
URL.  Owned or not-owned does not matter here.

RFC4791 says for CALDAV:calendar-home-set "Identifies the URL of any
WebDAV collections that contain calendar collections owned by the
associated principal resource.". As it is not mandated, that a user has
to own calendars only within a single base URL, many base-URLs can be
returned.

Section 3.1 says: ... That might mean that calendaring data is spread
throughout the repository and mixed with non-calendar data in nearby
collections (e.g., calendar data may be found in /home/lisa/calendars/
as well as in /home/bernard/calendars/, and non-calendar data in
/home/lisa/contacts/).  Or, it might mean that calendar data can be
found only in certain sections of the repository (e.g., /calendar/).  

Any idea what happens, when /dav/calendars is returned in calendar-
home-set?

As having calendar (of bernard and lisa) data under /calendar/ is no
different than having calendar data under /home/bernard/calendars and
/home/list/calendars, the home-set can return either only /calendar/ or
both other URLs.

About caldav-clients not accepting two URLs here... some CalDAV clients
also don't accept the fact that CalDAV resource can be subscribed
without username/password, but they accept subscribing to iCalendar
files without username/password.  So it is a matter of time that caldav
clients adopt.

What is the concept with the data per user from <userid>.dav, when the
resources are in a shared namespace?

Regards
  Дилян



On Sat, 2018-04-07 at 18:30 -0300, Anatoli wrote:
> Hi All,
> 
> I'm trying to understand the code responsible for enumerating user calendars 
> (and xDAV resources in general) to try to make the discovery work for shared 
> resources too (currently there's no way to access shared resources with Apple 
> xDAV client implementation, yes with Thunderbird as it doesn't use the 
> discovery mechanism, but instead should be pointed to the exact URL for each 
> calendar). If I understand it correctly, the functionality is in 
> imap/http_caldav.c.
> 
> Could you please point me to the place where the enumeration occurs and 
> briefly mention how the general workflow looks like?
> 
> The client asks for:
> 
> PROPFIND /dav/calendars/user/<user@domain>/
> 
> <A:propfind xmlns:A="DAV:">
> ...
> 
> The server responds with:
> 
> HTTP/1.1 207 Multi-Status
> 
> <A:multistatus xmlns:A="DAV:" ...>
>   <A:response>
>     <A:href>/dav/calendars/user/<user@domain>/</A:href>
>     <A:propstat>
> ...
>   </A:response>
>   <A:response>
>     <A:href>/dav/calendars/user/<user@domain>/Default/</A:href>
>     <A:propstat>
>       <A:prop>
> ...
> 
> The idea is to include in the returned lists the shared calendars too with 
> the discovery logic based on the IMAP shared folders.
> 
> Below goes the initial exchange between the calendar app on iOS 10.2.6 and 
> Cyrus 3.0.5 when the exact URL (/dav/calendars/shared/) for the shared 
> calendar is provided in the advanced settings of the app (the URL finally 
> resets to the user principals folder (/dav/principals/user/t...@domain.com/) 
> as iOS is pointed to it by Cyrus). In the attached file goes the telemetry 
> for the rest of the communication.
> 
> Thanks,
> Anatoli
> 
> ---------- t...@domain.com Sun Mar 25 06:05:36 2018
> 
> <1521968736<PROPFIND /dav/calendars/shared/ HTTP/1.1
> Accept: */*
> Content-type: text/xml
> Connection: keep-alive
> Content-length: 181
> Host: mail.domain.com
> User-agent: iOS/11.2.6 (15D100) accountsd/1.0
> Prefer: return=minimal
> Depth: 0
> Brief: t
> Accept-language: en-us
> Authorization: Basic ...
> Accept-encoding: br, gzip, deflate
> 
> <1521968736<<?xml version="1.0" encoding="UTF-8"?>
> <A:propfind xmlns:A="DAV:">
>   <A:prop>
>     <A:current-user-principal/>
>     <A:principal-URL/>
>     <A:resourcetype/>
>   </A:prop>
> </A:propfind>
> 
> 
> >1521968736>HTTP/1.1 207 Multi-Status
> Date: Sun, 25 Mar 2018 09:05:36 GMT
> Strict-Transport-Security: max-age=600
> Vary: Accept-Encoding, Brief, Prefer
> Preference-Applied: return=minimal
> Content-Type: application/xml; charset=utf-8
> Content-Length: 546
> 
> <?xml version="1.0" encoding="utf-8"?>
> <A:multistatus xmlns:A="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
>   <A:response>
>     <A:href>/dav/calendars/shared/</A:href>
>     <A:propstat>
>       <A:prop>
>         <A:current-user-principal>
>           <A:href>/dav/principals/user/t...@domain.com/</A:href>
>         </A:current-user-principal>
>         <A:resourcetype>
>           <A:collection/>
>           <C:calendar/>
>         </A:resourcetype>
>       </A:prop>
>       <A:status>HTTP/1.1 200 OK</A:status>
>     </A:propstat>
>   </A:response>
> </A:multistatus>
> 
> <1521968736<OPTIONS /dav/principals/user/t3%40domain.com/ HTTP/1.1
> Host: mail.domain.com
> Connection: keep-alive
> Accept: */*
> User-Agent: iOS/11.2.6 (15D100) accountsd/1.0
> Accept-Language: en-us
> Content-Length: 0
> Accept-Encoding: br, gzip, deflate
> 
> >1521968736>HTTP/1.1 200 OK
> Date: Sun, 25 Mar 2018 09:05:36 GMT
> Strict-Transport-Security: max-age=600
> Cache-Control: no-cache
> Link: </dav/principals/.server-info>; rel="server-info"; 
> token="80769c2c66d340ecd178710db26d56b9c4699e3e"
> DAV: 1, 2, 3, access-control, extended-mkcol, resource-sharing
> DAV: calendar-access, calendar-auto-schedule
> DAV: calendar-query-extended, calendar-availability, 
> calendar-managed-attachments
> DAV: calendarserver-sharing, inbox-availability
> DAV: addressbook
> Allow: OPTIONS, GET, HEAD
> Allow: PROPFIND, REPORT, COPY
> Content-Length: 0

Reply via email to