mirror of
https://github.com/Znote/ZnoteAAC.git
synced 2025-04-30 11:19:22 +02:00
Remade serverinfo.php. Loads stages.xml, imports config.lua from textarea instead of requiring access to OT directory. Gives much more server information.
This commit is contained in:
parent
96802cb348
commit
0b442e9095
9
engine/XML/stages.xml
Normal file
9
engine/XML/stages.xml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<stages>
|
||||||
|
<config enabled="0" />
|
||||||
|
<stage minlevel="1" maxlevel="8" multiplier="7" />
|
||||||
|
<stage minlevel="9" maxlevel="20" multiplier="6" />
|
||||||
|
<stage minlevel="21" maxlevel="50" multiplier="5" />
|
||||||
|
<stage minlevel="51" maxlevel="100" multiplier="4" />
|
||||||
|
<stage minlevel="101" multiplier="5" />
|
||||||
|
</stages>
|
@ -40,23 +40,6 @@ function data_dump($print = false, $var = false, $title = false) {
|
|||||||
echo '</pre><br>';
|
echo '</pre><br>';
|
||||||
}
|
}
|
||||||
|
|
||||||
function getConfigLua() {
|
|
||||||
$filename = config('server_path') . '/config.lua';
|
|
||||||
if (!file_exists($filename)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$contents = file_get_contents($filename);
|
|
||||||
$array = explode("\n", $contents);
|
|
||||||
$output = [];
|
|
||||||
foreach ($array as $arr) {
|
|
||||||
if (strpos($arr, '--') !== 0) {
|
|
||||||
$output[] = $arr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$ini = implode("\n", $output);
|
|
||||||
return parse_ini_string($ini);
|
|
||||||
}
|
|
||||||
|
|
||||||
function accountAccess($accountId, $TFS) {
|
function accountAccess($accountId, $TFS) {
|
||||||
$accountId = (int)$accountId;
|
$accountId = (int)$accountId;
|
||||||
$access = 0;
|
$access = 0;
|
||||||
|
396
serverinfo.php
396
serverinfo.php
@ -1,70 +1,346 @@
|
|||||||
<?php require_once 'engine/init.php'; include 'layout/overall/header.php'; ?>
|
<?php require_once 'engine/init.php'; include 'layout/overall/header.php';
|
||||||
|
// Calculate integer values into days, hours, minutes, seconds
|
||||||
|
function toDuration($ms) {
|
||||||
|
$duration['day'] = $ms / (24 * 60 * 60 * 1000);
|
||||||
|
if (($duration['day'] - (int)$duration['day']) > 0)
|
||||||
|
$duration['hour'] = ($duration['day'] - (int)$duration['day']) * 24;
|
||||||
|
if (isset($duration['hour'])) {
|
||||||
|
if (($duration['hour'] - (int)$duration['hour']) > 0)
|
||||||
|
$duration['minute'] = ($duration['hour'] - (int)$duration['hour']) * 60;
|
||||||
|
if (isset($duration['minute'])) {
|
||||||
|
if (($duration['minute'] - (int)$duration['minute']) > 0)
|
||||||
|
$duration['second'] = ($duration['minute'] - (int)$duration['minute']) * 60;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$tmp = array();
|
||||||
|
foreach ($duration as $type => $value) {
|
||||||
|
if ($value >= 1) {
|
||||||
|
$pluralType = ((int)$value === 1) ? $type : $type . 's';
|
||||||
|
if ($type !== 'second') $tmp[] = (int)$value . " $pluralType";
|
||||||
|
else $tmp[] = $value . " $pluralType";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return implode(', ', $tmp);
|
||||||
|
}
|
||||||
|
function toYesNo($bool) {
|
||||||
|
return ($bool) ? 'Yes' : 'No';
|
||||||
|
}
|
||||||
|
// Loading stage list
|
||||||
|
$cache = new Cache('engine/cache/stages');
|
||||||
|
if (user_logged_in() && is_admin($user_data)) {
|
||||||
|
if (isset($_GET['loadStages'])) {
|
||||||
|
echo "<p><strong>Logged in as admin, loading engine/XML/stages.xml file and updating cache.</strong></p>";
|
||||||
|
// STAGES XML TO PHP ARRAY
|
||||||
|
$stagesXML = simplexml_load_file("engine/XML/stages.xml");
|
||||||
|
if ($stagesXML !== false) {
|
||||||
|
$stagesData = array();
|
||||||
|
// Load config ( stages enabled or disabled)
|
||||||
|
foreach ($stagesXML->config->attributes() as $name => $value) {
|
||||||
|
$stagesData["$name"] = "$value";
|
||||||
|
}
|
||||||
|
// Load stage levels
|
||||||
|
// Each stage XML object
|
||||||
|
foreach ($stagesXML->stage as $stage) {
|
||||||
|
$rowData = array();
|
||||||
|
// Each attribute name and values on current stage object
|
||||||
|
foreach ($stage->attributes() as $name => $value) {
|
||||||
|
$rowData["$name"] = "$value";
|
||||||
|
}
|
||||||
|
// Populate XML assoc array
|
||||||
|
$stagesData['stages'][] = $rowData;
|
||||||
|
}
|
||||||
|
$cache->setContent($stagesData);
|
||||||
|
$cache->save();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$stagesData = $cache->load();
|
||||||
|
?>
|
||||||
|
<form action="">
|
||||||
|
<input type="submit" name="loadStages" value="Load stages.xml">
|
||||||
|
</form>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
// END STAGES XML TO PHP ARRAY
|
||||||
|
} else {
|
||||||
|
$stagesData = $cache->load();
|
||||||
|
}
|
||||||
|
// End loading stage list
|
||||||
|
|
||||||
|
// Loading config.lua
|
||||||
|
$cache = new Cache('engine/cache/luaconfig');
|
||||||
|
if (user_logged_in() && is_admin($user_data)) {
|
||||||
|
if (isset($_POST['loadConfig']) && isset($_POST['configData'])) {
|
||||||
|
// This will be the populated array with filtered relevant data
|
||||||
|
$luaConfig = array();
|
||||||
|
// Explode the string into string array by newline
|
||||||
|
$rawLua = explode("\n", $_POST['configData']);
|
||||||
|
// Clean up the array
|
||||||
|
$length = count($rawLua);
|
||||||
|
for ($i = 0; $i < $length; $i++) {
|
||||||
|
// We only care about lines that have the = symbol
|
||||||
|
if (strpos($rawLua[$i], '=') !== false) {
|
||||||
|
// Look for inline Lua comments and remove them
|
||||||
|
$comment = strpos($rawLua[$i], '--');
|
||||||
|
if ($comment !== false)
|
||||||
|
$rawLua[$i] = substr($rawLua[$i], 0, $comment);
|
||||||
|
$rawLua[$i] = trim($rawLua[$i]); // Remove uneccesary whitespace
|
||||||
|
// If for some reason the line is empty, ignore it. (Could be a "=" symbol inside an inline Lua comment that we sliced away)
|
||||||
|
if (!empty($rawLua[$i])) {
|
||||||
|
// Built a relevant data array
|
||||||
|
$data = explode('=', $rawLua[$i]);
|
||||||
|
// Remove uneccesary whitespace
|
||||||
|
$data[0] = trim($data[0]);
|
||||||
|
$data[1] = trim($data[1]);
|
||||||
|
// Whitelist for values we are interested in
|
||||||
|
$whitelist = array( // Etc 'maxPlayers'
|
||||||
|
'worldType',
|
||||||
|
'hotkeyAimbotEnabled',
|
||||||
|
'protectionLevel',
|
||||||
|
'killsToRedSkull',
|
||||||
|
'killsToBlackSkull',
|
||||||
|
'pzLocked',
|
||||||
|
'removeChargesFromRunes',
|
||||||
|
'timeToDecreaseFrags',
|
||||||
|
'whiteSkullTime',
|
||||||
|
'stairJumpExhaustion',
|
||||||
|
'experienceByKillingPlayers',
|
||||||
|
'expFromPlayersLevelRange',
|
||||||
|
'loginProtocolPort',
|
||||||
|
'maxPlayers',
|
||||||
|
'motd',
|
||||||
|
'onePlayerOnlinePerAccount',
|
||||||
|
'deathLosePercent',
|
||||||
|
'housePriceEachSQM',
|
||||||
|
'houseRentPeriod',
|
||||||
|
'marketOfferDuration',
|
||||||
|
'premiumToCreateMarketOffer',
|
||||||
|
'maxMarketOffersAtATimePerPlayer',
|
||||||
|
'allowChangeOutfit',
|
||||||
|
'freePremium',
|
||||||
|
'kickIdlePlayerAfterMinutes',
|
||||||
|
'rateExp',
|
||||||
|
'rateSkill',
|
||||||
|
'rateLoot',
|
||||||
|
'rateMagic',
|
||||||
|
'rateSpawn',
|
||||||
|
'staminaSystem'
|
||||||
|
);
|
||||||
|
if (in_array($data[0], $whitelist)) {
|
||||||
|
// Type cast: boolean
|
||||||
|
if (in_array(strtolower($data[1]), array('true', 'false'))) {
|
||||||
|
$data[1] = (strtolower($data[1]) === 'true') ? true : false;
|
||||||
|
} else {
|
||||||
|
// Type cast: integer
|
||||||
|
if (strpos($data[1], '"') === false) {
|
||||||
|
$data[1] = eval('return (' . $data[1] . ');');
|
||||||
|
} else {
|
||||||
|
// Type cast: string, just remove the quote we earlier used to determine if it was a string.
|
||||||
|
$data[1] = str_replace('"', '', $data[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Add the results
|
||||||
|
$luaConfig[$data[0]] = $data[1];
|
||||||
|
} // End whitelisted row
|
||||||
|
} // End not empty row
|
||||||
|
} // Line has \= symbol
|
||||||
|
} // for loop
|
||||||
|
$cache->setContent($luaConfig);
|
||||||
|
$cache->save();
|
||||||
|
} else {
|
||||||
|
$luaConfig = $cache->load();
|
||||||
|
?>
|
||||||
|
<br>
|
||||||
|
<form action="" method="POST">
|
||||||
|
<label for="configData">Find your OT server folder, put the text inside config.lua into this text field:</label><br>
|
||||||
|
<textarea name="configData" placeholder="Open config.lua and copy the content into this text area."></textarea><br>
|
||||||
|
<input type="submit" name="loadConfig" value="Load config data">
|
||||||
|
</form>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$luaConfig = $cache->load();
|
||||||
|
}
|
||||||
|
// End loading config.lua
|
||||||
|
|
||||||
|
$stages = false;
|
||||||
|
|
||||||
|
// Render HTML
|
||||||
|
?>
|
||||||
|
|
||||||
<h1>Server Information</h1>
|
<h1>Server Information</h1>
|
||||||
Here you will find all basic information about <?php echo '<b>'.$config['site_title'].'</b>'; ?>
|
<p>Here you will find all basic information about <b><?php echo $config['site_title']; ?></b></p>
|
||||||
<?php
|
|
||||||
|
|
||||||
// Check if PATH is correct
|
<?php if ($stagesData && $stagesData['enabled']): $stages = true; ?>
|
||||||
$lua_path = getConfigLua();
|
<h2>Server rates</h2>
|
||||||
if ($lua_path && is_array($lua_path)) {
|
<table class="table tbl-hover">
|
||||||
if (!file_exists($config['server_path'].'/data/XML/stages.xml')) {
|
<tbody>
|
||||||
echo 'Couldn\'t locate stages.xml';
|
<tr class="yellow">
|
||||||
return;
|
<td>Minium level</td>
|
||||||
}
|
<td>Maximun level</td>
|
||||||
|
<td>Multiplier</td>
|
||||||
|
</tr>
|
||||||
|
<?php foreach ($stagesData['stages'] as $stage): ?>
|
||||||
|
<tr>
|
||||||
|
<td><?php echo $stage['minlevel']; ?></td>
|
||||||
|
<td><?php echo (isset($stage['maxlevel'])) ? $stage['maxlevel'] : "Unlimited"; ?></td>
|
||||||
|
<td><?php echo $stage['multiplier']; ?>x</td>
|
||||||
|
</tr>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
$stages_path = simplexml_load_file($config['server_path'].'/data/XML/stages.xml');
|
<?php if ($luaConfig): ?>
|
||||||
echo '<h2>Server rates</h2>';
|
<table class="table tbl-hover">
|
||||||
if ($stages_path->config['enabled'] != 0) {
|
<tbody>
|
||||||
// Stages are beeing used
|
<tr class="yellow">
|
||||||
echo "<table class='table table-striped table-hover'>
|
<?php if (!$stages): ?>
|
||||||
<tbody><tr class='yellow'><td>Minium level</td><td>Maximun level</td><td>Multiplier</td></tr>";
|
<td>Experience rate</td>
|
||||||
|
<?php endif; ?>
|
||||||
|
<td>Skills rate</td>
|
||||||
|
<td>Magic rate</td>
|
||||||
|
<td>Loot rate</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<?php if (!$stages): ?>
|
||||||
|
<td><?php echo $luaConfig['rateExp']; ?></td>
|
||||||
|
<?php endif; ?>
|
||||||
|
<td><?php echo $luaConfig['rateSkill']; ?></td>
|
||||||
|
<td><?php echo $luaConfig['rateMagic']; ?></td>
|
||||||
|
<td><?php echo $luaConfig['rateLoot']; ?></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
foreach ($stages_path->children()->stage as $stages) {
|
<h2>Miscellaneous information</h2>
|
||||||
|
<table class="table tbl-hover">
|
||||||
|
<tbody>
|
||||||
|
<tr class="yellow">
|
||||||
|
<td colspan="2">Connection information</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Client</td>
|
||||||
|
<td><?php echo ($config['client'] / 100); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>IP</td>
|
||||||
|
<td><?php echo $_SERVER['SERVER_NAME']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Port</td>
|
||||||
|
<td><?php echo $luaConfig['loginProtocolPort']; ?></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
if($stages['maxlevel'] === NULL) {
|
<table class="table tbl-hover">
|
||||||
echo '<tr><td><center>'.$stages['minlevel'].'</center></td><td><center>Infinite</center></td><td><center>x'.$stages['multiplier'].'</center></td></tr>';
|
<tbody>
|
||||||
} else {
|
<tr class="yellow">
|
||||||
echo '<tr><td><center>'.$stages['minlevel'].'</center></td><td><center>'.$stages['maxlevel'].'</center></td><td><center>x'.$stages['multiplier'].'</center></td></tr>';
|
<td colspan="2">PvP information</td>
|
||||||
}
|
</tr>
|
||||||
}
|
<tr>
|
||||||
echo '</tbody></table>';
|
<td>World type</td>
|
||||||
|
<td><?php echo $luaConfig['worldType']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Hotkey aimbot</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['hotkeyAimbotEnabled']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Protection level</td>
|
||||||
|
<td><?php echo $luaConfig['protectionLevel']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Kills to red skull</td>
|
||||||
|
<td><?php echo $luaConfig['killsToRedSkull']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Kills to black skull</td>
|
||||||
|
<td><?php echo $luaConfig['killsToBlackSkull']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Remove rune charges</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['removeChargesFromRunes']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Time to decrease frags</td>
|
||||||
|
<td><?php echo toDuration($luaConfig['timeToDecreaseFrags']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Experience by killing players</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['experienceByKillingPlayers']); ?></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
} else {
|
<?php if ($luaConfig['experienceByKillingPlayers']): ?>
|
||||||
// Not using stages
|
<tr>
|
||||||
echo "<table class='table table-striped table-hover'>
|
<td>Experience gain kill treshhold:</td>
|
||||||
<tbody><tr class='yellow'><td>Experience rate</td></tr>
|
<td><?php echo $luaConfig['expFromPlayersLevelRange']; ?>% of your level</td>
|
||||||
<tr><td><center>x".$lua_path['rateExp']."</center></td></tr>
|
</tr>
|
||||||
</tbody></table>";
|
<?php endif; ?>
|
||||||
}
|
|
||||||
echo "<table class='table table-striped table-hover'>
|
|
||||||
<tbody><tr class='yellow'><td>Skills rate</td><td>Magic rate</td><td>Loot rate</td></tr>
|
|
||||||
<tr><td><center>x".$lua_path['rateSkill']."</center></td><td><center>x".$lua_path['rateMagic']."</center></td><td><center>x".$lua_path['rateLoot']."</center></td></tr>
|
|
||||||
</tbody></table>";
|
|
||||||
|
|
||||||
// General info
|
<tr>
|
||||||
$information = array(
|
<td>White skull duration</td>
|
||||||
'World type' => $lua_path['worldType'],
|
<td><?php echo toDuration($luaConfig['whiteSkullTime']); ?></td>
|
||||||
'Protection level' => $lua_path['protectionLevel'],
|
</tr>
|
||||||
'Kills to red skull' => $lua_path['killsToRedSkull'],
|
<tr>
|
||||||
'Kills to black skull' => $lua_path['killsToBlackSkull'],
|
<td>Protection zone lock (non lethal attack)</td>
|
||||||
'Remove ammo' => $lua_path['removeAmmoWhenUsingDistanceWeapon'],
|
<td><?php echo toDuration($luaConfig['pzLocked']); ?></td>
|
||||||
'Remove runes' => $lua_path['removeChargesFromRunes'],
|
</tr>
|
||||||
'Time to decrease frags' => $lua_path['timeToDecreaseFrags'],
|
<tr>
|
||||||
'House rent period' => $lua_path['houseRentPeriod'],
|
<td>Stair jump exhaust</td>
|
||||||
'AFK Kickout minutes' => $lua_path['kickIdlePlayerAfterMinutes'],
|
<td><?php echo toDuration($luaConfig['stairJumpExhaustion']); ?></td>
|
||||||
'Location' => $lua_path['location'],
|
</tr>
|
||||||
'Owner name' => $lua_path['ownerName']
|
</tbody>
|
||||||
);
|
</table>
|
||||||
|
|
||||||
echo "<h2>Server general information</h2><ul>";
|
|
||||||
foreach ($information as $key => $value) {
|
|
||||||
echo "<li>".$key." - <b>".$value."</b></li>";
|
|
||||||
}
|
|
||||||
|
|
||||||
echo '</ul>';
|
|
||||||
|
|
||||||
} else {
|
|
||||||
echo '<h1>Cannot find the file <strong>config.lua</strong></h1>';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
<table class="table tbl-hover">
|
||||||
|
<tbody>
|
||||||
|
<tr class="yellow">
|
||||||
|
<td colspan="2">Other information</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Free premium</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['freePremium']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>House rent period</td>
|
||||||
|
<td><?php echo $luaConfig['houseRentPeriod']; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>House SQM price</td>
|
||||||
|
<td><?php echo $luaConfig['housePriceEachSQM']; ?> gp</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>AFK kickout</td>
|
||||||
|
<td><?php echo toDuration($luaConfig['kickIdlePlayerAfterMinutes'] * 60 * 1000); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>One player online per account</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['stairJumpExhaustion']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Max players online server limit</td>
|
||||||
|
<td><?php echo ($luaConfig['maxPlayers'] > 0) ? $luaConfig['maxPlayers'] : 'Unlimited'; ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Allow outfit change</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['allowChangeOutfit']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Stamina system</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['staminaSystem']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Premium to add items to market</td>
|
||||||
|
<td><?php echo toYesNo($luaConfig['premiumToCreateMarketOffer']); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Market offer duration</td>
|
||||||
|
<td><?php echo toDuration($luaConfig['marketOfferDuration'] * 1000); ?></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php else: ?>
|
||||||
|
<p>The server administrator has yet to import server information to this page.</p>
|
||||||
|
<?php endif;
|
||||||
include 'layout/overall/footer.php'; ?>
|
include 'layout/overall/footer.php'; ?>
|
Loading…
x
Reference in New Issue
Block a user