Example #1
0
function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = "", $vers = "HTTP/1.0", $date = '')
{
    $user = $via_proxy = $proxy_user = '';
    $fopen = false;
    $t = @parse_url($url);
    $host = $t['host'];
    if ($t['scheme'] == 'http') {
        $scheme = 'http';
        $noproxy = '';
    } elseif ($t['scheme'] == 'https') {
        $scheme = 'ssl';
        $noproxy = 'ssl://';
        if (!isset($t['port']) || !($port = $t['port'])) {
            $t['port'] = 443;
        }
    } else {
        $scheme = $t['scheme'];
        $noproxy = $scheme . '://';
    }
    if (isset($t['user'])) {
        $user = array($t['user'], $t['pass']);
    }
    if (!isset($t['port']) || !($port = $t['port'])) {
        $port = 80;
    }
    if (!isset($t['path']) || !($path = $t['path'])) {
        $path = "/";
    }
    if (@$t['query']) {
        $path .= "?" . $t['query'];
    }
    $f = lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz, $referer, $datas, $vers, $date);
    if (!$f) {
        // fallback : fopen
        if (!_request('tester_proxy')) {
            $f = @fopen($url, "rb");
            spip_log("connexion vers {$url} par simple fopen");
            $fopen = true;
        } else {
            $f = false;
        }
        // echec total
    }
    return array($f, $fopen);
}
Example #2
0
/**
 * Initialise une requete HTTP avec entetes
 *
 * Décompose l'url en son schema+host+path+port et lance la requete.
 * Retourne le descripteur sur lequel lire la réponse.
 *
 * @uses lance_requete()
 *
 * @param string $method
 *   HEAD, GET, POST
 * @param string $url
 * @param bool $refuse_gz
 * @param string $referer
 * @param string $datas
 * @param string $vers
 * @param string $date
 * @return array
 */
function init_http($method, $url, $refuse_gz = false, $referer = '', $datas = "", $vers = "HTTP/1.0", $date = '')
{
    $user = $via_proxy = $proxy_user = '';
    $fopen = false;
    $t = @parse_url($url);
    $host = $t['host'];
    if ($t['scheme'] == 'http') {
        $scheme = 'http';
        $noproxy = '';
    } elseif ($t['scheme'] == 'https') {
        $scheme = 'tls';
        $noproxy = 'tls://';
        if (!isset($t['port']) || !($port = $t['port'])) {
            $t['port'] = 443;
        }
    } else {
        $scheme = $t['scheme'];
        $noproxy = $scheme . '://';
    }
    if (isset($t['user'])) {
        $user = array($t['user'], $t['pass']);
    }
    if (!isset($t['port']) || !($port = $t['port'])) {
        $port = 80;
    }
    if (!isset($t['path']) || !($path = $t['path'])) {
        $path = "/";
    }
    if (!empty($t['query'])) {
        $path .= "?" . $t['query'];
    }
    $f = lance_requete($method, $scheme, $user, $host, $path, $port, $noproxy, $refuse_gz, $referer, $datas, $vers, $date);
    if (!$f or !is_resource($f)) {
        // fallback : fopen si on a pas fait timeout dans lance_requete
        // ce qui correspond a $f===110
        if ($f !== 110 and !need_proxy($host) and !_request('tester_proxy') and (!isset($GLOBALS['inc_distant_allow_fopen']) or $GLOBALS['inc_distant_allow_fopen'])) {
            $f = @fopen($url, "rb");
            spip_log("connexion vers {$url} par simple fopen");
            $fopen = true;
        } else {
            // echec total
            $f = false;
        }
    }
    return array($f, $fopen);
}