<?php
/** * OPBE * Copyright (C) 2013 Jstar * * This file is part of OPBE. * * OPBE is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OPBE is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with OPBE. If not, see <http://www.gnu.org/licenses/>. * * @package OPBE * @author Jstar <frascafresca@gmail.com> * @copyright 2013 Jstar <frascafresca@gmail.com> * @license http://www.gnu.org/licenses/ GNU AGPLv3 License * @version beta(26-10-2013) * @link https://github.com/jstar88/opbe */ require (".." . DIRECTORY_SEPARATOR . "RunnableTest.php");
class WebTest extends RunnableTest { public function getAttachers() { return $this->buildPlayerGroup($_POST["attacker_tech"], $_POST["attacker_fleet"]); } public function getDefenders() { return $this->buildPlayerGroup($_POST["defender_tech"], $_POST["defender_fleet"]); }
private function buildPlayerGroup($tech, $fleets) { $playerObj = new Player(1); $playerObj->setName('bot'); $playerObj->setTech($tech['weapons'], $tech['shields'], $tech['armour']); foreach ($fleets as $idFleet => $fleet) { $fleetObj = new Fleet($idFleet); foreach ($fleet as $id => $count) { $count = floor($count); $id = floor($id); if ($count > 0 && $id > 0) { $fleetObj->add($this->getShipType($id, $count)); } } if (!$fleetObj->isEmpty()) { $playerObj->addFleet($fleetObj); } } if ($playerObj->isEmpty()) { die("<meta http-equiv=\"refresh\" content=2;\"WebTest.php\">There should be at least an attacker and defender"); } $playerGroupObj = new PlayerGroup(); $playerGroupObj->addPlayer($playerObj); return $playerGroupObj; } }
if (isset($_GET['vars'])) { $selectedVar = $_GET['vars']; } elseif (isset($_POST['vars'])) { $selectedVar = $_POST['vars']; } else { $selectedVar = 'XG'; } WebTest::includeVars($selectedVar); LangManager::getInstance()->setImplementation(new LangImplementation($selectedVar));
if (isset($_GET['good'])) { session_start(); if (!isset($_SESSION['vote'])) { $_SESSION['vote'] = true; $count = file_get_contents('good.txt'); $count++; file_put_contents('good.txt', $count); } session_write_close(); } elseif (isset($_GET['bad'])) { session_start(); if (!isset($_SESSION['vote'])) { $_SESSION['vote'] = true; $count = file_get_contents('bad.txt'); $count++; file_put_contents('bad.txt', $count); } session_write_close(); } if ($_POST) { if (isset($_POST['report'])) { $path = 'errors' . DIRECTORY_SEPARATOR . 'reports'; if (!file_exists($path)) { mkdir($path, 0777, true); } require_once 'HTMLPurifier' . DIRECTORY_SEPARATOR . 'HTMLPurifier.auto.php'; $config = HTMLPurifier_Config::createDefault(); $purifier = new HTMLPurifier($config); $clean_html = $purifier->purify($_POST['report']); $clean_html = 'comment = ' . strip_tags($_POST['comment']) . PHP_EOL . $clean_html; file_put_contents($path . DIRECTORY_SEPARATOR . date('d-m-y__H-i-s') . '.html', $clean_html);
$extra = 'WebTest.php'; echo 'This battle has been reported.'; die(header("refresh: 2; url= $extra"));
} session_start(); if (!isset($_SESSION['time'])) { $_SESSION['time'] = time(); } else { if (time() - $_SESSION['time'] < 3) { die('Sorry,to prevent malicious usage you can only execute one simulation each 3 seconds'); } $_SESSION['time'] = time(); } session_write_close(); $count = file_get_contents('count.txt'); $count++; file_put_contents('count.txt', $count); //inject html code in the report ob_start(); new WebTest($_POST['debug'] === 'debug'); $wb = ob_get_clean(); $dom = new DOMDocument(); $dom->loadHTML($wb);
//inject the form
$submit = $dom->createElement('input'); $submit->setAttribute('type', 'submit'); $submit->setAttribute('value', 'Report to admin');
$name = $dom->createElement('input'); $name->setAttribute('type', 'hidden'); $name->setAttribute('name', 'report'); $name->setAttribute('value', $wb); //not really good for performace but ok :)
$comment = $dom->createElement('input'); $comment->setAttribute('type', 'text'); $comment->setAttribute('name', 'comment'); $comment->setAttribute('value', 'insert a comment here'); $comment->setAttribute('size', '100');
$fieldset = $dom->createElement('fieldset'); $fieldset->appendChild($submit); $fieldset->appendChild($name); $fieldset->appendChild($comment);
$form = $dom->createElement('form'); $form->setAttribute('method', 'POST'); $form->appendChild($fieldset);
$body = $dom->getElementsByTagName("body")->item(0); $body->insertBefore($form, $body->firstChild);
echo $dom->saveHTML(); } else { $bad = file_get_contents('bad.txt'); $good = file_get_contents('good.txt'); $count = floor(file_get_contents('count.txt')); $list = WebTest::getVarsList(); $reslist = WebTest::$reslist; require ('WebTestGui.html');
}
?>
|