shared xDAV resources
ellie timoney
ellie at fastmail.com
Sun Apr 8 22:08:05 EDT 2018
Is this thread covering the same ground as
https://github.com/cyrusimap/cyrus-imapd/pull/2307 ? I don't know DAV
well enough to tell.
On Sun, Apr 8, 2018, at 10:53 AM, Ken Murchison wrote:
> I originally wrote the code to handle public calendars in the "shared"
> namespace, but I focused on user calendars first, and public calendar
> support got tossed on the back burner. It appears that the code for
> public calendars partly works.>
> My first thought to get auto-discovery of public calendars is to add
> /dav/calendars as a second calendar-home-set for users and see what
> the Apple clients do with that. I don't know if they can handle
> multiple home-sets. If that doesn't work, then we could map public
> calendars into the user's home-set via the same subscription
> mechanism that we use for CalDAV sharing.>
> To answer the original question, calendars are enumerated by
> meth_propfind() and propfind_by_collection() in http_dav.c>
>
> On 4/7/18 8:25 PM, Bron Gondwana wrote:
>> Ken knows this code best. I bet there's something which is requiring
>> that there's a user on the mboxname because we implement the same
>> behaviour at FastMail by having a separate user on which shared
>> resources are kept. The DAV resources are stored per-user, and
>> without a place to keep them for "shared calendars" that code might
>> just not be accessible. I'm sure it would be possible to create a
>> shared DAV database as well for this case, but it just needs some
>> programming effort.>>
>> Bron.
>>
>>
>> On Sun, 8 Apr 2018, at 07:30, 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 at 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 at domain>/</A:href>
>>> <A:propstat> ... </A:response>
>>> <A:response>
>>> <A:href>/dav/calendars/user/<user at 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/t3 at 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
>>>
>>> ---------- t3 at 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/t3 at 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>>> Email had 1 attachment:
>>> * telemetry.log 36k (text/x-log)>>
>> --
>> Bron Gondwana, CEO, FastMail Pty Ltd
>> brong at fastmailteam.com
>>
>>
>
>
> -- Kenneth Murchison Cyrus Development Team FastMail Pty Ltd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.andrew.cmu.edu/pipermail/cyrus-devel/attachments/20180409/425d9ee2/attachment.html>
More information about the Cyrus-devel
mailing list