<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Yes, these are related items.</p>
    <p><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 04/08/2018 10:08 PM, ellie timoney
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:1523239685.4184388.1330992344.31F5254F@webmail.messagingengine.com">
      <title></title>
      <style type="text/css">p.MsoNormal,p.MsoNoSpacing{margin:0}</style>
      <div>Is this thread covering the same ground as <a
          href="https://github.com/cyrusimap/cyrus-imapd/pull/2307"
          moz-do-not-send="true">https://github.com/cyrusimap/cyrus-imapd/pull/2307</a> ?
         I don't know DAV well enough to tell.<br>
      </div>
      <div><br>
      </div>
      <div>On Sun, Apr 8, 2018, at 10:53 AM, Ken Murchison wrote:<br>
      </div>
      <blockquote type="cite">
        <div>
          <div>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.  <br>
          </div>
          <div> <br>
          </div>
          <div> 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.<br>
          </div>
          <div> <br>
          </div>
          <div> To answer the original question, calendars are
            enumerated by meth_propfind() and propfind_by_collection()
            in http_dav.c<br>
          </div>
          <div> <br>
          </div>
          <div> <br>
          </div>
          <div> On 4/7/18 8:25 PM, Bron Gondwana wrote:<br>
          </div>
        </div>
        <blockquote
cite="mid:1523147109.3986766.1330184448.5F04F251@webmail.messagingengine.com"
          type="cite">
          <div style="font-family:Arial;">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.<br>
          </div>
          <div style="font-family:Arial;">
            <div><br>
            </div>
            <div>Bron.<br>
            </div>
          </div>
          <div><br>
          </div>
          <div><br>
          </div>
          <div>On Sun, 8 Apr 2018, at 07:30, Anatoli wrote:<br>
          </div>
          <blockquote type="cite">
            <div style="font-family:Arial;">Hi All,<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;">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.<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;">Could you please point me to
              the place where the enumeration occurs and briefly mention
              how the general workflow looks like?<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;">The client asks for:<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;"><span class="font"
                style="font-family:"Courier New"">PROPFIND
                /dav/calendars/user/<user@domain>/<br>
                <br>
                <A:propfind xmlns:A="DAV:"><br>
                ...</span></div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;">The server responds with:<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;"><span class="font"
                style="font-family:"Courier New"">HTTP/1.1 207
                Multi-Status<br>
                <br>
                <A:multistatus xmlns:A="DAV:" ...><br>
                  <A:response><br>
                   
                <A:href>/dav/calendars/user/<user@domain>/</A:href><br>
                    <A:propstat><br>
                ...<br>
                  </A:response><br>
                  <A:response><br>
                   
