<?
//error_reporting(E_ALL);

header("Access-Control-Allow-Origin: *");

### DO THIS FIRST:
require_once("/BANGK!/master_config.php");
require_once($master_config_root_path . "shared/functions.shared");
$active_user_session_timeout = "OFF"; // no session timeout on this page
require_once($master_config_root_path . "shared/session.shared");

### START SESSION VERIFICATION (ALWAYS LAST B4 REST OF PAGES):
$verified_member = "no";
$verified_business = "no";
$verified_transaction = "no";
$verified_banned = "no";
$verified_acccess = "no";
include($_SESSION['template']['company']['file_path'] . "shared/start_verified_session.shared");
#
#
#
### START REMAINING PAGES:

/// logs traffic to the database:
//log_traffic_stats();



logger3("_GET",$_GET);
logger3("_POST",$_POST);


$incoming_vars = $_GET;
if(empty($incoming_vars)) $incoming_vars = $_POST;

logger3("incoming_vars",$incoming_vars);

if(!empty($incoming_vars['type']) && $incoming_vars['type']=='set'){

	if(empty($incoming_vars['peephole_client_ip'])) $incoming_vars['peephole_client_ip'] = $_SERVER['REMOTE_ADDR'];
	
	
	if(isset($incoming_vars['peephole_avg_page_load_time'])) {
	
		logger3("incoming_vars['peephole_avg_page_load_time']",$incoming_vars['peephole_avg_page_load_time']);
	
		/*
			
		https://gateway.nsdb.com/peephole.online.api
		?type=set
		&peephole_client_ip=
		&peephole_client_id=	
		&peephole_client_session=
		&peephole_destination_hostname=
		&peephole_destination_filestring=
		&peephole_pingtime=
			
		*/
	
	
		$insert['gateway_session_id'] = "";
		$insert['hash'] = hash_me();
		$insert['ip_address'] = $incoming_vars['peephole_client_ip'];
		$insert['client_id'] = $incoming_vars['peephole_client_id'];
		$insert['client_session'] = $incoming_vars['peephole_client_session'];
		$insert['destination_url'] = $incoming_vars['peephole_destination_url'];
		$insert['destination_hostname'] = $incoming_vars['peephole_destination_hostname'];
		$insert['destination_filestring'] = $incoming_vars['peephole_destination_filestring'];
		$insert['avg_page_load_time'] = $incoming_vars['peephole_avg_page_load_time'];
		$insert['number_of_trackers'] = "";
		$insert['tracker_hostnames'] = "";
		$insert['datetime'] = datetime();
		$insert['client_setting_bandwidth'] = "";
		#$insert['number_of_trackers'] = "";
		#$insert['number_of_trackers'] = "";
		#$insert['number_of_trackers'] = "";
		#$insert['number_of_trackers'] = "";
		#$insert['number_of_trackers'] = "";
		
		if(empty($insert['client_setting_bandwidth'])) $insert['client_setting_bandwidth'] = "1"; // i.e., 1Mbps (aka 3G)
		
	
		$tmp_sql = "
		
		INSERT INTO `gateway_sessions`(
		`gateway_session_id`, 
		`hash`, 
		`client_ip`, 
		`client_id`,
		`client_session`,
		`destination_url`, 
		`avg_page_load_time`, 
		`number_of_trackers`, 
		`tracker_hostnames`, 
		`datetime`
		) VALUES (
		'". $insert['gateway_session_id'] ."',
		'". $insert['hash'] ."',
		'". $insert['ip_address'] ."',
		'". $insert['client_id'] ."',
		'". $insert['client_session'] ."',
		'". $insert['destination_url'] ."',
		'". $insert['avg_page_load_time'] ."',
		'". $insert['number_of_trackers'] ."',
		'". $insert['tracker_hostnames'] ."',
		'". $insert['datetime'] ."'
		)
		
		";
		logger3("tmp_sql",$tmp_sql);
		
		$insert_results = insertTHECASHIER($tmp_sql,"peephole.online");
		
		logger3("insert_results",$insert_results);
		
	
		$url_parts = explode("://",$insert['destination_url']);
		$url_http = $url_parts[0];
		$url_hostname = explode("/",$url_parts[1]);
		if(empty($url_hostname[1])) {
			$domain_name = $url_parts[1];
		} else {
			$domain_name = $url_hostname[0];
			$path_to_filename = $url_hostname[1];
		}
	
		//$domain_name = "nsdb.com"; // testing
		$whois_results = whois($domain_name);
		logger3("2whois_results",$whois_results);
		
		$filesize_of_website = get_filesize_of_desintation_url($insert['destination_url']);
		
		$tmp_sql = "UPDATE gateway_sessions 
					SET destination_file_size = '". $filesize_of_website ."'
					WHERE client_session = '". $insert['client_id'] ."';
					";
		logger3("tmp_sql",$tmp_sql);
		
		$results_update = updateTHECASHIER($tmp_sql);
		logger3("results_update",$results_update);
		
		
		echo $insert_results;
	
	}
}

