From 0b442e9095a33cf40ddc76cde34d4a2ed18bf329 Mon Sep 17 00:00:00 2001
From: Znote
Date: Thu, 16 Feb 2017 04:38:02 +0100
Subject: [PATCH] Remade serverinfo.php. Loads stages.xml, imports config.lua
from textarea instead of requiring access to OT directory. Gives much more
server information.
---
engine/XML/stages.xml | 9 +
engine/function/general.php | 17 --
serverinfo.php | 398 ++++++++++++++++++++++++++++++------
3 files changed, 346 insertions(+), 78 deletions(-)
create mode 100644 engine/XML/stages.xml
diff --git a/engine/XML/stages.xml b/engine/XML/stages.xml
new file mode 100644
index 0000000..beb1e51
--- /dev/null
+++ b/engine/XML/stages.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/engine/function/general.php b/engine/function/general.php
index 90baa8d..1cc9754 100644
--- a/engine/function/general.php
+++ b/engine/function/general.php
@@ -40,23 +40,6 @@ function data_dump($print = false, $var = false, $title = false) {
echo '
';
}
-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) {
$accountId = (int)$accountId;
$access = 0;
diff --git a/serverinfo.php b/serverinfo.php
index aee45ec..78423ee 100644
--- a/serverinfo.php
+++ b/serverinfo.php
@@ -1,70 +1,346 @@
-
+ 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 "Logged in as admin, loading engine/XML/stages.xml file and updating cache.
";
+ // 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();
+ ?>
+
+ 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();
+ ?>
+
+
+ load();
+}
+// End loading config.lua
+
+$stages = false;
+
+// Render HTML
+?>
Server Information
-Here you will find all basic information about '.$config['site_title'].''; ?>
-Here you will find all basic information about
-// Check if PATH is correct
-$lua_path = getConfigLua();
-if ($lua_path && is_array($lua_path)) {
- if (!file_exists($config['server_path'].'/data/XML/stages.xml')) {
- echo 'Couldn\'t locate stages.xml';
- return;
- }
+
+ Server rates
+
+
+
+ Minium level |
+ Maximun level |
+ Multiplier |
+
+
+
+ |
+ |
+ x |
+
+
+
+
+
- $stages_path = simplexml_load_file($config['server_path'].'/data/XML/stages.xml');
- echo 'Server rates
';
- if ($stages_path->config['enabled'] != 0) {
- // Stages are beeing used
- echo "
- Minium level | Maximun level | Multiplier |
";
+
+
+
+
+
+ Experience rate |
+
+ Skills rate |
+ Magic rate |
+ Loot rate |
+
+
+
+ |
+
+ |
+ |
+ |
+
+
+
- foreach ($stages_path->children()->stage as $stages) {
+ Miscellaneous information
+
+
+
+ Connection information |
+
+
+ Client |
+ |
+
+
+ IP |
+ |
+
+
+ Port |
+ |
+
+
+
- if($stages['maxlevel'] === NULL) {
- echo ''.$stages['minlevel'].' | Infinite | x'.$stages['multiplier'].' |
';
- } else {
- echo ''.$stages['minlevel'].' | '.$stages['maxlevel'].' | x'.$stages['multiplier'].' |
';
- }
- }
- echo '
';
+
+
+
+ PvP information |
+
+
+ World type |
+ |
+
+
+ Hotkey aimbot |
+ |
+
+
+ Protection level |
+ |
+
+
+ Kills to red skull |
+ |
+
+
+ Kills to black skull |
+ |
+
+
+ Remove rune charges |
+ |
+
+
+ Time to decrease frags |
+ |
+
+
+ Experience by killing players |
+ |
+
- } else {
- // Not using stages
- echo "
- Experience rate |
- x".$lua_path['rateExp']." |
-
";
- }
- echo "
- Skills rate | Magic rate | Loot rate |
- x".$lua_path['rateSkill']." | x".$lua_path['rateMagic']." | x".$lua_path['rateLoot']." |
-
";
+
+
+ Experience gain kill treshhold: |
+ % of your level |
+
+
- // General info
- $information = array(
- 'World type' => $lua_path['worldType'],
- 'Protection level' => $lua_path['protectionLevel'],
- 'Kills to red skull' => $lua_path['killsToRedSkull'],
- 'Kills to black skull' => $lua_path['killsToBlackSkull'],
- 'Remove ammo' => $lua_path['removeAmmoWhenUsingDistanceWeapon'],
- 'Remove runes' => $lua_path['removeChargesFromRunes'],
- 'Time to decrease frags' => $lua_path['timeToDecreaseFrags'],
- 'House rent period' => $lua_path['houseRentPeriod'],
- 'AFK Kickout minutes' => $lua_path['kickIdlePlayerAfterMinutes'],
- 'Location' => $lua_path['location'],
- 'Owner name' => $lua_path['ownerName']
- );
+
+ White skull duration |
+ |
+
+
+ Protection zone lock (non lethal attack) |
+ |
+
+
+ Stair jump exhaust |
+ |
+
+
+
- echo "Server general information
";
- foreach ($information as $key => $value) {
- echo "- ".$key." - ".$value."
";
- }
-
- echo '
';
-
-} else {
- echo 'Cannot find the file config.lua
';
-}
-
-include 'layout/overall/footer.php'; ?>
+
+
+
+ Other information |
+
+
+ Free premium |
+ |
+
+
+ House rent period |
+ |
+
+
+ House SQM price |
+ gp |
+
+
+ AFK kickout |
+ |
+
+
+ One player online per account |
+ |
+
+
+ Max players online server limit |
+ 0) ? $luaConfig['maxPlayers'] : 'Unlimited'; ?> |
+
+
+ Allow outfit change |
+ |
+
+
+ Stamina system |
+ |
+
+
+ Premium to add items to market |
+ |
+
+
+ Market offer duration |
+ |
+
+
+
+
+ The server administrator has yet to import server information to this page.
+
\ No newline at end of file