-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
No sync with Baikal #294
Comments
Hello, if you are willing to try unreleased software, you can try the version 4 development branch. I do not have a Baikal server to test, but Baikal uses SabreDAV as does Nextcloud, which is known to work. If you find issues, I would appreciate feedback and I'll see to fix it. See installation instructions here: https://github.com/blind-coder/rcmcarddav/tree/v4 |
Hi, thanks. No problem hacking :-). I have installed the version 4 dvlp branch - and when trying to configure the CardDAV server, after "save" the browser screen gets empty and in the php log, the following is found:
Liebe Grüße |
Hi, thanks for trying! It looks like an authentication issue (I'll take care of the unhandled exception though, it should not result in a white page).
|
Nevermind it's the digest authentication that is not working. I now have a Baikal server and can reproduce the problem. |
Perfect, you are fast :-), even before I could respond. |
You can try composer.phar update. It should update carddavclient to v0.1.1 which works for me. You need the php-curl extension installed for any auth mechanism other than Basic to work. |
I am using the php-curl extension, yes. But, the addressbooks are only listed, but no contacts are imported. PHP throws an exception (apparently for each contact in the addressbook) -
|
Hey we're getting there ;-) The exceptions you show are actually thrown on the Baikal server side, not at the roundcube side. It sounds to me like the request body or an element of it is empty, but I have no explanation for that. Concerning the addressbooks discovery: You need to provide the plugin with enough information so it can find the addressbook home / principal URI of the user. If discovery is set up, a hostname is sufficient. But even if you provide directly the URL to an addressbook, it will ask the server for all addressbooks of that principal. If you don't want some of the addressbooks, you can deactivate them in the settings of the plugin. Back to the issue: Unfortunately I cannot reproduce the issue (tested using Baikal 0.7.1 with an addressbook > 100 contacts and Digest auth), so the log files might be helpful after all. You find them in roundcube/logs/: carddav.log, carddav_http.log, errors.log. If you don't need the log contents, best clear them, then run a resync from the settings of the plugin and take the log files afterwards. With Digest authentication, there should be no Authorization headers in the logfile, but if the sync works your contact vcards would be contained. |
Have the same issue with baikal 0.7.1(digest auth scheme), roundcube 1.4.4 and rcmcarddav 3.0.3 (freebsd 12.1 amd64, php 7.2), all address-books have added but no see any contacts. After upgrade rcmcarddav to v4 dev the same issue present and if I want save new contact in book have ondisplay error: "Single-row query (SELECT id FROM carddav_contacts WHERE
At the same time thunderbird with cardbook plugin and android with davx5 worked like a charm with baikal. |
And if refresh address-book have this error in log:
|
Hello, thanks for the feedback. Could you please set the two loglevels to debug in plugins/carddav/config.inc.php and provide both carddav.log and carddav_http.log? It seems that the multiget report is considered malformed / empty by the server (this should be visible in the HTTP log). The multiget is the second report in a sync run, and it is only called if the server reported changes for the first report. This would rule out the authentication mechanism as the issue. |
@kovarto @freeman1doma: Anyone still interested in this issue? I would need a log file, because in my development environment everything works just fine with Baikal 0.7.1 + Digest Auth. I would be particularly interested in the multiget request sent to the server, that seems to raise an exception in Baikal. |
@mstilkerich I'm having this issue. I'm using Baikal 0.7.1 + Digest Auth, Roundcube 4 - dev from your suggestion above, php7.4, apache 2.4.38. I've add the log files you asked for above ... Interesting behaviour: Roundcube's contacts won't load from CardDav, however; it will create a new contact which then successfully sync's with my other devices. I can edit the contact on my iPhone which sync's to my desktop, but it won't sync back to Roundcube's contact. |
Thanks. The authentication is working fine, hence it is not surprising that storing a contact works. You won't see it in roundcube though, because all modifications are done to the server and then need to sync back to roundcube's database. And the syncing part is not working. The sync consists of two stages, each has a fast and a slow path.
Point 1: I have no idea what Baikal (Sabre/DAV) does not like about the reports, they look fine to me. Since it works fine on my end with the same baikal version: Are you using the Baikal distribution from https://github.com/sabre-io/Baikal/releases/tag/0.7.1, or are you using a different source such as a linux distribution package? My best guess at the moment is that this may be a server-side issue that has been fixed in the meantime. Point 2: The fallback to individual GET requests does not work in the carddavclient library as I intended. I'll look into that. But then sync would be working, but slow compared to the fast paths. |
If you run |
I upgraded my dev VM to Ubuntu 20.04 which has php 7.4 and probably a newer curl and now have the same issue. So I can look into it myself. |
Seems to be an interoperability issue between curl and sabre/dav, already reported several times: And we also have an analysis already in the issues of this project: #188 So it seems to be an interoperability issue between CURL and Sabre/DAV, and it doesn't look like either side is willing to do something about it. Option 1: Use Basic authentication in Baikal (in combination with HTTPS) I will see if I can force curl to send the body without slowing down all other servers by repeated probe requests (CURLAUTH_ANY would work, but do just that). |
Closing this as a duplicate of #188. |
carddavclient 1.0.0 now includes a workaround to enable usage of the fast sync methods with sabre dav. |
After installing rmcarddav (on Linux 5.6.14, fedora 31, on x86_64) I could well configure a connection to my Baikal carddav server - but no contacts got downloaded. It shows the proper name of the addressbook, as configured in Baikal, but no contacts. In the syslog I only find a message that "BACKEND: (list_records_sync_collection) An error (status 401) occured".
When I create a new contact in rmcarddav, it gets properly synced into Baikal, as well as any changes and the deletion of this new contact. Only the contacts already existing in Baikal as well as contacts newly created in other ways do not show up.
Using roundcube 1.4.6, rmcarddav 3.0.3, Baikal 0.7.1, MariaDB 10.3.22.
The text was updated successfully, but these errors were encountered: