Valider 1c0eaca9 rédigé par esj's avatar esj
Parcourir les fichiers

Eviter de produire des vignettes de taille nulle et redonner alors l'URL...

Eviter de produire des vignettes de taille nulle et redonner alors l'URL initiale avec un width/height comme pour les images incomprises par GD etc. Le cas se produit lorsque l'image est protégée par un https sur un serveur distant auquel le serveur voulant produire la vignette n'a pas accès, tandis que sont client l'a (suis-je clair?). 

Coté proxy, autoriser un proxy en Https et pour la phase de test prévenir si on teste une URL n'ayant pas besoin du proxy.
parent 946a5fad
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+15 −14
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -75,22 +75,23 @@ function configuration_relayeur_post ($http_proxy, $http_noproxy, $test_proxy, $
	if (preg_match(',:\*\*\*\*@,', $http_proxy))
		$http_proxy = $GLOBALS['meta']['http_proxy'];

	$retour_proxy = '';
	if ($tester_proxy AND $http_proxy) {
		if (!$test_proxy) {
			$retour_proxy = _T('info_adresse_non_indiquee');
	$retour = '';

	if ($tester_proxy AND preg_match(",https?://,", $http_proxy)) {
		include_spip('inc/distant');
		$t = parse_url($test_proxy);

		if (!@$t['host']) {
			$retour = _T('info_adresse_non_indiquee');
		} else {
			include_spip('inc/texte'); // pour aide, couper, lang
			if (strncmp("http://", $http_proxy,7)!=0)
			  $page = '';
			else {
			  include_spip('inc/distant');
			if (!need_proxy($t['host']))
				$page = "<p>"._L('Cette page ne doit pas passer par le proxy')."</p>\n";
			$page = recuperer_page($test_proxy, true);
			}
			if ($page)
				$retour_proxy = "<p>"._T('info_proxy_ok')."</p>\n<tt>".couper(entites_html($page),300)."</tt>";
				$retour = "<p>"._T('info_proxy_ok')."</p>\n<tt>".couper(entites_html($page),300)."</tt>";
			  else
				$retour_proxy = _T('info_impossible_lire_page', array('test_proxy' => $test_proxy))
				$retour = _T('info_impossible_lire_page', array('test_proxy' => $test_proxy))
				. " <tt>".no_password_proxy_url($http_proxy)."</tt>."
				. aide('confhttpproxy');
		}
@@ -101,7 +102,7 @@ function configuration_relayeur_post ($http_proxy, $http_noproxy, $test_proxy, $
	if ($http_noproxy !== NULL) {
		ecrire_meta('http_noproxy', $http_noproxy);
	}
	return $retour_proxy;
	return $retour;
}

// Function glue_url : le pendant de parse_url 
+23 −24
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -188,9 +188,7 @@ function recuperer_lapage($url, $trans=false, $get='GET', $taille_max = 1048576,
	$gz = false;

	// si on a utilise fopen() - passer a la suite
	if ($fopen) {
			spip_log('connexion via fopen');
	} else {
	if (!$fopen) {
			// Fin des entetes envoyees par SPIP
			if($get == 'POST') {
				list($content_type, $postdata) = $datas;
@@ -281,9 +279,6 @@ function nom_fichier_copie_locale($source, $extension) {
	. substr(preg_replace(',[^\w-],', '', basename($source)).'-'.$m,0,12)
	. substr($m,0,4)
	. ".$extension";


	
}

//
@@ -436,6 +431,19 @@ function recuperer_infos_distantes($source, $max=0, $charger_si_petite_image = t
}


function need_proxy($host)
{
	$http_proxy = $GLOBALS['meta']["http_proxy"];
	$http_noproxy = $GLOBALS['meta']["http_noproxy"];

	$domain = substr($host,strpos($host,'.'));

	return ($http_proxy
	AND (strpos(" $http_noproxy ", " $host ") === false
	     AND (strpos(" $http_noproxy ", " $domain ") === false)))
	? $http_proxy : '';
}

//
// Demarre une transaction HTTP (s'arrete a la fin des entetes)
// retourne un descripteur de fichier
@@ -455,34 +463,24 @@ function init_http($get, $url, $refuse_gz=false, $uri_referer = '') {
	$query = $t['query'];
	if (!isset($t['path']) || !($path = $t['path'])) $path = "/";

	$http_proxy = $GLOBALS['meta']["http_proxy"];
	$http_noproxy = $GLOBALS['meta']["http_noproxy"];

	if (strncmp("http://", $http_proxy,7)!=0
	    OR (strpos(" $http_noproxy ", " $host ") !== false)
	    OR (strpos(" $http_noproxy ", ' ' . substr($host,(strpos($host,'.')) . ' ')) !== false))
		$http_proxy = '';
	else
		$via_proxy = " (proxy $http_proxy)";

	spip_log("http $get $url$via_proxy");
	$http_proxy = need_proxy($host);

	if ($http_proxy) {
		spip_log("connexion vers $url via $http_proxy");
		$t2 = @parse_url($http_proxy);
		$proxy_host = $t2['host'];
		$proxy_user = $t2['user'];
		$proxy_pass = $t2['pass'];
		if (!($proxy_port = $t2['port'])) $proxy_port = 80;
		$f = @fsockopen($proxy_host, $proxy_port);
	} else
		$req = "$get $scheme://$host" . (($port != 80) ? ":$port" : "") . $path . ($query ? "?$query" : "") . " HTTP/1.0\r\n";
	} else {
		$f = @fsockopen($scheme_fsock.$host, $port);

		spip_log("connexion vers $url sans proxy");
		$req = "$get $path" . ($query ? "?$query" : "") . " HTTP/1.0\r\n";
	}
	if ($f) {
		if ($http_proxy)
			fputs($f, "$get $scheme://$host" . (($port != 80) ? ":$port" : "") . $path . ($query ? "?$query" : "") . " HTTP/1.0\r\n");
		else
			fputs($f, "$get $path" . ($query ? "?$query" : "") . " HTTP/1.0\r\n");

		fputs($f, $req);
		fputs($f, "Host: $host\r\n");
		fputs($f, "User-Agent: SPIP-".$GLOBALS['spip_version_affichee']." (http://www.spip.net/)\r\n");

@@ -505,6 +503,7 @@ function init_http($get, $url, $refuse_gz=false, $uri_referer = '') {
	// fallback : fopen
	else if (!$GLOBALS['tester_proxy']) {
		$f = @fopen($url, "rb");
		spip_log("connexion vers $url par simple fopen");
		$fopen = true;
	}
	// echec total
+6 −4
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -83,6 +83,8 @@ function image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cre
	$nom_fichier = substr($fichier, 0, strlen($fichier) - 4);
	$fichier_dest = $nom_fichier;
	list ($ret["hauteur"],$ret["largeur"]) = taille_image($img);
	if (!$ret["hauteur"] OR $ret["largeur"]) return false;

	// cas general :
	// on a un dossier cache commun et un nom de fichier qui varie avec l'effet
	// cas particulier de reduire :
@@ -118,7 +120,6 @@ function image_valeurs_trans($img, $effet, $forcer_format = false, $fonction_cre
	
	$GLOBALS["images_calculees"][] =  $fichier_dest;
	
	
	$creer = true;
	// si recalcul des images demande, recalculer chaque image une fois
	if (isset($GLOBALS['var_images']) && $GLOBALS['var_images'] && !isset($images_recalcul[$fichier_dest])){
@@ -708,10 +709,11 @@ function process_image_reduire($fonction,$img,$taille,$taille_y,$force,$cherche_
			$image = false;
		}
	}

	if (!$image)
		$image = image_valeurs_trans($img, "reduire-{$taille}-{$taille_y}",$format_sortie,$fonction);

	if (!$image){
	if (!$image OR !$image['largeur'] OR !$image['hauteur']){
		spip_log("image_reduire_src:pas de version locale de $img");
		// on peut resizer en mode html si on dispose des elements
		if ($srcw = extraire_attribut($img, 'width')