I want to add my disroot calendars to Thunderbird via CalDAV. That does not work, even though there is no error message visible on the frontend.
The error console shows a HTTP 503 Service Unavailable
response from https://cloud.disroot.org/[...]
LONG VERSION START
Problem Description
- Goal: add disroot calendar to Thunderbird via Lightning addon
- Steps to do that: Use add calendar functionality (details see below)
- Expected behaviour: synchronization with the calendar, display appointments
- Actual behaviour: no error message, but no appointments are displayed (even after invoking manual synchronization)
Steps to reproduce
Software
- install thunderbird from OS repos
- install the
Lightning
addon from inside thunderbird
Add Calendar
- menu: file > new > calendar
- select
network
- select
CalDAV
- paste URL from
https://cloud.disroot.org
, in my case:https://cloud.disroot.org/remote.php/dav/calendars/tropf/<calendar_name>/
- enter a name, set a color, and change the email to my disroot email (
echo dHJvcGYgPHRyb3BmQGRpc3Jvb3Qub3JnPgo= | base64 -d
) - a authentication window will pop up. enter credentials (User:
tropf
, Password:my disroot password
– see Note below) - close calendar creation wizard by clicking
Finish
Now I expect to see appointments, but i don’t.
To be safe, right click the new calender and hit synchronize calendar
.
Still nothing happens.
Logs
Logs can be extracted by hitting Ctrl + Shift + I
. Read and confirm the warning that you know what you are doing.
When hitting synchronize calendar
a single request is sent.
This request is shown here.
Request Headers
Sent to https://cloud.disroot.org/remote.php/dav/calendars/tropf/<calendar_name>/
.
Headers sent
PROPFIND /remote.php/dav/calendars/tropf/<calendar_name>/ HTTP/1.1
Host: cloud.disroot.org
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Lightning/6.2.5
Accept: text/xml
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Accept-Charset: utf-8,*;q=0.1
Content-Length: 306
Content-Type: text/xml; charset=utf-8
Depth: 0
Cookie: <lots of cryptic stuff i won't tell you>
Authorization: Basic aSB3b250IHRlbGwgeW91Om15IHBhc3N3b3JkCg==
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Request Payload
POST payload
<?xml version="1.0" encoding="UTF-8"?>
<D:propfind xmlns:D="DAV:" xmlns:CS="http://calendarserver.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav"><D:prop><D:resourcetype/><D:owner/><D:current-user-principal/><D:supported-report-set/><C:supported-calendar-component-set/><CS:getctag/></D:prop></D:propfind>
Reformatted
<?xml version="1.0" encoding="utf-8"?>
<D:propfind xmlns:D="DAV:" xmlns:CS="http://calendarserver.org/ns/"
xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<D:resourcetype />
<D:owner />
<D:current-user-principal />
<D:supported-report-set />
<C:supported-calendar-component-set />
<CS:getctag />
</D:prop>
</D:propfind>
Response Headers
The server responds with a 503 Service Unavailable
.
HTTP/2.0 503 Service Unavailable
server: nginx
date: Fri, 05 Apr 2019 12:10:20 GMT
content-type: text/html; charset=UTF-8
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
pragma: no-cache
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'nonce-<more cryptic stuff>'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *; object-src 'none'; base-uri 'self';
x-frame-options: SAMEORIGIN
set-cookie: __Host-nc_sameSiteCookielax=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=lax
__Host-nc_sameSiteCookiestrict=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=strict
X-Firefox-Spdy: h2
Response Payload
The response payload is empty.
Versions
Tested on two configurations:
- Ubuntu 16.04.6 LTS, Thunderbird 60.6.1, Lightning 6.2.5
- Archlinux (updated today, 2019-04-05), Thunderbird 60.5.3, Lightning 6.2.5.3
LONG VERSION END
Other Programs
I could already use the same CalDAV URL with other clients.
It worked with both Evolution and on Android.
Also a fully automated script using khal can access the calendar.
Notes
- My setup is not english, so all options are translated and might not match their english counterpart 100%.
- Another DAV calender already works with both these Thunderbird instances.
- My Password contains a colon
:
. Does this cause problems for any of the used PHP libs? (:
is a special character for HTTP basic authentication)
Do you have any suggestions what else i should try? Because I ran out of ideas
If you need any more testing data, just let me know.
Thanks for bothering to read through this!
-tropf