else if($incoming_vars['type']=='update'){
	
	
	if(!empty($insert['pingtime'])) {
		$tmp_sql = "UPDATE gateway_sessions 
		SET pingtime = '". $insert['pingtime'] ."' 
		WHERE client_session = '". $insert['client_session'] ."';";
		logger3("tmp_sql",$tmp_sql);
		$results = updateTHECASHIER($tmp_sql);
	}
	
	
}

else if($incoming_vars['type']=='get'){

	if(!empty($insert['client_session'])) {
		$tmp_sql = "SELECT * FROM gateway_sessions 
		WHERE client_session = '". $insert['client_session'] ."';";
		logger3("tmp_sql",$tmp_sql);
		$results = readTHECASHIER($tmp_sql);
		
		$response_string = "";
		$response_string += "pingtime=".$results->pingtime;
		$response_string += "number_of_trackers=".$results->number_of_trackers;
		$response_string += "tracker_hostnames=".$results->tracker_hostnames;
		$response_string += "destination_file_size=".$results->destination_file_size;
		$response_string += "whois_name=".$results->whois_name;
		$response_string += "whois_country=".$results->whois_country;
		$response_string += "whois_emailaddress=".$results->whois_emailaddress;
		
		$response_string += "associated_domains=".$results->associated_domains;
		$response_string += "fraud_rating=".$results->fraud_rating;
		$response_string += "privacy_rating=".$results->privacy_rating;
		
	}



}

else if($incoming_vars['type']=='get_stats'){
	$output = array('total_downloads' => 0, 'total_peepholes' => 0, 'total_seconds_of_boredome' => 0.0);
	
	$tmp_sql = "SELECT counter as total_downloads FROM `download_stats` WHERE platform='chrome';";
	logger3("tmp_sql",$tmp_sql);
	$results = readTHECASHIER($tmp_sql, "peephole.online");
		
	if($results){
		$output['total_downloads'] = $results->total_downloads + 500;		
	}
	
	$tmp_sql = "SELECT count(`gateway_session_id`) as total_peepholes, sum(`avg_page_load_time`) as total_seconds FROM `gateway_sessions` WHERE `avg_page_load_time` > 2.0;";
	logger3("tmp_sql",$tmp_sql);
	$results = readTHECASHIER($tmp_sql, "peephole.online");
		
	if($results){		
		$output['total_peepholes'] = $results->total_peepholes + 16000;
		$output['total_seconds_of_boredome'] = seconds2human($results->total_seconds + 52960);
	}		
	
	echo json_encode($output);
}



### FUNCTIONS:

function seconds2human($ss) {
	$s = $ss%60;
	$m = floor(($ss%3600)/60);
	$h = floor(($ss%86400)/3600);
	$d = floor(($ss%2592000)/86400);
	$M = floor($ss/2592000);
	$time_string = "";
	if($M>0) $time_string .= "$M months, ";
	if($d>0) $time_string .= "$d days, ";
	if($h>0) $time_string .= "$h hours, ";
	$time_string .= "$m minutes, $s seconds";
	
	return $time_string;
}


function get_filesize_of_desintation_url($destination_url) {
	
	logger3("destination_url",$destination_url);
	
	$domain = explode("https://",$destination_url);
	logger3("000 domain",$domain);
	if(empty($domain[1])) $domain = explode("http://",$destination_url);
	logger3("111 domain",$domain);
	
	$host = explode("/",$domain);
	logger3("222 host",$host);
	if(!empty($host[0])) {
		$domain = $host[0];
	} else {
		$domain = $domain[1];
	}
	logger3("333 domain",$domain);
	
	//$wget = "wget -E -m -p -r -D$domain --no-parent -e robots=off -Pdestination_websites -U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' ". $destination_url;
	
	
	//$wget = "wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites -Pdestination_websites U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' ". $destination_url;
	
	// works on terminal - ot on web?
	//$wget = "wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites -Pdestination_websites U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' -Dhuffingtonpost.com,huffpost.com ".$destination_url;
	
	//$wget = "wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites -Pdestination_websites U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' -Dhuffingtonpost.com,huffpost.com ".$destination_url;
	
	//wget -E -H -k -K -p http://site/document
	//https://www.gnu.org/software/wget/manual/html_node/Recursive-Retrieval-Options.html
	
	
	$wget = "wget -H -p -Pdestination_websites/". $domain ."_". datetime() ." U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' ".$destination_url;
	
	
	
	logger3("wget",$wget);
	//exit;

	//shell_exec($wget);
	exec($wget);


	$f = './destination_websites/'.$domain ."_". datetime();
    $io = popen ( '/usr/bin/du -sk ' . $f, 'r' );
    $size = fgets ( $io, 4096);
    $size = substr ( $size, 0, strpos ( $size, "\t" ) );
    pclose ( $io );
    //echo 'Directory: ' . $f . ' => Size: ' . $size;
    return $size;
 
}





