예제 #1
0
function test_auth_perform()
{
    $tpl = new templates();
    $SquidBinIpaddr = $_POST["TESTPROXYIP"];
    if ($SquidBinIpaddr == "0.0.0.0") {
        $SquidBinIpaddr = "127.0.0.1";
    }
    $port = $_POST["TESTPROXYPORT"];
    $TESTAUTHPASS = url_decode_special_tool($_POST["TESTAUTHPASS"]);
    $TESTAUTHUSER = stripslashes($_POST["TESTAUTHUSER"]);
    $array["BIND"] = $_POST["TESTAUTHBIND"];
    $array["PROXY"] = $_POST["TESTAUTHPROXY"];
    $array["USER"] = $TESTAUTHUSER;
    $array["PASS"] = $TESTAUTHPASS;
    @file_put_contents("/usr/share/artica-postfix/ressources/conf/upload/NTLM_TESTS", serialize($array));
    $sock = new sockets();
    $sock->getFrameWork("squid.php?test-ntlm=yes");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_INTERFACE, $_POST["TESTAUTHBIND"]);
    curl_setopt($ch, CURLOPT_URL, "http://www.google.com");
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0");
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Pragma: no-cache", "Cache-Control: no-cache"));
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, FALSE);
    curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
    curl_setopt($ch, CURLOPT_PROXY, "{$_POST["TESTAUTHPROXY"]}");
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    echo "Bind..........: {$_POST["TESTAUTHBIND"]}\n";
    echo "Proxy.........: {$_POST["TESTAUTHPROXY"]}\n";
    //curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
    //curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $TESTAUTHUSER . ':' . $TESTAUTHPASS);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
    curl_setopt($ch, CURLOPT_NOBODY, true);
    $data = curl_exec($ch);
    if (preg_match("#X-Squid-Error:.*?([A-Z\\_]+)#is", $data, $re)) {
        echo "****  FAILED WITH ERROR \"{$re[1]}\" ***\n\n";
    }
    if (preg_match("#Proxy-Authenticate: NTLM\\s+(.*?)\\s+#", $data, $re)) {
        $data = str_replace($re[1], "***", $data);
    }
    $error = curl_errno($ch);
    $curl = new ccurl(null);
    if (!$curl->ParseError($error)) {
        echo $error_text = $tpl->javascript_parse_text($curl->error) . "\n";
    }
    $info = curl_getinfo($ch);
    curl_close($ch);
    if (is_array($info)) {
        while (list($num, $ligne) = each($info)) {
            $infos[] = "{$num}: {$ligne}";
        }
    }
    $sep = "\n------------------------------------------------------\n";
    echo "http://www.google.com return error {$error}{$sep} Datas:{$sep}{$data}\nInfos:{$sep}" . @implode("\n", $infos);
}