#!/var/asl/usr/bin/php
<?
define("REQ_CONNECT_TIMEOUT",60);
define("REQ_TIMEOUT",3000);
function send_curl($opts) {
	//print_r($opts);
	if ($fp=fopen($opts[3],"w")) {
		$url=$opts[1].$opts[2];
		$c=get_config();
				
		$ch=curl_init($url);
		curl_setopt($ch,CURLOPT_HEADER,0);
		curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,REQ_CONNECT_TIMEOUT);
		curl_setopt($ch,CURLOPT_TIMEOUT,REQ_TIMEOUT);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
		curl_setopt($ch,CURLOPT_FOLLOWLOCATION,0);
		curl_setopt($ch,CURLOPT_FAILONERROR,1);
		//curl_setopt($ch,CURLOPT_POST,1);
		curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
		
		curl_setopt($ch,CURLOPT_USERPWD,$c["USERNAME"].":".urlencode($c["PASSWORD"]));
		curl_setopt($ch,CURLOPT_FILE,$fp);
		if (isset($opts["post_data"])) {
			curl_setopt($ch,CURLOPT_POST,1);
			curl_setopt($ch,CURLOPT_POSTFIELDS,"username=".$c["USERNAME"]."&".$opts["post_data"]);
		}
		
		if (!empty($c["HTTP_PROXY"])) {
			curl_setopt($ch,CURLOPT_PROXY,$c["HTTP_PROXY"]);
			if (!empty($c["HTTP_PROXY_PORT"])) 		{curl_setopt($ch,CURLOPT_PROXYPORT,$c["HTTP_PROXY_PORT"]);}
			if (!empty($c["HTTP_PROXY_USERNAME"])) 	{curl_setopt($ch,CURLOPT_PROXYUSERPWD,$c["HTTP_PROXY_USER"].":".urlencode($c["HTTP_PROXY_PASSWORD"]));}
		}
		$res=curl_exec($ch);
		$http_status=curl_getinfo($ch,CURLINFO_HTTP_CODE);
		echo curl_errno($ch)."\n".$http_status."\n";
		curl_close($ch);
		fclose($fp);
	}
	else {
		//error_log("\nFailed to open ".$opts[3]." for writing\n");
	}
}

function get_config() {
	$ret=array();
	$lines=file("/etc/asl/config");
	$k=array("USERNAME","PASSWORD","HTTP_PROXY_PORT","HTTP_PROXY_USERNAME","HTTP_PROXY_PASSWORD");
	foreach ($lines AS $line) {
		$line=trim($line);
		$match="/(.*?)=\"(.*?)\"/";
		if (preg_match($match,$line)>0) {
			$option=preg_replace($match,"$1",$line);
			$value=preg_replace($match,"$2",$line);
			if (in_array($option,$k)) {$ret[$option]=$value;}
		}
	}
	return $ret;
}

function fix_args($args) {
	$ret=array();
	$ret[0]=$args[0];
	$ret[1]=$args[1];
	$parts=explode("?",$args[2]);
	$ret[2]=$parts[0];
	$ret[3]=$args[3];
	$ret["post_data"]=$parts[1];
	/*
	error_log($ret[0]);
	error_log($ret[1]);
	error_log($ret[2]);
	error_log($ret[3]);
	error_log($ret["post_data"]);
	*/
	return $ret;
}
//error_log("--------------------------------------------\n");
if (preg_match("/.*(version\.php).*/",$argv[2])) {$opts=fix_args($argv);}
else if ($argc<4) {error_log("Incorrect parameters");die();}
else {$opts=$argv;}
/*
error_log("argv");
foreach ($argv AS $k=>$v) {error_log($k." : ".$v);}
error_log("opts");
foreach ($opts AS $k=>$v) {error_log($k." : ".$v);}
*/
echo " \n";
//error_log("moo");
send_curl($opts);
//echo "\n";
?>
