示例#1
0
 public function query($srv_arr)
 {
     // No GameQ type - try a basic TCP check
     if (empty($srv_arr[0]['gameq_name']) || $srv_arr[0]['gameq_name'] == 'none') {
         // Setup language
         require DOCROOT . '/lang.php';
         $results = array();
         // Offline / Not responding
         if (!fsockopen($srv_arr[0]['ip'], $srv_arr[0]['port'], $errno, $errstr, 4)) {
             $srv_status = strtolower($lang['offline']);
         } else {
             $srv_status = strtolower($lang['online']);
         }
         // Add status
         $srv_id = $srv_arr[0]['id'];
         $results[$srv_id]['gq_online'] = $srv_status;
     } else {
         require DOCROOT . '/includes/GameQ/GameQ.php';
         // Have to specify query port for some servers
         if ($srv_arr[0]['gameq_name'] == 'mta') {
             $srv_arr[0]['port'] = '22126';
         }
         $server = array('id' => $srv_arr[0]['id'], 'type' => $srv_arr[0]['gameq_name'], 'host' => $srv_arr[0]['ip'] . ':' . $srv_arr[0]['port']);
         // Call the class, and add your servers.
         $gq = new GameQ();
         $gq->addServer($server);
         // You can optionally specify some settings
         $gq->setOption('timeout', 5);
         // Seconds
         #$gq->setOption('debug', TRUE);
         $gq->setFilter('normalise');
         $results = $gq->requestData();
     }
     return $results;
 }
 protected function queryServer($server, &$response)
 {
     gameservers_include_library('GameQ.php', 'gameq');
     $gq = new GameQ();
     $gq->addServer($server->id, array($server->config['query']['gametype'], $server->hostname, $server->port));
     //$gq->setOption('timeout', 200);
     // Send requests, and parse the data
     $gq->setFilter('normalise');
     //$gq->setFilter('sortplayers', 'name');
     $results = $gq->requestData();
     if (isset($results[$server->id])) {
         $data = $results[$server->id];
         $response['raw'] = $data;
         $response['address'] = $data['gq_address'];
         $response['port'] = $data['gq_port'];
         $response['online'] = $data['gq_online'] ? TRUE : FALSE;
         $response['protocol'] = $data['gq_prot'];
         $response['game'] = $data['gq_mod'];
         $response['servername'] = $data['gq_hostname'];
         $response['mapname'] = $data['gq_mapname'];
         $response['numplayers'] = $data['gq_numplayers'];
         $response['maxplayers'] = $data['gq_maxplayers'];
         $response['extra'] = array();
         foreach ($data as $key => $value) {
             if (strpos($key, 'gq_') !== 0) {
                 $response['extra'][$key] = $value;
             }
         }
         if (!empty($data['players'])) {
             foreach ($data['players'] as $player_info) {
                 if ($name = $player_info['name']) {
                     $player = new stdClass();
                     $player->name = check_plain($name);
                     $player->score = 0;
                     $player->time = 0;
                     $response['players'][] = $player;
                 }
             }
         }
         return TRUE;
     }
     return FALSE;
 }
示例#3
0
							<th class="hidden-xxs">Map
							<th><i class="fa-circle"></i>
						</tr>
					</thead>
					<tbody>
<?php 
flush();
/* visitor should get better indication that the page is actually loading now */
foreach ($Servers as $Server) {
    if (strlen($Server) > 11 and strrpos($Server, '#', -strlen($Server)) === False) {
        list($ServerHost[], $Ports[], $GameType[]) = preg_split("/(:|,)/", $Server);
    }
}
$gq = new GameQ();
foreach ($ServerHost as $Index => $Host) {
    $gq->addServer(array('type' => trim($GameType[$Index]), 'host' => trim($Host) . ":" . trim($Ports[$Index])));
}
$results = $gq->setOption('timeout', 1)->setFilter('normalise')->requestData();
foreach ($results as $id => $data) {
    if (!$data['gq_online']) {
        $data['gq_address'] = preg_replace('/.steamlug.org/', '​.steamlug.org', $data['gq_address'], 1);
        echo <<<SERVERSTRING
\t\t\t<tr class="unresponsive">
\t\t\t\t<td></td>
\t\t\t\t<td></td>
\t\t\t\t<td></td>
\t\t\t\t<td><em>Server Unresponsive</em></td>
\t\t\t\t<td><em>{$data['gq_address']}​:{$data['gq_port']}</em></td>
\t\t\t\t<td><em>0 ⁄ 0</em></td>
\t\t\t\t<td class="hidden-xxs"><em>N/A</em></td>
\t\t\t\t<td><i class="text-danger fa-circle-o"></i></span></td>