This commit is contained in:
parent
63b49dd282
commit
5df5a0ad7a
@ -14,3 +14,22 @@ function renderTemplate($templatename,$variables=[],$basepath=ROOT.'/src')
|
||||
|
||||
return $rendered;
|
||||
}
|
||||
|
||||
function addToLog($data)
|
||||
{
|
||||
$fp = fopen(ROOT.DS.'logs'.DS.'app.log','a');
|
||||
fwrite($fp,date("d.m.y H:i")."\t".$data."\n");
|
||||
fclose($fp);
|
||||
}
|
||||
|
||||
function getUserIP()
|
||||
{
|
||||
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
||||
$ip = $_SERVER['HTTP_CLIENT_IP'];
|
||||
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
||||
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
||||
} else {
|
||||
$ip = $_SERVER['REMOTE_ADDR'];
|
||||
}
|
||||
return $ip;
|
||||
}
|
@ -1,36 +1,37 @@
|
||||
<?php
|
||||
|
||||
use Facebook\WebDriver\Remote\RemoteWebDriver;
|
||||
use Facebook\WebDriver\Remote\DesiredCapabilities;
|
||||
|
||||
define('DS', DIRECTORY_SEPARATOR);
|
||||
define('ROOT', dirname(__FILE__).DS.'..');
|
||||
define('ROOT', dirname(__FILE__) . DS . '..');
|
||||
|
||||
require_once(ROOT.DS.'src'.DS.'config.inc.php');
|
||||
require_once(ROOT.DS.'src'.DS.'helpers.php');
|
||||
require_once(ROOT.DS.'src'.DS.'http2pic.class.php');
|
||||
require_once(ROOT.DS.'src'.DS.'vendor'.DS.'autoload.php');
|
||||
require_once(ROOT . DS . 'src' . DS . 'config.inc.php');
|
||||
require_once(ROOT . DS . 'src' . DS . 'helpers.php');
|
||||
require_once(ROOT . DS . 'src' . DS . 'http2pic.class.php');
|
||||
require_once(ROOT . DS . 'src' . DS . 'vendor' . DS . 'autoload.php');
|
||||
|
||||
$url = array_filter(explode('/',ltrim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH),'/')));
|
||||
$url = array_filter(explode('/', ltrim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/')));
|
||||
|
||||
//check for integrated server
|
||||
if(php_sapi_name()=='cli-server' && file_exists(ROOT.DS.'web'.DS.implode('/',$url)) && !is_dir(ROOT.DS.'web'.DS.implode('/',$url)))
|
||||
if (php_sapi_name() == 'cli-server' && file_exists(ROOT . DS . 'web' . DS . implode('/', $url)) && !is_dir(ROOT . DS . 'web' . DS . implode('/', $url)))
|
||||
return false;
|
||||
|
||||
|
||||
switch($url[0])
|
||||
{
|
||||
switch ($url[0]) {
|
||||
case 'api':
|
||||
$target = substr($_SERVER['REQUEST_URI'],5);
|
||||
if(!$target || !filter_var($target, FILTER_VALIDATE_URL))
|
||||
$target = substr($_SERVER['REQUEST_URI'], 5);
|
||||
if (!$target || !filter_var($target, FILTER_VALIDATE_URL))
|
||||
$target = $_REQUEST['url'];
|
||||
if(!filter_var($target, FILTER_VALIDATE_URL))
|
||||
{
|
||||
if (!filter_var($target, FILTER_VALIDATE_URL)) {
|
||||
header('HTTP/1.0 400 Bad Request');
|
||||
echo 'Invalid URL';
|
||||
exit;
|
||||
}
|
||||
$ip = getUserIP();
|
||||
|
||||
$viewport = $_REQUEST['viewport'];
|
||||
$js = $_REQUEST['js']=='false'?false:true;
|
||||
$js = $_REQUEST['js'] == 'false' ? false : true;
|
||||
|
||||
$serverUrl = 'http://localhost:4444';
|
||||
$options = new \Facebook\WebDriver\Chrome\ChromeOptions();
|
||||
@ -40,27 +41,31 @@ switch($url[0])
|
||||
$capabilities->setCapability(\Facebook\WebDriver\Chrome\ChromeOptions::CAPABILITY, $options);
|
||||
|
||||
//disable javascript if $js is false
|
||||
if(!$js)
|
||||
if (!$js)
|
||||
$capabilities->setCapability('javascriptEnabled', false);
|
||||
|
||||
$driver = RemoteWebDriver::create($serverUrl, $capabilities);
|
||||
|
||||
$driver->get($target);
|
||||
try {
|
||||
$driver = RemoteWebDriver::create($serverUrl, $capabilities);
|
||||
$driver->get($target);
|
||||
//hide scroll bars
|
||||
$driver->executeScript('document.body.style.overflow = "hidden";');
|
||||
|
||||
//hide scroll bars
|
||||
$driver->executeScript('document.body.style.overflow = "hidden";');
|
||||
|
||||
//set screenshot size to 1920x1080
|
||||
//$driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension(1024, 768));
|
||||
//if $viewport is set, set window size
|
||||
if($viewport)
|
||||
{
|
||||
$viewport = explode('x',$viewport);
|
||||
$driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension($viewport[0], $viewport[1]));
|
||||
}
|
||||
else
|
||||
{
|
||||
$driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension(1024, 768));
|
||||
//set screenshot size to 1920x1080
|
||||
//$driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension(1024, 768));
|
||||
//if $viewport is set, set window size
|
||||
if ($viewport) {
|
||||
$viewport = explode('x', $viewport);
|
||||
$driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension($viewport[0], $viewport[1]));
|
||||
} else {
|
||||
$driver->manage()->window()->setSize(new \Facebook\WebDriver\WebDriverDimension(1024, 768));
|
||||
}
|
||||
addToLog("$ip\tRequested $target with viewport " . implode('x', $viewport) . " and js " . ($js ? 'enabled' : 'disabled'));
|
||||
} catch (Exception $e) {
|
||||
header('HTTP/1.0 500 Internal Server Error');
|
||||
addToLog("$ip\tRequested $target but resulted in error:\t" . $e->getMessage());
|
||||
echo 'Error: ' . $e->getMessage();
|
||||
exit;
|
||||
}
|
||||
|
||||
// take screenshot and save to file
|
||||
@ -68,7 +73,7 @@ switch($url[0])
|
||||
header('Content-Type: image/png');
|
||||
echo $driver->takeScreenshot();
|
||||
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
echo renderTemplate('index.html.php');
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user