LGSLMonitor.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. global $settings;
  3. // Skip server queries if there are too many total servers
  4. if(isset($_SESSION))
  5. $num_of_servers = $db->getNumberOfOwnedServersPerUser( $_SESSION['user_id'] );
  6. else
  7. $num_of_servers = 0;
  8. if(isset($settings['query_num_servers_stop']) && is_numeric($settings['query_num_servers_stop']))
  9. $numberservers_to_skip_query = $settings['query_num_servers_stop'];
  10. else
  11. $numberservers_to_skip_query = 15;
  12. if($num_of_servers < $numberservers_to_skip_query)
  13. {
  14. require_once("protocol/lgsl/lgsl_protocol.php");
  15. $ip_id = $db->getIpIdByIp($server_home['ip']);
  16. $statusCache = $db->getServerStatusCache($ip_id,$port);
  17. $query_cache_life = ( isset($settings['query_cache_life']) and is_numeric($settings['query_cache_life']) )? $settings['query_cache_life'] : 30;
  18. if( !empty($statusCache) AND date('YmdHis',$statusCache['date_timestamp'] + $query_cache_life) >= date('YmdHis') )
  19. {
  20. $data = $statusCache;
  21. }
  22. else
  23. {
  24. if ( $server_home['use_nat'] == 1 )
  25. $internal_query_ip = $server_home['agent_ip'];
  26. else
  27. $internal_query_ip = $server_home['ip'];
  28. $port = $server_home['port'];
  29. $get_q_and_s = lgsl_port_conversion((string)$server_xml->lgsl_query_name, $port, "", "");
  30. //Connection port
  31. $c_port = $get_q_and_s['0'];
  32. //query port
  33. $q_port = $get_q_and_s['1'];
  34. // Get any query port overrides (if any)
  35. require_once("includes/functions.php");
  36. $q_port = getQueryPortOverridesForGame((string)$server_xml->lgsl_query_name, $internal_query_ip, $port, $q_port);
  37. //software port
  38. $s_port = $get_q_and_s['2'];
  39. $data = lgsl_query_live((string)$server_xml->lgsl_query_name, $internal_query_ip, $c_port, $q_port, $s_port, "sp");
  40. $data['link'] = "<a href='" . lgsl_software_link((string)$server_xml->lgsl_query_name, $internal_query_ip, $c_port, $q_port, $s_port) . "'>".$ip.":".$port."</a>";
  41. //-----------------------------------+
  42. $data['s']['game'] = preg_replace("/[^A-Za-z0-9 \_\-]/",
  43. "_", strtolower($data['s']['game']));
  44. //-----------------------------------+
  45. if( $data['b']['status'] == "1" )
  46. {
  47. if( !isset( $data['s']['password']) )
  48. {
  49. $data['status'] = "ONLINE";
  50. }
  51. else
  52. {
  53. $data['status'] = "ONLINE WITH PASSWORD";
  54. }
  55. }
  56. $db->saveServerStatusCache($ip_id,$port,$data);
  57. }
  58. if($data['status'] == 'ONLINE' OR $data['status'] == 'ONLINE WITH PASSWORD')
  59. {
  60. $status = "online";
  61. $stats_players += $data['s']['players']; // COUNT VISIBLE NUMBER OF PLAYERS
  62. $stats_maxplayers += $data['s']['playersmax']; // COUNT VISIBLE NUMBER OF SLOTS
  63. $players = $data['s']['players'];
  64. $playersmax= $data['s']['playersmax'];
  65. $name = $data['s']['name'];
  66. $map = preg_replace("/[^a-z0-9_]/", "_", strtolower($data['s']['map']));
  67. $mapRaw = $data['s']['map'];
  68. $address = $data['link'];
  69. if ( $data['s']['players'] > 0 )
  70. $player_list = print_player_list($data['p'],$players,$playersmax);
  71. $playersList = $data['p'];
  72. $maplocation = get_map_path($query_name,$mod,$map);
  73. }
  74. else
  75. $status = "half";
  76. }
  77. else
  78. {
  79. $status = "half";
  80. $notifications = get_lang_f('queries_disabled_by_setting_disable_queries_after',$numberservers_to_skip_query,$num_of_servers);
  81. }
  82. ?>