Pb calendrier ICS O365

Vous avez désactivé l’accès à votre ics chez outlook ?

J’essayais de récupérer le fichier avec curl en php pour voir ce qui pourrait être corrigé dans le plugin et j’avais l’erreur suivante:

Curl error: Maximum (20) redirects followed. Code retour http: 302

Maintenant je n’ai plus que des Bad request

non, non, pas touché, il est toujours téléchargeable.

Tu peux essayer avec --head ?

Histoire de voir si le serveur renvoi des headers « particuliers » ?

root@jeedom:~# curl -s "https://outlook.office365.com/owa/calendar/2e46c2e4a3d33a94e3@gouraud.cc/3df2c8ceaf9846a68cf03713154936101/S-1-8-1049094478-848012619
-1489039938-1556272521/reachcalendar.ics" --head
HTTP/2 200 
cache-control: private
content-length: 0
request-id: fc6ae747-c473-ae74-92d4-293d28d6cb78
strict-transport-security: max-age=31536000; includeSubDomains; preload
x-calculatedfetarget: MR1P264CU004.internal.outlook.com
x-backendhttpstatus: 200
set-cookie: ClientId=95B3647F8B9D4B5E87CB16DC4B51606D; expires=Tue, 30-Jun-2026 16:10:52 GMT; path=/;SameSite=None; secure
set-cookie: ClientId=95B3647F8B9D4B5E87CB16DC4B51606D; expires=Tue, 30-Jun-2026 16:10:52 GMT; path=/;SameSite=None; secure
set-cookie: OIDC=1; expires=Tue, 30-Dec-2025 16:10:52 GMT; path=/;SameSite=None; secure; HttpOnly
x-calculatedbetarget: MRZP264MB3001.FRAP264.PROD.OUTLOOK.COM
x-backendhttpstatus: 200
x-rum-validated: 1
x-rum-notupdatequeriedpath: 1
x-rum-notupdatequerieddbcopy: 1
x-content-type-options: nosniff
x-besku: WCS6
x-owa-diagnosticsinfo: 99;14;25;
x-backend-begin: 2025-06-30T16:10:52.047
x-backend-end: 2025-06-30T16:10:52.141
x-ua-compatible: IE=EmulateIE7
x-responseorigin: OwaAppPool
x-proxy-routingcorrectness: 1
x-proxy-backendserverstatus: 200
x-feefzinfo: CDG
x-feserver: MR1P264CA0091
alt-svc: ":443";ma=2592000,h3-29=":443";ma=2592000
x-firsthopcafeefz: CDG
x-feproxyinfo: PA7P264CA0012.FRAP264.PROD.OUTLOOK.COM
x-feserver: PA7P264CA0012
date: Mon, 30 Jun 2025 16:10:52 GMT

Ca m’intrigue ça, je me demande si ça ne pourrait pas être à cause de ça que le plugin ne télécharge rien ?

Bon j’ai rien dit, j’ai fait le test de mon coté sur un ICS que je récupère et qui marche et le content-length est aussi égal à 0 :frowning:

Pas pour moi.
ChatGPT l’explique comme ça:

:pushpin: Contexte des changements récents

Microsoft a modifié la manière dont Outlook/Office365 gère le partage de calendrier pour des raisons de sécurité :

  • Les liens reachcalendar.ics sont désormais soumis à une authentification stricte, même s’ils semblaient accessibles anonymement auparavant.
  • Ils sont liés à une session utilisateur, un partage direct ou un « link-to-share » interne, et ne sont plus exploitables par un script sans authentification.
  • Redirections multiples (302) sont désormais utilisées pour protéger les accès non autorisés ou détecter les bots/scripts.
  • Microsoft pousse les utilisateurs à utiliser le système de publication ICS public via les paramètres Outlook (via publishedcalendar.ics).

Mais les dates ne correspondent pas trop:

:clock3: Ce changement est intervenu progressivement :

  • :date: Fin 2023 : premières limitations sur les liens reachcalendar.ics utilisés dans les intégrations tiers.
  • :lock: Début 2024 : redirections infinies (loop 302) pour les clients non authentifiés (cURL, scripts, serveurs).
  • :loudspeaker: Microsoft n’a pas toujours documenté publiquement ces changements, mais des retours sur GitHub, StackOverflow et les forums Microsoft confirment cette bascule.

Le plugin avec sa commande file() ne peut récupérer que des calendriers publics. ( A vérifier )

Je ne vois pas pourquoi CURL est ok et FILE ko si c’est un changement coté Microsoft.

Bonjour,
Qu’est ce qui peut faire que ca ne fonctionne plus ?
Coté plugin Jeedom, il n’y a pas eu de changement depuis 07/2023.

Pour la différence entre curl et file(), je vous laisse consulter la liste des options possibles pour la commande curl en PHP: curl_setopt
La commande file() est appelé par le plugin sans le paramètre contexte.

AMHA si MS continue à renforcer la sécurité, ça ne devrait pas fonctionner avec curl non plus.
( Bientôt ) :thinking:

Pas manqué, curl est passé HS hier sur mon tenant.

Je m’en suis sorti en fouillant un peu les options curl :

curl -L --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" "https://outlook.office365.com/owa/calendar/blablabla/calendar.ics" -o /var/www/html/plugins/script/data/ics-Planning-sport.ics 

Le -L m’a permis de continuer avec les redirections.
Le user-agent est celui d’un Edge récent car même çà MS le vérifie.

et là çà fonctionne, j’ai bien mon ICS :sweat_smile: