owncloud / core

:cloud: ownCloud web server core (Files, DAV, etc.)
https://owncloud.com
GNU Affero General Public License v3.0
8.38k stars 2.06k forks source link

dav app: Consider support for VLIST (.vlf) via CardDAV #27418

Closed ghost closed 7 years ago

ghost commented 7 years ago

Steps to reproduce

  1. Open address book of Thunderbird
  2. Choose address book synced via SOGO Connector to ownCloud
  3. Right click -> New list
  4. Add contacts to this list
  5. Check data/owncloud.log

Expected behaviour

The address list is synced to ownCloud.

Actual behaviour

The address list is not synced to ownCloud and the below logentry in the data/owncloud.log is showing up.

Not quite sure if this should be reported to upstream (Sabre/dav) instead? But at least we can keep this in here so people know that they currently can't sync such VLISTS to ownCloud.

Server configuration

ownCloud version: (see ownCloud admin page) 9.1.4

ownCloud log (data/owncloud.log)

{"reqId":"xxx","remoteAddr":"xxx","app":"webdav","message":"Exception: {\"Message\":\"HTTP\\\/1.1 415 This resource only supports valid vCard or jCard data. Parse error: This parser only supports VCARD and VCALENDAR files\",\"Exception\":\"Sabre\\\\DAV\\\\Exception\\\\UnsupportedMediaType\",\"Code\":0,\"Trace\":\"#0 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/CardDAV\\\/Plugin.php(315): Sabre\\\\CardDAV\\\\Plugin->validateVCard('BEGIN:VLIST\\\\r\\\\nPR...', false)\\n#1 [internal function]: Sabre\\\\CardDAV\\\\Plugin->beforeCreateFile('addressbooks\\\/us...', 'BEGIN:VLIST\\\\r\\\\nPR...', Object(OCA\\\\DAV\\\\CardDAV\\\\AddressBook), false)\\n#2 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/event\\\/lib\\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\\n#3 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(1034): Sabre\\\\Event\\\\EventEmitter->emit('beforeCreateFil...', Array)\\n#4 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/CorePlugin.php(523): Sabre\\\\DAV\\\\Server->createFile('addressbooks\\\/us...', 'BEGIN:VLIST\\\\r\\\\nPR...', NULL)\\n#5 [internal function]: Sabre\\\\DAV\\\\CorePlugin->httpPut(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#6 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/event\\\/lib\\\/EventEmitterTrait.php(105): call_user_func_array(Array, Array)\\n#7 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(459): Sabre\\\\Event\\\\EventEmitter->emit('method:PUT', Array)\\n#8 \\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/DAV\\\/Server.php(248): Sabre\\\\DAV\\\\Server->invokeMethod(Object(Sabre\\\\HTTP\\\\Request), Object(Sabre\\\\HTTP\\\\Response))\\n#9 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/lib\\\/Server.php(178): Sabre\\\\DAV\\\\Server->exec()\\n#10 \\\/var\\\/www\\\/owncloud\\\/apps\\\/dav\\\/appinfo\\\/v2\\\/remote.php(30): OCA\\\\DAV\\\\Server->exec()\\n#11 \\\/var\\\/www\\\/owncloud\\\/remote.php(164): require_once('\\\/var\\\/www\\\/ownclo...')\\n#12 {main}\",\"File\":\"\\\/var\\\/www\\\/owncloud\\\/3rdparty\\\/sabre\\\/dav\\\/lib\\\/CardDAV\\\/Plugin.php\",\"Line\":360,\"User\":\"xxx\"}","level":4,"time":"xxx","method":"PUT","url":"\/remote.php\/dav\/addressbooks\/users\/xxx\/contacts\/C76E1F2F-2F40-0001-B7EC-262659804870.vlf","user":"xxx"}
ghost commented 7 years ago

Ok, few minutes after submitting this issue i've stumbled over https://github.com/nextcloud/server/issues/2848 leading to the following resources about SOGO below. Seems they are using a non-standard VLIST format -> Won't fix for ownCloud / SabreDAV from my PoV -> closing.

https://github.com/inverse-inc/sogo-connector.tb31/blob/2253f36fb2093db6749127ddd48270f70675ed72/chrome/content/sogo-connector/general/vcards.utils.js https://sogo.nu/bugs/print_bug_page.php?bug_id=1205 https://help.nextcloud.com/t/fehlermeldung-fatal-webdav/3740