FreederTeam / Freeder

An easy-to-use free feed reader
Other
5 stars 1 forks source link

Impossible d'importer certains flux #91

Closed qwertygc closed 9 years ago

qwertygc commented 9 years ago

Hello ! Impossible d'importer certains flux :* http://www.laboiteverte.fr/feed/ (Unable to find a feed at the address http://www.laboiteverte.fr/feed/) http://unsplash.com/rss (Feed page not found (http status: 301)) http://feeds.feedburner.com/Pebkacfr?format=xml (Feed page not found (http status: 301)) http://xaviergorce.com/feed/ (Feed page not found (http status: 404)) http://scinfolex.wordpress.com/feed/ (Feed page not found (http status: 301)) http://www.cyrille-borne.com/feed (Feed page not found (http status: 301)) http://blog.idleman.fr/?feed=rss2 (Unable to find a feed at the address http://blog.idleman.fr/?feed=rss2) http://korben.info/feed/ (Feed page not found (http status: 301)) http://etudiant-libre.fr.nf/feed.php (Unable to find a feed at the address http://etudiant-libre.fr.nf/feed.php) http://mart-e.be/feed (Feed page not found (http status: 301)) http://ploum.net/feed (Feed page not found (http status: 301)) http://tontof.net/?rss (Unable to find a feed at the address http://tontof.net/?rss) http://news.jesuislibre.net/mediapart-economie.rss (Unable to find a feed at the address http://news.jesuislibre.net/mediapart-economie.rss) http://news.jesuislibre.net/mediapart-breves.rss (Unable to find a feed at the address http://news.jesuislibre.net/mediapart-breves.rss) http://news.jesuislibre.net/mediapart-france.rss (Unable to find a feed at the address http://news.jesuislibre.net/mediapart-france.rss) http://www.mozillazine-fr.org/contenu.xml (Feed page not found (http status: 301)) http://www.hoaxbuster.com/rss.xml (Unable to parse feed file)

(pourtant ils marchent dans Leed)

Phyks commented 9 years ago

Pour tous ceux en http status: 301, c'est simplement qu'ils ont changé d'adresse et que la configuration de ton serveur ne permet pas à curl de suivre ces redirections. Leed n'a pas ce problème car il n'utilise pas curl pour faire du téléchargement en parallèle. Malheureusement, on ne peut rien faire pour changer ça, c'est une question de configuration, cf la note ici.

Par exemple, mozillazine est ici maintenant.

Pour http://xaviergorce.com/feed/, il fait une erreur 404, je ne sais pas pourquoi il fonctionne dans Leed du coup…

Pour tous les autres flux qui sont marqués Unable to find a feed at the address, c'est plus subtil, je vais regarder.

qwertygc commented 9 years ago
https://unsplash.com/rss (Unable to find a feed at the address https://unsplash.com/rss)

(après correction et tesant les nouveaux liens.) Pour XavierGorce, c'est un vieux lien oublié de l'enlever.

marienfressinaud commented 9 years ago

Si Curl n'est pas capable de suivre la redirection il doit au moins être possible de récupérer la valeur de redirection non ? Du coup il serait sans doute possible de "réparer" l'adresse du flux en la changeant par la nouvelle adresse. Ce serait d'ailleurs même intéressant si Curl est capable de suivre la redirection comme ça l'utilisateur garderait une base saine de flux RSS.

Phyks commented 9 years ago

@marienfressinaud : C'est possible en effet, mais ça demande pas mal de boulot pour un résultat qui risque de poser des problèmes de sécurité.

Cf http://au.php.net/manual/ro/function.curl-setopt.php#71313 :

then you will want to read http://www.php.net/ChangeLog-4.php which says "Disabled CURLOPT_FOLLOWLOCATION in curl when open_basedir or safe_mode are enabled." as of PHP 4.4.4/5.1.5.  This is due to the fact that curl is not part of PHP and doesn't know the values of open_basedir or safe_mode, so you could comprimise your webserver operating in safe_mode by redirecting (using header('Location: ...')) to "file://" urls, which curl would have gladly retrieved.

