Project

General

Profile

MDaemon als CardDAV Server funktioniert nicht

Added by User User over 1 year ago

Guten Tag,

ich nutze MDaemon (www.mdaemon.de) als Groupwareserver unter Windows. Dort ist auch ein CalDav- und CardDav-Interface aktiv, das bspw. mit em.client oder Android perfekt zusammenarbeitet. Wegen eines neuen IP Phones (Fanvil) habe ich nun diese wirklich interessante Software installiert (Windows) und getestet. Die Verbindung Telefon -> l2cpbg funktioniert, Abfragen kommen, aber kein Ergebnis.

Kein Wunder, der Import vom CardDav-Server schlägt fehl:

23:42:15 [DBG] [client] Got Sync-Token '' for AddressBook 'Kontakte/Test' from db
23:42:15 [INF] [client] Found no Sync-Token for AddressBook 'Kontakte/Test'. Assume new AddressBook, initiate full load...
23:42:15 [INF] [client] Loading AddressBook 'Kontakte/Test'...
23:42:16 [ERR] [client] Failed loading AddressBook 'Kontakte/Test': loadAddressesByChunks('/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/', ...) failed with: MultiGetAdrBooks('/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/', ...) failed with chunk 1/1 error: parsing time ""2022-07-02T23:27:57.000Z"" as "Mon Jan _2 15:04:05 2006": cannot parse ""2022-07-02T23:27:57.000Z"" as "Mon"

So sieht die VCF aus:

BEGIN:VCARD
VERSION:3.0
PRODID:-//MDaemon Technologies Ltd//MDaemon 22.0.0
UID:e287495833af4a57b3a55702329ea790
REV:20220702T212757Z
FN:Hans Müller
ORG:Stahlbau;
N:Müller;Hans;;;
TEL;PREF=1;TYPE=WORK,VOICE:089999999
END:VCARD

Und so die Logs auf MDaemon-Seite:

REPORT https://localhost/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/ HTTP/1.1
Host: localhost
User-Agent: Go-http-client/1.1
Content-Length: 409
Authorization: XXXXXXXXXXXXXXXXXXXX
Content-Type: text/xml; charset="utf-8"
Depth: 1
Accept-Encoding: gzip
<?xml version="1.0" encoding="UTF-8"?>
<addressbook-multiget xmlns="urn:ietf:params:xml:ns:carddav"><href xmlns="DAV:">/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/e287495833af4a57b3a55702329ea790.vcf</href><prop xmlns="DAV:"><address-data xmlns="urn:ietf:params:xml:ns:carddav"></address-data><getlastmodified xmlns="DAV:"></getlastmodified><getetag xmlns="DAV:"></getetag></prop></addressbook-multiget>

--------------------------------------------------------------------

HTTP/1.1 207 Multi-Status
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: -1
Pragma: No-cache
Access-Control-Allow-Methods: OPTIONS,POST,GET,PUT,DELETE,PROPFIND,PROPPATCH,REPORT,MKCALENDAR,MKCOL,ACL
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Authorization,Authentication,origin,Content-Type,Depth,Referrer,User-Agent,If-Match,MS-ASAcceptMultiPart,MS-ASProtocolVersion,X-MS-PolicyKey,X-MDaemon-WebDAV
Access-Control-Expose-headers: location,X-MDaemon-WebDAV
Content-Length: 715
Content-Type: application/xml; charset=utf-8
Connection: close

<D:multistatus xmlns:D="DAV:" xmlns:card="urn:ietf:params:xml:ns:carddav">
<D:response>
<D:href>/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/e287495833af4a57b3a55702329ea790.vcf</D:href>
<D:propstat>
<D:prop>
<card:address-data>BEGIN:VCARD
VERSION:3.0
PRODID:-//MDaemon Technologies Ltd//MDaemon 22.0.0
UID:e287495833af4a57b3a55702329ea790
REV:20220702T212757Z
FN:Hans Müller
ORG:Stahlbau;
N:Müller;Hans;;;
TEL;PREF=1;TYPE=WORK,VOICE:089999999
END:VCARD
</card:address-data>
<D:getlastmodified>"2022-07-02T23:27:57.000Z"</D:getlastmodified>
<D:getetag>"2022-07-02T23:27:57.000Z"</D:getetag>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>

Und auf MDaemon-Seite noch die vorgelagerte PROPFIND-Abfrage:

PROPFIND https://localhost/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/ HTTP/1.1
Host: localhost
User-Agent: Go-http-client/1.1
Content-Length: 185
Authorization: XXXXXXXXXXXXXXXXXXXX
Content-Type: text/xml; charset="utf-8"
Depth: 1
Accept-Encoding: gzip
<?xml version="1.0" encoding="UTF-8"?>
<propfind xmlns="DAV:"><prop xmlns="DAV:"><displayname xmlns="DAV:"></displayname><getcontenttype xmlns="DAV:"></getcontenttype></prop></propfind>

--------------------------------------------------------------------

HTTP/1.1 207 Multi-Status
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: -1
Pragma: No-cache
Access-Control-Allow-Methods: OPTIONS,POST,GET,PUT,DELETE,PROPFIND,PROPPATCH,REPORT,MKCALENDAR,MKCOL,ACL
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Authorization,Authentication,origin,Content-Type,Depth,Referrer,User-Agent,If-Match,MS-ASAcceptMultiPart,MS-ASProtocolVersion,X-MS-PolicyKey,X-MDaemon-WebDAV
Access-Control-Expose-headers: location,X-MDaemon-WebDAV
Content-Length: 725
Content-Type: application/xml; charset=utf-8
Connection: close

<D:multistatus xmlns:D="DAV:">
<D:response>
<D:href>/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/</D:href>
<D:propstat>
<D:prop>
<D:displayname>Kontakte/Test</D:displayname>
<D:getcontenttype>httpd/unix-directory</D:getcontenttype>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
<D:response>
<D:href>/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/e287495833af4a57b3a55702329ea790.vcf</D:href>
<D:propstat>
<D:prop>
<D:displayname/>
</D:prop>
<D:status>HTTP/1.1 404 Not Found</D:status>
</D:propstat>
<D:propstat>
<D:prop>
<D:getcontenttype>text/vcard</D:getcontenttype>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
</D:multistatus>

Ich denke, MDaemon formatiert den Timestamp anders, als erwartet, und deswegen bricht dann direkt beim ersten Eintrag der Import ab.
Im "Test"-Kontakte-Ordner ist übrigens auch nur dieser eine Eintrag. Aber auch andere Kontakte-Ordner mit vielen Einträgen erzeugen denselben Fehler.

Gehe ich recht in der Annahme, dass hier L2CPBG angepasst werden müsste?

Danke für eine Antwort, aus Datensparsamkeitsgründen bin ich ohne Echtname und Echtmail unterwegs.


Replies (4)

RE: MDaemon als CardDAV Server funktioniert nicht - Added by Jörg Ebeling over 1 year ago

Hallo User!

Freut mich das Du mein Tool gefunden hast.

Herzlichen Dank für den ausführlichen Report.

Mit den Logs von MDaemon komme ich noch nicht ganz klar^^ (ist aber auch schon spät)

Doch was mein L2CPBG im Log aus spuckt, kommt mir im Moment auch etwas dünn vor.
Kannst Du Dein L2CPBG bitte mal auf "trace" logging stellen?
Dann nochmal neu starten und genau den gleichen Abschnitt beobachten ab:
23:42:15 [INF] [client] Loading AddressBook 'Kontakte/Test'...

Einfach nur "Failed loading AddressBook..." kommt mir im Moment etwas dünn vor ;-)
Ich kann mir nicht vorstellen das es beim "debug" oder "trace" logging keine aussagekräftigere Meldung gibt.

Deine Vermutung mit dem Timestamp kann ich noch nicht ganz sehen... kann mich nicht erinnern das der "lastmodified" oder "etag" iwie ausgewertet wird.

RE: MDaemon als CardDAV Server funktioniert nicht - Added by User User over 1 year ago

Guten Morgen,

debug-Level war das schon, hier mit trace-Level:

09:41:01 [INF] [client] Found no Sync-Token for AddressBook 'Kontakte/Test'. Assume new AddressBook, initiate full load...
09:41:01 [INF] [client] Loading AddressBook 'Kontakte/Test'...
09:41:01 [TRC] [client] loadAddressesByChunks('Kontakte/Test'...)
09:41:02 [ERR] [client] Failed loading AddressBook 'Kontakte/Test': loadAddressesByChunks('/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/', ...) failed with: MultiGetAdrBooks('/webdav/carddav/xxx.com/user/b64=S16udGFrdGUvVGVzdA/', ...) failed with chunk 1/1 error: parsing time ""2022-07-02T23:27:57.000Z"" as "Mon Jan _2 15:04:05 2006": cannot parse ""2022-07-02T23:27:57.000Z"" as "Mon"
09:41:02 [TRC] [  db  ] GarbageCollect()```

Es sieht mir schon schwer danach aus, dass da das Auslesen und Auswerten der Timestamps fehl schlägt.
Mehr kommt nicht im Output.

Schönen Sonntag!

RE: MDaemon als CardDAV Server funktioniert nicht - Added by Jörg Ebeling over 1 year ago

Moin moin User!

Herzlichen Dank.

Ich war natürlich zu blind gestern und Du hattest recht.
Wenn man nicht zu doof zum bedienen seines eigenen Forums ist und mal ganz nach rechts gescrollt hätte...

Klar, wie Du schon ganz am Anfang gesagt hast, parsing Fehler des gelieferten Timestamps.

Weiß zwar noch nicht warum ich den parse, aber kann natürlich sein das es eine eingebunden Lib ist die den Fehler verursacht.

Checke ich die Tage und dann mach ich Dir 'ne Testversion. Windows gell? In 64 Bit vermutlich oder?

RE: MDaemon als CardDAV Server funktioniert nicht - Added by Jörg Ebeling over 1 year ago

Ticket #58 angelegt.

Weitere Korrespondenz bitte dort.
Habe Dich dort auch gleich als Beobachter eingetragen damit Du eine Info bekommst wenn sich was tut.

    (1-4/4)
    Go to top