functions.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?php
  2. /*
  3. *
  4. * OGP - Open Game Panel
  5. * Copyright (C) 2008 - 2017 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. $ts3Ports = $db->getHomeIpPorts($server_home['home_id']);
  30. $cfg["query"] = $ts3Ports[0]['port'] + 24;
  31. if ( $server_home['use_nat'] == 1 )
  32. $cfg["host"] = $server_home['agent_ip'];
  33. else
  34. $cfg["host"] = $server_home['ip'];
  35. try
  36. {
  37. $ts3_ServerInstance = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/?server_port=" . $cfg["voice"] . "#no_query_clients");
  38. if($ts3_ServerInstance->isOnline() == TRUE)
  39. {
  40. $status = "online";
  41. $startup_file_exists = $remote->rfile_exists( "startups/".$server_home['ip']."-".$server_home['port'] ) === 1;
  42. if (isset($_POST['new_ts3_port']) && isPortValid($_POST['new_ts3_port']) && $server_home['home_id'] == $_POST['home_id']) {
  43. if (isset($ts3_ServerInstance)) unset($ts3_ServerInstance);
  44. $ts3_ServerInstance = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/");
  45. $new_port = $_POST['new_ts3_port'];
  46. $new_hostname = $_POST['new_ts3_hostname'];
  47. $new_players = $_POST['new_ts3_players'];
  48. /* add port to home on ogp db */
  49. $AddVirtual = $db->addGameIpPort($server_home['home_id'], $server_home['ip_id'], $new_port);
  50. if ($AddVirtual === TRUE)
  51. {
  52. /* create server using given props */
  53. $FAILURE = FALSE;
  54. try
  55. {
  56. $ts3_ServerInstance->serverCreate(array("virtualserver_name" => "$new_hostname", "virtualserver_maxclients" => $new_players, "virtualserver_port" => $new_port));
  57. }
  58. catch(Exception $e)
  59. {
  60. print_failure($e->getMessage());
  61. $db->delGameIpPort($server_home['home_id'], $server_home['ip_id'], $new_port);
  62. $FAILURE = TRUE;
  63. }
  64. if(!$FAILURE)
  65. {
  66. $firewall_settings = $db->getFirewallSettings($server_home['remote_server_id']);
  67. if ($firewall_settings['status'] == "enable")
  68. set_firewall($remote, $firewall_settings, 'allow', $new_port, $server_home['ip']);
  69. }
  70. $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);
  71. }
  72. elseif ($AddVirtual === FALSE)
  73. {
  74. echo "The chosen port is already in use.";
  75. }
  76. }
  77. if(isset($_POST['del_ts3_port']) && $_POST['del_ts3_port'] == $cfg["voice"] AND $server_home['home_id'] == $_POST['home_id'] )
  78. {
  79. if( ! $startup_file_exists )
  80. {
  81. /* Delete port to home on ogp db */
  82. $del_port = $_POST['del_ts3_port'];
  83. $DelVirtual = $db->delGameIpPort($server_home['home_id'], $server_home['ip_id'], $del_port);
  84. if ($DelVirtual === TRUE)
  85. {
  86. if(isset($ts3_ServerInstance)) unset($ts3_ServerInstance);
  87. $ts3_ServerInstance = TeamSpeak3::factory("serverquery://" . $cfg["user"] . ":" . $cfg["pass"] . "@" . $cfg["host"] . ":" . $cfg["query"] . "/");
  88. /* stop & remove server using given ID */
  89. $sid = (int)$_POST['id'];
  90. if ($sid !== 0) {
  91. $ts3_ServerInstance->serverStop($sid);
  92. $ts3_ServerInstance->serverDelete($sid);
  93. $db->query( "DELETE FROM OGP_DB_PREFIXts3_homes WHERE vserver_id=" . $db->real_escape_string($sid));
  94. }
  95. /* refresh */
  96. $view->refresh("?m=gamemanager&p=game_monitor&home_id=" . $server_home['home_id'], 0);
  97. }
  98. elseif ($DelVirtual === FALSE) echo "Virtual server can not be deleted.";
  99. }
  100. else
  101. echo "The main virtual server can not be deleted.";
  102. }
  103. $add_remove_virtual = "<table class='center'>";
  104. if(!$startup_file_exists)
  105. $add_remove_virtual .= "<tr><td>Remove This<br>Virtual Server</td><td>
  106. <form action='' method='POST'>
  107. <input type='hidden' name='del_ts3_port' value='".$server_home['port']."'/>
  108. <input type='hidden' name='id' value='".$ts3_ServerInstance->getId()."' />
  109. <input type='hidden' name='home_id' value='".$server_home['home_id']."' />
  110. <input type='submit' value='Delete'/>
  111. </form></td></tr>";
  112. if($startup_file_exists)
  113. $add_remove_virtual .= "<tr><th>Add Virtual Server</th></tr>
  114. <tr><td colspan=2>
  115. <form action='' method='POST'>
  116. <label for='hostname'>".get_lang('hostname')."</label>
  117. <input type='text' name='new_ts3_hostname' size='27' value='TeamSpeak 3 Server' id='hostname'/>
  118. </td></tr>
  119. <tr><td>
  120. <label for='port'>".get_lang('port')."</label>
  121. </td><td>
  122. <input type='text' name='new_ts3_port' size='5' value='".rand(9988,10010)."' id='port'/>
  123. </td></tr>
  124. <tr><td>
  125. <label for='players'>".get_lang('players')."</label>
  126. </td><td>
  127. <input type='text' name='new_ts3_players' size='5' value='10' id='players'/>
  128. <input type='hidden' name='home_id' value='".$server_home['home_id']."' />
  129. </td></tr>
  130. <tr><td colspan=2>
  131. <input type='submit' value='Add'/>
  132. </form></td></tr>";
  133. // Teamspeak3 Admin
  134. $TS3Admin_installed = $db->isModuleInstalled('TS3Admin');
  135. if( $TS3Admin_installed )
  136. {
  137. if(isset($_POST['assign_to_user']) && (int)$_POST['vserver_id'] == $ts3_ServerInstance->getId() AND $server_home['remote_server_id'] == $_POST['remote_server_id'] )
  138. {
  139. $query_ip = $server_home['use_nat'] == 1 ? $server_home['agent_ip'] : $server_home['ip'];
  140. $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']."');");
  141. }
  142. if(isset($_POST['remove_vuser_id']) && (int)$_POST['vserver_id'] == $ts3_ServerInstance->getId() AND $server_home['remote_server_id'] == (int)$_POST['remote_server_id'] )
  143. {
  144. $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']."';" );
  145. }
  146. $add_remove_virtual .= "<tr><td>Assign This Virtual<br>Server To User</td><td>
  147. <form action='' method='POST'>
  148. <select onchange=".'"this.form.submit()"'." name='assign_to_user'>
  149. <option>&nbsp;</option>";
  150. $users = $db->getUserList();
  151. foreach ( $users as $user )
  152. {
  153. $add_remove_virtual .= "<option value='".$user['user_id']."'>".$user['users_login']."</option>\n";
  154. }
  155. $add_remove_virtual .= "</select>
  156. <input type='hidden' name='remote_server_id' value='".$server_home['remote_server_id']."' />
  157. <input type='hidden' name='vserver_id' value='".$ts3_ServerInstance->getId()."' />
  158. </form></td></tr>";
  159. $ts3vservers = $db->resultQuery("SELECT * FROM OGP_DB_PREFIXts3_homes WHERE vserver_id='".$ts3_ServerInstance->getId()."' AND rserver_id=".$server_home['remote_server_id'] );
  160. if($ts3vservers != 0)
  161. {
  162. $ts3vuserlist = "<b>TeamSpeak 3</b><br>";
  163. foreach($ts3vservers as $ts3vserver)
  164. {
  165. $ts3vuser = $db->getUserById($ts3vserver['user_id']);
  166. $ts3vuserlist .= "<form action='' method='POST' >
  167. <input type='hidden' name='remote_server_id' value='".$server_home['remote_server_id']."' />
  168. <input type='hidden' name='remove_vuser_id' value='".$ts3vserver['user_id']."'>
  169. <input type='hidden' name='vserver_id' value='".$ts3_ServerInstance->getId()."'>
  170. ".$ts3vuser['users_login']."
  171. <input type='image' src='modules/administration/images/remove.gif' onsubmit=".'"submit-form();"'." ></form>";
  172. }
  173. }
  174. else
  175. $ts3vuserlist = "";
  176. }
  177. $add_remove_virtual .= "</table>";
  178. // Full Teamspeak3 Management
  179. $ts3_installed = $db->isModuleInstalled('teamspeak3');
  180. if($ts3_installed and $startup_file_exists)
  181. {
  182. $ts3_full = "<form action='modules/teamspeak3/index.php?site=login' method='post' target='_blank'>
  183. <input type='hidden' name='skey' value='0' />
  184. <input type='hidden' name='hostname' value='".$cfg['host']."' />
  185. <input type='hidden' name='query' value='".$cfg['query']."' />
  186. <input type='hidden' name='loginUser' value='".$cfg['user']."' />
  187. <input type='hidden' name='loginPw' value='".$cfg['pass']."' />
  188. <input class='button' type='submit' name='sendlogin' value='Full Teamspeak3 Management'/>
  189. </form>";
  190. }
  191. @$ts3opt = "$ts3_full$add_remove_virtual";
  192. unset($ts3_full);
  193. unset($add_remove_virtual);
  194. $groupsus .= $ts3vuserlist;
  195. }
  196. }
  197. catch(Exception $e)
  198. {
  199. $status = "half";
  200. $order=2;
  201. }
  202. ?>