Closed
Bug 574610
Opened 15 years ago
Closed 15 years ago
Regression: network calendars using CalDAV and eGroupware no longer work
Categories
(Calendar :: Provider: CalDAV, defect)
Tracking
(Not tracked)
RESOLVED
INVALID
People
(Reporter: nigel, Unassigned)
References
Details
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4 GTB7.0 ( .NET CLR 3.5.30729)
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.2.4) Gecko/20100608 Lightning/1.0b2 Thunderbird/3.1
In tools->options->certificates->view certificates: server tab, the server certificate is there as it is being used by IMAP. On the previous version of this and Thunderbird you have to add a security exception for HTTPS for that server, but if you try to do that now it says that the certificate is already being allowed.
On the error console, you get this.
Warning: There has been an error reading data for calendar: xxxxx. However, this error is believed to be minor, so the program will attempt to continue. Error code: DAV_NOT_DAV. Description: The resource at https://xxx.xxx.xxx/egroupware/groupdav.php/calendar is either not a DAV collection or not available.
Bear in mind that this error only happened after the upgrade. It was fine before that, the server is still up and running and it works with the older version or Thunderbird/lightning.
I also get this:
xxx.xxx.xxx : potentially vulnerable to CVE-2009-3555
Reproducible: Always
Steps to Reproduce:
1. New calendar...
2. On the network
3. CalDAV, location https://xxx.xxx.xxx/egroupware/groupdav.php/calendar
4. Name xxxxx
Actual Results:
Yellow triangle with exclamation mark next to calendar: The calendar xxxxx is momentarily not available.
Expected Results:
Calendar view populated with events and no yellow triangle.
Comment 1•15 years ago
|
||
Does this happens only for CalDAV? What happens if you try to subscribe to a iCalendar (*.ics) file via HTTPS on your server?
| Reporter | ||
Comment 2•15 years ago
|
||
Firstly, I have tried this on a machine inside the network on HTTP and not HTTPS and you still get the same problem. This means that my assumption that this was to do with certificates looks like it was incorrect.
I have tried opening an iCal URL and this works, and the one event in that shows up on the calendar.
The trouble is, of course, each .ics URL on the server contains just one event on the CalDAV server, so this is not in any way usable as a solution.
So it looks like a regression has been introduced in the CalDAV client (unless, of course, people think that eGroupware has ceased to be CalDAV compliant).
| Reporter | ||
Comment 3•15 years ago
|
||
I have now tried iCal on HTTPS and that works, so it would definitely appear not to be certificate related.
| Reporter | ||
Comment 4•15 years ago
|
||
I also get this error in the error console:
Warning: There has been an error reading data for calendar: xxxxxx. However, this error is believed to be minor, so the program will attempt to continue. Error code: READ_FAILED. Description:
(but there is no description)
The Apache access log gives this:
nnn.nnn.nnn.nnn - xxxxx [26/Jun/2010:11:22:01 +0100] "PROPFIND /egroupware/groupdav.php/calendar/ HTTP/1.1" 207 1037 "-" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.4) Gecko/20100608 Lightning/1.0b2 Thunderbird/3.1"
which is as you would expect, and there is nothing in the Apache error log, so there is nothing going wrong at HTTP level. Note also, that this is the only access entry. You would expect Lightning to then go on the read all the events, but it doesn't.
| Reporter | ||
Updated•15 years ago
|
Summary: Network calendars with self-signed certificates can't be accessed → Regression: network calendars using CalDAV and eGroupware no longer work
| Reporter | ||
Updated•15 years ago
|
Component: Security → Provider: CalDAV
| Reporter | ||
Comment 5•15 years ago
|
||
I've turned on calendar verbose debugging and here is what comes out of the error console:
CalDAV: Status 207 on initial PROPFIND for calendar xxxxxx
CalDAV: Authentication scheme for xxxxxx is Basic
Warning: There has been an error reading data for calendar: xxxxxx. However, this error is believed to be minor, so the program will attempt to continue. Error code: DAV_NOT_DAV. Description: The resource at http://xxx.xxx.xxx/egroupware/groupdav.php/xxxxxx/calendar is either not a DAV collection or not available
Warning: There has been an error reading data for calendar: xxxxxx. However, this error is believed to be minor, so the program will attempt to continue. Error code: READ_FAILED. Description:
Comment 6•15 years ago
|
||
Are you really using the correct URL? We don't auto detect the right url from its base url yet like iCal does, you need to specify the exact url of the calendar collection.
| Reporter | ||
Comment 7•15 years ago
|
||
I restarted Thunderbird (as this seemed necessary to pick up the verbose cal logging setting), and this was also emitted between the last "CalDav:" and the first "Warning:"...
CalDAV: recv: <?xml version="1.0" encoding="utf-8"?>
<D:multistatus xmlns:D="DAV:">
<D:response xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" xmlns:ns1="urn:ietf:params:xml:ns:caldav" xmlns:ns2="http://calendarserver.org/ns/">
<D:href>/egroupware/groupdav.php/xxxxxx/calendar/</D:href>
<D:propstat>
<D:prop>
<D:owner>Xxxxx Xxxxxxx</D:owner>
<D:resourcetype><collection /><vevent-collection xmlns="http://groupdav.org/" /><calendar xmlns="urn:ietf:params:xml:ns:caldav" /></D:resourcetype>
<ns1:supported-calendar-component-set xmlns:ns1="urn:ietf:params:xml:ns:caldav"><ns1:comp name="VEVENT"/></ns1:supported-calendar-component-set>
<D:supported-report-set><supported-report><report><urn:ietf:params:xml:ns:caldav>calendar-multiget</urn:ietf:params:xml:ns:caldav></report></supported-report></D:supported-report-set>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
<D:propstat>
<D:prop>
<ns2:getctag/>
</D:prop>
<D:status>HTTP/1.1 404 Not Found</D:status>
</D:propstat>
</D:response>
</D:multistatus>
Thus, line 1357 of calDavCalendar.js - "var multistatus = cal.safeNewXML(str);" - must be throwing an exception, possibly due to the 404.
| Reporter | ||
Comment 8•15 years ago
|
||
Yes, it is the correct URL. Remember: I had all this correct and working with TB3.0x/L1.0b1, I changed nothing and upgraded to TB3.1/L1.0b2 and it stopped working.
| Reporter | ||
Comment 9•15 years ago
|
||
I did a bit of googling around and found this:
http://markmail.org/thread/xtlyfwvjzts5qsnh
It seems that this may not be the first time this problem has been encountered. Mr Kewisch: I notice your name is among the respondents.
Comment 10•15 years ago
|
||
In 1.0b2 we added querying for supported-report-set. Its possible that eGroupware doesn't answer this report correctly. I get the following errors when validating the xml you posted:
bug574610:17: namespace error : Failed to parse QName 'urn:ietf:'
<D:supported-report-set><supported-report><report><urn:ietf:params:xml:ns:caldav
^
bug574610:17: namespace error : Namespace prefix urn on ietf:params:xml:ns:caldav is not defined
<D:supported-report-set><supported-report><report><urn:ietf:params:xml:ns:caldav
^
Could you try this with a newer version of eGroupware?
Updated•15 years ago
|
QA Contact: calendar → caldav-provider
| Reporter | ||
Comment 11•15 years ago
|
||
The server is eGroupWare Version 1.6.003, which is the latest version according to http://www.egroupware.org/
| Reporter | ||
Comment 12•15 years ago
|
||
That tag is listed here: http://www.iana.org/assignments/xml-registry/ns.html
If you open the caldav URL with a web browser, part of what you get is this:
Properties
Namespace Name Value
DAV current-user-principal <href>http://jeeves/egroupware/groupdav.php/principals/users/xxxxxx/</href>
DAV owner Xxxxxx Xxxxxxx
DAV principal-URL <href>http://xxx.xxx.xxx/egroupware/groupdav.php/principals/users/xxxxxx/</href>
DAV alternate-URI-set <href>MAILTO:xxxxxx@xxx.xxx.xxx</href>
CalDAV calendar-user-address-set <href>MAILTO:xxxxxx@xxx.xxx.xxx</href>
DAV principal-collection-set <href>/egroupware/groupdav.php/principals/users/</href><href>/egroupware/groupdav.php/principals/groups/</href>
CalDAV calendar-home-set <href>/egroupware/groupdav.php/xxxxxx/calendar/</href>
CardDAV addressbook-home-set <href>/egroupware/groupdav.php/xxxxxx/</href>
DAV displayname Xxxxx Xxxxxxx
DAV resourcetype <collection /><vevent-collection xmlns="http://groupdav.org/" /><calendar xmlns="urn:ietf:params:xml:ns:caldav" />
GroupDAV component-set VEVENT
CalDAV calendar-description Xxxxx Xxxxxxx
CalDAV supported-calendar-component-set <comp xmlns="urn:ietf:params:xml:ns:caldav"><VEVENT xmlns="" /></comp>
DAV supported-report-set <supported-report><report><urn:ietf:params:xml:ns:caldav>calendar-multiget</urn:ietf:params:xml:ns:caldav></report></supported-report>
| Reporter | ||
Comment 13•15 years ago
|
||
I put some extra debug in and its definitely falling over at line 1359 of calDavCalendar.js, which is an exception thrown by cal.safeNewXML(str). Tracing it further, I find that the thing that throws the exception is the statement:
new XML(aStr.trim().replace(/^<\?xml[^>]*>\s*/g, ""))
in calProviderUtils.jsm (line 129).
???!!!???
Comment 14•15 years ago
|
||
The XML in question is specifically this bit:
<D:supported-report-set>
<supported-report>
<report>
<ietf:params:xml:ns:caldav>calendar-multiget</ietf:params:xml:ns:caldav>
</report>
</supported-report>
</D:supported-report-set>
The problem is that "ietf" is not a validly defined namespace, so the xml is plain wrong. The namespaces defined are ns0, ns1 and ns2. I believe the correct reply should be:
<D:supported-report-set>
<supported-report>
<report>
<ns1:calendar-multiget/>
</report>
</supported-report>
</D:supported-report-set>
I read this out of rfc3253, section 3.1.5. Specifically it states the structure is:
<!ELEMENT supported-report-set (supported-report*)>
<!ELEMENT supported-report report>
<!ELEMENT report ANY>
ANY value: a report element type
This means that a "supported-report-set" has multiple "supported-report" children, which has one "report" child, which has ANY report element type.
The report element type in this case is <calendar-multiget/>, in the caldav namespace (which is defined as ns1 in this case).
(In reply to comment #13)
> I put some extra debug in and its definitely falling over at line 1359 of
> calDavCalendar.js, which is an exception thrown by cal.safeNewXML(str). Tracing
> it further, I find that the thing that throws the exception is the statement:
>
> new XML(aStr.trim().replace(/^<\?xml[^>]*>\s*/g, ""))
This fits with my theory. Doing the following in xpcshell:
new XML("<ietf:params:xml:ns:caldav>calendar-multiget</ietf:params:xml:ns:caldav>")
gives me the following error:
1: SyntaxError: invalid XML qualified name:
1: <parent xmlns=""><ietf:params:xml:ns:caldav>calendar-multiget</ietf:params:xml:ns:caldav></parent>
Therefore this is (again) an egroupware bug (sorry!).
Please file a bug at the egroupware bugtracker, feel free to reference this bug for explaining whats going wrong there.
Status: UNCONFIRMED → RESOLVED
Closed: 15 years ago
Resolution: --- → INVALID
Comment 15•15 years ago
|
||
> The problem is that "ietf" is not a validly defined namespace, so the xml is
> plain wrong. The namespaces defined are ns0, ns1 and ns2.
Sorry, I was looking at the sanatized XML, of course I mean that "urn" is not a valid namespace.
> 1: SyntaxError: invalid XML qualified name:
> 1: <parent
> xmlns=""><ietf:params:xml:ns:caldav>calendar-multiget</ietf:params:xml:ns:caldav></parent>
The same error happens when adding "urn:".
| Reporter | ||
Comment 16•15 years ago
|
||
I have reported this here:
http://egroupware.219119.n3.nabble.com/No-longer-compatible-with-Thunderbird-3-1-Lightning-1-0b2-tp935641.html
along with a possible solution.
Comment 17•15 years ago
|
||
Problem is solved now in EGroupware svn for all branches. Thanks for supporting the EGroupware project.
Ralf
You need to log in
before you can comment on or make changes to this bug.
Description
•