Read access to addressbooks with iPhone not possible
We used DAViCal since version 1.1.1 and we now switched to 1.1.12. It is a fresh installation, not an update. OS: Ubuntu 24.04.1 LTS. DAViCal by package manager.
With the old version 1.1.1, we used a global addressbook (Principal type: Resource). All users had read access to it. Many different clients (Android DAVx5, iPhone, Thunderbird) could use the direct link to the global addressbook and access it without any problems.
With the new version 1.1.12, it is no longer possible with iPhone clients to access this resource. After adding the CardDav-Link to the global addressbook, the iPhone clients only show the users addressbook to select or add.
After analysing we could identify a difference of the response of the PROPFIND request:
Request to the new DAViCal 1.1.12 server:
curl -v https://new-caldav-server/davical/caldav.php/global-book/addresses/ -u myuser:password -X PROPFIND
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
<response>
<href>/davical/caldav.php/global-book/addresses/</href>
<propstat>
<prop>
<getcontenttype>httpd/unix-directory</getcontenttype>
<resourcetype>
<collection/>
<C:addressbook/>
</resourcetype>
<displayname>Global Addressbook</displayname>
<getlastmodified>Wed, 30 Oct 2024 10:00:27 GMT</getlastmodified>
<creationdate>20241004T084346Z</creationdate>
<getcontentlanguage/>
<supportedlock>
<lockentry>
<lockscope>
<exclusive/>
</lockscope>
<locktype>
<write/>
</locktype>
</lockentry>
</supportedlock>
<owner>
<href>/davical/caldav.php/global-book/</href>
</owner>
<current-user-principal>
<href>/davical/caldav.php/myuser/</href>
</current-user-principal>
<C:max-resource-size>6550000</C:max-resource-size>
<C:supported-address-data>
<C:address-data content-type="text/vcard" version="3.0"/>
</C:supported-address-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
Request to the old DAViCal 1.1.1 server:
curl -v https://old-caldav-server/davical/caldav.php/global-book/addresses/ -u myuser:password -X PROPFIND
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav">
<response>
<href>/davical/caldav.php/global-book/addresses/</href>
<propstat>
<prop>
<getcontenttype>httpd/unix-directory</getcontenttype>
<resourcetype>
<collection/>
<C:addressbook/>
</resourcetype>
<displayname>Global Addressbook</displayname>
<getlastmodified>Fri, 27 Sep 2024 12:59:17 GMT</getlastmodified>
<creationdate>20150916T110959Z</creationdate>
<getcontentlanguage/>
<supportedlock>
<lockentry>
<lockscope>
<exclusive/>
</lockscope>
<locktype>
<write/>
</locktype>
</lockentry>
</supportedlock>
<owner>
<href>/davical/caldav.php/global-book/</href>
</owner>
<current-user-principal>
<href>/davical/caldav.php/global-book/</href>
</current-user-principal>
<C:max-resource-size>65500</C:max-resource-size>
<C:supported-address-data>
<C:address-data content-type="text/vcard" version="3.0"/>
</C:supported-address-data>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
The old version responded with the URL to the global addressbook at <current-user-principal>. The new version with the URL to the user which tries to access the global addressbook. This could be the cause, that on a iPhone only the users addressbooks is shown (not the one with the <displayname> "Global Addressbook" which we were trying to access).
Any help finding the cause (maybe a wrong configuration of the new server or resource/principal) is very much appreciated.
Best regards,
Mischa