[dev] Exposing timeobjects to caldav
Ralf Lang
lang at b1-systems.de
Tue Aug 15 13:28:54 UTC 2017
On 13.08.2017 19:01, Ralf Lang wrote:
>>>>>> * Patching Kronolith is tempting, but I don't think it's wise to
>>>>>> just expose random timeobjects providers to caldav interface
>>>>>> without letting the admin or user decide. Kronolith is complicated
>>>>>> and a prime horde app.
>>>>>
>>>>> I still think this is still the way to go. We should expose all
>>>>> calendar backends to CalDAV, limiting their features where
>>>>> necessary, like marking them read-only. Remote calendars might be
>>>>> an exception, since they can be exposed directly to clients using
>>>>> the "subscriptions" CalDAV extension.
>>>>> If necessary, we could add a preference to allow users to only
>>>>> select a number of calendar types (or even individual calendars) to
>>>>> be exposed for synchronization.
>>>>>
>>>>
>>>> Wow, that's quite some patch. I will consult with Diana if that is
>>>> something we can easily provide within reasonable time. If this is
>>>> the case, we will provide a PR.
>>>
>>> I've been looking at this.
>>> For now, all externals will be presented readonly.
>>>
>>> I the visible name of the external collection contains the provider
>>> name and the collection name. For instance, if the provider was whups
>>> (declared as "Tickets" in the horde menu) and the collection label
>>> was "My Tickets by Due Date", this would be "Tickets - My Tickets by
>>> Due Date".
>>>
>>> I tried to sort the external calendars into a subfolder but this
>>> proved tricky without patching Horde_Dav, which is out of scope for a
>>> kronolith patch. For now, I stick with a flat user/calendars
>>> hierarchy, only visibly discerning shares from externals.
>>>
>>> Under the application name path (like whups), it seems Horde_Dav just
>>> invokes browse() to return a tree level. I am not sure but this looks
>>> like plain webdav instead of caldav.
>>>
>>> I think I am on the right track now. It's all settling step by step.
>>>
>> As external events pop up out of nowhere, there is no internal or
>> external object id. For collections, getExternalCollectionId
>> automagically calls addCollectionMap if missing.
>> Horde_Dav_Storage::getExternalObjectId however doesn't implicitly add
>> object maps. This is inconsistent, but can be worked around by
>> checking for an exception in Application::davGetObjects
>
> Here is the PR https://github.com/horde/horde/pull/226
> No filtering preferences yet.
> All externals currently have the principal -system- but there is no real
> permission checking yet. It just assumes if the user is allowed to grab
> it via the timeobjects api, then the user is likewise allowed to expose
> it via DAV to his own login name.
>
>
Updated the PR. I changed everything Jan commented on, with the
exception of the calendar id's - if they contain slashes, they break
caldav stuff and get interpreted as hierarchy delimiters.
--
Ralf Lang
Linux Consultant / Developer
Tel.: +49-170-6381563
Mail: lang at b1-systems.de
B1 Systems GmbH
Osterfeldstraße 7 / 85088 Vohburg / http://www.b1-systems.de
GF: Ralph Dehner / Unternehmenssitz: Vohburg / AG: Ingolstadt,HRB 3537
More information about the dev
mailing list