arrange_ports.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <script type="text/javascript" src="js/jquery/plugins/jquery.numeric.js"></script>
  2. <script type="text/javascript" src="js/modules/server.js"></script>
  3. <?php
  4. function exec_ogp_module()
  5. {
  6. global $db,$view;
  7. if( isset( $_GET['rserver_id'] ) and $_GET['rserver_id'] != "" )
  8. {
  9. $remote_server_ips = $db->getRemoteServerIPs($_GET['rserver_id']);
  10. if(!empty($remote_server_ips))
  11. {
  12. if(isset( $_GET['ip_id'] ) and $_GET['ip_id'] != "")
  13. {
  14. $ip = $db->getIpById($_GET['ip_id']);
  15. echo "<h2>".get_lang_f('assign_new_ports_range_for_ip',$ip)."</h2>";
  16. if(isset($_POST['assign_range']))
  17. {
  18. if($_POST['home_cfg_id'] != "0")
  19. $cfg_info = $db->getGameCfg($_POST['home_cfg_id']);
  20. else
  21. $cfg_info['game_name'] = get_lang("unspecified_game_types");
  22. $retval = $db->addPortsRange($_POST['ip_id'],$_POST['home_cfg_id'],$_POST['start_port'],$_POST['end_port'],$_POST['port_increment']);
  23. if($retval === 1)
  24. print_failure( get_lang("invalid_values") );
  25. elseif($retval === 2)
  26. print_failure( get_lang("ports_in_range_already_arranged") );
  27. elseif($retval)
  28. print_success(get_lang_f('ports_range_added_successfull_for',$cfg_info['game_name']));
  29. else
  30. print_failure(get_lang_f('ports_range_already_configured_for',$cfg_info['game_name']));
  31. $view->refresh('?m=server&p=arrange_ports&rserver_id='.$_GET['rserver_id'].'&ip_id='.$_GET['ip_id'],3);
  32. }
  33. $game_homes = $db->getIpPorts( $_GET['ip_id'] );
  34. $game_cfgs = $db->getGameCfgs();
  35. //
  36. require_once('includes/lib_remote.php');
  37. $rhost_id = $_GET['rserver_id'];
  38. $remote_server = $db->getRemoteServer($rhost_id);
  39. require_once('includes/lib_remote.php');
  40. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  41. $host_stat = $remote->status_chk();
  42. if( $host_stat === 1)
  43. $os = $remote->what_os();
  44. else
  45. {
  46. print_failure(get_lang_f("caution_agent_offline_can_not_get_os_and_arch_showing_servers_for_all_platforms"));
  47. $os = "Unknown OS";
  48. }
  49. echo "<form method='POST' action=''>\n
  50. <input type='hidden' name='ip_id' value='". $_GET['ip_id'] . "' />\n
  51. <table>\n
  52. <tr>\n
  53. <td>\n
  54. <select name='home_cfg_id'>\n
  55. <option style='background:black;color:white;' value='0'>". get_lang("unspecified_game_types") ."</option>\n";
  56. echo "<b>". get_lang("assign_range_to_game_type") .":</b>";
  57. // Linux 64 bits + wine
  58. if( preg_match("/Linux/", $os) AND preg_match("/64/", $os) AND preg_match("/wine/", $os) )
  59. {
  60. foreach ( $game_cfgs as $row )
  61. {
  62. if ( preg_match("/linux/", $row['game_key']) )
  63. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name'];
  64. if ( preg_match("/64/", $row['game_key']) ) echo " (64 bit)";
  65. echo "</option>\n";
  66. }
  67. echo "<option style='background:black;color:white;' value=''>". get_lang("wine_games") .":</option>\n";
  68. foreach ( $game_cfgs as $row )
  69. {
  70. if ( preg_match("/win/", $row['game_key']) )
  71. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name'];
  72. if ( preg_match("/64/", $row['game_key']) ) echo " (64 bit)";
  73. echo "</option>\n";
  74. }
  75. }
  76. // Linux 64 bits
  77. elseif( preg_match("/Linux/", $os) AND preg_match("/64/", $os) )
  78. {
  79. foreach ( $game_cfgs as $row )
  80. {
  81. if ( preg_match("/linux/", $row['game_key']))
  82. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name'];
  83. if ( preg_match("/64/", $row['game_key']) ) echo " (64 bit)";
  84. echo "</option>\n";
  85. }
  86. }
  87. // Linux 32 bits + wine
  88. elseif( preg_match("/Linux/", $os) AND preg_match("/wine/", $os) )
  89. {
  90. foreach ( $game_cfgs as $row )
  91. {
  92. if ( preg_match("/linux32/", $row['game_key']) )
  93. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name']."</option>\n";
  94. }
  95. echo "<option style='background:black;color:white;' value=''>". get_lang("wine_games") ."</option>\n";
  96. foreach ( $game_cfgs as $row )
  97. {
  98. if ( preg_match("/win32/", $row['game_key']) )
  99. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name']."</option>\n";
  100. }
  101. }
  102. // Linux 32 bits
  103. elseif( preg_match("/Linux/", $os) )
  104. {
  105. foreach ( $game_cfgs as $row )
  106. {
  107. if ( preg_match("/linux32/", $row['game_key']) )
  108. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name']."</option>\n";
  109. }
  110. }
  111. // Windows 64 bits (CYGWIN)
  112. elseif( preg_match("/CYGWIN/", $os) AND preg_match("/64/", $os))
  113. {
  114. foreach ( $game_cfgs as $row )
  115. {
  116. if ( preg_match("/win/", $row['game_key']) )
  117. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name'];
  118. if ( preg_match("/64/", $row['game_key']) ) echo " (64 bit)";
  119. echo "</option>\n";
  120. }
  121. }
  122. // Windows 32 bits (CYGWIN)
  123. elseif( preg_match("/CYGWIN/", $os))
  124. {
  125. foreach ( $game_cfgs as $row )
  126. {
  127. if ( preg_match("/win32/", $row['game_key']) )
  128. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name']."</option>\n";
  129. }
  130. }
  131. elseif ( $os == "Unknown OS" )
  132. {
  133. foreach ( $game_cfgs as $row )
  134. {
  135. echo "<option value='".$row['home_cfg_id']."'>".$row['game_name'];
  136. if ( preg_match("/64/", $row['game_key']) ) echo " (64 bit)";
  137. echo "</option>\n";
  138. }
  139. }
  140. echo "</select>\n
  141. </td>\n
  142. <td>\n".
  143. get_lang("start_port") .
  144. "<input type='text' id='start_port' name='start_port' class='add' size='8' />\n
  145. </td>\n
  146. <td>\n".
  147. get_lang("end_port") .
  148. "<input type='text' id='end_port' name='end_port' class='add' size='8' />\n
  149. </td>\n
  150. <td>\n
  151. ".
  152. get_lang("port_increment") .
  153. "<input type='text' id='port_increment' name='port_increment' class='add' value='1' size='2' />\n
  154. </td>\n
  155. <td>\n
  156. ".
  157. get_lang("total_assignable_ports") ."\t<span id='total_assignable_ports' class='add'></span>\n
  158. </td>\n
  159. <td>\n".
  160. "<input type='submit' name='assign_range' value='". get_lang("assign_range") ."' />\n
  161. </td>\n
  162. </tr>\n
  163. </table>\n
  164. </form>\n";
  165. echo "<h2>".get_lang_f('assigned_port_ranges_for_ip',$ip)."</h2>";
  166. //
  167. if(isset($_POST['delete_range']))
  168. {
  169. if($db->delPortsRange($_POST['range_id']))
  170. print_success( get_lang("ports_range_deleted_successfull") );
  171. else
  172. print_failure( get_lang("failed_to_delete_ports_range") );
  173. $view->refresh('?m=server&p=arrange_ports&rserver_id='.$_GET['rserver_id'].'&ip_id='.$_GET['ip_id'],3);
  174. }
  175. if(isset($_POST['edit_range']))
  176. {
  177. if($_POST['home_cfg_id'] != "0")
  178. $cfg_info = $db->getGameCfg($_POST['home_cfg_id']);
  179. else
  180. $cfg_info['game_name'] = get_lang("unspecified_game_types");
  181. $retval = $db->editPortsRange($_POST['range_id'],$_POST['ip_id'],$_POST['start_port'],$_POST['end_port'],$_POST['port_increment']);
  182. if($retval === 1)
  183. print_failure( get_lang("invalid_values") );
  184. elseif($retval === 2)
  185. print_failure( get_lang("ports_in_range_already_arranged") );
  186. elseif($retval)
  187. print_success(get_lang_f('ports_range_edited_successfull_for',$cfg_info['game_name']));
  188. else
  189. print_failure(get_lang_f('ports_range_already_configured_for',$cfg_info['game_name']));
  190. $view->refresh('?m=server&p=arrange_ports&rserver_id='.$_GET['rserver_id'].'&ip_id='.$_GET['ip_id'],3);
  191. }
  192. $ranges = $db->getPortsRange($_GET['ip_id']);
  193. if(!empty($ranges))
  194. {
  195. echo "<table>\n";
  196. foreach($ranges as $range)
  197. {
  198. if($range['home_cfg_id'] != "0")
  199. $cfg_info = $db->getGameCfg($range['home_cfg_id']);
  200. else
  201. $cfg_info['game_name'] = get_lang("unspecified_game_types");
  202. $available_ports_amount = intval((($range['end_port'] - $range['start_port']) / $range['port_increment']) + 1);
  203. $usable_range_ports = array();
  204. for($port = $range['start_port']; $port >= $range['start_port'] and $port <= $range['end_port']; $port+=$range['port_increment'])
  205. {
  206. $usable_range_ports[] = $port;
  207. }
  208. $used_ports = array();
  209. if(!empty($game_homes))
  210. {
  211. foreach($game_homes as $game_home)
  212. {
  213. $used_ports[] = $game_home['port'];
  214. }
  215. }
  216. if(!empty($used_ports))
  217. {
  218. foreach($used_ports as $used_port)
  219. {
  220. if(in_array($used_port,$usable_range_ports))
  221. $available_ports_amount--;
  222. }
  223. }
  224. echo "<form method='POST' action=''>\n
  225. <input type='hidden' name='range_id' value='". $range['range_id'] . "' />\n
  226. <input type='hidden' name='ip_id' value='". $range['ip_id'] . "' />\n
  227. <input type='hidden' name='home_cfg_id' value='". $range['home_cfg_id'] . "' />\n
  228. <tr>\n
  229. <td>\n".
  230. $cfg_info['game_name'].
  231. "</td>\n
  232. <td>\n".
  233. get_lang("start_port") .
  234. "<input type='text' id='start_port' name='start_port' value='".$range['start_port']."' size='8' />\n
  235. </td>\n
  236. <td>\n".
  237. get_lang("end_port") .
  238. "<input type='text' id='end_port' name='end_port' value='".$range['end_port']."' size='8' />\n
  239. </td>\n
  240. <td>\n".
  241. get_lang("port_increment") .
  242. "<input type='text' id='port_increment' name='port_increment' value='".$range['port_increment']."' value='1' size='2' />\n
  243. </td>\n
  244. <td>\n".
  245. get_lang("available_range_ports") .
  246. "\t<span id='available_range_ports'>".$available_ports_amount."</span>\n
  247. </td>\n
  248. <td>\n
  249. <input type='submit' name='edit_range' value='". get_lang("edit_range") ."' />\n
  250. <input type='submit' name='delete_range' value='". get_lang("delete_range") ."' />\n
  251. </td>\n
  252. </tr>\n
  253. </form>\n";
  254. }
  255. echo "</table>\n";
  256. }
  257. echo "<h2>".get_lang_f('assigned_ports_for_ip',$ip)."</h2>";
  258. if(!empty($game_homes))
  259. {
  260. echo "<table class='center'>";
  261. echo "<tr><th>". get_lang("home_id") ."</th><th>". get_lang("home_path") ."</th><th>". get_lang("game_type") ."</th><th>". get_lang("server_name") ."</th><th>". get_lang("port") ."</th></tr>";
  262. foreach($game_homes as $game_home)
  263. {
  264. echo "<tr><td>".$game_home['home_id']."</td><td>".$game_home['home_path']."</td><td>".$game_home['game_name']."</td><td>".htmlentities($game_home['home_name'])."</td><td>".$game_home['port']."</td></tr>";
  265. }
  266. echo "</table>";
  267. }
  268. }
  269. }
  270. else
  271. {
  272. echo "There are no IPs assigned to the selected remote server.";
  273. return;
  274. }
  275. echo create_back_button('server','edit&rhost_id='.$_GET['rserver_id'].'&edit');
  276. }
  277. }
  278. ?>