###
logger3("incoming_vars['ACTION']",$incoming_vars['ACTION']);
if($incoming_vars['ACTION'] == "version_request") {
	
	$tmp_sql = "
	SELECT version 
	FROM plugin_version 
	WHERE platform = '". $incoming_vars['PLATFORM'] ."'
	ORDER BY datetime DESC;
	";
	logger3("tmp_sql",$tmp_sql);
	$current_version = getTHECASHIER($tmp_sql,"peephole.online");
	logger3("current_version",$current_version);
	echo $current_version;
	exit;
	
	
	// https://gateway.nsdb.com/peephole.online.api?ACTION=version_request&PLATFORM=chrome
	
	
}
    
    	
if($incoming_vars['ACTION'] == "request_quote") {
	
	$tmp_sql = "
	SELECT * 
	FROM shows 
	WHERE (type = '' OR type = 'quote')
	AND seconds <= '5'";
	#if($incoming_vars['SHOW_ID']) {
	#	$tmp_sql .= "
	#	AND showid > '". $incoming_vars['SHOW_ID'] ."'";
	#}
	$tmp_sql .= "
	ORDER BY RAND()
	LIMIT 1;
	";
	logger3("tmp_sql",$tmp_sql);
	$show_details = readTHECASHIER($tmp_sql,"peephole.online");
	logger3("show_details",$show_details);
	echo $show_details->showid . "||". $show_details->content;
	exit;
	
	
	// https://gateway.nsdb.com/peephole.online.api?ACTION=request_quote&SHOW_ID=
	
	
}



logger3("incoming_vars",$incoming_vars);	
if($incoming_vars['ACTION'] == "request_video") {
	
	$incoming_vars['AVG_PAGE_LOAD'] = 5;
	
	$tmp_sql = "
	SELECT * 
	FROM shows 
	WHERE type = 'VIDEO'
	AND seconds = '". $incoming_vars['AVG_PAGE_LOAD'] ."'
	";
	# if($incoming_vars['SHOW_ID']) {
	# 	$tmp_sql .= "
	# 	AND showid > '". $incoming_vars['SHOW_ID'] ."'";
	# }
	$tmp_sql .= "
	ORDER BY RAND()
	LIMIT 1;
	";
	logger3("tmp_sql",$tmp_sql);
	$show_details = readTHECASHIER($tmp_sql,"peephole.online");
	logger3("show_details",$show_details);
	echo $show_details->showid . "||". $show_details->content;
	exit;
	
	
	// https://gateway.nsdb.com/peephole.online.api?ACTION=request_video&AVG_PAGE_LOAD=&SHOW_ID=
	
	
}

if($incoming_vars['ACTION'] == "request_content") {
	if(empty($incoming_vars['type'])) $incoming_vars['type'] = 'quote';
	$tmp_sql = "
	SELECT * 
	FROM shows 
	WHERE (type = '".$incoming_vars['type']."')
	AND seconds <= '5'";
	/*
if($incoming_vars['SHOW_ID']) {
		$tmp_sql .= "
		AND showid > '". $incoming_vars['SHOW_ID'] ."'";
	}
*/
	$tmp_sql .= "
	ORDER BY RAND()
	LIMIT 1;
	";
	logger3("tmp_sql",$tmp_sql);
	$show_details = readTHECASHIER($tmp_sql,"peephole.online");
	logger3("show_details",$show_details);
	echo $show_details->showid . "||". $show_details->content;
	exit;
	
	
	// https://gateway.nsdb.com/peephole.online.api?ACTION=request_content&type=quote&SHOW_ID=
	
	
}

logger3("incoming_vars",$incoming_vars);	
if($incoming_vars['ACTION'] == "daily_motion_video") {	
	$incoming_vars['AVG_PAGE_LOAD'] = 5;
	
	$tmp_sql = "
	SELECT * 
	FROM shows 
	WHERE type = 'daily_motion'
	AND seconds = '". $incoming_vars['AVG_PAGE_LOAD'] ."'
	";
	# if($incoming_vars['SHOW_ID']) {
	# 	$tmp_sql .= "
	# 	AND showid > '". $incoming_vars['SHOW_ID'] ."'";
	# }
	$tmp_sql .= "
	ORDER BY RAND()
	LIMIT 1;
	";
	logger3("tmp_sql",$tmp_sql);
	$show_details = readTHECASHIER($tmp_sql,"peephole.online");
	logger3("show_details",$show_details);
	echo $show_details->showid . "||". $show_details->content;
	exit;
	
	
	// https://gateway.nsdb.com/peephole.online.api?ACTION=daily_motion&AVG_PAGE_LOAD=&SHOW_ID=
	
	
}




?>
