function lgsl_query_live($type, $ip, $c_port, $q_port, $s_port, $request) { //---------------------------------------------------------+ if (preg_match("/[^0-9a-z\\.\\-\\[\\]\\:]/i", $ip)) { exit("LGSL PROBLEM: INVALID IP OR HOSTNAME"); } $lgsl_protocol_list = lgsl_protocol_list(); if (!isset($lgsl_protocol_list[$type])) { exit("LGSL PROBLEM: " . ($type ? "INVALID TYPE '{$type}'" : "MISSING TYPE") . " FOR {$ip}, {$c_port}, {$q_port}, {$s_port}"); } $lgsl_function = "lgsl_query_{$lgsl_protocol_list[$type]}"; if (!function_exists($lgsl_function)) { exit("LGSL PROBLEM: FUNCTION DOES NOT EXIST FOR: {$type}"); } if (!intval($q_port)) { exit("LGSL PROBLEM: INVALID QUERY PORT"); } //---------------------------------------------------------+ // ARRAYS ARE SETUP IN ADVANCE $server = array("b" => array("type" => $type, "ip" => $ip, "c_port" => $c_port, "q_port" => $q_port, "s_port" => $s_port, "status" => 1), "s" => array("game" => "", "name" => "", "map" => "", "players" => 0, "playersmax" => 0, "password" => ""), "e" => array(), "p" => array(), "t" => array()); //---------------------------------------------------------+ // GET DATA if ($lgsl_function == "lgsl_query_01") { $lgsl_need = ""; $lgsl_fp = ""; $response = call_user_func_array($lgsl_function, array(&$server, &$lgsl_need, &$lgsl_fp)); return $server; } global $lgsl_config; // FEED ENABLED BY EXTERNAL CONFIG SETTING if (!empty($lgsl_config['feed']['method']) && !empty($lgsl_config['feed']['url'])) { $response = lgsl_query_feed($server, $request, $lgsl_config['feed']['method'], $lgsl_config['feed']['url']); } elseif ($lgsl_function == "lgsl_query_30") { $response = lgsl_query_direct($server, $request, $lgsl_function, "tcp"); } else { $response = lgsl_query_direct($server, $request, $lgsl_function, "udp"); } //---------------------------------------------------------+ // FORMAT RESPONSE if (!$response) { $server['b']['status'] = 0; } else { // IF NOT RETURNED USE THE TYPE AS THE GAME if (empty($server['s']['game'])) { $server['s']['game'] = $type; } // REMOVE FOLDERS FROM MAP NAMES if (($pos = strrpos($server['s']['map'], "/")) !== FALSE) { $server['s']['map'] = substr($server['s']['map'], $pos + 1); } if (($pos = strrpos($server['s']['map'], "\\")) !== FALSE) { $server['s']['map'] = substr($server['s']['map'], $pos + 1); } // PLAYER COUNT AND PASSWORD STATUS SHOULD BE NUMERIC $server['s']['players'] = intval($server['s']['players']); $server['s']['playersmax'] = intval($server['s']['playersmax']); if (strtolower($server['s']['password']) == "false") { $server['s']['password'] = 0; } if (strtolower($server['s']['password']) == "true") { $server['s']['password'] = 1; } $server['s']['password'] = intval($server['s']['password']); // REMOVE UN-REQUESTED AND UN-USED ARRAYS if (strpos($request, "p") === FALSE && !$server['p'] && $server['s']['players'] != 0) { unset($server['p']); } if (strpos($request, "p") === FALSE && !$server['t']) { unset($server['t']); } if (strpos($request, "e") === FALSE && !$server['e']) { unset($server['e']); } if (strpos($request, "s") === FALSE && !$server['s']['name'] && !$server['s']['map']) { unset($server['s']); } } //---------------------------------------------------------+ return $server; }
/*----------------------------------------------------------------------------------------------------------\ | | | [ 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) | | | \-----------------------------------------------------------------------------------------------------------*/ //------------------------------------------------------------------------------------------------------------+ if (!defined("LGSL_ADMIN")) { exit("DIRECT ACCESS ADMIN FILE NOT ALLOWED"); } require "lgsl_class.php"; lgsl_database(); $lgsl_type_list = lgsl_type_list(); asort($lgsl_type_list); $lgsl_protocol_list = lgsl_protocol_list(); $id = 0; $last_type = "source"; $zone_list = array(0, 1, 2, 3, 4, 5, 6, 7, 8); //------------------------------------------------------------------------------------------------------------+ if (!function_exists("fsockopen") && !$lgsl_config['feed']['method']) { if (function_exists("curl_init") && function_exists("curl_setopt") && function_exists("curl_exec")) { $output = "<div style='text-align:center'><br /><br /><b>FSOCKOPEN IS DISABLED - YOU MUST ENABLE THE FEED OPTION</b><br /><br /></div>" . lgsl_help_info(); return; } else { $output = "<div style='text-align:center'><br /><br /><b>FSOCKOPEN AND CURL ARE DISABLED - LGSL WILL NOT WORK ON THIS HOST</b><br /><br /></div>" . lgsl_help_info(); return; } } //------------------------------------------------------------------------------------------------------------+ if ($_POST && get_magic_quotes_gpc()) {