-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Closed
Labels
4. to releaseReady to be released and/or waiting for tests to finishReady to be released and/or waiting for tests to finishbugfeature: caldavRelated to CalDAV internalsRelated to CalDAV internals
Description
Since a few days or weeks Microsoft denies incoming requests on outlook.office365.com for refreshing ICS calendar subscriptions in Nextcloud.
I did some experiments and found that the seems to be some kind of whitelist check on User-Agent header:
% curl -H 'User-Agent: Nextcloud Webcal Service' 'https://outlook.office365.com/owa/calendar/[...]/reachcalendar.ics'
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="/owa/auth/errorfe.aspx?httpCode=500&msg=...&owaError=Microsoft.Exchange.Clients.Owa2.Server.Core.OwaBasicUnsupportedException&owaVer=15.20.9073.21&be=...&ts=...&fe=...&reqid=&creqid=&cid=&hmac=...">here</a>.</h2>
A minimal working User-Agent I found is Mozilla/5.0 (Linux) Chrome/139:
% curl -H 'User-Agent: Mozilla/5.0 (Linux) Chrome/139' 'https://outlook.office365.com/owa/calendar/[...]/reachcalendar.ics'
BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
[....]
Of course this is an Outlook issue, but I have no hope that a support call might fix this. So here's a small patch as workaround:
--- apps/dav/lib/CalDAV/WebcalCaching/Connection.php.orig 2025-09-02 11:08:25.447929216 +0200
+++ apps/dav/lib/CalDAV/WebcalCaching/Connection.php 2025-09-02 11:28:36.520658958 +0200
@@ -52,6 +52,12 @@
$params[RequestOptions::AUTH] = [$user, $pass];
}
+ $host = parse_url($subscription['source'], PHP_URL_HOST);
+ if ($host === 'outlook.office365.com') {
+ // https://github.com/nextcloud/server/issues/54799
+ $params[RequestOptions::HEADERS]['User-Agent'] = 'Mozilla/5.0 (Linux) Chrome/139';
+ }
+
try {
$client = $this->clientService->newClient();
$response = $client->get($url, $params)Even if this won't get merged into Nextcloud this issue might help users to find out what's going on.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
4. to releaseReady to be released and/or waiting for tests to finishReady to be released and/or waiting for tests to finishbugfeature: caldavRelated to CalDAV internalsRelated to CalDAV internals