L'idée est de modifier la fonction curl_multi_exec pour récupérer les headers retournés et suivre le "Location:". Mais celui-ci peut pointer sur un fichier local par exemple. Cf http://slopjong.de/2012/03/31/curl-follow-locations-with-safe_mode-enabled-or-open_basedir-set/.

EDIT : Leed et les autres ne sont pas touchés par ce problème car ils utilisent file_get_contents qui a l'inconvénient de faire des appels à la chaîne, et non en parallèle, mais qui sont des composants de PHP et qui ont donc accès à la configuration et notamment à open_basedir et safe_mode.

marienfressinaud commented 9 years ago

Ah oui exact (j'ai le même problème actuellement pour les mises à jour de FRSS :p). Il doit être possible tout de même de vérifier la valeur de Location (un filter_var($url, FILTER_VALIDATE_URL) peut déjà aider)

Niols commented 9 years ago

Ou alors de proposer à l'utilisateur la nouvelle URL, mais sans la suivre.

Phyks commented 9 years ago

:+1: pour proposer à l'utilisateur de suivre l'URL, je note dans https://github.com/FreederTeam/Freeder/issues/93.

Phyks commented 9 years ago

J'ai résolu ce problème dans mon dernier commit sur master. Tout devrait marcher maintenant. La modification pour curl demande plus de boulot et de réflexion, je la déplace dans l'issue correspondante.

Pour l'historique, le problème des ces flux est qu'ils sont pas servis avec le bon content-type. Ils sont servis en tant que text/html et non application/rss ou autre content-type réservé aux flux… #relou

qwertygc commented 9 years ago

Hello ! Toujours des problèmes pour les flux suivants : http://news.jesuislibre.net/mediapart-economie.rss (Unable to find a feed at the address http://news.jesuislibre.net/mediapart-economie.rss) http://news.jesuislibre.net/mediapart-breves.rss (Unable to find a feed at the address http://news.jesuislibre.net/mediapart-breves.rss) http://news.jesuislibre.net/mediapart-france.rss (Unable to find a feed at the address http://news.jesuislibre.net/mediapart-france.rss) http://www.hoaxbuster.com/rss.xml (Unable to parse feed file) Voilà voilà :)

Phyks commented 9 years ago

J'ai corrigé le problème avec jesuislibre.net. Ils ne servaient pas leur flux RSS avec un content-type standard (application/rss+xml) mais avec application/x-rss+xml…

Pour hoaxbuster, leur flux n'est pas valide http://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Fwww.hoaxbuster.com%2Frss.xml

pubDate must be an RFC-822 date-time: <span class="date-display-single" property="dc:date" datatype="xsd:dateTime" content="2014-10-24T00:00:00+02:00">24 Octobre 2014</span>

Je vais réfléchir à la meilleure manière de faire, mais je pense que dans tous les cas les dates ne seront pas gérées.

qwertygc commented 9 years ago

Justement, avec jesuislibre.net, ca marche toujours pas, même après avoir mit à jour freeder !

Phyks commented 9 years ago

J'ai corrigé dans la branche dev normalement. Je viens de tester et a priori c'est fonctionnel.

Phyks commented 9 years ago

@qwertygc: J'ai mis à jour dans la branche dev :

Les liens vers les articles sont relatifs et non absolus, mais ça devrait marcher. La date est juste pas dans le format attendu dans un flux RSS. J'ai pas envie de coder une fonction compliquée juste pour eux… qui me semble être une très mauvaise pratique. Du coup, tous leurs articles sont estampillés à la date du refresh.

Phyks commented 9 years ago

@marienfressinaud FWIW, Zebra_cURL propose un très bon wrapper asynchrone au-dessus de l'extension cURL de PHP, et a l'air de gérer les redirections directement. Si jamais ça peut te servir pour FreshRSS… :)