Re: Vimeo plante en tant que document distant

Cerdic <[email protected]>
Newsgroups gmane.comp.web.spip.devel
Message-ID <35527da6-6ce6-446e-9239-33f791e05d01@Spark>
Hello,

donc je confirme la source du bug qui vient bien du passage de Vimeo à TLS 1.2 :
selon que j’ai le patch https://core.spip.net/projects/spip/repository/revisions/24018 le bug se produit ou non

Cela dit il est possible que si ton PHP est trop ancien, il ne supporte pas TLS 1.2 et le patch ci-dessus ne suffira pas…

En ce qui concerne la méthode détournée, en effet il faut renseigner le status, comme c’est fait plus haut (https://core.spip.net/projects/spip/repository/entry/spip/ecrire/inc/distant.php#L481) dans l’autre alternative, ce que j’ai fait avec
http://core.spip.org/projects/spip/repository/revisions/24171
et reports.

Mais je suis d’accord qu’on ne peut pas renseigner arbitrairement le Content-Type ici : dans ce cas on a pas les en-têtes, on ne sait pas ce qu’on récupère, et c’est à l’appelant de se débrouiller avec si il sait à quoi s’attendre ou non - ce qui donc ne réparera pas le document distant dans ton cas…

A defaut on pourrait faire une fonction de détection du type de contenu, qui repère a minima html, xml, json et éventuellement utilise l’extension de l’URL, mais est-ce que ça en vaut vraiment la peine ?


--
Cédric
Le 22 déc. 2018 à 18:51 +0100, Cerdic <[email protected]>, a écrit :
> AH ! le problème de départ ça serait pas qu’ils ont activé TLS 1.2 (ou plutôt désactivé les vieux SSL/TLS) et du coup ça marche ou pas :
> * selon que ton php est suffisament récent et supporte TLS 1.2
> * selon que tu as ou non le patch https://core.spip.net/projects/spip/repository/revisions/24018
>
> du coup le bug sur TLS fait foirer et ensuite ça passe par la procédure de secours qui elle même est bancale et ne peuple pas le status ni le mime type, et enfin oembed utiliser le vieux recupérer_page qui renvoit false dès qu’on a pas le status 200
>
> (pas mal de choses à patcher séparemment les unes des autres donc)
>
> --
> Cédric
> Le 22 déc. 2018 à 11:27 +0100, ARNO* <[email protected]>, a écrit :
> >
> >
> > Il y a deux difficultés (pour ce que j’en vois) avec mon patch:
> >
> > - ça n’identifie pas où est le problème avec Viméo, et pourquoi ça fait que SPIP passe désormais par la procédure de «secours» de inc/distant pour récupérer le contenu. Or c’est pas super-viable de patcher à un endroit si on n’identifie pas pourquoi tout d’un coup on a changé de comportement.
> >
> > - autant pour status=200, ça me semble logique, autant forcer le content-type à text/html, je suis beaucoup moins sûr. Si on récupère d’autres types de documents via cette fonction, que se passe-t-il? Comment le mime-type est-il identifié?
> >
> > ARNO*
> >
> >
> >
> >
> > > Le 22 déc. 2018 à 10:31, klaus++ <[email protected]> a écrit :
> > >
> > > Je viens de tester sous SPIP 3.2.1 [23768] / Medias 2.20.23 - stable.
> > > C'est parfait, pas de problème.
> > >
> > > Désormais je vais suivre le tuyau d'Arno pour récupérer les vidés dans
> > > mes sites ;-)
> > >
> > > :-)k++
> > >
> > >
> > > On 22.12.18 08:25, erational wrote:
> > > > Bonjour
> > > >
> > > > J'ai eu exactement le même problème en début de semaine (voir mon
> > > > message du 17/12)
> > > > - en local aucun problème
> > > > - sur le web, impossible d'ajouter les vidéos de vimeo en document distant
> > > >
> > > > Le patch que tu proposes fonctionne bien.
> > > > Cela permet de rétablir la fonction et d'ajouter la vidéo en tant que
> > > > document distant (il manque juste encore la vignette de prévisualisation
> > > > de la video)
> > > >
> > > > merci !
> > > >
> > > > doit-on commiter sur le core ?
> > > >
> > > >
> > > > Le 21/12/2018 à 20:42, ARNO* a écrit :
> > > > > Salut,
> > > > >
> > > > > J’ai l’habitude de référencer des pages Viméo comme documents joints.
> > > > > De manière très usuelle, dans un article, «Joindre document», onglet
> > > > > «Sur l’internet», je colle par exemple:
> > > > > https://vimeo.com/304775757
> > > > > et hop, ça me met la page en tant que document distant joint à
> > > > > l’article, avec le titre récupéré.
> > > > >
> > > > > Sauf que depuis quelques jours, ça ne fonctionne plus.
> > > > >
> > > > > - En local sur ma bécane, ça fonctionne.
> > > > >
> > > > > - Sur un serveur Web en ligne, ça déconne, le document n’est «pas
> > > > > trouvé»:
> > > > >
> > > > >
> > > > >
> > > > > Je suis allé jouer avec inc/distant.php, mais je n’arrive pas à
> > > > > trouver où ça foire avec Viméo (avec Youtube, par exemple, pas de
> > > > > problème).
> > > > >
> > > > > Il me semble qu’on arrive à récupérer le contenu de la page, et on se
> > > > > retrouve à la ligne 447 avec:
> > > > > } elseif ($res) {
> > > > > $result['page'] = &$res;
> > > > > $result['length'] = strlen($result['page']);
> > > > > }
> > > > >
> > > > > Là j’ai quelque chose que je ne comprends pas: on renseigne le
> > > > > $result[‘page’], mais on laisse $result[‘status’] à 0. Du coup, dans
> > > > > recuperer_page, un résultat obtenu de cette façon là est jeté avec le
> > > > > test sur status!==200 de la ligne 625:
> > > > > if ($res['status'] !== 200) {
> > > > > return false;
> > > > > }
> > > > >
> > > > >
> > > > >
> > > > > =======
> > > > >
> > > > > Pour faire fonctionner Vimeo, j’y parviens en faisant la modif suivante:
> > > > > inc/distant.php, ligne 440 et suivantes=-;
> > > > >
> > > > > // si on a pas deja recuperer le contenu par une methode detournee
> > > > > if (!$result['length']) {
> > > > > $res = recuperer_body($handle, $options['taille_max'], $gz ?
> > > > > $gz : $copy);
> > > > > fclose($handle);
> > > > > if ($copy) {
> > > > > $result['length'] = $res;
> > > > > $result['file'] = $copy;
> > > > > } elseif ($res) {
> > > > > $result['status'] = 200;
> > > > > if (!$result['headers']) $result['headers'] .=
> > > > > "Content-Type: text/html";
> > > > > $result['page'] = &$res;
> > > > > $result['length'] = strlen($result['page']);
> > > > > }
> > > > > }
> > > > >
> > > > > C’est-à-dire forcer le statuts à 200 et forcer le content-type à
> > > > > text/html.
> > > > >
> > > > > Est-ce que quelqu’un peut valider ou invalider cette solution, et
> > > > > éventuellement comiter?
> > > > >
> > > > > ARNO*
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> > > > > doc: http://www.spip.net/
> > > > > dev: http://trac.rezo.net/trac/spip/
> > > > > irc://irc.freenode.net/spip
> > > >
> > > _______________________________________________
> > > liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> > > doc: http://www.spip.net/
> > > dev: http://trac.rezo.net/trac/spip/
> > > irc://irc.freenode.net/spip
> >
> > _______________________________________________
> > liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> > doc: http://www.spip.net/
> > dev: http://trac.rezo.net/trac/spip/
> > irc://irc.freenode.net/spip
> _______________________________________________
> liste: https://listes.rezo.net/mailman/listinfo/spip-dev
> doc: http://www.spip.net/
> dev: http://trac.rezo.net/trac/spip/
> irc://irc.freenode.net/spip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.