Browse Source

Ameliorer la requete curl vers les serveurs qui generent potentiellement une erreur SSL en etant plus tolerant sur le cipher

+ options --silent et --location sur le curl de fallback pour suivre les eventuelles redirections (glop)
+ echappement de l'url (glop)
master v2.3.6
Cerdic 2 months ago
parent
commit
73ec37226c
  1. 8
      inc/oembed_recuperer_url.php

8
inc/oembed_recuperer_url.php

@ -35,6 +35,10 @@ function inc_oembed_recuperer_url($oembed_url, $url, $format){
curl_setopt($c, CURLOPT_USERAGENT, $browser);
//curl_setopt($c, CURLOPT_SSLVERSION, 1);
// essayer d'eviter l'erreur 35 sur le protocole SSL
// https://stackoverflow.com/questions/58342699/php-curl-curl-error-35-error1414d172ssl-routinestls12-check-peer-sigalgwr
curl_setopt($c, CURLOPT_SSL_CIPHER_LIST, 'DEFAULT@SECLEVEL=1');
// indiquer un referer : si jamais la diffusion du contenu est limitee au site, ca permet d'en recuperer les infos
// ou en tout cas ca donne plus de chance...
$referer = $GLOBALS['meta']['adresse_site'] . '/';
@ -55,12 +59,12 @@ function inc_oembed_recuperer_url($oembed_url, $url, $format){
if (!$data or intval($status/100)==4){
$errno = curl_errno($c);
$erreur = "Status $status Error " . curl_errno($c) . " " . curl_error($c);
$erreur = "Status $status Error $errno " . curl_error($c);
// si c'est une erreur de protocole SSL, on tente avec un exec mechant car ca peut venir de la version de CURL PHP
// (ca marche au moins en local)
if (!$data and $errno==35){
exec('curl "' . $oembed_url . '"', $output);
exec('curl --silent --location ' . escapeshellarg($oembed_url), $output);
$data = implode("\n", $output);
} else {
$data = '';

Loading…
Cancel
Save