[kronolith] Caldav/Icalendar export breaks for certain events

Ralf Lang lang at b1-systems.de
Thu Jan 28 07:02:47 UTC 2021


Hi everybody,

Am 27.01.2021 um 09:32 schrieb Ralf Lang:
> Hallo,
>
> our colleagues are currently looking into an issue with calendars
> delivered via kronolith git-master's web ui.
>
> We got some events into DB with an attendee which neither resolves to
> X-HORDE-ATTENDEE nor ATTENDEE.
> Kronolith exports this to Icalendar in a non-compliant format (see
> below). Most clients don't mind or ignore this. SabreDav's
> Parser/Importer however chokes and sync breaks.
>
> As a symptom, on Webserver log, you see a REPORT
> /rpc/calendars/$principal/$cal/UID with status code 500.
> Davx5 would provide some debug output, saying "Invalid Mimedir File.
> Line starting ... did not follow iCalendar/vCard conventions".
>
> At  the moment, it's not clear if current git-master still produces this
> kind of event and if it happens via Dav, ActiveSync or the Dynamic Web
> UI. I also cannot confirm if released versions are affected.
>
> The resulting Icalendar as exported via caldav or exported via web
> dynamic view looks like this:
>
> ...
>
> CLASS:PUBLIC
> STATUS:CONFIRMED
> TRANSP:OPAQUE
> ;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Ralf Lang:
> ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:mailto:lang at b
>  1-systems.com
> END:VEVENT
> END:VCALENDAR
>
> The role without an ATTENDEE mark is the organizer, a horde internal user.
> The 2nd attendee is an external outside the horde installation. (at
> least in theory).
>
> Code is around this area:
>
> https://github.com/maintaina-com/kronolith/blob/master/lib/Event.php#L905
>
> Now some questions on what to do about it.
>
> Should the attribute default to ATTENDEE for cases which slip through or
> should these lines simply not be exported?
> Any clue on how this event could be produced?
>
> We will most likely come up with a fixer first, which runs on the CLI
> and drops all attendees which have neither an email address (ATTENDEE)
> nor a user name (X-HORDE-ATTENDEE).
>
> On the runtime side, I guess if $attribute is empty, we should not
> setAttribute()
>
1) Naive Patch for this issue: https://github.com/horde/kronolith/pull/2
Would be good if Michael could review, as he knows much more about the
sync facilities than we at B1 do.

2) Unrelated, but we ran into it while building the reproducer environment

https://github.com/horde/kronolith/pull/3

3) Fits the thread's headline, unrelated issue happening with the same
dav sync consumer: Default database settings may break on invitations
containing Unicode Icons (Hamburger, Plane, Pile of Unpleasantness,
Arrows, Checkboxes, Phone...) No code change required but deployment
config should be change.

https://www.ralf-lang.de/2021/01/27/davx5-caldav-may-break-with-unicode-symbols-in-horde-kronolith-syncs/


-- 
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 kronolith mailing list