edit_server.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650
  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. try{
  128. @$link = mysqli_connect($mysql_db['mysql_ip'], $mysql_db['db_user'], $mysql_db['db_passwd'], $mysql_db['db_name'], $mysql_db['mysql_port']);
  129. }catch(Exception $e) {
  130. $link = false;
  131. }
  132. if ( $link === FALSE )
  133. {
  134. try{
  135. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  136. }catch(Exception $e) {
  137. $link = false;
  138. }
  139. if ( $link !== FALSE )
  140. {
  141. $queries = array("CREATE DATABASE IF NOT EXISTS `".$mysql_db['db_name']."`;",
  142. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';",
  143. "FLUSH PRIVILEGES;");
  144. foreach( $queries as $query )
  145. {
  146. @$return = mysqli_query($link, $query);
  147. if(!$return)
  148. {
  149. break;
  150. }
  151. }
  152. mysqli_close($link);
  153. }
  154. }
  155. }
  156. else
  157. {
  158. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], $mysql_db['db_user'], $mysql_db['db_passwd']);
  159. if ( $link === FALSE )
  160. {
  161. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  162. if ( $link !== FALSE )
  163. {
  164. $queries = array("CREATE DATABASE IF NOT EXISTS `".$mysql_db['db_name']."`;",
  165. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';",
  166. "FLUSH PRIVILEGES;");
  167. foreach( $queries as $query )
  168. {
  169. @$return = mysql_query($query);
  170. if(!$return)
  171. {
  172. break;
  173. }
  174. }
  175. mysql_close($link);
  176. }
  177. }
  178. }
  179. }
  180. print_success(get_lang_f('db_added_for_home_id',$_POST['home_id']));
  181. }
  182. }
  183. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;assign",5);
  184. }
  185. else if ( isset($_REQUEST['remove_db']) )
  186. {
  187. $db_id = $_REQUEST['db_id'];
  188. $mysql_db = $modDb->getMysqlDBbyId($db_id);
  189. if($mysql_db['remote_server_id'] != "0")
  190. {
  191. $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']);
  192. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  193. $host_stat = $remote->status_chk();
  194. if($host_stat === 1 )
  195. {
  196. $remote->exec('mysql --host=localhost --port='.$mysql_db['mysql_port'].' -uroot -p'.$mysql_db['mysql_root_passwd'].
  197. ' -e "DROP DATABASE '.$mysql_db['db_name'].";DROP USER '".$mysql_db['db_user']."'@'%';\"");
  198. }
  199. }
  200. else
  201. {
  202. if( function_exists('mysqli_connect') )
  203. {
  204. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  205. if ( $link !== FALSE )
  206. {
  207. $queries = array("DROP DATABASE ".$mysql_db['db_name'].";",
  208. "DROP USER '".$mysql_db['db_user']."'@'%';");
  209. foreach( $queries as $query )
  210. {
  211. try{
  212. @$return = mysqli_query($link, $query);
  213. if(!$return)
  214. break;
  215. }catch(Exception $e) {
  216. break;
  217. }
  218. }
  219. mysqli_close($link);
  220. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  221. }
  222. }
  223. else
  224. {
  225. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  226. if ( $link !== FALSE )
  227. {
  228. $queries = array("DROP DATABASE ".$mysql_db['db_name'].";",
  229. "DROP USER '".$mysql_db['db_user']."'@'%';");
  230. foreach( $queries as $query )
  231. {
  232. try{
  233. @$return = mysql_query($query);
  234. if(!$return)
  235. break;
  236. }catch(Exception $e) {
  237. break;
  238. }
  239. }
  240. mysql_close($link);
  241. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  242. }
  243. }
  244. }
  245. if ( $modDb->removeMysqlServerDB($db_id) === FALSE )
  246. {
  247. print_failure(get_lang('could_not_remove_db'));
  248. }
  249. else
  250. {
  251. print_success(get_lang_f('db_removed_successfully_from_mysql_server_named',$mysql_db['mysql_name']));
  252. }
  253. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;assign");
  254. }
  255. else if ( isset($_POST['save_db_changes']) )
  256. {
  257. $db_id = $_POST['db_id'];
  258. $home_id = $_POST['home_id'];
  259. $post_db_user = trim($_POST['db_user']);
  260. $post_db_passwd = trim($_POST['db_passwd']);
  261. $post_db_name = trim($_POST['db_name']);
  262. $enabled = $_POST['enabled'];
  263. if ( empty($post_db_passwd) ){
  264. print_failure(get_lang('enter_db_password'));
  265. }
  266. elseif ( $home_id == 0 ){
  267. print_failure(get_lang('select_game_server'));
  268. }
  269. else
  270. {
  271. $mysql_db = $modDb->getMysqlDBbyId($db_id);
  272. if($post_db_passwd != $mysql_db['db_passwd'])
  273. {
  274. if($mysql_db['remote_server_id'] != "0")
  275. {
  276. $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']);
  277. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  278. $host_stat = $remote->status_chk();
  279. if($host_stat === 1 )
  280. {
  281. $SQL = "DROP USER '".$mysql_db['db_user']."'@'%';".
  282. "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';".
  283. "FLUSH PRIVILEGES;";
  284. $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\"";
  285. $remote->exec($command);
  286. }
  287. }
  288. else
  289. {
  290. if( function_exists('mysqli_connect') )
  291. {
  292. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  293. if ( $link !== FALSE )
  294. {
  295. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  296. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  297. "FLUSH PRIVILEGES;");
  298. foreach( $queries as $query )
  299. {
  300. @$return = mysqli_query($link, $query);
  301. if(!$return)
  302. break;
  303. }
  304. mysqli_close($link);
  305. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  306. }
  307. }
  308. else
  309. {
  310. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  311. if ( $link !== FALSE )
  312. {
  313. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  314. "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  315. "FLUSH PRIVILEGES;");
  316. foreach( $queries as $query )
  317. {
  318. @$return = mysql_query($query);
  319. if(!$return)
  320. break;
  321. }
  322. mysql_close($link);
  323. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  324. }
  325. }
  326. }
  327. }
  328. if($enabled != $mysql_db['enabled'] )
  329. {
  330. if($mysql_db['remote_server_id'] != "0")
  331. {
  332. $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']);
  333. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  334. $host_stat = $remote->status_chk();
  335. if($host_stat === 1 )
  336. {
  337. if($enabled == "0")
  338. $SQL = "DROP USER '".$mysql_db['db_user']."'@'%';".
  339. "FLUSH PRIVILEGES;";
  340. else
  341. $SQL = "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';".
  342. "FLUSH PRIVILEGES;";
  343. $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\"";
  344. $remote->exec($command);
  345. }
  346. }
  347. else
  348. {
  349. if( function_exists('mysqli_connect') )
  350. {
  351. @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']);
  352. if ( $link !== FALSE )
  353. {
  354. if($enabled == "0")
  355. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  356. "FLUSH PRIVILEGES;");
  357. else
  358. $queries = array("GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  359. "FLUSH PRIVILEGES;");
  360. foreach( $queries as $query )
  361. {
  362. @$return = mysqli_query($link, $query);
  363. if(!$return)
  364. break;
  365. }
  366. mysqli_close($link);
  367. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  368. }
  369. }
  370. else
  371. {
  372. @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']);
  373. if ( $link !== FALSE )
  374. {
  375. if($enabled == "0")
  376. $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';",
  377. "FLUSH PRIVILEGES;");
  378. else
  379. $queries = array("GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';",
  380. "FLUSH PRIVILEGES;");
  381. foreach( $queries as $query )
  382. {
  383. @$return = mysql_query($query);
  384. if(!$return)
  385. break;
  386. }
  387. mysql_close($link);
  388. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  389. }
  390. }
  391. }
  392. }
  393. if ( $modDb->editMysqlServerDB($db_id, $home_id, $post_db_user, $post_db_passwd, $post_db_name, $enabled) === FALSE )
  394. {
  395. print_failure(get_lang('could_not_be_changed'));
  396. }
  397. else
  398. {
  399. print_success(get_lang_f('db_changed_successfully',$post_db_name));
  400. }
  401. }
  402. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;assign");
  403. }
  404. else if ( isset($_REQUEST['delete']) )
  405. {
  406. if ( !isset($_REQUEST['y'] ) )
  407. {
  408. echo "<p>".get_lang_f('areyousure_remove_mysql_server',$mysql_server['mysql_name'])."</p>
  409. <p><a href='?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;delete&amp;y=y'>".
  410. get_lang('yes')."</a> <a href='?m=mysql&p=mysql_admin'>".
  411. get_lang('no')."</a></p>";
  412. return;
  413. }
  414. else
  415. {
  416. $mysql_dbs = $modDb->getMysqlServerDBs($mysql_server_id);
  417. if(!empty($mysql_dbs))
  418. {
  419. foreach($mysql_dbs as $mysql_db)
  420. {
  421. if($mysql_server['remote_server_id'] != "0")
  422. {
  423. $remote_server = $db->getRemoteServer($mysql_server['remote_server_id']);
  424. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  425. $host_stat = $remote->status_chk();
  426. if($host_stat === 1 )
  427. {
  428. $remote->exec('mysql --host=localhost --port='.$mysql_server['mysql_port'].' -uroot -p'.$mysql_server['mysql_root_passwd'].
  429. ' -e "DROP DATABASE '.$mysql_db['db_name'].";DROP USER '".$mysql_db['db_user']."'@'%';\"");
  430. }
  431. }
  432. else
  433. {
  434. if( function_exists('mysqli_connect') )
  435. {
  436. @$link = mysqli_connect($mysql_server['mysql_ip'], 'root', $mysql_server['mysql_root_passwd'], "", $mysql_server['mysql_port']);
  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 = mysqli_query($query);
  444. if(!$return)
  445. break;
  446. }
  447. mysqli_close($link);
  448. }
  449. }
  450. else
  451. {
  452. @$link = mysql_connect($mysql_server['mysql_ip'].':'.$mysql_server['mysql_port'], 'root', $mysql_server['mysql_root_passwd']);
  453. if ( $link !== FALSE )
  454. {
  455. $queries = array("DROP DATABASE ".$mysql_db['db_name'].";",
  456. "DROP USER '".$mysql_db['db_user']."'@'%';");
  457. foreach( $queries as $query )
  458. {
  459. @$return = mysql_query($query);
  460. if(!$return)
  461. break;
  462. }
  463. mysql_close($link);
  464. }
  465. }
  466. }
  467. }
  468. }
  469. if ( $modDb->removeMysqlServer($mysql_server_id) === FALSE )
  470. print_failure(get_lang('error_while_remove'));
  471. else
  472. print_success(get_lang_f('mysql_server_removed',$mysql_server['mysql_name']));
  473. }
  474. $view->refresh("?m=mysql&p=mysql_admin");
  475. return;
  476. }
  477. else if ( isset($_POST['save_settings']) )
  478. {
  479. foreach ($_POST as $name => $value)
  480. {
  481. $get[$name] = trim($value);
  482. }
  483. if ( empty($get['mysql_ip']) ){
  484. print_failure(get_lang('enter_mysql_ip'));
  485. }
  486. elseif ( !isPortValid($get['mysql_port']) ){
  487. print_failure(get_lang('enter_valid_port'));
  488. }
  489. elseif ( empty($get['mysql_root_passwd']) ){
  490. print_failure(get_lang('enter_mysql_root_password'));
  491. }
  492. elseif ( empty($get['mysql_name']) ){
  493. print_failure(get_lang('enter_mysql_name'));
  494. }
  495. 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']))
  496. print_failure(get_lang_f('unable_to_set_changes_to',$mysql_server['mysql_name']));
  497. else
  498. print_success(get_lang_f('mysql_server_settings_changed',$mysql_server['mysql_name']));
  499. $view->refresh("?m=mysql&p=mysql_admin&amp;p=edit&amp;mysql_server_id=".$mysql_server_id."&amp;edit",5);
  500. }
  501. elseif ( isset($_GET['edit']) )
  502. {
  503. echo "<h2>".get_lang_f('editing_mysql_server',$mysql_server['mysql_name'])."</h2>";
  504. $mysql_server = $modDb->getMysqlServer($mysql_server_id);
  505. $servers = $db->getRemoteServers();
  506. $conn_method[0] = get_lang('direct_connection');
  507. foreach ( $servers as $server_row )
  508. {
  509. $id = $server_row['remote_server_id'];
  510. $name = get_lang_f('connection_through_remote_server_named',$server_row['remote_server_name']);
  511. $conn_method[$id] = $name;
  512. }
  513. $ft = new FormTable();
  514. $ft->start_form('?m=mysql&amp;p=edit&amp;mysql_server_id='.$mysql_server_id.'&amp;edit');
  515. $ft->start_table();
  516. $ft->add_custom_field('connection_method',
  517. create_drop_box_from_array($conn_method,"remote_server_id",$mysql_server['remote_server_id'],false));
  518. $ft->add_field('string','mysql_name',$mysql_server['mysql_name']);
  519. $ft->add_field('string','mysql_ip',$mysql_server['mysql_ip']);
  520. $ft->add_field('string','mysql_port',$mysql_server['mysql_port']);
  521. $ft->add_field('string','mysql_root_passwd',$mysql_server['mysql_root_passwd']);
  522. $ft->end_table();
  523. $ft->add_button("submit","save_settings",get_lang('save_settings'));
  524. $ft->end_form();
  525. echo create_back_button('mysql','mysql_admin');
  526. }
  527. elseif ( isset($_GET['assign']) )
  528. {
  529. echo "<h2>".get_lang_f('mysql_dbs_for',$mysql_server['mysql_name'])."</h2>";
  530. $mysql_server_dbs = $modDb->getMysqlServerDBs($mysql_server['mysql_server_id']);
  531. if ( !empty($mysql_server_dbs) )
  532. {
  533. echo "<h4>".get_lang('edit_dbs')."</h4>";
  534. foreach ( $mysql_server_dbs as $mysql_db )
  535. {
  536. $home_info = $db->getGameHomeWithoutMods($mysql_db['home_id']);
  537. $db_array[$mysql_db['db_id']] = $mysql_db['db_name']." (".$home_info['home_name'].")";
  538. }
  539. $ft = new FormTable();
  540. $ft->start_form('','GET');
  541. $ft->add_field_hidden('m', 'mysql');
  542. $ft->add_field_hidden('p', 'edit');
  543. $ft->add_field_hidden('mysql_server_id', $mysql_server_id);
  544. $ft->add_field_hidden('assign', 'true');
  545. $ft->start_table();
  546. $ft->add_custom_field('select_db',
  547. create_drop_box_from_array($db_array,"db_id",isset($_GET['db_id'])?$_GET['db_id']:"",false));
  548. $ft->end_table();
  549. $ft->add_button('submit','edit_db_settings',get_lang('edit_db_settings'));
  550. $ft->add_button('submit','remove_db',get_lang('remove_db'));
  551. $ft->end_form();
  552. if(isset($_GET['edit_db_settings']))
  553. {
  554. $mysql_db = $modDb->getMysqlDBbyId($_GET['db_id']);
  555. $ft = new FormTable();
  556. $ft->start_form('');
  557. $ft->add_field_hidden('db_id',$mysql_db['db_id']);
  558. $ft->start_table();
  559. $ft->add_custom_field('game_server',
  560. create_drop_box_from_array($homes_array,"home_id",$mysql_db['home_id'],false));
  561. $ft->add_field('string','db_user',$mysql_db['db_user'],"50","readonly");
  562. $ft->add_field('string','db_passwd',$mysql_db['db_passwd']);
  563. $ft->add_field('string','db_name',$mysql_db['db_name'],"50","readonly");
  564. $ft->add_field('on_off','enabled',$mysql_db['enabled']);
  565. $ft->end_table();
  566. $ft->add_button('submit','save_db_changes',get_lang('save_db_changes'));
  567. $ft->end_form();
  568. }
  569. }
  570. echo "<h4>".get_lang('add_db')."</h4>";
  571. $ft = new FormTable();
  572. $ft->start_form('');
  573. $ft->start_table();
  574. $ft->add_custom_field('game_server',
  575. create_drop_box_from_array($homes_array,"home_id","0",false));
  576. $ft->add_field('string','db_user','');
  577. $ft->add_field('string','db_passwd',genRandomString('10'));
  578. $ft->add_field('string','db_name','');
  579. $ft->add_field('on_off','enabled','1');
  580. $ft->end_table();
  581. $ft->add_button('submit','add_db',get_lang('add_db'));
  582. $ft->end_form();
  583. echo create_back_button('mysql','mysql_admin');
  584. }
  585. else
  586. {
  587. print_failure("Invalid url.");
  588. $view->refresh("?m=mysql&p=mysql_admin");
  589. }
  590. }
  591. ?>