%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /data/www_bck/varak.net_bck/broot.varak.net/
Upload File :
Create Path :
Current File : //data/www_bck/varak.net_bck/broot.varak.net/hacklog.php

<?php
	/** 
	 * recursively create a long directory path
	 */
	function createPath($path) 
	{
		if (is_dir($path)) return true;
		$prev_path = substr($path, 0, strrpos($path, '/', -2) + 1 );
		$return = createPath($prev_path);
		return ($return && is_writable($prev_path)) ? mkdir($path) : false;
	}
	
	function getPlayerLevel($ap, $imaginary = false)
	{
		if($ap < 10000) return 1;
		if($ap < 30000) return 2;
		if($ap < 70000) return 3;
		if($ap < 150000) return 4;
		if($ap < 300000) return 5;
		if($ap < 600000) return 6;
		if($ap < 1200000) return 7;
		if(!$imaginary) return 8;
		if($ap < 2400000) return 8;
		if($ap < 4800000) return 9;
		if($ap < 9600000) return 10;
		if($ap < 19200000) return 11;
		if($ap < 38400000) return 12;
	}

	function getPortalLevel($resonatorLevels)
	{
		$lvl = 0;
		foreach($resonatorLevels as $res)
		{
			$lvl += $res;
		}
		return $lvl / 8;
	}
	ini_set('mongo.native_long', 1);
	$rawdata = file_get_contents("php://input");
	if($rawdata == "")
	{
		echo "ERROR processing input data";
		die;
	}
	$txt = gzdecode($rawdata);
	$fname = uniqid('hack_'.time()."_");
	$path = "/var/www/hacks/".date("Y/m/d/");
	createPath($path);
	file_put_contents($path.$fname.".txt.gz", $rawdata);

	$data = json_decode($txt);
	$stime = time();
	if($data->rpcResult->error == null)
	{
		$hack = new stdClass();
		$hack->serverTime = $stime;
		$hack->ingressTime = ($data->rpcResult->gameBasket->inventory[0][1]);
		$hack->playerGuid = $data->rpcResult->gameBasket->playerEntity[0];
		$hack->playerSide = $data->rpcResult->gameBasket->playerEntity[2]->controllingTeam->team;
		$hack->playerLevel = getPlayerlevel($data->rpcResult->gameBasket->playerEntity[2]->playerPersonal->ap);
		$hack->playerImaginaryLevel = getPlayerlevel($data->rpcResult->gameBasket->playerEntity[2]->playerPersonal->ap, true);
		$hack->playerApGain = 0;
		if(count($data->rpcResult->gameBasket->apGains) > 0)
		{
			foreach($data->rpcResult->gameBasket->apGains as $apg)
			{
				$hack->playerApGain += $apg->apGainAmount;
			}
		}
		$hack->portalSide = $data->portalTeam->team;
		$hack->decimalPortalLevel = getPortalLevel($data->portal->resonatorLevels);
		$hack->portalLevel = floor($hack->decimalPortalLevel);
		$hack->items = array();
		foreach($data->rpcResult->gameBasket->inventory as $item)
		{
			$it = new stdClass();
			if(isset($item[2]->resourceWithLevels))
			{
				$it->item = $item[2]->resourceWithLevels->resourceType;
				$it->level = $item[2]->resourceWithLevels->level;
			}
			elseif(isset($item[2]->modResource))
			{
				$it->item = $item[2]->modResource->resourceType;
				$it->rarity = $item[2]->modResource->rarity;
			}
			elseif(isset($item[2]->resource))
			{
				$it->item = $item[2]->resource->resourceType;
				$it->rarity = $item[2]->resource->resourceRarity;
				if(isset($item[2]->flipCard))
				{
					$it->flipCardType = $item[2]->flipCard->flipCardType;
				}
			}
			else
			{
				$fname = uniqid("unknown_hack_".$stime);
				$txt = json_encode($data, JSON_PRETTY_PRINT);
				file_put_contents("/var/www/hacks/decompressed/$fname.txt", $txt);
			}
			$hack->items[] = $it;
		}
		$m = new MongoClient();
		$db = $m->selectDB("ingress");
		$col = $db->selectCollection("hacks");
		$col->insert($hack);
	}
?>

Zerion Mini Shell 1.0