Files
TravianZ/build.php
T
Martin Ambrus f5c3e029b5 feat: access log config setting and a real get-post-cookie logger
This is a very naive and primitive logger of user requests to the game.
To be used on systems where access to webserver's log data is not
available (especially if the webserver doesn't store POST data as well).
2017-10-28 18:59:16 +02:00

428 lines
13 KiB
PHP

<?php
#################################################################################
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
## --------------------------------------------------------------------------- ##
## Filename build.php ##
## Developed by: Dzoki ##
## License: TravianX Project ##
## Copyright: TravianX (c) 2010-2011. All rights reserved. ##
## ##
#################################################################################
use App\Utils\AccessLogger;
ob_start();
include_once("GameEngine/Village.php");
include_once("GameEngine/Units.php");
AccessLogger::logRequest();
if(isset($_GET['newdid'])) {
$_SESSION['wid'] = $_GET['newdid'];
header("Location: ".$_SERVER['PHP_SELF'].(isset($_GET['id'])?'?id='.$_GET['id']:(isset($_GET['gid'])?'?gid='.$_GET['gid']:'')));
exit;
}
if($_GET['id'] == 99 && $village->natar == 0){
header("Location: dorf2.php");
exit;
}
$pagestart = $generator->pageLoadTimeStart();
$alliance->procAlliForm($_POST);
$technology->procTech($_POST);
$market->procMarket($_POST);
if(isset($_GET['gid'])) {
$_GET['id'] = strval($building->getTypeField(preg_replace("/[^a-zA-Z0-9_-]/","",$_GET['gid'])));
} else if(isset($_POST['id'])) {
$_GET['id'] = preg_replace("/[^a-zA-Z0-9_-]/","",$_POST['id']); // WTF is this?
}
if(isset($_POST['t'])){
$_GET['t'] = preg_replace("/[^a-zA-Z0-9_-]/","",$_POST['t']);
}
if(isset($_GET['id'])) {
if (!ctype_digit(preg_replace("/[^a-zA-Z0-9_-]/","",$_GET['id']))){
$_GET['id'] = "1";
}
$checkBuildings = array(0,16,17,25,26,27);
if($_GET['id'] < 19 || (isset($_GET['gid']) && !in_array($_GET['gid'], $checkBuildings))){
$_GET['t'] = "";
$_GET['s'] = "";
}
if($village->resarray['f'.$_GET['id'].'t'] == 17) {
$market->procRemove($_GET);
}
if($village->resarray['f'.$_GET['id'].'t'] == 18) {
$alliance->procAlliance($_GET);
}
if($village->resarray['f'.$_GET['id'].'t'] == 12 || $village->resarray['f'.$_GET['id'].'t'] == 13 || $village->resarray['f'.$_GET['id'].'t'] == 22) {
$technology->procTechno($_GET);
}
}
if($session->goldclub == 1 && count($session->villages) > 1){
if(isset($_GET['routeid'])){
$routeid = $_GET['routeid'];
}
if(isset($_POST['action']) && $_POST['action'] == 'addRoute') {
if($session->access != BANNED){
if($session->gold >= 2) {
for($i=1;$i<=4;$i++){
if($_POST['r'.$i] == ""){
$_POST['r'.$i] = 0;
}
}
$totalres = preg_replace("/[^0-9]/","",$_POST['r1'])+preg_replace("/[^0-9]/","",$_POST['r2'])+preg_replace("/[^0-9]/","",$_POST['r3'])+preg_replace("/[^0-9]/","",$_POST['r4']);
$reqMerc = ceil(($totalres-0.1)/$market->maxcarry);
$second = date("s");
$minute = date("i");
$hour = date("G")-$_POST['start'];
if(date("G") > $_POST['start']){
$day = 1;
}else{
$day = 0;
}
$timestamp = strtotime("-$hour hours -$second second -$minute minutes +$day day");
if($totalres > 0){
$database->createTradeRoute($session->uid,$_POST['tvillage'],$village->wid,$_POST['r1'],$_POST['r2'],$_POST['r3'],$_POST['r4'],$_POST['start'],$_POST['deliveries'],$reqMerc,$timestamp);
header("Location: build.php?gid=17&t=4");
exit;
$route = 1;
}else{
header("Location: build.php?gid=17&t=4&create");
exit;
$route = 1;
}
}
}else{
$route = 0;
header("Location: banned.php");
exit;
}
}
if(isset($_GET['action']) && $_GET['action'] == 'extendRoute') {
if($session->access != BANNED){
if($session->gold >= 2) {
$traderoute = $database->getTradeRouteUid($_GET['routeid']);
if($traderoute == $session->uid){
$database->editTradeRoute($_GET['routeid'],"timeleft",604800,1);
$newgold = $session->gold-2;
$database->updateUserField($session->uid,'gold',$newgold,1);
header("Location: build.php?gid=17&t=4");
exit;
$route = 1;
unset($routeid);
}else{
header("Location: build.php?gid=17&t=4");
exit;
$route = 1;
unset($routeid);
}
}else{
header("Location: build.php?gid=17&t=4");
exit;
$route = 1;
}
}else{
$route = 0;
header("Location: banned.php");
exit;
}
}
if(isset($_POST['action']) && $_POST['action'] == 'editRoute') {
if($session->access != BANNED){
$totalres = $_POST['r1']+$_POST['r2']+$_POST['r3']+$_POST['r4'];
$reqMerc = ceil(($totalres-0.1)/$market->maxcarry);
if($totalres > 0){
$database->editTradeRoute($_POST['routeid'],"wood",$_POST['r1'],0);
$database->editTradeRoute($_POST['routeid'],"clay",$_POST['r2'],0);
$database->editTradeRoute($_POST['routeid'],"iron",$_POST['r3'],0);
$database->editTradeRoute($_POST['routeid'],"crop",$_POST['r4'],0);
$database->editTradeRoute($_POST['routeid'],"start",$_POST['start'],0);
$database->editTradeRoute($_POST['routeid'],"deliveries",$_POST['deliveries'],0);
$database->editTradeRoute($_POST['routeid'],"merchant",$reqMerc,0);
$second = date("s");
$minute = date("i");
$hour = date("G")-$_POST['start'];
if(date("G") > $_POST['start']){
$day = 1;
}else{
$day = 0;
}
$timestamp = strtotime("-$hour hours -$second seconds -$minute minutes +$day day");
$database->editTradeRoute($_POST['routeid'],"timestamp",$timestamp,0);
}
header("Location: build.php?gid=17&t=4");
exit;
$route = 1;
unset($routeid);
}else{
$route = 0;
header("Location: banned.php");
exit;
}
}
if(isset($_GET['action']) && $_GET['action'] == 'delRoute') {
if($session->access != BANNED){
$traderoute = $database->getTradeRouteUid($_GET['routeid']);
if($traderoute == $session->uid){
$database->deleteTradeRoute($_GET['routeid']);
header("Location: build.php?gid=17&t=4");
exit;
$route = 1;
unset($routeid);
}else{
header("Location: build.php?gid=17&t=4");
exit;
$route = 1;
unset($routeid);
}
}else{
$route = 0;
header("Location: banned.php");
exit;
}
}
}
if($session->goldclub == 1){
if(isset($_GET['t'])==99) {
if($_GET['action'] == 'addList') {
$create = 1;
}else if($_GET['action'] == 'addraid') {
$create = 2;
}else if($_GET['action'] == 'showSlot' && $_GET['eid']) {
$create = 3;
}else{
$create = 0;
}
if($_GET['slid']) {
$FLData = $database->getFLData($_GET['slid']);
if($FLData['owner'] == $session->uid){
$checked[$_GET['slid']] = 1;
}
}
if($_GET['action'] == 'deleteList') {
$database->delFarmList($_GET['lid'], $session->uid);
header("Location: build.php?id=39&t=99");
exit;
}elseif($_GET['action'] == 'deleteSlot') {
$database->delSlotFarm($_GET['eid']);
header("Location: build.php?id=39&t=99");
exit;
}
if($_POST['action'] == 'startRaid'){
if($session->access != BANNED){
include ("Templates/a2b/startRaid.tpl");
}else{
header("Location: banned.php");
exit;
}
}
if(isset($_GET['slid']) && is_numeric($_GET['slid'])) {
$FLData = $database->getFLData($_GET['slid']);
if($FLData['owner'] == $session->uid){
$checked[$_GET['slid']] = 1;
}
}
if(isset($_GET['evasion']) && is_numeric($_GET['evasion'])) {
$evasionvillage = $database->getVillage($_GET['evasion']);
if($evasionvillage['owner'] == $session->uid){
$database->setVillageEvasion($_GET['evasion']);
}
header("Location: build.php?id=39&t=99");
exit;
}
if(isset($_POST['maxevasion']) && is_numeric($_POST['maxevasion'])) {
$database->updateUserField($session->uid, "maxevasion", $_POST['maxevasion'], 1);
header("Location: build.php?id=39&t=99");
exit;
}
}
}else{
$create = 0;
}
if (isset($_POST['a']) == 533374 && isset($_POST['id']) == 39){
if($session->access != BANNED){
$units->Settlers($_POST);
}else{
header("Location: banned.php");
exit;
}
}
if(isset($_GET['mode']) && $_GET['mode']=='troops' && isset($_GET['cancel']) && $_GET['cancel']==1){
if($session->access != BANNED){
$oldmovement=$database->getMovementById($_GET['moveid']);
$now=time();
if(($now-$oldmovement[0]['starttime'])<90 && $oldmovement[0]['from'] == $village->wid){
$qc="SELECT * FROM " . TB_PREFIX . "movement where proc = 0 and moveid = ".$database->escape((int) $_GET['moveid']);
$resultc=$database->query($qc) or die(mysqli_error($database->dblink));
if (mysqli_num_rows($resultc)==1){
$q = "UPDATE " . TB_PREFIX . "movement set proc = 1 where proc = 0 and moveid = ".$database->escape((int) $_GET['moveid']);
$database->query($q);
$end=$now+($now-$oldmovement[0]['starttime']);
//echo "6,".$oldmovement[0]['to'].",".$oldmovement[0]['from'].",0,".$now.",".$end;
$q2 = "SELECT id FROM " . TB_PREFIX . "send ORDER BY id DESC";
$lastid=mysqli_fetch_array(mysqli_query($GLOBALS['link'],$q2));
$newid=$lastid['id']+1;
$q2 = "INSERT INTO " . TB_PREFIX . "send values ($newid,0,0,0,0,0)";
$database->query($q2);
$database->addMovement(4,$oldmovement[0]['to'],$oldmovement[0]['from'],$oldmovement[0]['ref'],$now,$end);
$database->addMovement(6,$oldmovement[0]['to'],$oldmovement[0]['from'],$newid,$now,$end);
}
}
header("Location: ".$_SERVER['PHP_SELF']."?id=".$_GET['id']);
exit;
}else{
header("Location: banned.php");
exit;
}
}
if(isset($_GET['id'])){
$automation->isWinner();
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title><?php echo SERVER_NAME; ?></title>
<link rel="shortcut icon" href="favicon.ico"/>
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script src="mt-full.js?ebe79" type="text/javascript"></script>
<script src="unx.js?f4b7f" type="text/javascript"></script>
<script src="new.js?ebe79" type="text/javascript"></script>
<link href="<?php echo GP_LOCATE; ?>lang/en/lang.css?f4b7d" rel="stylesheet" type="text/css" />
<link href="<?php echo GP_LOCATE; ?>lang/en/compact.css?f4b7f" rel="stylesheet" type="text/css" />
<?php
if($session->gpack == null || GP_ENABLE == false) {
echo "
<link href='".GP_LOCATE."travian.css?e21d2' rel='stylesheet' type='text/css' />
<link href='".GP_LOCATE."lang/en/lang.css?e21d2' rel='stylesheet' type='text/css' />";
} else {
echo "
<link href='".$session->gpack."travian.css?e21d2' rel='stylesheet' type='text/css' />
<link href='".$session->gpack."lang/en/lang.css?e21d2' rel='stylesheet' type='text/css' />";
}
?>
<script type="text/javascript">
window.addEvent('domready', start);
</script>
</head>
<body class="v35 ie ie8">
<div class="wrapper">
<img style="filter:chroma();" src="img/x.gif" id="msfilter" alt="" />
<div id="dynamic_header">
</div>
<?php include("Templates/header.tpl"); ?>
<div id="mid">
<?php include("Templates/menu.tpl"); ?>
<div id="content" class="build">
<?php
if(isset($_GET['id']) or isset($_GET['gid']) or $route == 1 or isset($_GET['routeid']) or isset($_GET['buildingFinish'])) {
if(isset($_GET['s']))
{
if (!ctype_digit($_GET['s'])) {
$_GET['s'] = null;
}
}
if(isset($_GET['t']))
{
if (!ctype_digit($_GET['t'])) {
$_GET['t'] = null;
}
}
if (!ctype_digit($_GET['id'])) {
$_GET['id'] = "1";
}
$id = $_GET['id'];
if($id=='99' AND $village->resarray['f99t'] == 40){
include("Templates/Build/ww.tpl");
} else
if($village->resarray['f'.$_GET['id'].'t'] == 0 && $_GET['id'] >= 19) {
include("Templates/Build/avaliable.tpl");
}
else {
if(isset($_GET['t'])) {
if($_GET['t'] == 1) {
$_SESSION['loadMarket'] = 1;
}
include("Templates/Build/".$village->resarray['f'.$_GET['id'].'t']."_".$_GET['t'].".tpl");
} else
if(isset($_GET['s'])) {
include("Templates/Build/".$village->resarray['f'.$_GET['id'].'t']."_".$_GET['s'].".tpl");
}
else {
include("Templates/Build/".$village->resarray['f'.$_GET['id'].'t'].".tpl");
}
if((isset($_GET['buildingFinish'])) && $_GET['buildingFinish'] == 1) {
if($session->gold >= 2) {
$building->finishAll("build.php?gid=".$_GET['id']."&ty=".$_GET['ty']);
exit;
}
}
}
}else{
header("Location: ".$_SERVER['PHP_SELF']."?id=39");
exit;
}
?>
</div>
<br /><br /><br /><br /><div id="side_info">
<?php
include("Templates/multivillage.tpl");
include("Templates/quest.tpl");
include("Templates/news.tpl");
include("Templates/links.tpl");
?>
</div>
<div class="clear"></div>
<div class="footer-stopper"></div>
<div class="clear"></div>
<?php
include("Templates/footer.tpl");
include("Templates/res.tpl");
?>
<div id="stime">
<div id="ltime">
<div id="ltimeWrap">
<?php echo CALCULATED_IN;?> <b><?php
echo round(($generator->pageLoadTimeEnd()-$pagestart)*1000);
?></b> ms
<br />Server time: <span id="tp1" class="b"><?php echo date('H:i:s'); ?></span>
</div>
</div>
</div>
<div id="ce"> </div>
<script type="text/javascript">
// update TITLE to include building name, as it's not very possible to do in PHP in current codebase
if (document.getElementsByTagName('h1').length) {
document.title = document.title + ' » » ' + document.getElementsByTagName('h1')[0].innerHTML.replace(/(<([^>]+)>)/ig,"");
} else {
document.title + ' » » New Building'
}
</script>
</body>
</html>