[Owncloud] CalDAV interoperability

Evert Pot evert at rooftopsolutions.nl
Fri Mar 23 12:51:34 UTC 2012


Hi!

Very odd that your patch actually fixed it. makes me wonder what the playbook request was. Does it send a request with no range at all?
I'd absolutely love to have a look at what the playbook is sending to the server. 

If it's possible at all, could you setup Charles HTTP Proxy as a reverse proxy between your owncloud server and the playbook?
This should allow you to easily record the entire conversation.

With that information I may well be able to patch SabreDAV.

I've heard of issues with the playbook before, but unfortunately I have not been able to get my hands on a device or a capture.

Cheers,
Evert

On Mar 23, 2012, at 12:03 PM, Laurent Duchesne wrote:

> Hi,
> 
> Thanks for posting this information. As you mentioned, the Playbook cannot find the calendar by itself. I succeeded by patching the code like this:
> 
> /3rdparty/Sabre/CalDAV/XMLUtil.php line 77
> Change: 
> if (!is_null($start) && !is_null($end) && $end <= $start) {
> to:
> if (!is_null($start) && !is_null($end) && $end < $start) {
> 
> Reference:
> http://supportforums.blackberry.com/t5/BlackBerry-PlayBook/OwnCloud-Carddav-amp-Caldav/m-p/1590131#M28070
> 
> That post hints that this may only be necessary at validation time, when you create the account on the Playbook, but I have not tried reverting the code yet after setting up the account.
> 
> The Playbook then needs the entire URL to the calendar (including it's name). In my case:
> 
> cloud.domain.tld/apps/calendar/caldav.php/calendars/<username>/<calendarname>
> 
> It will use https by default. For one account, I had the "default calendar", which I entered as "default%20calendar" and the application was able to load it.
> 
> Hope this is useful to someone!
> 
> Laurent
> 
> Le 2012-03-10 à 04:35, Nicolas a écrit :
> 
>> Hi,
>> 
>> I try to synchronize my PlayBook with OwnCloud addressbook & calendar
>> services.
>> 
>> For the playbook, and I think others embedded devices, it's easier to
>> use short URL. So I have patched my owncloud to do :
>> 
>> diff --git a/.htaccess b/.htaccess
>> index ebb28b0..f314e9f 100644
>> --- a/.htaccess
>> +++ b/.htaccess
>> @@ -9,6 +9,17 @@ php_value memory_limit 512M
>> </IfModule>
>> <IfModule mod_rewrite.c>
>> RewriteEngine on
>> -RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]
>> +RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
>> +
>> +#RewriteCond %{REQUEST_METHOD} ^PROPFIND$
>> +
>> +RewriteCond %{HTTP_HOST} ^carddav
>> +RewriteCond %{REQUEST_URI} !^/apps
>> +RewriteRule .* /apps/contacts/carddav.php/$1 [L]
>> +
>> +RewriteCond %{HTTP_HOST} ^caldav
>> +RewriteCond %{REQUEST_URI} !^/apps
>> +RewriteRule .* /apps/calendar/caldav.php/$1 [L]
>> </IfModule>
>> Options -Indexes
>> +#MultiviewsMatch Any
>> 
>> 
>> and
>> 
>> 
>> diff --git a/apps/calendar/caldav.php b/apps/calendar/caldav.php
>> index b710b99..c389188 100644
>> --- a/apps/calendar/caldav.php
>> +++ b/apps/calendar/caldav.php
>> @@ -25,7 +25,8 @@ $nodes = array(
>> 
>> // Fire up server
>> $server = new Sabre_DAV_Server($nodes);
>> -$server->setBaseUri(OC::$APPSWEBROOT.'/apps/calendar/caldav.php');
>> +//$server->setBaseUri(OC::$APPSWEBROOT.'/apps/calendar/caldav.php');
>> +$server->setBaseUri(OC::$APPSWEBROOT.'/');
>> // Add plugins
>> $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud'));
>> $server->addPlugin(new Sabre_CalDAV_Plugin());
>> 
>> 
>> and
>> 
>> 
>> diff --git a/apps/contacts/carddav.php b/apps/contacts/carddav.php
>> index 654aeb6..0792d62 100644
>> --- a/apps/contacts/carddav.php
>> +++ b/apps/contacts/carddav.php
>> @@ -39,7 +49,8 @@ $nodes = array(
>> 
>> // Fire up server
>> $server = new Sabre_DAV_Server($nodes);
>> -$server->setBaseUri(OC::$APPSWEBROOT.'/apps/contacts/carddav.php');
>> +//$server->setBaseUri(OC::$APPSWEBROOT.'/apps/contacts/carddav.php');
>> +$server->setBaseUri(OC::$APPSWEBROOT.'/');
>> // Add plugins
>> $server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud'));
>> $server->addPlugin(new Sabre_CardDAV_Plugin());
>> 
>> 
>> So now, I can use the url :
>> carddav.domain.tld
>> or
>> caldav.domain.tld
>> 
>> 
>> I do better later...
>> 
>> 
>> For CardDAV, it works well with PlayBook device (and Gnome Evolution
>> 3.2.2)
>> 
>> 
>> For CalDAV, it works well with Evolution ; but not at all with PlayBook.
>> 
>> 
>> I don't really how to debug and dump stream. I have patched owncloud to
>> dump the stream between the client & the server into a file. But maybe,
>> there is a better way ?
>> 
>> 
>> For PlayBook, it missing info in DAV communication :
>> 
>> Indeed, in the ressourceType into the XML answer, there is no the
>> "calendar" information. If I add "dirty"... :
>> case '{DAV:}resourcetype' :
>> $newProperties[200]['{DAV:}resourcetype']->add('{urn:ietf:params:xml:ns:caldav}calendar');
>> in the getPropertiesForPath (3rdparty/Sabre/DAV/Server.php)
>> the information.
>> it works better.
>> 
>> 
>> I seek to add this field, I don't think that we have to modify SabreDAV
>> itself, but the owncloud sabre connector.
>> 
>> 
>> Regards,
>> 
>> Nicolas
>> 
>> 
>> _______________________________________________
>> Owncloud mailing list
>> Owncloud at kde.org
>> https://mail.kde.org/mailman/listinfo/owncloud
> 
> _______________________________________________
> Owncloud mailing list
> Owncloud at kde.org
> https://mail.kde.org/mailman/listinfo/owncloud




More information about the Owncloud mailing list