diff --git a/source/masterserver/showServers.php b/source/masterserver/showServers.php index 1a0b9804..34eea7e7 100644 --- a/source/masterserver/showServers.php +++ b/source/masterserver/showServers.php @@ -12,6 +12,9 @@ // allow for automatic refreshing in web browser by appending '?refresh=VALUE', where VALUE is a numeric value in seconds. define( 'REFRESH_INTERVAL', (int) $_GET['refresh'] ); + // allow for filtering by gameserver version + define( 'FILTER_VERSION', $_GET['version'] ); + // consider replacing this by a cron job cleanupServerList(); @@ -30,7 +33,11 @@ // Representation starts here header( 'Content-Type: text/html; charset=utf-8' ); if ( REFRESH_INTERVAL != 0 ) { - header( 'Refresh: ' . REFRESH_INTERVAL ); + if ( REFRESH_INTERVAL <= 10 ) { + header( 'Refresh: 10:' ); + } else { + header( 'Refresh: ' . REFRESH_INTERVAL ); + } } echo '' . PHP_EOL; echo '' . PHP_EOL; @@ -61,99 +68,120 @@ foreach( $all_servers as $server ) { - echo "\t\t\t" . '' . PHP_EOL; - - // glestVersion - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['glestVersion'], ENT_QUOTES ), PHP_EOL ); - - // status - $status_code = $server['status']; - if ( $status_code == 0) + # Filter by version if requested + if ( FILTER_VERSION == $server['glestVersion'] OR FILTER_VERSION == '' ) { - $gameFull = ( $server['networkSlots'] <= $server['connectedClients'] ); - if ( $gameFull == true ) + echo "\t\t\t" . '' . PHP_EOL; + + // glestVersion + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['glestVersion'], ENT_QUOTES ), htmlspecialchars( $server['glestVersion'], ENT_QUOTES ), PHP_EOL ); + + // status + $status_code = $server['status']; + if ( $status_code == 0) { - $status_code = 1; + $gameFull = ( $server['networkSlots'] <= $server['connectedClients'] ); + if ( $gameFull == true ) + { + $status_code = 1; + } } - } - switch ( $status_code ) - { - case 0: - $status_title = 'waiting for players'; - $status_class = 'waiting_for_players'; - break; - case 1: - $status_title = 'game full, pending start'; - $status_class = 'game_full_pending_start'; - break; - case 2: - $status_title = 'in progress'; - $status_class = 'in_progress'; - break; - case 3: - $status_title = 'finished'; - $status_class = 'finished'; - break; - default: - $status_title = 'unknown'; - $status_class = 'unknown'; - } - printf( "\t\t\t\t%s%s", $status_class, htmlspecialchars( $status_title, ENT_QUOTES ), PHP_EOL ); - - // country - if ( $server['country'] !== '' ) { - $flagfile = 'flags/' . strtolower( $server['country'] ).'.png'; - if ( file_exists( $flagfile ) ) { - printf( "\t\t\t\t\"%s%s", $flagfile, $server['country'], $server['country'], PHP_EOL ); - } else { - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['country'], ENT_QUOTES ), PHP_EOL ); + switch ( $status_code ) + { + case 0: + $status_title = 'waiting for players'; + $status_class = 'waiting_for_players'; + break; + case 1: + $status_title = 'game full, pending start'; + $status_class = 'game_full_pending_start'; + break; + case 2: + $status_title = 'in progress'; + $status_class = 'in_progress'; + break; + case 3: + $status_title = 'finished'; + $status_class = 'finished'; + break; + default: + $status_title = 'unknown'; + $status_class = 'unknown'; } + printf( "\t\t\t\t%s%s", $server['status'], $status_class, htmlspecialchars( $status_title, ENT_QUOTES ), PHP_EOL ); + + // country + if ( $server['country'] !== '' ) { + $flagfile = 'flags/' . strtolower( $server['country'] ).'.png'; + if ( file_exists( $flagfile ) ) { + printf( "\t\t\t\t\"%s%s", $flagfile, $server['country'], $server['country'], PHP_EOL ); + } else { + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['country'], ENT_QUOTES ), PHP_EOL ); + } + } + else { + printf( "\t\t\t\tunknown%s", PHP_EOL ); + } + + // serverTitle + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['serverTitle'], ENT_QUOTES ), PHP_EOL ); + + // tech + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['tech'], ENT_QUOTES ), PHP_EOL ); + + // connectedClients + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['connectedClients'], ENT_QUOTES ), PHP_EOL ); + + // networkSlots + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['networkSlots'], ENT_QUOTES ), PHP_EOL ); + + // activeSlots + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['activeSlots'], ENT_QUOTES ), PHP_EOL ); + + // map + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['map'], ENT_QUOTES ), PHP_EOL ); + + // tileset + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['tileset'], ENT_QUOTES ), PHP_EOL ); + + // ip + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['ip'], ENT_QUOTES ), PHP_EOL ); + + // externalServerPort + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['externalServerPort'], ENT_QUOTES ), PHP_EOL ); + + // platform + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['platform'], ENT_QUOTES ), PHP_EOL ); + + // binaryCompileDate + printf( "\t\t\t\t%s%s", htmlspecialchars( $server['binaryCompileDate'], ENT_QUOTES ), PHP_EOL ); + + echo "\t\t\t" . '' . PHP_EOL; } - else { - printf( "\t\t\t\tunknown%s", PHP_EOL ); - } - - // serverTitle - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['serverTitle'], ENT_QUOTES ), PHP_EOL ); - - // tech - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['tech'], ENT_QUOTES ), PHP_EOL ); - - // connectedClients - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['connectedClients'], ENT_QUOTES ), PHP_EOL ); - - // networkSlots - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['networkSlots'], ENT_QUOTES ), PHP_EOL ); - - // activeSlots - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['activeSlots'], ENT_QUOTES ), PHP_EOL ); - - // map - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['map'], ENT_QUOTES ), PHP_EOL ); - - // tileset - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['tileset'], ENT_QUOTES ), PHP_EOL ); - - // ip - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['ip'], ENT_QUOTES ), PHP_EOL ); - - // externalServerPort - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['externalServerPort'], ENT_QUOTES ), PHP_EOL ); - - // platform - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['platform'], ENT_QUOTES ), PHP_EOL ); - - // binaryCompileDate - printf( "\t\t\t\t%s%s", htmlspecialchars( $server['binaryCompileDate'], ENT_QUOTES ), PHP_EOL ); - - echo "\t\t\t" . '' . PHP_EOL; } + + echo ' ' . PHP_EOL; + + echo '

' . PHP_EOL; + echo '
' . PHP_EOL; + echo '

' . PHP_EOL; + + if ( FILTER_VERSION != '' ) + { + echo "\t\t

Filters active:

" . PHP_EOL; + echo "\t\t" . PHP_EOL; + } + + echo '

Usage:

' . PHP_EOL; + echo ' ' . PHP_EOL; + echo ' ' . PHP_EOL; + echo '' . PHP_EOL; + unset( $all_servers ); unset( $server ); - -echo << - - -END; ?>