LGSLMonitor.php 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. //software port
  35. $s_port = $get_q_and_s['2'];
  36. $data = lgsl_query_live((string)$server_xml->lgsl_query_name, $internal_query_ip, $c_port, $q_port, $s_port, "sp");
  37. $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>";
  38. //-----------------------------------+
  39. $data['s']['game'] = preg_replace("/[^A-Za-z0-9 \_\-]/",
  40. "_", strtolower($data['s']['game']));
  41. //-----------------------------------+
  42. if( $data['b']['status'] == "1" )
  43. {
  44. if( !isset( $data['s']['password']) )
  45. {
  46. $data['status'] = "ONLINE";
  47. }
  48. else
  49. {
  50. $data['status'] = "ONLINE WITH PASSWORD";
  51. }
  52. }
  53. $db->saveServerStatusCache($ip_id,$port,$data);
  54. }
  55. if($data['status'] == 'ONLINE' OR $data['status'] == 'ONLINE WITH PASSWORD')
  56. {
  57. $status = "online";
  58. $stats_players += $data['s']['players']; // COUNT VISIBLE NUMBER OF PLAYERS
  59. $stats_maxplayers += $data['s']['playersmax']; // COUNT VISIBLE NUMBER OF SLOTS
  60. $players = $data['s']['players'];
  61. $playersmax= $data['s']['playersmax'];
  62. $name = $data['s']['name'];
  63. $map = preg_replace("/[^a-z0-9_]/", "_", strtolower($data['s']['map']));
  64. $mapRaw = $data['s']['map'];
  65. $address = $data['link'];
  66. if ( $data['s']['players'] > 0 )
  67. $player_list = print_player_list($data['p'],$players,$playersmax);
  68. $playersList = $data['p'];
  69. $maplocation = get_map_path($query_name,$mod,$map);
  70. }
  71. else
  72. $status = "half";
  73. }
  74. else
  75. {
  76. $status = "half";
  77. $notifications = get_lang_f('queries_disabled_by_setting_disable_queries_after',$numberservers_to_skip_query,$num_of_servers);
  78. }
  79. ?>