<?php
ini_set( "display_errors", 0);

/**
 make an http POST request and return the response content and headers
 @param string $url    url of the requested script
 @param array $data    hash array of request variables
 @return returns a hash array with response content and headers in the following form:
 array ('content'=>'<html></html>'
 , 'headers'=>array ('HTTP/1.1 200 OK', 'Connection: close', ...)
 )
 */
function http_post ($url, $data)
{
	$data_url = http_build_query ($data);
	$data_len = strlen ($data_url);

	return array ('content'=>file_get_contents ($url, false, stream_context_create (array ('http'=>array ('method'=>'POST'
	, 'header'=>"Connection: close\r\nContent-Length: $data_len\r\n"
	, 'content'=>$data_url
	 ),"ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false))))
	, 'headers'=>$http_response_header
	);
}

/**
 Log
 @param string $url    url of the requested script
 @param array $data    hash array of request variables
 @return returns a hash array with response content and headers in the following form:
 */
function logFile($text)
{
	$ddf = fopen('./log/jsonfwd.log','a');
	fwrite($ddf,"[".date("r")."] [JSONFWD] $text \n");
	fclose($ddf);
}

/**
 * Indents a flat JSON string to make it more human-readable.
 *
 * @param string $json The original JSON string to process.
 *
 * @return string Indented version of the original JSON string.
 */
function indent($json) {

    $result      = '';
    $pos         = 0;
    $strLen      = strlen($json);
    $indentStr   = '  ';
    $newLine     = "\n";
    $prevChar    = '';
    $outOfQuotes = true;

    for ($i=0; $i<=$strLen; $i++) {

        // Grab the next character in the string.
        $char = substr($json, $i, 1);

        // Are we inside a quoted string?
        if ($char == '"' && $prevChar != '\\') {
            $outOfQuotes = !$outOfQuotes;
        
        // If this character is the end of an element, 
        // output a new line and indent the next line.
        } else if(($char == '}' || $char == ']') && $outOfQuotes) {
            $result .= $newLine;
            $pos --;
            for ($j=0; $j<$pos; $j++) {
                $result .= $indentStr;
            }
        }
        
        // Add the character to the result string.
        $result .= $char;

        // If the last character was the beginning of an element, 
        // output a new line and indent the next line.
        if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
            $result .= $newLine;
            if ($char == '{' || $char == '[') {
                $pos ++;
            }
            
            for ($j = 0; $j < $pos; $j++) {
                $result .= $indentStr;
            }
        }
        
        $prevChar = $char;
    }

    return $newLine.$result;
}
?>

<?php

$q = trim($_GET['q']);
logFile('[URL_LLEGANDO] '.$q);
if ($q) {
	$q=str_replace(';','&',$q);
	
	$urls = explode(' ', $q);
	
	for ($i=0; $i<count($urls); $i++) {
		$url = $urls[$i];
		logFile('[URL] '.$url);
		$data = http_post($url, $_POST);
		$json = $data['content'];
		echo $json;
		logFile('[CONTENIDO] '.indent($json));
	}
}
if($_GET['s']){
	echo "<script>alert(salida)</script>";
}
?>