<A:href>/dav/calendars/user/<user@domain>/Default/</A:href><br>
                    <A:propstat><br>
                      <A:prop><br>
                ...</span></div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;">The idea is to include in
              the returned lists the shared calendars too with the
              discovery logic based on the IMAP shared folders.<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;">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@domain.com/) as iOS is
              pointed to it by Cyrus). In the attached file goes the
              telemetry for the rest of the communication.<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;">Thanks,<br>
            </div>
            <div style="font-family:Arial;">Anatoli<br>
            </div>
            <div style="font-family:Arial;"><br>
            </div>
            <div style="font-family:Arial;"><span class="font"
                style="font-family:"Courier New"">---------- <a
                  href="mailto:t3@domain.com" moz-do-not-send="true">t3@domain.com</a>
                Sun Mar 25 06:05:36 2018<br>
                <br>
                <1521968736<<b>PROPFIND</b> <b>/dav/calendars/shared/</b>
                HTTP/1.1<br>
                Accept: */*<br>
                Content-type: text/xml<br>
                Connection: keep-alive<br>
                Content-length: 181<br>
                Host: mail.domain.com<br>
                User-agent: iOS/11.2.6 (15D100) accountsd/1.0<br>
                Prefer: return=minimal<br>
                Depth: 0<br>
                Brief: t<br>
                Accept-language: en-us<br>
                Authorization: Basic ...<br>
                Accept-encoding: br, gzip, deflate<br>
                <br>
                <1521968736<<?xml version="1.0"
                encoding="UTF-8"?><br>
                <A:propfind xmlns:A="DAV:"><br>
                  <A:prop><br>
                    <A:current-user-principal/><br>
                    <A:principal-URL/><br>
                    <A:resourcetype/><br>
                  </A:prop><br>
                </A:propfind><br>
                <br>
                <br>
                >1521968736>HTTP/1.1 207 Multi-Status<br>
                Date: Sun, 25 Mar 2018 09:05:36 GMT<br>
                Strict-Transport-Security: max-age=600<br>
                Vary: Accept-Encoding, Brief, Prefer<br>
                Preference-Applied: return=minimal<br>
                Content-Type: application/xml; charset=utf-8<br>
                Content-Length: 546<br>
                <br>
                <?xml version="1.0" encoding="utf-8"?><br>
                <A:multistatus xmlns:A="DAV:"
                xmlns:C="urn:ietf:params:xml:ns:caldav"><br>
                  <A:response><br>
                    <A:href><b>/dav/calendars/shared/</b></A:href><br>
                    <A:propstat><br>
                      <A:prop><br>
                        <A:current-user-principal><br>
                          <A:href><b>/dav/principals/user/t3@domain.com/</b></A:href><br>
                        </A:current-user-principal><br>
                        <A:resourcetype><br>
                          <A:collection/><br>
                          <C:calendar/><br>
                        </A:resourcetype><br>
                      </A:prop><br>
                      <A:status>HTTP/1.1 200 OK</A:status><br>
                    </A:propstat><br>
                  </A:response><br>
                </A:multistatus><br>
                <br>
                <1521968736<OPTIONS
                /dav/principals/user/t3%40domain.com/ HTTP/1.1<br>
                Host: mail.domain.com<br>
                Connection: keep-alive<br>
                Accept: */*<br>
                User-Agent: iOS/11.2.6 (15D100) accountsd/1.0<br>
                Accept-Language: en-us<br>
                Content-Length: 0<br>
                Accept-Encoding: br, gzip, deflate<br>
                <br>
                >1521968736>HTTP/1.1 200 OK<br>
                Date: Sun, 25 Mar 2018 09:05:36 GMT<br>
                Strict-Transport-Security: max-age=600<br>
                Cache-Control: no-cache<br>
                Link: </dav/principals/.server-info>;
                rel="server-info";
                token="80769c2c66d340ecd178710db26d56b9c4699e3e"<br>
                DAV: 1, 2, 3, access-control, extended-mkcol,
                resource-sharing<br>
                DAV: calendar-access, calendar-auto-schedule<br>
                DAV: calendar-query-extended, calendar-availability,
                calendar-managed-attachments<br>
                DAV: calendarserver-sharing, inbox-availability<br>
                DAV: addressbook<br>
                Allow: OPTIONS, GET, HEAD<br>
                Allow: PROPFIND, REPORT, COPY<br>
                Content-Length: 0</span></div>
            <p>Email had 1 attachment:<br>
            </p>
            <ul>
              <li>
                <div style="font-family:Arial;"><code>telemetry.log</code><br>
                </div>
                <div style="font-family:Arial;">  36k (text/x-log)<br>
                </div>
              </li>
            </ul>
          </blockquote>
          <div style="font-family:Arial;"><br>
          </div>
          <div>
            <div>--<br>
            </div>
            <div>  Bron Gondwana, CEO, FastMail Pty Ltd<br>
            </div>
            <div>  <a href="mailto:brong@fastmailteam.com"
                moz-do-not-send="true">brong@fastmailteam.com</a><br>
            </div>
            <div><br>
            </div>
          </div>
          <div style="font-family:Arial;"><br>
          </div>
        </blockquote>
        <div><br>
        </div>
        <p><br>
        </p>
        <pre>-- 
Kenneth Murchison
Cyrus Development Team
FastMail Pty Ltd
</pre>
      </blockquote>
      <div><br>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Ken Murchison
Cyrus Development Team
FastMail US LLC</pre>
  </body>
</html>