| | \-----------------------------------------------------------------------------------------------------------*/ //------------------------------------------------------------------------------------------------------------+ require "lgsl_class.php"; //------------------------------------------------------------------------------------------------------------+ // THIS CONTROLS HOW THE PLAYER FIELDS ARE DISPLAYED $fields_show = array("name", "score", "kills", "deaths", "team", "ping", "bot", "time"); // ORDERED FIRST $fields_hide = array("teamindex", "pid", "pbguid"); // REMOVED $fields_other = TRUE; // FALSE TO ONLY SHOW FIELDS IN $fields_show //------------------------------------------------------------------------------------------------------------+ // GET THE SERVER DETAILS AND PREPARE IT FOR DISPLAY global $lgsl_server_id; $server = lgsl_query_cached("", "", "", "", "", "sep", $lgsl_server_id); if (!$server) { $output .= "<div style='margin:auto; text-align:center'> {$lgsl_config['text']['mid']} </div>"; return; } $fields = lgsl_sort_fields($server, $fields_show, $fields_hide, $fields_other); $server = lgsl_sort_players($server); $server = lgsl_sort_extras($server); $misc = lgsl_server_misc($server); $server = lgsl_server_html($server); //------------------------------------------------------------------------------------------------------------+ $output .= "\r\n <div style='margin:auto; text-align:center'>"; $output .= "\r\n <div style='" . lgsl_bg(TRUE) . "; width:90%; margin:auto; text-align:center; height:6px; border:1px solid'><br /></div>\r\n <div style='height:10px'><br /></div>"; //------------------------------------------------------------------------------------------------------------+ // SHOW THE STANDARD INFO $output .= "\r\n <table cellpadding='2' cellspacing='2' style='margin:auto'>\r\n <tr>\r\n <td colspan='3' style='text-align:center'>\r\n <b> {$server['s']['name']} </b><br /><br />\r\n </td>\r\n </tr>\r\n </table>\r\n <table cellpadding='2' cellspacing='2' style='margin:auto'>\r\n <tr>\r\n <td colspan='2' style='text-align:center'>\r\n <table cellpadding='4' cellspacing='2' style='width:100%; margin:auto'>\r\n <tr><td style='" . lgsl_bg(TRUE) . "; text-align:center'><a href='{$misc['software_link']}'>{$lgsl_config['text']['slk']}</a></td></tr>\r\n </table>\r\n </td>\r\n <td rowspan='2' style='text-align:center; vertical-align:top'>\r\n <div style='width:{$lgsl_config['zone']['width']}px; padding:2px; position:relative; margin:auto'>\r\n <img alt='' src='{$misc['image_map']}' style='vertical-align:middle' />\r\n <img alt='' src='{$misc['image_map_password']}' style='position:absolute; z-index:2; top:0px; left:0px;' />\r\n <img alt='' src='{$misc['icon_game']}' title='{$misc['text_type_game']}' style='position:absolute; z-index:2; top:6px; left:6px;' />\r\n <img alt='' src='{$misc['icon_location']}' title='{$misc['text_location']}' style='position:absolute; z-index:2; top:6px; right:6px;' />\r\n </div>\r\n </td>\r\n </tr>\r\n <tr>\r\n <td style='text-align:center'>\r\n <table cellpadding='4' cellspacing='2' style='margin:auto'>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['sts']} </b></td><td style='white-space:nowrap'> {$misc['text_status']} </td></tr>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['adr']} </b></td><td style='white-space:nowrap'> {$server['b']['ip']} </td></tr>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['cpt']} </b></td><td style='white-space:nowrap'> {$server['b']['c_port']} </td></tr>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['qpt']} </b></td><td style='white-space:nowrap'> {$server['b']['q_port']} </td></tr>\r\n </table>\r\n </td>\r\n <td style='text-align:center'>\r\n <table cellpadding='4' cellspacing='2' style='margin:auto'>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['typ']} </b></td><td style='white-space:nowrap'> {$server['b']['type']} </td></tr>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['gme']} </b></td><td style='white-space:nowrap'> {$server['s']['game']} </td></tr>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['map']} </b></td><td style='white-space:nowrap'> {$server['s']['map']} </td></tr>\r\n <tr style='" . lgsl_bg() . ";white-space:nowrap'><td> <b> {$lgsl_config['text']['plr']} </b></td><td style='white-space:nowrap'> {$server['s']['players']} / {$server['s']['playersmax']} </td></tr>\r\n </table>\r\n </td>\r\n </tr>\r\n </table>";
function lgsl_query_group($options = array()) { if (!is_array($options)) { exit("LGSL PROBLEM: lgsl_query_group OPTIONS MUST BE ARRAY"); } global $lgsl_config; lgsl_database(); $request = isset($options['request']) ? $options['request'] : "s"; $zone = isset($options['zone']) ? intval($options['zone']) : 0; $hide_offline = isset($options['hide_offline']) ? intval($options['hide_offline']) : intval($lgsl_config['hide_offline'][$zone]); $random = isset($options['random']) ? intval($options['random']) : intval($lgsl_config['random'][$zone]); $type = empty($options['type']) ? "" : preg_replace("/[^a-z0-9_]/", "_", strtolower($options['type'])); $game = empty($options['game']) ? "" : preg_replace("/[^a-z0-9_]/", "_", strtolower($options['game'])); $mysql_order = empty($random) ? "`cache_time` ASC" : "rand()"; $server_limit = empty($random) ? 0 : $random; $mysql_where = array("`disabled`=0"); if ($zone != 0) { $mysql_where[] = "FIND_IN_SET('{$zone}',`zone`)"; } if ($type != "") { $mysql_where[] = "`type`='{$type}'"; } $mysql_query = "SELECT `id` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE " . implode(" AND ", $mysql_where) . " ORDER BY {$mysql_order}"; $mysql_result = mysql_query($mysql_query) or die(mysql_error()); $server_list = array(); while ($mysql_row = mysql_fetch_array($mysql_result, MYSQL_ASSOC)) { if (strpos($request, "c") === FALSE && lgsl_timer("check")) { $request .= "c"; } $server = lgsl_query_cached("", "", "", "", "", $request, $mysql_row['id']); if ($hide_offline && empty($server['b']['status'])) { continue; } if ($game && $game != preg_replace("/[^a-z0-9_]/", "_", strtolower($server['s']['game']))) { continue; } $server_list[] = $server; if ($server_limit && count($server_list) >= $server_limit) { break; } } return $server_list; }
| | | [ LIVE GAME SERVER LIST ] [ © RICHARD PERRY FROM GREYCUBE.COM ] | | | | Released under the terms and conditions of the GNU General Public License Version 3 (http://gnu.org) | | | \-----------------------------------------------------------------------------------------------------------*/ //------------------------------------------------------------------------------------------------------------+ require "lgsl_class.php"; lgsl_database(); //------------------------------------------------------------------------------------------------------------+ // CRON SETTINGS: @set_time_limit(3600); // MAXIMUM TIME THE CRON IS ALLOWED TO TAKE $lgsl_config['cache_time'] = 60; // HOW OLD CACHE MUST BE BEFORE IT NEEDS REFRESHING $request = "sep"; // WHAT TO PRE-CACHE: [s] = BASIC INFO [e] = SETTINGS [p] = PLAYERS //------------------------------------------------------------------------------------------------------------+ echo "<pre>STARTING [ TIME LIMIT: " . ini_get("max_execution_time") . " ] [ CACHE TIME: {$lgsl_config['cache_time']} ]\r\n\r\n"; //------------------------------------------------------------------------------------------------------------+ $mysql_query = "SELECT `type`,`ip`,`c_port`,`q_port`,`s_port` FROM `{$lgsl_config['db']['prefix']}{$lgsl_config['db']['table']}` WHERE `disabled`=0 ORDER BY `cache_time` ASC"; $mysql_result = mysql_query($mysql_query) or die(mysql_error()); while ($mysql_row = mysql_fetch_array($mysql_result, MYSQL_ASSOC)) { echo str_pad(lgsl_timer("taken"), 8, " ") . ":" . str_pad($mysql_row['type'], 15, " ") . ":" . str_pad($mysql_row['ip'], 30, " ") . ":" . str_pad($mysql_row['c_port'], 6, " ") . ":" . str_pad($mysql_row['q_port'], 6, " ") . ":" . str_pad($mysql_row['s_port'], 12, " ") . "\r\n"; lgsl_query_cached($mysql_row['type'], $mysql_row['ip'], $mysql_row['c_port'], $mysql_row['q_port'], $mysql_row['s_port'], $request); flush(); ob_flush(); } //------------------------------------------------------------------------------------------------------------+ echo "\r\nFINISHED</pre>"; //------------------------------------------------------------------------------------------------------------+
if (!isset($lgsl_protocol_list[$type])) { exit("LGSL FEED PROBLEM: " . ($type ? "UNKNOWN TYPE '{$type}'" : "MISSING TYPE") . " FOR {$ip} : {$c_port} : {$q_port} : {$s_port}"); } //------------------------------------------------------------------------------------------------------------+ // FILTER HOSTNAME AND IP FORMATS THAT PHP ACCEPTS BUT ARE NOT WANTED if (preg_match("/(\\[[0-9a-z\\:]+\\])/iU", $ip, $match)) { $ip = $match[1]; } elseif (preg_match("/([0-9a-z\\.\\-]+)/i", $ip, $match)) { $ip = $match[1]; } //------------------------------------------------------------------------------------------------------------+ // CHECK PUBLIC FEED SETTING AND EITHER ADD [a] REQUEST OR ENSURE [a] IS REMOVED $request = $lgsl_config['public_feed'] ? $request . "a" : str_replace("a", "", $request); //------------------------------------------------------------------------------------------------------------+ // QUERY SERVER $server = lgsl_query_cached($type, $ip, $c_port, $q_port, $s_port, $request); //------------------------------------------------------------------------------------------------------------+ // ADD THE FEED PROVIDER if ($server['e']) { $server['e']['_feed_'] = "http://{$_SERVER['HTTP_HOST']}"; } //------------------------------------------------------------------------------------------------------------+ // FEED USAGE LOGGING - 'logs' FOLDER MUST BE MANUALLY CREATED AND SET AS WRITABLE if (is_dir("logs") && is_writable("logs")) { // $file_path = "logs/log_feed.html"; $file_path = "logs/log_feed_{$_SERVER['REMOTE_ADDR']}.html"; if (filesize($file_path) > 1234567) { unlink($file_path); } $file_handle = fopen($file_path, "a"); $file_string = "\n [ " . date("Y/m/d H:i:s") . " ] {$type}:{$ip}:{$c_port}:{$q_port}:{$s_port}:{$request}\n [ <a href='http://" . lgsl_string_html($_SERVER['REMOTE_ADDR']) . "'>" . lgsl_string_html($_SERVER['REMOTE_ADDR']) . "</a> ]\n [ <a href='" . lgsl_string_html($_SERVER['HTTP_REFERER']) . "'>" . lgsl_string_html($_SERVER['HTTP_REFERER']) . "</a> ]\n " . ($version ? " [ {$version} ] " : "") . "\n " . ($xml ? " [ XML ] " : "") . "\n <br />";
$hdd_total = intval(trim($ssh->exec("df -P / | tail -n +2 | head -n 1 | awk '{print \$2}'"))) * 1024; $hdd_used = intval(trim($ssh->exec("df -P / | tail -n +2 | head -n 1 | awk '{print \$3}'"))) * 1024; $hdd_free = intval(trim($ssh->exec("df -P / | tail -n +2 | head -n 1 | awk '{print \$4}'"))) * 1024; $hdd_usage = intval(substr(trim($ssh->exec("df -P / | tail -n +2 | head -n 1 | awk '{print \$5}'")), 0, -1)); //------------------------------------------------------------------------------------------------------------+ //Retrieves num players of the box $p = 0; $servers = mysql_query("SELECT * FROM `" . DBPREFIX . "server` WHERE `boxid` = '" . $rowsBoxes['boxid'] . "'"); while ($rowsServers = mysql_fetch_assoc($servers)) { $type = query_fetch_assoc("SELECT `querytype` FROM `" . DBPREFIX . "game` WHERE `gameid` = '" . $rowsServers['gameid'] . "' LIMIT 1"); $serverIp = query_fetch_assoc("SELECT `ip` FROM `" . DBPREFIX . "boxIp` WHERE `ipid` = '" . $rowsServers['ipid'] . "' LIMIT 1"); if ($rowsServers['status'] == 'Active' && $rowsServers['panelstatus'] == 'Started') { //---------------------------------------------------------+ //Querying the server include_once "../libs/lgsl/lgsl_class.php"; $cache = lgsl_query_cached($type['querytype'], $serverIp['ip'], $rowsServers['port'], $rowsServers['queryport'], 0, 'sp'); $p = $p + $cache['s']['players']; unset($cache); //---------------------------------------------------------+ } unset($type); unset($serverIp); } unset($servers); //------------------------------------------------------------------------------------------------------------+ //Data $boxCache = array($rowsBoxes['boxid'] => array('players' => array('players' => $p), 'bandwidth' => array('rx_usage' => $bandwidth_rx_usage, 'tx_usage' => $bandwidth_tx_usage, 'rx_total' => $bandwidth_rx_total, 'tx_total' => $bandwidth_tx_total), 'cpu' => array('proc' => $cpu_proc, 'cores' => $cpu_cores, 'usage' => $cpu_usage), 'ram' => array('total' => $ram_total, 'used' => $ram_used, 'free' => $ram_free, 'usage' => $ram_usage), 'loadavg' => array('loadavg' => $loadavg), 'hostname' => array('hostname' => $hostname), 'os' => array('os' => $os), 'date' => array('date' => $date), 'kernel' => array('kernel' => $kernel), 'arch' => array('arch' => $arch), 'uptime' => array('uptime' => $uptime), 'swap' => array('total' => $swap_total, 'used' => $swap_used, 'free' => $swap_free, 'usage' => $swap_usage), 'hdd' => array('total' => $hdd_total, 'used' => $hdd_used, 'free' => $hdd_free, 'usage' => $hdd_usage))); unset($p, $bandwidth_rx_total, $bandwidth_tx_total, $bandwidth_rx_usage, $bandwidth_tx_usage, $cpu_proc, $cpu_cores, $cpu_usage); unset($ram_used, $ram_free, $ram_total, $ram_usage, $loadavg, $hostname, $os, $date, $kernel, $arch, $uptime); unset($swap_used, $swap_free, $swap_total, $swap_usage, $hdd_total, $hdd_used, $hdd_free, $hdd_usage); //------------------------------------------------------------------------------------------------------------+
$slots = abs($slots); $port = abs($port); $queryport = abs($queryport); ### $serverIp = query_fetch_assoc("SELECT `ip` FROM `" . DBPREFIX . "boxIp` WHERE `ipid` = '" . $ipid . "' LIMIT 1"); ### //We update the database query_basic("UPDATE `" . DBPREFIX . "server` SET\n\t\t\t`groupid` = '" . $groupid . "',\n\t\t\t`boxid` = '" . $boxid . "',\n\t\t\t`ipid` = '" . $ipid . "',\n\t\t\t`name` = '" . $name . "',\n\t\t\t`status` = '" . $status . "',\n\t\t\t`slots` = '" . $slots . "',\n\t\t\t`port` = '" . $port . "',\n\t\t\t`queryport` = '" . $queryport . "',\n\t\t\t`priority` = '" . $priority . "',\n\t\t\t`cfg1name` = '" . $cfg1Name . "',\n\t\t\t`cfg1` = '" . $cfg1 . "',\n\t\t\t`cfg2name` = '" . $cfg2Name . "',\n\t\t\t`cfg2` = '" . $cfg2 . "',\n\t\t\t`cfg3name` = '" . $cfg3Name . "',\n\t\t\t`cfg3` = '" . $cfg3 . "',\n\t\t\t`cfg4name` = '" . $cfg4Name . "',\n\t\t\t`cfg4` = '" . $cfg4 . "',\n\t\t\t`cfg5name` = '" . $cfg5Name . "',\n\t\t\t`cfg5` = '" . $cfg5 . "',\n\t\t\t`cfg6name` = '" . $cfg6Name . "',\n\t\t\t`cfg6` = '" . $cfg6 . "',\n\t\t\t`cfg7name` = '" . $cfg7Name . "',\n\t\t\t`cfg7` = '" . $cfg7 . "',\n\t\t\t`cfg8name` = '" . $cfg8Name . "',\n\t\t\t`cfg8` = '" . $cfg8 . "',\n\t\t\t`cfg9name` = '" . $cfg9Name . "',\n\t\t\t`cfg9` = '" . $cfg9 . "',\n\t\t\t`startline` = '" . $startline . "',\n\t\t\t`path` = '" . $path . "',\n\t\t\t`screen` = '" . preg_replace('#[^a-zA-Z0-9]#', "_", $name) . "' WHERE `serverid` = '" . $serverid . "'"); ### //LGSL query_basic("UPDATE `" . DBPREFIX . "lgsl` SET\n\t\t\t`ip` = '" . $serverIp['ip'] . "',\n\t\t\t`c_port` = '" . $port . "',\n\t\t\t`q_port` = '" . $queryport . "',\n\t\t\t`s_port` = '0',\n\t\t\t`zone` = '0',\n\t\t\t`disabled` = '0',\n\t\t\t`comment` = '" . $name . "',\n\t\t\t`status` = '1' WHERE `id` = '" . $serverid . "'"); ### //Update LGSL cache ### include_once "../libs/lgsl/lgsl_class.php"; lgsl_query_cached("", "", "", "", "", "sep", $serverid); ### //Adding event to the database $message = "Server Edited: " . $name; query_basic("INSERT INTO `" . DBPREFIX . "log` SET `serverid` = '" . $serverid . "', `message` = '" . $message . "', `name` = '" . mysql_real_escape_string($_SESSION['adminfirstname']) . " " . mysql_real_escape_string($_SESSION['adminlastname']) . "', `ip` = '" . $_SERVER['REMOTE_ADDR'] . "'"); ### $_SESSION['msg1'] = T_('Server Updated Successfully!'); $_SESSION['msg2'] = T_('Your changes to the server have been saved.'); $_SESSION['msg-type'] = 'success'; header("Location: serversummary.php?id=" . urlencode($serverid)); die; break; case 'servervalidation': $serverid = $_GET['serverid']; ### $error = '';