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