edit_server.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634
  1. <script type="text/javascript">
  2. $(document).ready(function(){
  3. $( "#privilegies" ).change(function() {
  4. this.form.submit();
  5. });
  6. $( "#remote_server_id" ).change(function() {
  7. if( $(this).val() != "0" )
  8. {
  9. $( "input#mysql_ip" ).val('localhost').prop('readonly', true);
  10. }
  11. else
  12. {
  13. $( "input#mysql_ip" ).prop('readonly', false);
  14. }
  15. });
  16. if( $( "#remote_server_id" ).val() != "0" )
  17. {
  18. $( "input#mysql_ip" ).prop('readonly', true);
  19. }
  20. });
  21. </script>
  22. <?php
  23. /*
  24. *
  25. * OGP - Open Game Panel
  26. * Copyright (C) 2008 - 2018 The OGP Development Team
  27. *
  28. * http://www.opengamepanel.org/
  29. *
  30. * This program is free software; you can redistribute it and/or
  31. * modify it under the terms of the GNU General Public License
  32. * as published by the Free Software Foundation; either version 2
  33. * of the License, or any later version.
  34. *
  35. * This program is distributed in the hope that it will be useful,
  36. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  37. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  38. * GNU General Public License for more details.
  39. *
  40. * You should have received a copy of the GNU General Public License
  41. * along with this program; if not, write to the Free Software
  42. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  43. *
  44. */
  45. require_once('includes/form_table_class.php');
  46. require_once('includes/lib_remote.php');
  47. if ( function_exists('mysqli_connect') )
  48. require_once("modules/mysql/mysqli_database.php");
  49. else
  50. require_once("modules/mysql/mysql_database.php");
  51. function exec_ogp_module() {
  52. $modDb = new MySQLModuleDatabase();
  53. require("includes/config.inc.php");
  54. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  55. global $view, $db;
  56. $mysql_server_id = @$_REQUEST['mysql_server_id'];
  57. $mysql_server = $modDb->getMysqlServer($mysql_server_id);
  58. if($mysql_server['remote_server_id'] == "0")
  59. $server_homes = $db->getGameHomes();
  60. else
  61. $server_homes = $modDb->getGameHomesByRemoteServerId($mysql_server['remote_server_id']);
  62. $homes_array[0] = get_lang('select_game_server');
  63. foreach($server_homes as $server_home)
  64. {
  65. $homes_array[$server_home['home_id']] = "(ID ".$server_home['home_id'].") ".$server_home['home_name'];
  66. }
  67. if ( $mysql_server === FALSE )
  68. {
  69. print_failure(get_lang_f('invalid_mysql_server_id',$mysql_server_id));
  70. $view->refresh("?m=mysql&p=mysql_admin");
  71. return;
  72. }
  73. if ( isset($_REQUEST['add_db']) )
  74. {
  75. $home_id = $_POST['home_id'];
  76. $db_user = trim($_POST['db_user']);
  77. $db_passwd = trim($_POST['db_passwd']);
  78. $db_name = trim($_POST['db_name']);
  79. $enabled = $_POST['enabled'];
  80. if ( empty($db_user) ){
  81. print_failure(get_lang('enter_db_user'));
  82. }
  83. elseif ( empty($db_passwd) ){
  84. print_failure(get_lang('enter_db_password'));
  85. }
  86. elseif ( empty($db_name) ){
  87. print_failure(get_lang('enter_db_name'));
  88. }
  89. elseif ( $home_id == 0 ){
  90. print_failure(get_lang('select_game_server'));
  91. }
  92. else
  93. {
  94. $db_id = $modDb->addMysqlServerDB($mysql_server_id, $home_id, $db_user, $db_passwd, $db_name, $enabled);
  95. if(!$db_id)
  96. {
  97. print_failure(get_lang_f('there_is_another_db_named_or_user_named',$db_name,$db_user));
  98. }
  99. else
  100. {
  101. $mysql_db = $modDb->getMysqlDBbyId($db_id);
  102. if(!$mysql_db)
  103. return;
  104. if($mysql_db['remote_server_id'] != "0")
  105. {
  106. $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']);
  107. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  108. $host_stat = $remote->status_chk();
  109. if($host_stat === 1 )
  110. {
  111. $command = "mysql -h localhost -P ".$mysql_db['mysql_port']." -u root -p".$mysql_db['mysql_root_passwd'].' -e exit; echo $?';
  112. $test_mysql_conn = $remote->exec($command);
  113. if($test_mysql_conn == 0)
  114. {
  115. $SQL = "CREATE DATABASE IF NOT EXISTS \\`".$mysql_db['db_name']."\\`;".
  116. "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';".
  117. "FLUSH PRIVILEGES;";
  118. $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\"";
  119. $result = $remote->exec($command);
  120. }
  121. }
  122. }
  123. else
  124. {
  125. if( function_exists('mysqli_connect') )
  126. {
  127. @$link = mysqli_connect($mysql_db['mysql_ip'], $mysql_db['db_user'], $mysql_db['db_passwd'], $mysql_db['db_name'], $mysql_db['mysql_port']);
  128. if ( $link === FALSE )
  129. {
  130. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  131. if ( $link !== FALSE )
  132. {
  133. $queries = array("CREATE DATABASE IF NOT EXISTS `".$mysql_db['db_name']."`;",
  134. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';",
  135. "FLUSH PRIVILEGES;");
  136. foreach( $queries as $query )
  137. {
  138. @$return = mysqli_query($link, $query);
  139. if(!$return)
  140. {
  141. break;
  142. }
  143. }
  144. mysqli_close($link);
  145. }
  146. }
  147. }
  148. else
  149. {
  150. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], $mysql_db['db_user'], $mysql_db['db_passwd']);
  151. if ( $link === FALSE )
  152. {
  153. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  154. if ( $link !== FALSE )
  155. {
  156. $queries = array("CREATE DATABASE IF NOT EXISTS `".$mysql_db['db_name']."`;",
  157. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';",
  158. "FLUSH PRIVILEGES;");
  159. foreach( $queries as $query )
  160. {
  161. @$return = mysql_query($query);
  162. if(!$return)
  163. {
  164. break;
  165. }
  166. }
  167. mysql_close($link);
  168. }
  169. }
  170. }
  171. }
  172. print_success(get_lang_f('db_added_for_home_id',$_POST['home_id']));
  173. }
  174. }
  175. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;assign",5);
  176. }
  177. else if ( isset($_REQUEST['remove_db']) )
  178. {
  179. $db_id = $_REQUEST['db_id'];
  180. $mysql_db = $modDb->getMysqlDBbyId($db_id);
  181. if($mysql_db['remote_server_id'] != "0")
  182. {
  183. $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']);
  184. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  185. $host_stat = $remote->status_chk();
  186. if($host_stat === 1 )
  187. {
  188. $remote->exec('mysql --host=localhost --port='.$mysql_db['mysql_port'].' -uroot -p'.$mysql_db['mysql_root_passwd'].
  189. ' -e "DROP DATABASE '.$mysql_db['db_name'].";DROP USER '".$mysql_db['db_user']."'@'%';\"");
  190. }
  191. }
  192. else
  193. {
  194. if( function_exists('mysqli_connect') )
  195. {
  196. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  197. if ( $link !== FALSE )
  198. {
  199. $queries = array("DROP DATABASE ".$mysql_db['db_name'].";",
  200. "DROP USER '".$mysql_db['db_user']."'@'%';");
  201. foreach( $queries as $query )
  202. {
  203. @$return = mysqli_query($link, $query);
  204. if(!$return)
  205. break;
  206. }
  207. mysqli_close($link);
  208. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  209. }
  210. }
  211. else
  212. {
  213. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  214. if ( $link !== FALSE )
  215. {
  216. $queries = array("DROP DATABASE ".$mysql_db['db_name'].";",
  217. "DROP USER '".$mysql_db['db_user']."'@'%';");
  218. foreach( $queries as $query )
  219. {
  220. @$return = mysql_query($query);
  221. if(!$return)
  222. break;
  223. }
  224. mysql_close($link);
  225. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  226. }
  227. }
  228. }
  229. if ( $modDb->removeMysqlServerDB($db_id) === FALSE )
  230. {
  231. print_failure(get_lang('could_not_remove_db'));
  232. }
  233. else
  234. {
  235. print_success(get_lang_f('db_removed_successfully_from_mysql_server_named',$mysql_db['mysql_name']));
  236. }
  237. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;assign");
  238. }
  239. else if ( isset($_POST['save_db_changes']) )
  240. {
  241. $db_id = $_POST['db_id'];
  242. $home_id = $_POST['home_id'];
  243. $post_db_user = trim($_POST['db_user']);
  244. $post_db_passwd = trim($_POST['db_passwd']);
  245. $post_db_name = trim($_POST['db_name']);
  246. $enabled = $_POST['enabled'];
  247. if ( empty($post_db_passwd) ){
  248. print_failure(get_lang('enter_db_password'));
  249. }
  250. elseif ( $home_id == 0 ){
  251. print_failure(get_lang('select_game_server'));
  252. }
  253. else
  254. {
  255. $mysql_db = $modDb->getMysqlDBbyId($db_id);
  256. if($post_db_passwd != $mysql_db['db_passwd'])
  257. {
  258. if($mysql_db['remote_server_id'] != "0")
  259. {
  260. $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']);
  261. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  262. $host_stat = $remote->status_chk();
  263. if($host_stat === 1 )
  264. {
  265. $SQL = "DROP USER '".$mysql_db['db_user']."'@'%';".
  266. "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';".
  267. "FLUSH PRIVILEGES;";
  268. $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\"";
  269. $remote->exec($command);
  270. }
  271. }
  272. else
  273. {
  274. if( function_exists('mysqli_connect') )
  275. {
  276. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  277. if ( $link !== FALSE )
  278. {
  279. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  280. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  281. "FLUSH PRIVILEGES;");
  282. foreach( $queries as $query )
  283. {
  284. @$return = mysqli_query($link, $query);
  285. if(!$return)
  286. break;
  287. }
  288. mysqli_close($link);
  289. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  290. }
  291. }
  292. else
  293. {
  294. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  295. if ( $link !== FALSE )
  296. {
  297. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  298. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  299. "FLUSH PRIVILEGES;");
  300. foreach( $queries as $query )
  301. {
  302. @$return = mysql_query($query);
  303. if(!$return)
  304. break;
  305. }
  306. mysql_close($link);
  307. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  308. }
  309. }
  310. }
  311. }
  312. if($enabled != $mysql_db['enabled'] )
  313. {
  314. if($mysql_db['remote_server_id'] != "0")
  315. {
  316. $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']);
  317. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  318. $host_stat = $remote->status_chk();
  319. if($host_stat === 1 )
  320. {
  321. if($enabled == "0")
  322. $SQL = "DROP USER '".$mysql_db['db_user']."'@'%';".
  323. "FLUSH PRIVILEGES;";
  324. else
  325. $SQL = "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';".
  326. "FLUSH PRIVILEGES;";
  327. $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\"";
  328. $remote->exec($command);
  329. }
  330. }
  331. else
  332. {
  333. if( function_exists('mysqli_connect') )
  334. {
  335. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  336. if ( $link !== FALSE )
  337. {
  338. if($enabled == "0")
  339. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  340. "FLUSH PRIVILEGES;");
  341. else
  342. $queries = array("GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  343. "FLUSH PRIVILEGES;");
  344. foreach( $queries as $query )
  345. {
  346. @$return = mysqli_query($link, $query);
  347. if(!$return)
  348. break;
  349. }
  350. mysqli_close($link);
  351. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  352. }
  353. }
  354. else
  355. {
  356. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  357. if ( $link !== FALSE )
  358. {
  359. if($enabled == "0")
  360. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  361. "FLUSH PRIVILEGES;");
  362. else
  363. $queries = array("GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  364. "FLUSH PRIVILEGES;");
  365. foreach( $queries as $query )
  366. {
  367. @$return = mysql_query($query);
  368. if(!$return)
  369. break;
  370. }
  371. mysql_close($link);
  372. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  373. }
  374. }
  375. }
  376. }
  377. if ( $modDb->editMysqlServerDB($db_id, $home_id, $post_db_user, $post_db_passwd, $post_db_name, $enabled) === FALSE )
  378. {
  379. print_failure(get_lang('could_not_be_changed'));
  380. }
  381. else
  382. {
  383. print_success(get_lang_f('db_changed_successfully',$post_db_name));
  384. }
  385. }
  386. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;assign");
  387. }
  388. else if ( isset($_REQUEST['delete']) )
  389. {
  390. if ( !isset($_REQUEST['y'] ) )
  391. {
  392. echo "<p>".get_lang_f('areyousure_remove_mysql_server',$mysql_server['mysql_name'])."</p>
  393. <p><a href='?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;delete&amp;y=y'>".
  394. get_lang('yes')."</a> <a href='?m=mysql&p=mysql_admin'>".
  395. get_lang('no')."</a></p>";
  396. return;
  397. }
  398. else
  399. {
  400. $mysql_dbs = $modDb->getMysqlServerDBs($mysql_server_id);
  401. if(!empty($mysql_dbs))
  402. {
  403. foreach($mysql_dbs as $mysql_db)
  404. {
  405. if($mysql_server['remote_server_id'] != "0")
  406. {
  407. $remote_server = $db->getRemoteServer($mysql_server['remote_server_id']);
  408. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  409. $host_stat = $remote->status_chk();
  410. if($host_stat === 1 )
  411. {
  412. $remote->exec('mysql --host=localhost --port='.$mysql_server['mysql_port'].' -uroot -p'.$mysql_server['mysql_root_passwd'].
  413. ' -e "DROP DATABASE '.$mysql_db['db_name'].";DROP USER '".$mysql_db['db_user']."'@'%';\"");
  414. }
  415. }
  416. else
  417. {
  418. if( function_exists('mysqli_connect') )
  419. {
  420. @$link = mysqli_connect($mysql_server['mysql_ip'], 'root', $mysql_server['mysql_root_passwd'], "", $mysql_server['mysql_port']);
  421. if ( $link !== FALSE )
  422. {
  423. $queries = array("DROP DATABASE ".$mysql_db['db_name'].";",
  424. "DROP USER '".$mysql_db['db_user']."'@'%';");
  425. foreach( $queries as $query )
  426. {
  427. @$return = mysqli_query($query);
  428. if(!$return)
  429. break;
  430. }
  431. mysqli_close($link);
  432. }
  433. }
  434. else
  435. {
  436. @$link = mysql_connect($mysql_server['mysql_ip'].':'.$mysql_server['mysql_port'], 'root', $mysql_server['mysql_root_passwd']);
  437. if ( $link !== FALSE )
  438. {
  439. $queries = array("DROP DATABASE ".$mysql_db['db_name'].";",
  440. "DROP USER '".$mysql_db['db_user']."'@'%';");
  441. foreach( $queries as $query )
  442. {
  443. @$return = mysql_query($query);
  444. if(!$return)
  445. break;
  446. }
  447. mysql_close($link);
  448. }
  449. }
  450. }
  451. }
  452. }
  453. if ( $modDb->removeMysqlServer($mysql_server_id) === FALSE )
  454. print_failure(get_lang('error_while_remove'));
  455. else
  456. print_success(get_lang_f('mysql_server_removed',$mysql_server['mysql_name']));
  457. }
  458. $view->refresh("?m=mysql&p=mysql_admin");
  459. return;
  460. }
  461. else if ( isset($_POST['save_settings']) )
  462. {
  463. foreach ($_POST as $name => $value)
  464. {
  465. $get[$name] = trim($value);
  466. }
  467. if ( empty($get['mysql_ip']) ){
  468. print_failure(get_lang('enter_mysql_ip'));
  469. }
  470. elseif ( !isPortValid($get['mysql_port']) ){
  471. print_failure(get_lang('enter_valid_port'));
  472. }
  473. elseif ( empty($get['mysql_root_passwd']) ){
  474. print_failure(get_lang('enter_mysql_root_password'));
  475. }
  476. elseif ( empty($get['mysql_name']) ){
  477. print_failure(get_lang('enter_mysql_name'));
  478. }
  479. elseif(!$modDb->editMysqlServer($mysql_server_id,$get['remote_server_id'],$get['mysql_name'],$get['mysql_ip'],$get['mysql_port'],$get['mysql_root_passwd'],$mysql_server['privilegies_str']))
  480. print_failure(get_lang_f('unable_to_set_changes_to',$mysql_server['mysql_name']));
  481. else
  482. print_success(get_lang_f('mysql_server_settings_changed',$mysql_server['mysql_name']));
  483. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;edit",5);
  484. }
  485. elseif ( isset($_GET['edit']) )
  486. {
  487. echo "<h2>".get_lang_f('editing_mysql_server',$mysql_server['mysql_name'])."</h2>";
  488. $mysql_server = $modDb->getMysqlServer($mysql_server_id);
  489. $servers = $db->getRemoteServers();
  490. $conn_method[0] = get_lang('direct_connection');
  491. foreach ( $servers as $server_row )
  492. {
  493. $id = $server_row['remote_server_id'];
  494. $name = get_lang_f('connection_through_remote_server_named',$server_row['remote_server_name']);
  495. $conn_method[$id] = $name;
  496. }
  497. $ft = new FormTable();
  498. $ft->start_form('?m=mysql&amp;p=edit&amp;mysql_server_id='.$mysql_server_id.'&amp;edit');
  499. $ft->start_table();
  500. $ft->add_custom_field('connection_method',
  501. create_drop_box_from_array($conn_method,"remote_server_id",$mysql_server['remote_server_id'],false));
  502. $ft->add_field('string','mysql_name',$mysql_server['mysql_name']);
  503. $ft->add_field('string','mysql_ip',$mysql_server['mysql_ip']);
  504. $ft->add_field('string','mysql_port',$mysql_server['mysql_port']);
  505. $ft->add_field('string','mysql_root_passwd',$mysql_server['mysql_root_passwd']);
  506. $ft->end_table();
  507. $ft->add_button("submit","save_settings",get_lang('save_settings'));
  508. $ft->end_form();
  509. echo create_back_button('mysql','mysql_admin');
  510. }
  511. elseif ( isset($_GET['assign']) )
  512. {
  513. echo "<h2>".get_lang_f('mysql_dbs_for',$mysql_server['mysql_name'])."</h2>";
  514. $mysql_server_dbs = $modDb->getMysqlServerDBs($mysql_server['mysql_server_id']);
  515. if ( !empty($mysql_server_dbs) )
  516. {
  517. echo "<h4>".get_lang('edit_dbs')."</h4>";
  518. foreach ( $mysql_server_dbs as $mysql_db )
  519. {
  520. $home_info = $db->getGameHomeWithoutMods($mysql_db['home_id']);
  521. $db_array[$mysql_db['db_id']] = $mysql_db['db_name']." (".$home_info['home_name'].")";
  522. }
  523. $ft = new FormTable();
  524. $ft->start_form('','GET');
  525. $ft->add_field_hidden('m', 'mysql');
  526. $ft->add_field_hidden('p', 'edit');
  527. $ft->add_field_hidden('mysql_server_id', $mysql_server_id);
  528. $ft->add_field_hidden('assign', 'true');
  529. $ft->start_table();
  530. $ft->add_custom_field('select_db',
  531. create_drop_box_from_array($db_array,"db_id",isset($_GET['db_id'])?$_GET['db_id']:"",false));
  532. $ft->end_table();
  533. $ft->add_button('submit','edit_db_settings',get_lang('edit_db_settings'));
  534. $ft->add_button('submit','remove_db',get_lang('remove_db'));
  535. $ft->end_form();
  536. if(isset($_GET['edit_db_settings']))
  537. {
  538. $mysql_db = $modDb->getMysqlDBbyId($_GET['db_id']);
  539. $ft = new FormTable();
  540. $ft->start_form('');
  541. $ft->add_field_hidden('db_id',$mysql_db['db_id']);
  542. $ft->start_table();
  543. $ft->add_custom_field('game_server',
  544. create_drop_box_from_array($homes_array,"home_id",$mysql_db['home_id'],false));
  545. $ft->add_field('string','db_user',$mysql_db['db_user'],"50","readonly");
  546. $ft->add_field('string','db_passwd',$mysql_db['db_passwd']);
  547. $ft->add_field('string','db_name',$mysql_db['db_name'],"50","readonly");
  548. $ft->add_field('on_off','enabled',$mysql_db['enabled']);
  549. $ft->end_table();
  550. $ft->add_button('submit','save_db_changes',get_lang('save_db_changes'));
  551. $ft->end_form();
  552. }
  553. }
  554. echo "<h4>".get_lang('add_db')."</h4>";
  555. $ft = new FormTable();
  556. $ft->start_form('');
  557. $ft->start_table();
  558. $ft->add_custom_field('game_server',
  559. create_drop_box_from_array($homes_array,"home_id","0",false));
  560. $ft->add_field('string','db_user','');
  561. $ft->add_field('string','db_passwd',genRandomString('10'));
  562. $ft->add_field('string','db_name','');
  563. $ft->add_field('on_off','enabled','1');
  564. $ft->end_table();
  565. $ft->add_button('submit','add_db',get_lang('add_db'));
  566. $ft->end_form();
  567. echo create_back_button('mysql','mysql_admin');
  568. }
  569. else
  570. {
  571. print_failure("Invalid url.");
  572. $view->refresh("?m=mysql&p=mysql_admin");
  573. }
  574. }
  575. ?>