functions.php 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. <?php
  2. /*
  3. *
  4. * OGP - Open Game Panel
  5. * Copyright (C) 2008 - 2018 The OGP Development Team
  6. *
  7. * http://www.opengamepanel.org/
  8. *
  9. * This program is free software; you can redistribute it and/or
  10. * modify it under the terms of the GNU General Public License
  11. * as published by the Free Software Foundation; either version 2
  12. * of the License, or any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License
  20. * along with this program; if not, write to the Free Software
  21. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  22. *
  23. */
  24. global $view;
  25. require_once("protocol/TeamSpeak3/TeamSpeak3.php");
  26. $cfg["user"] = "serveradmin";
  27. $cfg["pass"] = $server_home['control_password'];
  28. $cfg["voice"] = $server_home['port'];
  29. $cfg["query"] = 10011;
  30. foreach($db->getHomeIpPorts($server_home['home_id']) as $ts3Port)
  31. {
  32. if($remote->rfile_exists( "startups/".$ts3Port['ip']."-".$ts3Port['port'] ) === 1)
  33. $cfg["query"] = $ts3Port['port'] + 24;
  34. }
  35. if ( $server_home['use_nat'] == 1 )
  36. $cfg["host"] = $server_home['agent_ip'];
  37. else
  38. $cfg["host"] = $server_home['ip'];
  39. try
  40. {
  41. $ts3_ServerInstance = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/?server_port=" . $cfg["voice"] . "#no_query_clients");
  42. if($ts3_ServerInstance->isOnline() == TRUE)
  43. {
  44. $status = "online";
  45. $startup_file_exists = $remote->rfile_exists( "startups/".$server_home['ip']."-".$server_home['port'] ) === 1;
  46. if (isset($_POST['new_ts3_port']) && isPortValid($_POST['new_ts3_port']) && $server_home['home_id'] == $_POST['home_id']) {
  47. if (isset($ts3_ServerInstance)) unset($ts3_ServerInstance);
  48. $ts3_ServerInstance = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/");
  49. $new_port = $_POST['new_ts3_port'];
  50. $new_hostname = $_POST['new_ts3_hostname'];
  51. $new_players = $_POST['new_ts3_players'];
  52. /* add port to home on ogp db */
  53. $AddVirtual = $db->addGameIpPort($server_home['home_id'], $server_home['ip_id'], $new_port);
  54. if ($AddVirtual === TRUE)
  55. {
  56. /* create server using given props */
  57. $FAILURE = FALSE;
  58. try
  59. {
  60. $ts3_ServerInstance->serverCreate(array("virtualserver_name" => "$new_hostname", "virtualserver_maxclients" => $new_players, "virtualserver_port" => $new_port));
  61. }
  62. catch(Exception $e)
  63. {
  64. print_failure($e->getMessage());
  65. $db->delGameIpPort($server_home['home_id'], $server_home['ip_id'], $new_port);
  66. $FAILURE = TRUE;
  67. }
  68. if(!$FAILURE)
  69. {
  70. $firewall_settings = $db->getFirewallSettings($server_home['remote_server_id']);
  71. if ($firewall_settings['status'] == "enable")
  72. set_firewall($remote, $firewall_settings, 'allow', $new_port, $server_home['ip']);
  73. }
  74. $view->refresh("?m=gamemanager&p=game_monitor&home_id-mod_id-ip-port=" . $server_home['home_id'] . "-" . $server_home['mod_id'] . "-" . $server_home['ip'] . "-" . $new_port, 0);
  75. }
  76. elseif ($AddVirtual === FALSE)
  77. {
  78. echo "The chosen port is already in use.";
  79. }
  80. }
  81. if(isset($_POST['del_ts3_port']) && $_POST['del_ts3_port'] == $cfg["voice"] AND $server_home['home_id'] == $_POST['home_id'] )
  82. {
  83. if( ! $startup_file_exists )
  84. {
  85. /* Delete port to home on ogp db */
  86. $del_port = $_POST['del_ts3_port'];
  87. $DelVirtual = $db->delGameIpPort($server_home['home_id'], $server_home['ip_id'], $del_port);
  88. if ($DelVirtual === TRUE)
  89. {
  90. if(isset($ts3_ServerInstance)) unset($ts3_ServerInstance);
  91. $ts3_ServerInstance = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/");
  92. /* stop & remove server using given ID */
  93. $sid = (int)$_POST['id'];
  94. if ($sid !== 0) {
  95. $ts3_ServerInstance->serverStop($sid);
  96. $ts3_ServerInstance->serverDelete($sid);
  97. $db->query( "DELETE FROM OGP_DB_PREFIXts3_homes WHERE vserver_id=" . $db->real_escape_string($sid));
  98. }
  99. /* refresh */
  100. $view->refresh("?m=gamemanager&p=game_monitor&home_id=" . $server_home['home_id'], 0);
  101. }
  102. elseif ($DelVirtual === FALSE) echo "Virtual server can not be deleted.";
  103. }
  104. else
  105. echo "The main virtual server can not be deleted.";
  106. }
  107. $add_remove_virtual = "<table class='center'>";
  108. if(!$startup_file_exists)
  109. $add_remove_virtual .= "<tr><td>Remove This<br>Virtual Server</td><td>
  110. <form action='' method='POST'>
  111. <input type='hidden' name='del_ts3_port' value='".$server_home['port']."'/>
  112. <input type='hidden' name='id' value='".$ts3_ServerInstance->getId()."' />
  113. <input type='hidden' name='home_id' value='".$server_home['home_id']."' />
  114. <input type='submit' value='Delete'/>
  115. </form></td></tr>";
  116. if($startup_file_exists)
  117. $add_remove_virtual .= "<tr><th>Add Virtual Server</th></tr>
  118. <tr><td colspan=2>
  119. <form action='' method='POST'>
  120. <label for='hostname'>".get_lang('hostname')."</label>
  121. <input type='text' name='new_ts3_hostname' size='27' value='TeamSpeak 3 Server' id='hostname'/>
  122. </td></tr>
  123. <tr><td>
  124. <label for='port'>".get_lang('port')."</label>
  125. </td><td>
  126. <input type='text' name='new_ts3_port' size='5' value='".rand(9988,10010)."' id='port'/>
  127. </td></tr>
  128. <tr><td>
  129. <label for='players'>".get_lang('players')."</label>
  130. </td><td>
  131. <input type='text' name='new_ts3_players' size='5' value='10' id='players'/>
  132. <input type='hidden' name='home_id' value='".$server_home['home_id']."' />
  133. </td></tr>
  134. <tr><td colspan=2>
  135. <input type='submit' value='Add'/>
  136. </form></td></tr>";
  137. // Teamspeak3 Admin
  138. $TS3Admin_installed = $db->isModuleInstalled('TS3Admin');
  139. if( $TS3Admin_installed )
  140. {
  141. if(isset($_POST['assign_to_user']) && (int)$_POST['vserver_id'] == $ts3_ServerInstance->getId() AND $server_home['remote_server_id'] == $_POST['remote_server_id'] )
  142. {
  143. $query_ip = $server_home['use_nat'] == 1 ? $server_home['agent_ip'] : $server_home['ip'];
  144. $db->query("INSERT INTO OGP_DB_PREFIXts3_homes (`rserver_id`, `ip`, `pwd`, `vserver_id`, `user_id`, `port`) VALUES ('".$server_home['remote_server_id']."', '".$query_ip."', '".$cfg["pass"]."', '".(int)$_POST['vserver_id']."', '".$db->real_escape_string($_POST['assign_to_user'])."', '".$cfg['query']."');");
  145. }
  146. if(isset($_POST['remove_vuser_id']) && (int)$_POST['vserver_id'] == $ts3_ServerInstance->getId() AND $server_home['remote_server_id'] == (int)$_POST['remote_server_id'] )
  147. {
  148. $db->query( "DELETE FROM OGP_DB_PREFIXts3_homes WHERE vserver_id='" . (int)$_POST['vserver_id'] . "' AND user_id='".(int)$_POST['remove_vuser_id']."' AND rserver_id='".(int)$_POST['remote_server_id']."';" );
  149. }
  150. $add_remove_virtual .= "<tr><td>Assign This Virtual<br>Server To User</td><td>
  151. <form action='' method='POST'>
  152. <select onchange=".'"this.form.submit()"'." name='assign_to_user'>
  153. <option>&nbsp;</option>";
  154. $users = $db->getUserList();
  155. foreach ( $users as $user )
  156. {
  157. $add_remove_virtual .= "<option value='".$user['user_id']."'>".$user['users_login']."</option>\n";
  158. }
  159. $add_remove_virtual .= "</select>
  160. <input type='hidden' name='remote_server_id' value='".$server_home['remote_server_id']."' />
  161. <input type='hidden' name='vserver_id' value='".$ts3_ServerInstance->getId()."' />
  162. </form></td></tr>";
  163. $ts3vservers = $db->resultQuery("SELECT * FROM OGP_DB_PREFIXts3_homes WHERE vserver_id='".$ts3_ServerInstance->getId()."' AND rserver_id=".$server_home['remote_server_id'] );
  164. if($ts3vservers)
  165. {
  166. $ts3vuserlist = "<b>TeamSpeak 3</b><br>";
  167. foreach($ts3vservers as $ts3vserver)
  168. {
  169. $ts3vuser = $db->getUserById($ts3vserver['user_id']);
  170. $ts3vuserlist .= "<form action='' method='POST' >
  171. <input type='hidden' name='remote_server_id' value='".$server_home['remote_server_id']."' />
  172. <input type='hidden' name='remove_vuser_id' value='".$ts3vserver['user_id']."'>
  173. <input type='hidden' name='vserver_id' value='".$ts3_ServerInstance->getId()."'>
  174. ".$ts3vuser['users_login']."
  175. <input type='image' src='modules/administration/images/remove.gif' onsubmit=".'"submit-form();"'." ></form>";
  176. }
  177. }
  178. else
  179. $ts3vuserlist = "";
  180. }
  181. $add_remove_virtual .= "</table>";
  182. // Full Teamspeak3 Management
  183. $ts3_installed = $db->isModuleInstalled('teamspeak3');
  184. if($ts3_installed and $startup_file_exists)
  185. {
  186. $ts3_full = "<form action='modules/teamspeak3/index.php?site=login' method='post' target='_blank'>
  187. <input type='hidden' name='skey' value='0' />
  188. <input type='hidden' name='hostname' value='".$cfg['host']."' />
  189. <input type='hidden' name='query' value='".$cfg['query']."' />
  190. <input type='hidden' name='loginUser' value='".$cfg['user']."' />
  191. <input type='hidden' name='loginPw' value='".$cfg['pass']."' />
  192. <input class='button' type='submit' name='sendlogin' value='Full Teamspeak3 Management'/>
  193. </form>";
  194. }
  195. @$ts3opt = "$ts3_full$add_remove_virtual";
  196. unset($ts3_full);
  197. unset($add_remove_virtual);
  198. $groupsus .= $ts3vuserlist;
  199. }
  200. }
  201. catch(Exception $e)
  202. {
  203. $status = "half";
  204. $order=2;
  205. }
  206. ?>