servers.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <script type="text/javascript" src="js/jquery/plugins/jquery.tablesorter.collapsible.js"></script>
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4. $( "#privilegies" ).change(function() {
  5. this.form.submit();
  6. });
  7. $( "#remote_server_id" ).change(function() {
  8. if( $(this).val() != "0" )
  9. {
  10. $( "input#mysql_ip" ).val('localhost').prop('readonly', true);
  11. }
  12. else
  13. {
  14. $( "input#mysql_ip" ).prop('readonly', false);
  15. }
  16. });
  17. });
  18. </script>
  19. <?php
  20. /*
  21. *
  22. * OGP - Open Game Panel
  23. * Copyright (C) Copyright (C) 2008 - 2013 The OGP Development Team
  24. *
  25. * http://www.opengamepanel.org/
  26. *
  27. * This program is free software; you can redistribute it and/or
  28. * modify it under the terms of the GNU General Public License
  29. * as published by the Free Software Foundation; either version 2
  30. * of the License, or any later version.
  31. *
  32. * This program is distributed in the hope that it will be useful,
  33. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  34. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  35. * GNU General Public License for more details.
  36. *
  37. * You should have received a copy of the GNU General Public License
  38. * along with this program; if not, write to the Free Software
  39. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  40. *
  41. */
  42. require_once('includes/lib_remote.php');
  43. if ( function_exists('mysqli_connect') )
  44. require_once("modules/mysql/mysqli_database.php");
  45. else
  46. require_once("modules/mysql/mysql_database.php");
  47. function exec_ogp_module() {
  48. $modDb = new MySQLModuleDatabase();
  49. require("includes/config.inc.php");
  50. $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
  51. global $view,$db;
  52. echo "<h2>".get_lang('add_new_mysql_host')."</h2>";
  53. if(isset($_GET['add_mysql_server']))
  54. {
  55. foreach ($_GET as $name => $value)
  56. {
  57. $get[$name] = trim($value);
  58. }
  59. if ( empty($get['mysql_ip']) ){
  60. print_failure(get_lang('enter_mysql_ip'));
  61. }
  62. if ( !isPortValid($get['mysql_port']) ){
  63. print_failure(get_lang('enter_valid_port'));
  64. }
  65. if ( empty($get['mysql_root_passwd']) ){
  66. print_failure(get_lang('enter_mysql_root_password'));
  67. }
  68. if ( empty($get['mysql_name']) ){
  69. print_failure(get_lang('enter_mysql_name'));
  70. }
  71. if ($get['privilegies'] == "custom")
  72. {
  73. $priv = $get;
  74. $privilegies_str = "";
  75. unset($priv['m'],$priv['p'],$priv['remote_server_id'],$priv['mysql_ip'],$priv['mysql_port'],$priv['mysql_root_passwd'],$priv['mysql_name'],$priv['privilegies'],$priv['add_mysql_server']);
  76. foreach($priv as $name => $value)
  77. {
  78. $privilegies_str .= str_replace("_"," ",$name).", ";
  79. }
  80. }
  81. else
  82. {
  83. $privilegies_str = "ALL";
  84. }
  85. $privilegies_str = rtrim( $privilegies_str , ', ' );
  86. $mysql_server_id = $modDb->addMysqlServer($get['remote_server_id'],$get['mysql_name'],$get['mysql_ip'],$get['mysql_port'],$get['mysql_root_passwd'],$privilegies_str);
  87. if ( !$mysql_server_id )
  88. {
  89. print_failure(get_lang('could_not_add_mysql_server'));
  90. $view->refresh("?m=mysql&p=mysql_admin");
  91. return;
  92. }
  93. print_success(get_lang('server_added'));
  94. $view->refresh("?m=mysql&p=mysql_admin");
  95. return;
  96. }
  97. echo "<p>".get_lang('note_mysql_host')."</p>";
  98. $servers = $db->getRemoteServers();
  99. $conn_method[0] = get_lang('direct_connection');
  100. foreach ( $servers as $server_row )
  101. {
  102. $id = $server_row['remote_server_id'];
  103. $name = get_lang_f('connection_through_remote_server_named',$server_row['remote_server_name']);
  104. $conn_method[$id] = $name;
  105. }
  106. require_once("includes/form_table_class.php");
  107. $ft = new FormTable();
  108. $ft->start_form("", "GET");
  109. $ft->start_table();
  110. $ft->add_field_hidden('m', 'mysql');
  111. $ft->add_field_hidden('p', 'mysql_admin');
  112. $ft->add_custom_field('connection_method',
  113. create_drop_box_from_array($conn_method,"remote_server_id","0",false));
  114. $ft->add_field('string','mysql_name',isset($_GET['mysql_name']) ? $_GET['mysql_name'] : "");
  115. $ft->add_field('string','mysql_ip',isset($_GET['mysql_ip']) ? $_GET['mysql_ip'] : "localhost");
  116. $ft->add_field('string','mysql_port',isset($_GET['mysql_port']) ? $_GET['mysql_port'] : "3306");
  117. $ft->add_field('string','mysql_root_passwd',isset($_GET['mysql_root_passwd']) ? $_GET['mysql_root_passwd'] : "");
  118. $ft->add_custom_field('privilegies',
  119. create_drop_box_from_array(array('all' => get_lang('all'), 'custom' => get_lang('custom')),"privilegies",isset($_GET['privilegies']) ? $_GET['privilegies'] : "all",false));
  120. if(isset($_GET['privilegies']) and $_GET['privilegies'] == "custom")
  121. {
  122. $ft->add_custom_field('sql_alter','<input type="checkbox" name="ALTER" checked="checked" >');
  123. $ft->add_custom_field('sql_create','<input type="checkbox" name="CREATE" checked="checked" >');
  124. $ft->add_custom_field('sql_create_temporary_tables','<input type="checkbox" name="CREATE TEMPORARY TABLES" checked="checked" >');
  125. $ft->add_custom_field('sql_delete','<input type="checkbox" name="DELETE" checked="checked" >');
  126. $ft->add_custom_field('sql_drop','<input type="checkbox" name="DROP" checked="checked" >');
  127. $ft->add_custom_field('sql_index','<input type="checkbox" name="INDEX" checked="checked" >');
  128. $ft->add_custom_field('sql_insert','<input type="checkbox" name="INSERT" checked="checked" >');
  129. $ft->add_custom_field('sql_lock_tables','<input type="checkbox" name="LOCK TABLES" checked="checked" >');
  130. $ft->add_custom_field('sql_select','<input type="checkbox" name="SELECT" checked="checked" >');
  131. $ft->add_custom_field('sql_update','<input type="checkbox" name="UPDATE" checked="checked" >');
  132. $ft->add_custom_field('sql_grant_option','<input type="checkbox" name="GRANT OPTION" checked="checked" >');
  133. }
  134. $ft->end_table();
  135. $ft->add_button("submit","add_mysql_server",get_lang('add_mysql_server'));
  136. $ft->end_form();
  137. $mysql_servers = $modDb->getMysqlServers();
  138. if ( $mysql_servers === FALSE )
  139. return;
  140. $tr = 0;
  141. ?><table id="servermonitor" class="tablesorter remote">
  142. <thead>
  143. <tr>
  144. <th colspan="4" ><?php print_lang('configured_mysql_hosts'); ?></th>
  145. </tr>
  146. </thead>
  147. <tbody> <?php
  148. foreach ( $mysql_servers as $mysql_server )
  149. {
  150. if($mysql_server['remote_server_id'] != 0)
  151. {
  152. $remote_server = $db->getRemoteServer($mysql_server['remote_server_id']);
  153. $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']);
  154. $host_stat = $remote->status_chk();
  155. if($host_stat === 0 )
  156. {
  157. $server_status = "<span class='failure'>".get_lang('offline')."</span> ";
  158. }
  159. elseif( $host_stat === 1)
  160. {
  161. $server_status = "<span class='success'>".get_lang('online')."</span>";
  162. $command = "mysql -h ".$mysql_server['mysql_ip']." -P ".$mysql_server['mysql_port']." -u root -p".$mysql_server['mysql_root_passwd'].' -e exit; echo $?';
  163. $test_mysql_conn = $remote->exec($command);
  164. if($test_mysql_conn == 0)
  165. {
  166. $server_status .= " / <span class='success'>".get_lang('mysql_online')."</span>";
  167. }
  168. else
  169. {
  170. $server_status .= "/<span class='failure'>".get_lang('mysql_offline')."</span>";
  171. }
  172. }
  173. elseif( $host_stat === -1 )
  174. {
  175. $server_status = "<span class='failure'>".get_lang('encryption_key_mismatch')."</span>\n";
  176. }
  177. else
  178. {
  179. $server_status = "<span class='failure'>".get_lang('unknown_error').": $host_stat</span>\n";
  180. }
  181. }
  182. else
  183. {
  184. if( function_exists('mysqli_connect') )
  185. {
  186. @$link = mysqli_connect($mysql_server['mysql_ip'], 'root', $mysql_server['mysql_root_passwd'], "", $mysql_server['mysql_port']);
  187. if ( $link === FALSE )
  188. {
  189. $server_status = "<span class='failure'>".get_lang('mysql_offline')."</span>";
  190. }
  191. else
  192. {
  193. $server_status = "<span class='success'>".get_lang('mysql_online')."</span>";
  194. mysqli_close($link);
  195. }
  196. }
  197. else
  198. {
  199. @$link = mysql_connect($mysql_server['mysql_ip'].':'.$mysql_server['mysql_port'], 'root', $mysql_server['mysql_root_passwd']);
  200. if ( $link === FALSE )
  201. {
  202. $server_status = "<span class='failure'>".get_lang('mysql_offline')."</span>";
  203. }
  204. else
  205. {
  206. $server_status = "<span class='success'>".get_lang('mysql_online')."</span>";
  207. mysql_close($link);
  208. }
  209. }
  210. }
  211. $databases = "";
  212. $mysql_server_dbs = $modDb->getMysqlServerDBs($mysql_server['mysql_server_id']);
  213. if ( !empty($mysql_server_dbs) )
  214. {
  215. foreach ( $mysql_server_dbs as $mysql_db )
  216. {
  217. $databases .= $mysql_db['db_name']."<a href='?m=mysql&p=edit&mysql_server_id=".$mysql_server['mysql_server_id'].
  218. "&assign=true&db_id=".$mysql_db['db_id']."&edit_db_settings'>[".get_lang('edit')."]</a>\n".
  219. "<a href='?m=mysql&p=edit&mysql_server_id=".$mysql_server['mysql_server_id'].
  220. "&assign=true&db_id=".$mysql_db['db_id']."&remove_db'>[".get_lang('remove')."]</a>\n".
  221. "<br>";
  222. }
  223. }
  224. $conection_type = $mysql_server['remote_server_id'] == 0 ?
  225. get_lang('direct_connection') :
  226. get_lang_f('connection_through_remote_server_named',$remote_server['remote_server_name']);
  227. $buttons = "<a href='?m=mysql&amp;p=edit&amp;mysql_server_id=".
  228. $mysql_server['mysql_server_id']."&amp;delete'>[".get_lang('remove')."]</a>\n".
  229. "<a href='?m=mysql&amp;p=edit&amp;mysql_server_id=".$mysql_server['mysql_server_id'].
  230. "&amp;edit'>[".get_lang('edit')."]</a>\n".
  231. "<a href='?m=mysql&amp;p=edit&amp;mysql_server_id=".$mysql_server['mysql_server_id'].
  232. "&amp;assign'>[".get_lang('assign_db')."]</a>\n";
  233. $tittle = "<b>ID#:</b> <b style='color:red;'>".$mysql_server['mysql_server_id']."</b></td>
  234. <td class='collapsible' ><b>".get_lang('mysql_server_name').":</b> ".$mysql_server['mysql_name']."</td>
  235. <td class='collapsible' ><b>".get_lang('server_status').":</b>$server_status</td>";
  236. $data = "<tr class='expand-child' >
  237. <td>
  238. <b>".get_lang('mysql_ip_port').":</b> ".$mysql_server['mysql_ip'].":".$mysql_server['mysql_port']."<br />
  239. <b>".get_lang('mysql_root_passwd').":</b> ".$mysql_server['mysql_root_passwd']."<br />
  240. <b>".get_lang('connection_method').":</b> ".$conection_type."<br />
  241. <b>".get_lang('user_privilegies').":</b> ".$mysql_server['privilegies_str']."<br />
  242. </td>
  243. <td>
  244. <b>".get_lang('current_dbs').":</b><br />".$databases.
  245. "</td>
  246. <td>
  247. $buttons
  248. </td>
  249. </tr>";
  250. // Template
  251. $first = "<tr class='maintr'><td class='collapsible' >$tittle</td></tr>";
  252. $second = $data;
  253. //Echo them all
  254. echo "$first$second";
  255. }
  256. echo "</tbody>";
  257. echo "</table>\n";
  258. ?>
  259. <script type="text/javascript">
  260. $(document).ready(function(){
  261. $("#servermonitor")
  262. .collapsible("td.collapsible", {collapse: true});
  263. });
  264. </script>
  265. <?php
  266. unset($modDb);
  267. }