connect($db_host,$db_user,$db_pass,$db_name,$table_prefix); global $view, $db; $mysql_server_id = @$_REQUEST['mysql_server_id']; $mysql_server = $modDb->getMysqlServer($mysql_server_id); if($mysql_server['remote_server_id'] == "0") $server_homes = $db->getGameHomes(); else $server_homes = $modDb->getGameHomesByRemoteServerId($mysql_server['remote_server_id']); $homes_array[0] = get_lang('select_game_server'); foreach($server_homes as $server_home) { $homes_array[$server_home['home_id']] = "(ID ".$server_home['home_id'].") ".$server_home['home_name']; } if ( $mysql_server === FALSE ) { print_failure(get_lang_f('invalid_mysql_server_id',$mysql_server_id)); $view->refresh("?m=mysql&p=mysql_admin"); return; } if ( isset($_REQUEST['add_db']) ) { $home_id = $_POST['home_id']; $db_user = trim($_POST['db_user']); $db_passwd = trim($_POST['db_passwd']); $db_name = trim($_POST['db_name']); $enabled = $_POST['enabled']; if ( empty($db_user) ){ print_failure(get_lang('enter_db_user')); } elseif ( empty($db_passwd) ){ print_failure(get_lang('enter_db_password')); } elseif ( empty($db_name) ){ print_failure(get_lang('enter_db_name')); } elseif ( $home_id == 0 ){ print_failure(get_lang('select_game_server')); } else { $db_id = $modDb->addMysqlServerDB($mysql_server_id, $home_id, $db_user, $db_passwd, $db_name, $enabled); if(!$db_id) { print_failure(get_lang_f('there_is_another_db_named_or_user_named',$db_name,$db_user)); } else { $mysql_db = $modDb->getMysqlDBbyId($db_id); if(!$mysql_db) return; if($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']); $host_stat = $remote->status_chk(); if($host_stat === 1 ) { $command = "mysql -h localhost -P ".$mysql_db['mysql_port']." -u root -p".$mysql_db['mysql_root_passwd'].' -e exit; echo $?'; $test_mysql_conn = $remote->exec($command); if($test_mysql_conn == 0) { $SQL = "CREATE DATABASE IF NOT EXISTS \\`".$mysql_db['db_name']."\\`;". "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';". "FLUSH PRIVILEGES;"; $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\""; $result = $remote->exec($command); } } } else { if( function_exists('mysqli_connect') ) { @$link = mysqli_connect($mysql_db['mysql_ip'], $mysql_db['db_user'], $mysql_db['db_passwd'], $mysql_db['db_name'], $mysql_db['mysql_port']); if ( $link === FALSE ) { @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']); if ( $link !== FALSE ) { $queries = array("CREATE DATABASE IF NOT EXISTS `".$mysql_db['db_name']."`;", "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';", "FLUSH PRIVILEGES;"); foreach( $queries as $query ) { @$return = mysqli_query($link, $query); if(!$return) { break; } } mysqli_close($link); } } } else { @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], $mysql_db['db_user'], $mysql_db['db_passwd']); if ( $link === FALSE ) { @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']); if ( $link !== FALSE ) { $queries = array("CREATE DATABASE IF NOT EXISTS `".$mysql_db['db_name']."`;", "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$mysql_db['db_passwd']."';", "FLUSH PRIVILEGES;"); foreach( $queries as $query ) { @$return = mysql_query($query); if(!$return) { break; } } mysql_close($link); } } } } print_success(get_lang_f('db_added_for_home_id',$_POST['home_id'])); } } $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=".$mysql_server_id."&assign",5); } else if ( isset($_REQUEST['remove_db']) ) { $db_id = $_REQUEST['db_id']; $mysql_db = $modDb->getMysqlDBbyId($db_id); if($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']); $host_stat = $remote->status_chk(); if($host_stat === 1 ) { $remote->exec('mysql --host=localhost --port='.$mysql_db['mysql_port'].' -uroot -p'.$mysql_db['mysql_root_passwd']. ' -e "DROP DATABASE '.$mysql_db['db_name'].";DROP USER '".$mysql_db['db_user']."'@'%';\""); } } else { if( function_exists('mysqli_connect') ) { @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']); if ( $link !== FALSE ) { $queries = array("DROP DATABASE ".$mysql_db['db_name'].";", "DROP USER '".$mysql_db['db_user']."'@'%';"); foreach( $queries as $query ) { @$return = mysqli_query($link, $query); if(!$return) break; } mysqli_close($link); $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix); } } else { @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']); if ( $link !== FALSE ) { $queries = array("DROP DATABASE ".$mysql_db['db_name'].";", "DROP USER '".$mysql_db['db_user']."'@'%';"); foreach( $queries as $query ) { @$return = mysql_query($query); if(!$return) break; } mysql_close($link); $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix); } } } if ( $modDb->removeMysqlServerDB($db_id) === FALSE ) { print_failure(get_lang('could_not_remove_db')); } else { print_success(get_lang_f('db_removed_successfully_from_mysql_server_named',$mysql_db['mysql_name'])); } $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=".$mysql_server_id."&assign"); } else if ( isset($_POST['save_db_changes']) ) { $db_id = $_POST['db_id']; $home_id = $_POST['home_id']; $post_db_user = trim($_POST['db_user']); $post_db_passwd = trim($_POST['db_passwd']); $post_db_name = trim($_POST['db_name']); $enabled = $_POST['enabled']; if ( empty($post_db_passwd) ){ print_failure(get_lang('enter_db_password')); } elseif ( $home_id == 0 ){ print_failure(get_lang('select_game_server')); } else { $mysql_db = $modDb->getMysqlDBbyId($db_id); if($post_db_passwd != $mysql_db['db_passwd']) { if($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']); $host_stat = $remote->status_chk(); if($host_stat === 1 ) { $SQL = "DROP USER '".$mysql_db['db_user']."'@'%';". "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';". "FLUSH PRIVILEGES;"; $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\""; $remote->exec($command); } } else { if( function_exists('mysqli_connect') ) { @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']); if ( $link !== FALSE ) { $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';", "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';", "FLUSH PRIVILEGES;"); foreach( $queries as $query ) { @$return = mysqli_query($link, $query); if(!$return) break; } mysqli_close($link); $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix); } } else { @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']); if ( $link !== FALSE ) { $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';", "GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';", "FLUSH PRIVILEGES;"); foreach( $queries as $query ) { @$return = mysql_query($query); if(!$return) break; } mysql_close($link); $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix); } } } } if($enabled != $mysql_db['enabled'] ) { if($mysql_db['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_db['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']); $host_stat = $remote->status_chk(); if($host_stat === 1 ) { if($enabled == "0") $SQL = "DROP USER '".$mysql_db['db_user']."'@'%';". "FLUSH PRIVILEGES;"; else $SQL = "GRANT ".$mysql_db['privilegies_str']." ON \\`".$mysql_db['db_name']."\\`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';". "FLUSH PRIVILEGES;"; $command = "mysql --host=localhost --port=".$mysql_db['mysql_port']." -uroot -p".$mysql_db['mysql_root_passwd']." -e \"".$SQL."\""; $remote->exec($command); } } else { if( function_exists('mysqli_connect') ) { @$link = mysqli_connect($mysql_db['mysql_ip'], 'root', $mysql_db['mysql_root_passwd'], "", $mysql_db['mysql_port']); if ( $link !== FALSE ) { if($enabled == "0") $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';", "FLUSH PRIVILEGES;"); else $queries = array("GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';", "FLUSH PRIVILEGES;"); foreach( $queries as $query ) { @$return = mysqli_query($link, $query); if(!$return) break; } mysqli_close($link); $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix); } } else { @$link = mysql_connect($mysql_db['mysql_ip'].':'.$mysql_db['mysql_port'], 'root', $mysql_db['mysql_root_passwd']); if ( $link !== FALSE ) { if($enabled == "0") $queries = array("DROP USER '".$mysql_db['db_user']."'@'%';", "FLUSH PRIVILEGES;"); else $queries = array("GRANT ".$mysql_db['privilegies_str']." ON `".$mysql_db['db_name']."`.* TO '".$mysql_db['db_user']."'@'%' IDENTIFIED BY '".$post_db_passwd."';", "FLUSH PRIVILEGES;"); foreach( $queries as $query ) { @$return = mysql_query($query); if(!$return) break; } mysql_close($link); $modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix); } } } } if ( $modDb->editMysqlServerDB($db_id, $home_id, $post_db_user, $post_db_passwd, $post_db_name, $enabled) === FALSE ) { print_failure(get_lang('could_not_be_changed')); } else { print_success(get_lang_f('db_changed_successfully',$post_db_name)); } } $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=".$mysql_server_id."&assign"); } else if ( isset($_REQUEST['delete']) ) { if ( !isset($_REQUEST['y'] ) ) { echo "

".get_lang_f('areyousure_remove_mysql_server',$mysql_server['mysql_name'])."

". get_lang('yes')." ". get_lang('no')."

"; return; } else { $mysql_dbs = $modDb->getMysqlServerDBs($mysql_server_id); if(!empty($mysql_dbs)) { foreach($mysql_dbs as $mysql_db) { if($mysql_server['remote_server_id'] != "0") { $remote_server = $db->getRemoteServer($mysql_server['remote_server_id']); $remote = new OGPRemoteLibrary($remote_server['agent_ip'],$remote_server['agent_port'],$remote_server['encryption_key'],$remote_server['timeout']); $host_stat = $remote->status_chk(); if($host_stat === 1 ) { $remote->exec('mysql --host=localhost --port='.$mysql_server['mysql_port'].' -uroot -p'.$mysql_server['mysql_root_passwd']. ' -e "DROP DATABASE '.$mysql_db['db_name'].";DROP USER '".$mysql_db['db_user']."'@'%';\""); } } else { if( function_exists('mysqli_connect') ) { @$link = mysqli_connect($mysql_server['mysql_ip'], 'root', $mysql_server['mysql_root_passwd'], "", $mysql_server['mysql_port']); if ( $link !== FALSE ) { $queries = array("DROP DATABASE ".$mysql_db['db_name'].";", "DROP USER '".$mysql_db['db_user']."'@'%';"); foreach( $queries as $query ) { @$return = mysqli_query($query); if(!$return) break; } mysqli_close($link); } } else { @$link = mysql_connect($mysql_server['mysql_ip'].':'.$mysql_server['mysql_port'], 'root', $mysql_server['mysql_root_passwd']); if ( $link !== FALSE ) { $queries = array("DROP DATABASE ".$mysql_db['db_name'].";", "DROP USER '".$mysql_db['db_user']."'@'%';"); foreach( $queries as $query ) { @$return = mysql_query($query); if(!$return) break; } mysql_close($link); } } } } } if ( $modDb->removeMysqlServer($mysql_server_id) === FALSE ) print_failure(get_lang('error_while_remove')); else print_success(get_lang_f('mysql_server_removed',$mysql_server['mysql_name'])); } $view->refresh("?m=mysql&p=mysql_admin"); return; } else if ( isset($_POST['save_settings']) ) { foreach ($_POST as $name => $value) { $get[$name] = trim($value); } if ( empty($get['mysql_ip']) ){ print_failure(get_lang('enter_mysql_ip')); } elseif ( !isPortValid($get['mysql_port']) ){ print_failure(get_lang('enter_valid_port')); } elseif ( empty($get['mysql_root_passwd']) ){ print_failure(get_lang('enter_mysql_root_password')); } elseif ( empty($get['mysql_name']) ){ print_failure(get_lang('enter_mysql_name')); } 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'])) print_failure(get_lang_f('unable_to_set_changes_to',$mysql_server['mysql_name'])); else print_success(get_lang_f('mysql_server_settings_changed',$mysql_server['mysql_name'])); $view->refresh("?m=mysql&p=mysql_admin&p=edit&mysql_server_id=".$mysql_server_id."&edit",5); } elseif ( isset($_GET['edit']) ) { echo "

".get_lang_f('editing_mysql_server',$mysql_server['mysql_name'])."

"; $mysql_server = $modDb->getMysqlServer($mysql_server_id); $servers = $db->getRemoteServers(); $conn_method[0] = get_lang('direct_connection'); foreach ( $servers as $server_row ) { $id = $server_row['remote_server_id']; $name = get_lang_f('connection_through_remote_server_named',$server_row['remote_server_name']); $conn_method[$id] = $name; } $ft = new FormTable(); $ft->start_form('?m=mysql&p=edit&mysql_server_id='.$mysql_server_id.'&edit'); $ft->start_table(); $ft->add_custom_field('connection_method', create_drop_box_from_array($conn_method,"remote_server_id",$mysql_server['remote_server_id'],false)); $ft->add_field('string','mysql_name',$mysql_server['mysql_name']); $ft->add_field('string','mysql_ip',$mysql_server['mysql_ip']); $ft->add_field('string','mysql_port',$mysql_server['mysql_port']); $ft->add_field('string','mysql_root_passwd',$mysql_server['mysql_root_passwd']); $ft->end_table(); $ft->add_button("submit","save_settings",get_lang('save_settings')); $ft->end_form(); echo create_back_button('mysql','mysql_admin'); } elseif ( isset($_GET['assign']) ) { echo "

".get_lang_f('mysql_dbs_for',$mysql_server['mysql_name'])."

"; $mysql_server_dbs = $modDb->getMysqlServerDBs($mysql_server['mysql_server_id']); if ( !empty($mysql_server_dbs) ) { echo "

".get_lang('edit_dbs')."

"; foreach ( $mysql_server_dbs as $mysql_db ) { $home_info = $db->getGameHomeWithoutMods($mysql_db['home_id']); $db_array[$mysql_db['db_id']] = $mysql_db['db_name']." (".$home_info['home_name'].")"; } $ft = new FormTable(); $ft->start_form('','GET'); $ft->add_field_hidden('m', 'mysql'); $ft->add_field_hidden('p', 'edit'); $ft->add_field_hidden('mysql_server_id', $mysql_server_id); $ft->add_field_hidden('assign', 'true'); $ft->start_table(); $ft->add_custom_field('select_db', create_drop_box_from_array($db_array,"db_id",isset($_GET['db_id'])?$_GET['db_id']:"",false)); $ft->end_table(); $ft->add_button('submit','edit_db_settings',get_lang('edit_db_settings')); $ft->add_button('submit','remove_db',get_lang('remove_db')); $ft->end_form(); if(isset($_GET['edit_db_settings'])) { $mysql_db = $modDb->getMysqlDBbyId($_GET['db_id']); $ft = new FormTable(); $ft->start_form(''); $ft->add_field_hidden('db_id',$mysql_db['db_id']); $ft->start_table(); $ft->add_custom_field('game_server', create_drop_box_from_array($homes_array,"home_id",$mysql_db['home_id'],false)); $ft->add_field('string','db_user',$mysql_db['db_user'],"50","readonly"); $ft->add_field('string','db_passwd',$mysql_db['db_passwd']); $ft->add_field('string','db_name',$mysql_db['db_name'],"50","readonly"); $ft->add_field('on_off','enabled',$mysql_db['enabled']); $ft->end_table(); $ft->add_button('submit','save_db_changes',get_lang('save_db_changes')); $ft->end_form(); } } echo "

".get_lang('add_db')."

"; $ft = new FormTable(); $ft->start_form(''); $ft->start_table(); $ft->add_custom_field('game_server', create_drop_box_from_array($homes_array,"home_id","0",false)); $ft->add_field('string','db_user',''); $ft->add_field('string','db_passwd',genRandomString('10')); $ft->add_field('string','db_name',''); $ft->add_field('on_off','enabled','1'); $ft->end_table(); $ft->add_button('submit','add_db',get_lang('add_db')); $ft->end_form(); echo create_back_button('mysql','mysql_admin'); } else { print_failure("Invalid url."); $view->refresh("?m=mysql&p=mysql_admin"); } } ?>