shared xDAV resources

Ken Murchison murch at fastmail.com
Sun Apr 8 22:59:30 EDT 2018


Yes, these are related items.



On 04/08/2018 10:08 PM, ellie timoney wrote:
> 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 <mailto: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 <mailto:brong at fastmailteam.com>
>>>
>>>
>>
>>
>> -- 
>> Kenneth Murchison
>> Cyrus Development Team
>> FastMail Pty Ltd
>

-- 
Ken Murchison
Cyrus Development Team
FastMail US LLC

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.andrew.cmu.edu/pipermail/cyrus-devel/attachments/20180408/4812e441/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: murch.vcf
Type: text/x-vcard
Size: 4 bytes
Desc: not available
URL: <http://lists.andrew.cmu.edu/pipermail/cyrus-devel/attachments/20180408/4812e441/attachment-0001.vcf>


More information about the Cyrus-devel mailing list