This repository has been archived on 2024-07-18. You can view files and clone it, but cannot push or open issues or pull requests.
lwb5/admin/proxy.php

128 lines
2.6 KiB
PHP

<?php
set_magic_quotes_runtime(false);
include('config.inc');
include('../scripts/config.inc');
include('as_manager.inc');
include('as_log.inc');
function redirect() {
?>
<html>
<head>
<title>LegacyWorlds Beta 5 > Administration > Proxy detector</title>
</head>
<body>
<h1><a href="index.html">LWB5 > Administration</a> > Proxy detector</h1>
<h2>Operation in progress...</h2>
<p>
A system operation is in progress. Please wait, the page will update in 5 seconds.
</p>
<script language="JavaScript">
window.setTimeout('window.location="proxy.php"', 5000);
</script>
</body>
</html>
<?php
exit(0);
}
function startDetector() {
__logAdmin("is starting the proxy detector");
__sendControl("PCON");
redirect();
}
function stopDetector() {
__logAdmin("is stopping the proxy detector");
__sendControl("PCOFF");
redirect();
}
$oldDir = getcwd();
chdir("../scripts");
$__loader = array(
'log', 'classloader',
'version', 'game', 'tick',
'config', 'pcheck'
);
require_once("loader.inc");
chdir($oldDir);
$isRunning = pcheck::isRunning();
if ($_GET['c'] == 'sd') {
startDetector();
} elseif ($_GET['c'] == 'kd') {
stopDetector();
} elseif ($_GET['ip'] != '') {
$ip = $_GET['ip'];
$status = "";
if (preg_match('/^\d{1,3}(\.\d{1,3}){3}$/', $ip)) {
if ($ip == "127.0.0.1") {
$status = "Host not allowed";
} else {
$addr = explode('.', $ip);
foreach ($addr as $piece) {
if ($piece > 254) {
$status = "Invalid IP address";
break;
}
}
if ($status == "") {
try {
$result = pcheck::check(array($ip));
$status = "$ip - ";
switch ($result[$ip]) {
case -1: $status .= "detection failed"; break;
case 0: $status .= "no proxy detected"; break;
case 1: $status .= "OPEN PROXY DETECTED!"; break;
}
} catch (Exception $e) {
$status = $e->getMessage();
}
}
}
} else {
$status = "Invalid IP address";
}
} else {
$status = $ip = "";
}
?>
<html>
<head>
<title>LegacyWorlds Beta 5 > Administration > Proxy detector</title>
</head>
<body>
<h1><a href="index.html">LWB5 > Administration</a> > Proxy detector</h1>
<?php
if ($isRunning) {
?>
<p>
Proxy detector is <b>running</b>; process ID #<?=$isRunning?>. <a href="?c=kd">Stop detector</a>
</p>
<form action="?" method="GET">
<p>
Manually check address <input type="text" size="16" maxlength="15" name="ip" value="<?=htmlentities($ip, ENT_QUOTES)?>" />
<input type="submit" value="Scan" />
<?=($status != '') ? ('<br/><b>' . $status . '</b>') : ''?>
</p>
</form>
<?php
} else {
?>
<p>
Proxy detector is <b>not running</b>. <a href="?c=sd">Start detector</a>
</p>
<?php
}
?>
</body>
</html>