mstilkerich / rcmcarddav Goto Github PK
View Code? Open in Web Editor NEWCardDAV plugin for RoundCube Webmailer
License: GNU General Public License v2.0
CardDAV plugin for RoundCube Webmailer
License: GNU General Public License v2.0
I had trouble following step number 6 in the INSTALL file. The file roundcubemail/config/main.inc.php does not exist any more since June 2013. I think the correct file is roundcubemail/config/config.inc.php. And the name of the array has changed. It should be $config['plugins']. HTH.
I try to sync an adressbook which is quite huge (600 contacts). Carddav server is Owncloud 6.0.2 and it is hosted on a low speed internet line (64 kByte/s).
I get this error in carddav log file
[27-May-2014 21:14:23 +0000]: BACKEND: (cdfopen) Could not send request: could not send the HTTP request: Could not execute the request: Operation timed out after 10000 milliseconds with 556135 bytes received
I edited carddav_common.php file to change timeout from 10s to 100s and it solves the problem (line 167).
Could you increase this value by default ? or even better, is it possible to do carddav sync via crontab ?
i`m using carddav since a long time and now I´ve upgraded to RC1.0 and latest carddav plugin. But now I get the following error:
DB Error in /var/www/all/webmail/program/lib/Roundcube/rcube_db.php (465): [1054] Unknown column 'preemptive_auth' in 'field list' (SQL Query: UPDATE carddav_addressbooks SET name [...])
and I could see in the database table carddav_addressbooks that there is no preemptive_auth colomn. Is there an update script to update the database?
there's a string replace error with the %u macro in baseurl that can be triggered - when it happens the %u is effectively not replaced and the wrong url is hit.
I added the Plugin-Hook for deleting contact from DB.
There are problems with google contacts. When I alter or create a contact an error is displayed in roundcube.
The czech localization does not work. The problem is the wrong name of the file. Rename from cz_CZ.inc to cs_CZ.inc resolves the problem.
following the guideline in the INSTALL text file, the database tables need to be created, by executing the mysql command: mysql -h [db-server-name] -u [user] -p -D roundcubemail <./mysql.sql
when executing the command, there is an error reported:
ERROR 1005 (HY000) at line 2: Can't create table '<dbcarddav.carddav_addressbooks' (errno: 150)
After many attempts, including attempts to create the tables myself, the error seems to come from this statement:
FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE
because if this line is omitted from the script, the error disappears (but the table is probably incorrect, and plugin won't work)
Hi,
I can only see one vcard in the addressbook on roundcube. The backend is davical. There are many more vcards in that addressbook that should be retrieved.
here is a debug log:
20-Jan-2015 20:28:27 +0000: DISCOVERY: (cdfopen) retrieve_addressbooks requesting http://bote.dyn.robewald.de:80/davical/caldav.php/robert/addresses/ RL 5: BACKEND: (update_addressbook) UPDATE addressbook
20-Jan-2015 20:28:27 +0000: DISCOVERY: (cdfopen) Code: 207
20-Jan-2015 20:28:27 +0000: DISCOVERY: (retrieve_addressbooks) found abook: Robert's Addressbook at http://bote.dyn.robewald.de:80/davical/caldav.php/robert/addresses/
20-Jan-2015 20:28:27 +0000: BACKEND: (cd_save) ADDING ABOOK Array
(
[href] => http://bote.dyn.robewald.de:80/davical/caldav.php/robert/addresses/
[name] => Robert's Addressbook
)
[20-Jan-2015 20:28:30 +0000]: BACKEND: (cdfopen) refreshdb_from_server requesting http://bote.dyn.robewald.de:80/davical/caldav.php/robert/addresses/ [RL 5]
[20-Jan-2015 20:28:30 +0000]: BACKEND: (update_addressbook) UPDATE addressbook 9
[20-Jan-2015 20:28:30 +0000]: BACKEND: (cdfopen) Code: 207
[20-Jan-2015 20:28:30 +0000]: BACKEND: (cdfopen) list_records_sync_collection requesting http://bote.dyn.robewald.de:80/davical/caldav.php/robert/addresses/ [RL 5]
[20-Jan-2015 20:28:30 +0000]: BACKEND: (update_addressbook) UPDATE addressbook 9
[20-Jan-2015 20:28:30 +0000]: BACKEND: (cdfopen) Code: 207
[20-Jan-2015 20:28:30 +0000]: BACKEND: (cdfopen) query_addressbook_multiget requesting http://bote.dyn.robewald.de:80/davical/caldav.php/robert/addresses/ [RL 5]
[20-Jan-2015 20:28:30 +0000]: BACKEND: (update_addressbook) UPDATE addressbook 9
[20-Jan-2015 20:28:30 +0000]: BACKEND: (cdfopen) Code: 207
[20-Jan-2015 20:28:30 +0000]: BACKEND: (dbstore_base) INSERT card /davical/caldav.php/robert/addresses/2CE6F551-7BF7C0A6-06C5FB48.vcf
[20-Jan-2015 20:28:30 +0000]: BACKEND: (delete_unseen) deleted 0 contacts during server refresh
[20-Jan-2015 20:28:30 +0000]: BACKEND: (delete_unseen) deleted 0 groups during server refresh
[20-Jan-2015 20:28:30 +0000]: BACKEND: (refreshdb_from_server) server refresh took 0 seconds
Hi,
I'm using this plugin to allow my users to access their Owncloud address book directly from Roundcube. Authentification in Roundcube and Owncloud is centralized with LDAP so can I use a preset in config.inc.php
.
Everything works fine except one thing. If a new user try to log in Roundcube first (so his owncloud account is not created yet, and owncloud do not return an address book with carddav), the login loops until server times out.
With RCMCardDav 0.9.2 and RoundCube 1.0.0-rc1, commenting this line https://github.com/blind-coder/rcmcarddav/blob/master/carddav_common.php#L212 was making things better. Login was working every time. In RoundCube 1.0.0, this trick doesn't work anymore. So I updated RCMCardDav to 1.0.0, but the bug is still here.
The strange thing is that, sometimes, the login works… Maybe one out of five. I can't find any pattern to explain that.
This is my carddav config:
$prefs['Owncloud'] = array(
'name' => 'Cloud',
'username' => '%u',
'password' => '%p',
'url' => 'https://example.com/remote.php/carddav/addressbooks/%u/',
'carddav_name_only' => true,
'active' => true,
'readonly' => false,
'preemptive_auth' => 1,
'fixed' => array ('username', 'password', 'url', 'preemptive_auth', 'refresh_time'),
'hide' => true,
);
What do you think ?
I use Roundcube Webmail 1.0.3 and rcmcarddav 1.0.0 (2014-04-09). Everything works OK. Nevertheless rcmcarddav sends invalid, malformed and redundand HTTP requests to CalDAV server.
80.79.*.* server:8443 - [11/Nov/2014:00:36:37 +0100] "PROPFIND /card.php/addressbooks/john.appleseed%40example.com/default/ HTTP/1.1" 401 304 "-" "RCM CardDAV plugin/1.0.0"
80.79.*.* - - [11/Nov/2014:00:36:37 +0100] " / HTTP/1.1" 501 357 "-" "-"
80.79.*.* server:8443 - [11/Nov/2014:00:36:37 +0100] "PROPFIND /card.php/addressbooks/john.appleseed%40example.com/default/ HTTP/1.1" 207 848 "-" "RCM CardDAV plugin/1.0.0"
80.79.*.* - - [11/Nov/2014:00:36:37 +0100] " / HTTP/1.1" 501 357 "-" "-"
80.79.*.* server:8443 - [11/Nov/2014:00:36:37 +0100] "PROPFIND /card.php/addressbooks/john.appleseed%40example.com/default/ HTTP/1.1" 401 304 "-" "RCM CardDAV plugin/1.0.0"
80.79.*.* - - [11/Nov/2014:00:36:37 +0100] " / HTTP/1.1" 501 357 "-" "-"
80.79.*.* server:8443 - [11/Nov/2014:00:36:37 +0100] "PROPFIND /card.php/addressbooks/john.appleseed%40example.com/default/ HTTP/1.1" 207 42646 "-" "RCM CardDAV plugin/1.0.0"
80.79.*.* - - [11/Nov/2014:00:36:37 +0100] " / HTTP/1.1" 501 357 "-" "-"
Hi all, I'm using owncloud 7.0.3, and the latest version of rcmcarddav (cloned from master). I followed the instructions in INSTALL and seems to have the plugin working. But when I enter my credentials, the name of the addressbook (in this case just "contacts"), supply the carddav url https://mycloud.com/remote.php/carddav/addressbooks/ausername/contacts and tick the box "Preemptively authenticate against server. Use for ownCloud!" I revieve an error popup saying "An error occured. Contacts, no addressbook found." Does this plugin require carddav_plus?
I am using davical 0.9.9 as Backend and can view my contact list but I am not able to create new contacts nor change existing ones.
Error log shows:
25-Apr-2014 00:42:46 +0100]: BACKEND: (cdfopen) Could not read reply header: authentication error: 412 Precondition Failed [25-Apr-2014 00:42:46 +0100]: BACKEND: (update) Updating card on server failed
And Davical complains:
LOG: response:--> Incorrect content type for addressbook: text/vcard;charset=utf-8
I've investigated into this problem and solved the issue by making a small modification in carddav_backend.php:
$opts = array( 'method'=>"PUT", 'content'=>$vcf, 'header'=> array( // "Content-Type: text/vcard;charset=utf-8", "Content-Type: text/vcard; charset=\"UTF-8\"", // Bug! missing space causes problems with davical 0.9 $matchhdr, ),
Unfortunately, I do not have any access to other backend servers, so I can not test if the modification has side effects on other systems.
Hi there,
I managed to install your plugin and it seams to work. But somehow it only syncs the first 19 contacts from my owncloud adressbook that start with the letter "A".
How can I provide you with a log file?
when a contact discovered on the carddav server is imported and doesn't have a first or last name, the carddav_contacts.name field is set as blank - roundcube then displays an empty name for the contact in the addressbook list views.
My CardDAV-Backend is Radicale 0.8. Roundcube 1.0 with rcmcarddav 1.0. The CardDAV-Addressbook is configured with preemtive_auth on.
In Roundcube I can create a new contact, but I can't delete nor change an existing contact. Where is the problem? How can I debug this correctly?
Hello,
Each time, when i save a contact for the first time a pop up appear with the text (An error has occurred during recording) but if i refresh... no problem the contact appear (sometimes twice or more) and i could do modify, delete, etc... without error pop up screen (roundcube 1.0.1 - Os x server 3.2.1 (10.9.3) ) Thanks you for your help
Hello,
i need urgend help for my connection problem. What is exactly the URL, which i have to write in the backup of CardDAV for Roundcube, that CardDAV will find my adressbooks ?
here my logfile:
06-Aug-2014 22:50:17 +0800: DISCOVERY: (cdfopen) retrieve_addressbooks requesting https://www.fqdn.tld:443/mybaikal/card.php/addressbooks/holger/default/ RL 5: DISCOVERY: (cdfopen) SendRequest: http_class::__set_state(array(
'host_name' => 'www.fqdn.tld',
'host_port' => 443,
'proxy_host_name' => '',
'proxy_host_port' => 80,
'socks_host_name' => '',
'socks_host_port' => 1080,
'socks_version' => '5',
'protocol' => 'https',
'request_method' => 'PROPFIND',
'user_agent' => 'RCM CardDAV plugin/1.0.0',
'accept' => '',
'authentication_mechanism' => '',
'user' => NULL,
'password' => NULL,
'realm' => NULL,
'workstation' => NULL,
'proxy_authentication_mechanism' => '',
'proxy_user' => NULL,
'proxy_password' => NULL,
'proxy_realm' => NULL,
'proxy_workstation' => NULL,
'request_uri' => '/mybaikal/card.php/addressbooks/holger/default/',
'request' => 'PROPFIND /mybaikal/card.php/addressbooks/holger/default/ HTTP/1.1',
'request_headers' =>
array (
'Host' => 'www.fqdn.tld:443',
'User-Agent' => 'RCM CardDAV plugin/1.0.0',
'Depth' => '0',
'Content-Type' => 'application/xml; charset="utf-8"',
'Authorization' => 'Basic aG9sZ2VyOjE0dWExNG0=',
'Connection' => 'Keep-Alive',
'Content-Length' => 241,
),
'request_user' => 'holger',
'request_password' => 'mysecretpassword',
'request_realm' => NULL,
'request_workstation' => NULL,
'proxy_request_user' => NULL,
'proxy_request_password' => NULL,
'proxy_request_realm' => NULL,
'proxy_request_workstation' => NULL,
'request_body' => '
<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:prop>
<D:current-user-principal/>
<D:resourcetype />
<D:displayname />
<C:addressbook-home-set/>
/D:prop/D:propfind
',
'request_arguments' =>
array (
'Protocol' => 'https',
'HostName' => 'www.fqdn.tld',
'Headers' =>
array (
'Host' => 'www.fqdn.tld:443',
'User-Agent' => 'RCM CardDAV plugin/1.0.0',
'Depth' => '0',
'Content-Type' => 'application/xml; charset="utf-8"',
'Authorization' => 'Basic aG9sZ2VyOjE0dWExNG0=',
'Connection' => 'Keep-Alive',
),
'AuthUser' => 'holger',
'AuthPassword' => 'mysecretpassword',
'HostPort' => 443,
'RequestURI' => '/mybaikal/card.php/addressbooks/holger/default/',
'RequestMethod' => 'PROPFIND',
'Body' => '
<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:prop>
<D:current-user-principal/>
<D:resourcetype />
<D:displayname />
<C:addressbook-home-set/>
/D:prop/D:propfind
',
),
'protocol_version' => '1.1',
'timeout' => 120,
'data_timeout' => 0,
'debug' => 0,
'log_debug' => 0,
'debug_response_body' => 1,
'html_debug' => 0,
'support_cookies' => 1,
'cookies' =>
array (
),
'error' => '',
'error_code' => 0,
'exclude_address' => '',
'follow_redirect' => 0,
'redirection_limit' => 5,
'response_status' => '',
'response_message' => '',
'file_buffer_length' => 8000,
'force_multipart_form_post' => 0,
'prefer_curl' => 1,
'keep_alive' => 1,
'sasl_authenticate' => 1,
'state' => 'RequestSent',
'use_curl' => true,
'connection' => NULL,
'content_length' => 0,
'response' => 'HTTP/1.1 401 Unauthorized
Date: Wed, 06 Aug 2014 14:50:17 GMT
Server: Apache
X-Powered-By: PHP/5.3.28
Set-Cookie: PHPSESSID=e2178f3c67a9038954eb30a3935ce76b; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
WWW-Authenticate: Digest realm="BaikalDAV",qop="auth",nonce="53e240a95e47f",opaque="df58bdff8cf60599c939187d0b5c54de"
Content-Length: 292
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: application/xml; charset=utf-8
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
<s:exception>Sabre\DAV\Exception\NotAuthenticated/s:exception
<s:message>No digest authentication headers were found/s:message
<s:sabredav-version>1.8.7/s:sabredav-version
/d:error
',
'read_response' => 0,
'read_length' => 0,
'request_host' => 'www.fqdn.tld:443',
'next_token' => '',
'redirection_level' => 0,
'chunked' => 0,
'remaining_chunk' => 0,
'last_chunk_read' => 0,
'months' =>
array (
'Jan' => '01',
'Feb' => '02',
'Mar' => '03',
'Apr' => '04',
'May' => '05',
'Jun' => '06',
'Jul' => '07',
'Aug' => '08',
'Sep' => '09',
'Oct' => '10',
'Nov' => '11',
'Dec' => '12',
),
'session' => 'f1bd21e592a93708b71cf83cfd2f2920',
'connection_close' => 0,
'force_close' => 0,
'connected_host' => 'www.fqdn.tld',
'connected_port' => 443,
'connected_ssl' => 1,
))
06-Aug-2014 22:50:17 +0800: DISCOVERY: (cdfopen) Code: 200
06-Aug-2014 22:50:17 +0800: DISCOVERY: (cdfopen) success: array (
'status' => '200',
'headers' =>
array (
'http/1.1 200 ok' => '',
'date' => 'Wed, 06 Aug 2014 14:50:17 GMT',
'server' => 'Apache',
'x-powered-by' => 'PHP/5.3.28',
'vary' => 'Accept-Encoding',
'content-length' => '326',
'content-type' => 'text/html',
),
'body' => '
</head>
06-Aug-2014 22:50:17 +0800: DISCOVERY: (cdfopen) retrieve_addressbooks requesting https://www.fqdn.tld:443/.well-known/carddav RL 5: DISCOVERY: (cdfopen) SendRequest: http_class::__set_state(array(
'host_name' => 'www.fqdn.tld',
'host_port' => 443,
'proxy_host_name' => '',
'proxy_host_port' => 80,
'socks_host_name' => '',
'socks_host_port' => 1080,
'socks_version' => '5',
'protocol' => 'https',
'request_method' => 'PROPFIND',
'user_agent' => 'RCM CardDAV plugin/1.0.0',
'accept' => '',
'authentication_mechanism' => '',
'user' => NULL,
'password' => NULL,
'realm' => NULL,
'workstation' => NULL,
'proxy_authentication_mechanism' => '',
'proxy_user' => NULL,
'proxy_password' => NULL,
'proxy_realm' => NULL,
'proxy_workstation' => NULL,
'request_uri' => '/.well-known/carddav',
'request' => 'PROPFIND /.well-known/carddav HTTP/1.1',
'request_headers' =>
array (
'Host' => 'www.fqdn.tld:443',
'User-Agent' => 'RCM CardDAV plugin/1.0.0',
'Depth' => '0',
'Content-Type' => 'application/xml; charset="utf-8"',
'Authorization' => 'Basic aG9sZ2VyOjE0dWExNG0=',
'Connection' => 'Keep-Alive',
'Content-Length' => 241,
),
'request_user' => 'holger',
'request_password' => 'mysecretpassword',
'request_realm' => NULL,
'request_workstation' => NULL,
'proxy_request_user' => NULL,
'proxy_request_password' => NULL,
'proxy_request_realm' => NULL,
'proxy_request_workstation' => NULL,
'request_body' => '
<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:prop>
<D:current-user-principal/>
<D:resourcetype />
<D:displayname />
<C:addressbook-home-set/>
/D:prop/D:propfind
',
'request_arguments' =>
array (
'Protocol' => 'https',
'HostName' => 'www.fqdn.tld',
'Headers' =>
array (
'Host' => 'www.fqdn.tld:443',
'User-Agent' => 'RCM CardDAV plugin/1.0.0',
'Depth' => '0',
'Content-Type' => 'application/xml; charset="utf-8"',
'Authorization' => 'Basic aG9sZ2VyOjE0dWExNG0=',
'Connection' => 'Keep-Alive',
),
'AuthUser' => 'holger',
'AuthPassword' => 'mysecretpassword',
'HostPort' => 443,
'RequestURI' => '/.well-known/carddav',
'RequestMethod' => 'PROPFIND',
'Body' => '
<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:prop>
<D:current-user-principal/>
<D:resourcetype />
<D:displayname />
<C:addressbook-home-set/>
/D:prop/D:propfind
',
),
'protocol_version' => '1.1',
'timeout' => 120,
'data_timeout' => 0,
'debug' => 0,
'log_debug' => 0,
'debug_response_body' => 1,
'html_debug' => 0,
'support_cookies' => 1,
'cookies' =>
array (
),
'error' => '',
'error_code' => 0,
'exclude_address' => '',
'follow_redirect' => 0,
'redirection_limit' => 5,
'response_status' => '',
'response_message' => '',
'file_buffer_length' => 8000,
'force_multipart_form_post' => 0,
'prefer_curl' => 1,
'keep_alive' => 1,
'sasl_authenticate' => 1,
'state' => 'RequestSent',
'use_curl' => true,
'connection' => NULL,
'content_length' => 0,
'response' => 'HTTP/1.1 405 Method Not Allowed
Date: Wed, 06 Aug 2014 14:50:17 GMT
Server: Apache
Allow: GET,HEAD,POST,OPTIONS
Vary: Accept-Encoding
Content-Length: 316
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
The requested method PROPFIND is not allowed for the URL /.well-known/carddav.
The requested method PROPFIND is not allowed for the URL /.well-known/carddav.
06-Aug-2014 22:50:17 +0800: DISCOVERY: (cdfopen) retrieve_addressbooks requesting https://www.fqdn.tld:443/ [RL 5]
[06-Aug-2014 22:50:18 +0800]: DISCOVERY: (cdfopen) SendRequest: http_class::__set_state(array(
'host_name' => 'www.fqdn.tld',
'host_port' => 443,
'proxy_host_name' => '',
'proxy_host_port' => 80,
'socks_host_name' => '',
'socks_host_port' => 1080,
'socks_version' => '5',
'protocol' => 'https',
'request_method' => 'PROPFIND',
'user_agent' => 'RCM CardDAV plugin/1.0.0',
'accept' => '',
'authentication_mechanism' => '',
'user' => NULL,
'password' => NULL,
'realm' => NULL,
'workstation' => NULL,
'proxy_authentication_mechanism' => '',
'proxy_user' => NULL,
'proxy_password' => NULL,
'proxy_realm' => NULL,
'proxy_workstation' => NULL,
'request_uri' => '/',
'request' => 'PROPFIND / HTTP/1.1',
'request_headers' =>
array (
'Host' => 'www.fqdn.tld:443',
'User-Agent' => 'RCM CardDAV plugin/1.0.0',
'Depth' => '0',
'Content-Type' => 'application/xml; charset="utf-8"',
'Authorization' => 'Basic aG9sZ2VyOjE0dWExNG0=',
'Connection' => 'Keep-Alive',
'Content-Length' => 241,
),
'request_user' => 'holger',
'request_password' => 'mysecretpassword',
'request_realm' => NULL,
'request_workstation' => NULL,
'proxy_request_user' => NULL,
'proxy_request_password' => NULL,
'proxy_request_realm' => NULL,
'proxy_request_workstation' => NULL,
'request_body' => '
<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:prop>
<D:current-user-principal/>
<D:resourcetype />
<D:displayname />
<C:addressbook-home-set/>
/D:prop/D:propfind
',
'request_arguments' =>
array (
'Protocol' => 'https',
'HostName' => 'www.fqdn.tld',
'Headers' =>
array (
'Host' => 'www.fqdn.tld:443',
'User-Agent' => 'RCM CardDAV plugin/1.0.0',
'Depth' => '0',
'Content-Type' => 'application/xml; charset="utf-8"',
'Authorization' => 'Basic aG9sZ2VyOjE0dWExNG0=',
'Connection' => 'Keep-Alive',
),
'AuthUser' => 'holger',
'AuthPassword' => 'mysecretpassword',
'HostPort' => 443,
'RequestURI' => '/',
'RequestMethod' => 'PROPFIND',
'Body' => '
<D:propfind xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:prop>
<D:current-user-principal/>
<D:resourcetype />
<D:displayname />
<C:addressbook-home-set/>
/D:prop/D:propfind
',
),
'protocol_version' => '1.1',
'timeout' => 120,
'data_timeout' => 0,
'debug' => 0,
'log_debug' => 0,
'debug_response_body' => 1,
'html_debug' => 0,
'support_cookies' => 1,
'cookies' =>
array (
),
'error' => '',
'error_code' => 0,
'exclude_address' => '',
'follow_redirect' => 0,
'redirection_limit' => 5,
'response_status' => '',
'response_message' => '',
'file_buffer_length' => 8000,
'force_multipart_form_post' => 0,
'prefer_curl' => 1,
'keep_alive' => 1,
'sasl_authenticate' => 1,
'state' => 'RequestSent',
'use_curl' => true,
'connection' => NULL,
'content_length' => 0,
'response' => 'HTTP/1.1 200 OK
Date: Wed, 06 Aug 2014 14:50:17 GMT
Server: Apache
X-Powered-By: PHP/5.3.28
Vary: Accept-Encoding
Content-Length: 326
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/html
</head>
</head>
Kind regards
Hassan
Would it be possible to start adding SQL patch scripts to dbinit folder, and record the applied patches in a database table? MyRoundcube has a nice solution for that:
Obviously, we don't want any "myrc" references, and the choice for the table name "system" is a little strange, but actually their solution is quite handy.
This way we even could apply the new SQL patches automatically when installing a plugin update (look which patch files are there now, which ones are already applied, do the new ones). I am already working on a shell script for that.
Best regards,
Erik
Error
I´m just using calendarserver and with MacOS, iOS and Android and everything works but if I want to setup RCM with latest (git) version von carddav plugin I couldn´t set up my account.
The URL is: https://SERVERNAME:8443/addressbooks/**uids**/862350ad-2480-52a9-bd38-80a56ccef907/addressbook/ and if I connect to this URL via browser I get an authentification web site and after login I could see a list of all .vcf. But after setting up in RCM I could see in carddav.warn
DISCOVERY: (cdfopen) Could not read reply header: authentication error: 400 Bad Request
and in my calendarserver logfile I could see
"PROPFIND /addressbooks/uids/862350ad-2480-52a9-bd38-80a56ccef907/addressbook/ HTTP/1.1" 401 141 "-" "RCM CardDAV plugin/1.0.0" i=1 t=12.0 or=8
"PROPFIND /.well-known/carddav HTTP/1.1" 301 157 "-" "RCM CardDAV plugin/1.0.0" i=0 t=5.3 or=8
"PROPFIND / HTTP/1.1" 207 630 "-" "RCM CardDAV plugin/1.0.0" i=1 t=2.3 or=8
"PROPFIND /.well-known/carddav HTTP/1.1" 301 157 "-" "RCM CardDAV plugin/1.0.0" i=0 t=4.2 or=8
"PROPFIND / HTTP/1.1" 207 1171 "-" "RCM CardDAV plugin/1.0.0" i=1 t=5.9 or=8
"PROPFIND / HTTP/1.1" 207 630 "-" "RCM CardDAV plugin/1.0.0" i=0 t=2.3 or=8
"PROPFIND / HTTP/1.1" 207 1171 "-" "RCM CardDAV plugin/1.0.0" i=1 t=5.8 or=8
😰
[enhancement request]
Implement tools to show/control the synchronisation status to the carddav server :
During initial setup, it is currently hard to figure what goes wrong (adress of the carddav server, no synchronisation yet...). For everyday-use, we don't know when the synchro will happen. I can force synchro on my android phone (davdroid+baikal), but I can't on my PC through roundcube.
Hi,
In my RoundCube setup (1.0.1), I got a small issue.
I configured config.inc.php to have all my users having the CardDav connector already set up. Everything is well, but when I go to Preferences/CardDav menu, I can see that username is shown as "%l". Of course it should display something like "john_doe" instead.
I think this is just a minor escape/interpretation issue, but as I have no skill with PHP, I let you confirm and fix.
Thanks again for this very nice plugin.
Btw, do you plan to prepare a CalDav one ?
Hi
Currently carddav plugin does not show IM data (Jabber, ICQ, ...) in "Contact properties" for contacts that already have such fields. And there is no "IM" option under "Add field..." menu in "Add new contact" while in default adressbook "Personal Addresses" we can add IM fields.
Hi,
I am running roundcube master, rcmcarddav master and davical 1.1.0.
Creation of a new record does throw out an error message ("An error occured", "An error occured while saving"). Subsequently the new address is not shown in roundcube carddav addressbok, but it is available on server (can download new record with other clients).
Have an perfectly running old version of roundcube and rcmcarddav with the same davical server, so I suspect it to be rather on client side.
Debug-Log: https://gist.github.com/imlich/3cf58b242f99b175f9ae
If needed can supply test-account on either the davical side or the roundcube side.
I tried this multiple times, really puzzled what is going on.
(using branch auto_db_migrate, either 18dec14 or 06jan15 version).
But now the same, but before installing rcmmarddav I change password of the Roundcube user.
It seems to me that rcmcarddav initially uses the old password (wherever that may be stored!).
Note:
I tried closing the browser in between each action, and I tried removing cookies, same problem.
What about putting this nice plugin into the new http://plugins.roundcube.net/ repository? :)
Hi,
I am unable to get global configuration working ; I had configured config.inc.php with my settings but when in RC, the configuration is not present.
Here is my config.inc.php :
Did I miss something ?
Regards
Hey,
I've got the same issue as #50. But in my case, there is no other plugin version but a current clone of this repository.
Unfortunately I'm not getting my preset in the config.inc.php to work. Although, if I put the same information in the appropriate database fields in mysql, the plugin is able to connect and show the right data. Since this is just a per-user workaround I'd be glad to get it to work for all users.
My preset looks like this:
$prefs['Cloud'] = array(
'name' => 'Owncloud',
'username' => '%u',
'password' => '%p',
'url' => 'https://cloud.example.de:443/remote.php/carddav/addressbooks/%u/kontakte/',
'active' => true,
'readonly' => false,
'refresh_time' => '00:01:00',
'fixed' => array( 'username', 'password', 'url' ),
'hide' => false,
);
Do you have any ideas?
Thanks!
can I use something like %d for the domain-part of the user-name?
I have to set up presets for a server where they have adresses like
and calendars are named .../joe_smith ... ;-)
I know, plan B is setting up individual calendars within roundcube. Tested that right now.
I try to connect to an iCloud carddav server with correct values (plugging starts loading all contacts) but after loading no contact is displayed. I found this error message:
[02-Sep-2014 19:20:21 UTC] PHP Warning: usort() expects parameter 2 to be a valid callback, no array or string given in /home/htdocs/webmail/html/plugins/carddav/carddav_discovery.php on line 220
[02-Sep-2014 19:20:38 UTC] PHP Warning: uksort() expects parameter 2 to be a valid callback, no array or string given in /home/htdocs/webmail/html/plugins/carddav/inc/sabre-vobject/lib/Sabre/VObject/Component.php on line 284
I am using rcm 1.02 with your latest plugin version. PHP 5.4.4 (debian 7.6). I guess it is a problem with PHP 5.4 ...
Gerald
I upgraded to version 1.0.0 and when I execute (as root) the mysql.sql I get:
mysql> source mysql.sql;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
ERROR 1005 (HY000): Can't create table 'roundcube.carddav_group_user' (errno: 150)
The tables in the roundcube database look like this:
+----------------------+
| Tables_in_roundcube |
+----------------------+
| cache |
| cache_index |
| cache_messages |
| cache_shared |
| cache_thread |
| carddav_addressbooks |
| carddav_contacts |
| carddav_groups |
| carddav_server |
| carddav_xsubtypes |
| contactgroupmembers |
| contactgroups |
| contacts |
| dictionary |
| events |
| events_cache |
| events_caldav |
| identities |
| reminders |
| searches |
| session |
| system |
| users |
+----------------------+
23 rows in set (0.00 sec)
What can I do to fix this problem?
Roundcube 1.0.5 running on OS X Server 10.10 with PHP 5.5.14 and PostgerSQL 9.4
I successfully installed the plugin and it imported my contacts as well. However, none of the contacts would show up in the address book. Examining the database shows they are in there.
The problem is in the num_rows() function. Replacing all calls to num_rows() with count($result->fetchAll()) and using that value fixes the problem. I'm not sure what is going on with the num_rows() function in rcube_db.php, but it doesn't appear to be used in the roundcube code.
I'm using this plugin with ownCloud and auto-discovery of address books which is working fine. Newly created address books in ownCloud are automatically added in Roundcube.
However, if an address book is deleted on ownCloud, it is not removed completely from Roundcube. Instead it will show up as an empty group (Roundcube calls address books "groups"). It will also still appear in the CardDAV settings in Roundcube with no way for the user to delete it.
My auto discovery preset:
$prefs['ownCloud'] = array(
'name' => 'ownCloud',
'username' => '%l',
'password' => '%p',
'url' => 'https://cloud.example.com/remote.php/carddav/addressbooks/%l/',
'carddav_name_only' => true,
'active' => true,
'readonly' => false,
'refresh_time' => '00:05:00',
'preemptive_auth' => true,
'fixed' => array( 'username', 'password', 'refresh_time', 'preemptive_auth' ),
'hide' => false,
);
I run the mentioned packages on gentoo linux, with a current checkout of this plugin.
My config.inc.php:
in carddav_backend.php
the content-type is set through
"Content-Type: text/vcard;charset=utf-8"
which causes DaViCal omits annoying warnings in the Logfile which can be avoided by adding a space.
"Content-Type: text/vcard; charset=utf-8"
This is more a bug in the parsing of DaViCal, but giving current developing stage of it, I'd appreciate to have this changed here, as it will not harm others.
Hi there,
today i read, that there is an update for Roundcube to version 1.0.3.
Because i use version 1.0.2 with CardDAV Branch 51, and everything works fine, my question is about practical experience with the teamwork Roundcube 1.0.3 an CardDAV Branch 51.
Have someone made an update and is everything running well ?
To start from scratch (or remove rcmcarddav from the system permanently), it would be handy having an SQL script to delete all CardDAV database tables. The "postgres.sql" script could look something like this:
DROP TABLE IF EXISTS carddav_group_user;
DROP TABLE IF EXISTS carddav_groups;
DROP SEQUENCE IF EXISTS carddav_groups_seq;
DROP TABLE IF EXISTS carddav_xsubtypes;
DROP SEQUENCE IF EXISTS carddav_xsubtypes_seq;
DROP INDEX IF EXISTS carddav_contacts_abook_id_idx;
DROP TABLE IF EXISTS carddav_contacts;
DROP SEQUENCE IF EXISTS carddav_contacts_seq;
DROP TABLE IF EXISTS carddav_addressbooks;
DROP SEQUENCE IF EXISTS carddav_addressbooks_seq;
DROP TABLE IF EXISTS carddav_migrations;
DROP SEQUENCE IF EXISTS carddav_migrations_seq;
I would suggest putting the scripts in new folder "dbdrop".
Checked out the issue_51 branch.
When running postgres.sql on my Synology NAS (DSM 5.0), I get an error on line 23 that column "auto" does not exist. Changing to 'auto' (with single quotes) solved this issue.
Does this plugin still work with Google Contacts?
I get the following error in the carddav logfile:
<errors xmlns="http://schemas.google.com/g/2005"> <error> <domain>GData</domain> <code>required</code> <location type="header">Authorization</location> <internalReason>Login Required</internalReason> </error> </errors>
Hi,
when I enable the plugin I have an error message
DATABASE ERROR: CONNECTION FAILED!
Unable to connect to the database!
Please contact your server-administrator.
The logs say
[23-May-2014 14:52:08 +0200]: DB Error: [1146] Table 'db.rc_carddav_addressbooks' doesn't exist (GET /)
I try to copy-paste the SQL code in phpMyAdmin but then I have the following error message:
1005 - Can't create table 'db.carddav_addressbooks' (errno: 150) (Détails…)
Can you help me to fix this please? Thanks!
Using Owncloud 7.0.3 and HEAD from the issue_51 branch, contact groups are not synced between the plugin and Owncloud.
I have owncloud running over a SSL-proxy. Ever since I enabled it, carddav plugin stopped working. I manually deleted existing addressbooks and tried adding new ones using the new URL, but despite the message "Settings saved successfully" the new addressbooks do not show up (they are not in the DB either)
The ownlcloud instance is addressed by:
https://ssl-proxy.com/my-sub.domain.de/remote.php/carddav/addressbooks/myname/contacts
Before (and working) it was
http://www.domain.de/owncloud/remote.php/carddav/addressbooks/myname/contacts
The comma in composer.json, line 19 is wrong, preventing to use roundcube's composer to install the plugin.
Parse error on line 19:
...per" }, ], "repositories
---------------------^
Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' - It appears you have an extra trailing comma
The title says it all, but as an example a vcard to demonstrate:
BEGIN:VCARD
VERSION:3.0
UID:73c22b18-226a-11e4-85f9-00247e6a9a6c
ORG:IAK;Zorgverzekeringen
FN:IAK Zorgverzekeringen
TEL;TYPE=work:+31402611888
X-ABSHOWAS:COMPANY
END:VCARD
I'd expect to see the FN (display-name) being used as display name ("IAK Zorgverzekeringen"), this however gets overruled by the first component of the organisation name ("IAK"). This would probably be correct behaviour if no display name is present, it isn't however when one is present.
Hi,
i want define 2 adressbook presets, one is read-only mode, the other is for writing the adressbook.
now i'm searching a solution, where my "normal" users will only get the "read-only" addressbook preset and i "as admin" will get both addressbook presets.
because the config.inc.php is a "PHP" file, i think there could by a "if .... then" loop possible :-)
also if "user = [email protected]" then preset 1 +2, else preset 1"
If that could be possible, could anyone give my a little sample code, because i can not PHP
Thank you
Environment:
Problem description:
After configuring the remote addressbook the first sync didn't pull in all of the existing contacts, but instead one at a time at each sync. The following messages appear in Roundcubes error log:
[08-Sep-2014 15:23:48 UTC] MDB2 Error: unknown error (-1): _doQuery: [Error message: Could not execute statement]
[Last executed query: SELECT currval('carddav_contacts')]
[Native message: ERROR: "carddav_contacts" is not a sequence]
Expected behaviour:
Syncing all contacts in one go.
When I add Job title in Roundcube it saves as "TITLE", but iphone and Andoid do not show it.
BEGIN:VCARD
VERSION:3.0
PRODID:Z-Push
FN:Bob Simpson
N:Simpson;Bob;;;
UID:C7015181-7526-4BF8-AB0E-5F016EA81232
REV:2015-02-03T00:28:50-05:00
X-ABSHOWAS:INDIVIDUAL
TITLE:CFO
EMAIL;TYPE=home:[email protected]
EMAIL;TYPE=work:[email protected]
TEL;TYPE=home:555
END:VCARD
Then I added a Job Title "Cook" on the iphone, and it saved it as "ROLE":
BEGIN:VCARD
VERSION:3.0
PRODID:Z-Push
FN:Bob Simpson
N:Simpson;Bob;;;
EMAIL;PREF=1:[email protected]
EMAIL;PREF=2:[email protected]
TEL;TYPE=HOME,VOICE:555
ROLE:Cook
UID:C7015181-7526-4BF8-AB0E-5F016EA81232
END:VCARD
I think the rcmcarddav plugin should initiate automatically a sync the carddav adressbook with the database after deleting or edititing a contact.
Currently I set the sync intervall to 2 hours, but I don't want to wait 2 hours until the contact gets deleted from the database.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.