Skip to content
Extraits de code Groupes Projets
Valider 740d4e5a rédigé par JamesRezo's avatar JamesRezo :tada:
Parcourir les fichiers

deux nouveaux paramètres pour recuperer_page():

- $date_verif pour arrêter la recuperation si le Header Last-modified: prouve que la page n'a pas été modifiée depuis la dernière visite sur ce lien : attention c'est en GMT.
- $uri_referer pour préciser una autre url que celle de la page d'accueil du site. Une url publique d'un article par exemple.
parent 1b4bde83
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -126,9 +126,12 @@ function prepare_donnees_post($donnees, $boundary = '') { ...@@ -126,9 +126,12 @@ function prepare_donnees_post($donnees, $boundary = '') {
// datas, une chaine ou un tableau pour faire un POST de donnees // datas, une chaine ou un tableau pour faire un POST de donnees
// boundary, pour forcer l'envoi par cette methode // boundary, pour forcer l'envoi par cette methode
// et refuser_gz pour forcer le refus de la compression (cas des serveurs orthographiques) // et refuser_gz pour forcer le refus de la compression (cas des serveurs orthographiques)
// date_verif, un timestamp unix pour arreter la recuperation si la page distante n'a pas ete modifiee depuis une date donnee
// uri_referer, preciser un referer different
// http://doc.spip.org/@recuperer_page // http://doc.spip.org/@recuperer_page
function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_max = 1048576, function recuperer_page($url, $munge_charset=false, $get_headers=false,
$datas='', $boundary='', $refuser_gz = false) { $taille_max = 1048576, $datas='', $boundary='', $refuser_gz = false,
$date_verif = '', $uri_referer = '') {
$gz = false; $gz = false;
// Accepter les URLs au format feed:// ou qui ont oublie le http:// // Accepter les URLs au format feed:// ou qui ont oublie le http://
...@@ -146,7 +149,7 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_ ...@@ -146,7 +149,7 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_
} }
for ($i=0;$i<10;$i++) { // dix tentatives maximum en cas d'entetes 301... for ($i=0;$i<10;$i++) { // dix tentatives maximum en cas d'entetes 301...
list($f, $fopen) = init_http($get, $url, $refuser_gz); list($f, $fopen) = init_http($get, $url, $refuser_gz, $uri_referer);
// si on a utilise fopen() - passer a la suite // si on a utilise fopen() - passer a la suite
if ($fopen) { if ($fopen) {
...@@ -178,6 +181,13 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_ ...@@ -178,6 +181,13 @@ function recuperer_page($url, $munge_charset=false, $get_headers=false, $taille_
$location = suivre_lien($url, $r[1]); $location = suivre_lien($url, $r[1]);
spip_log("Location: $location"); spip_log("Location: $location");
} }
if ($date_verif AND preg_match(',^Last-Modified: (.*),', $s, $r)) {
if(strtotime($date_verif)>=strtotime($r[1])) {
//Cas ou la page distante n'a pas bouge depuis
//la derniere visite
return $status;
}
}
if (preg_match(",^Content-Encoding: .*gzip,i", $s)) if (preg_match(",^Content-Encoding: .*gzip,i", $s))
$gz = true; $gz = true;
} }
...@@ -332,7 +342,7 @@ function recuperer_infos_distantes($source, $max=0) { ...@@ -332,7 +342,7 @@ function recuperer_infos_distantes($source, $max=0) {
// retourne un descripteur de fichier // retourne un descripteur de fichier
// //
// http://doc.spip.org/@init_http // http://doc.spip.org/@init_http
function init_http($get, $url, $refuse_gz=false) { function init_http($get, $url, $refuse_gz=false, $uri_referer = '') {
$via_proxy = ''; $proxy_user = ''; $fopen = false; $via_proxy = ''; $proxy_user = ''; $fopen = false;
$http_proxy = $GLOBALS['meta']["http_proxy"]; $http_proxy = $GLOBALS['meta']["http_proxy"];
if (!eregi("^http://", $http_proxy)) if (!eregi("^http://", $http_proxy))
...@@ -378,8 +388,10 @@ function init_http($get, $url, $refuse_gz=false) { ...@@ -378,8 +388,10 @@ function init_http($get, $url, $refuse_gz=false) {
. base64_encode($proxy_user . ":" . $proxy_pass) . "\r\n"); . base64_encode($proxy_user . ":" . $proxy_pass) . "\r\n");
} }
// Referer = c'est nous ! // Referer = c'est nous !
if ($referer = $GLOBALS['meta']["adresse_site"]) if ($referer = $GLOBALS['meta']["adresse_site"]) {
fputs($f, "Referer: $referer/\r\n"); $referer .= '/'.$uri_referer;
fputs($f, "Referer: $referer\r\n");
}
// On sait lire du gzip // On sait lire du gzip
if ($GLOBALS['flag_gz'] AND !$refuse_gz) if ($GLOBALS['flag_gz'] AND !$refuse_gz)
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter