Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/89922108-1604-44ae-949d-358d32b9d70a Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
336 lines
13 KiB
PHP
336 lines
13 KiB
PHP
<script type="text/javascript">
|
|
$(document).ready(function(){
|
|
$( "#db_id" ).change(function() {
|
|
this.form.submit();
|
|
});
|
|
});
|
|
</script>
|
|
<?php
|
|
/*
|
|
*
|
|
* OGP - Open Game Panel
|
|
* Copyright (C) 2008 - 2018 The OGP Development Team
|
|
*
|
|
* http://www.opengamepanel.org/
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
*/
|
|
|
|
require_once("modules/mysql/functions.php");
|
|
require_once('includes/form_table_class.php');
|
|
require_once('includes/lib_remote.php');
|
|
if ( function_exists('mysqli_connect') )
|
|
require_once("modules/mysql/mysqli_database.php");
|
|
else
|
|
require_once("modules/mysql/mysql_database.php");
|
|
|
|
function exec_ogp_module() {
|
|
|
|
$modDb = new MySQLModuleDatabase();
|
|
require("includes/config.inc.php");
|
|
$modDb->connect($db_host,$db_user,$db_pass,$db_name,$table_prefix);
|
|
|
|
global $view,$db;
|
|
|
|
$isAdmin = $db->isAdmin( $_SESSION['user_id'] );
|
|
|
|
if( $isAdmin )
|
|
$game_home = $db->getGameHome($_GET['home_id']);
|
|
else
|
|
$game_home = $db->getUserGameHome($_SESSION['user_id'],$_GET['home_id']);
|
|
if ( ! $game_home and ! $isAdmin )
|
|
return;
|
|
|
|
echo "<h2>".get_lang_f('mysql_dbs_for',htmlentities($game_home['home_name']))."</h2>";
|
|
|
|
$home_dbs = $modDb->getMysqlDBsbyHomeId($game_home['home_id']);
|
|
|
|
if(empty($home_dbs))
|
|
{
|
|
print_failure(get_lang_f('there_are_no_databases_assigned_for',htmlentities($game_home['home_name'])));
|
|
return;
|
|
}
|
|
|
|
$db_array["0"] = get_lang('select_db');
|
|
foreach ((array)$home_dbs as $home_db)
|
|
{
|
|
$db_array["$home_db[db_id]"] = $home_db['db_name'];
|
|
}
|
|
|
|
$ft = new FormTable();
|
|
$ft->start_form('');
|
|
$ft->start_table();
|
|
$ft->add_custom_field('select_db',
|
|
create_drop_box_from_array($db_array,"db_id",isset($_REQUEST['db_id'])?$_REQUEST['db_id']:"0",false));
|
|
$ft->end_table();
|
|
$ft->end_form();
|
|
|
|
$database_exists = FALSE;
|
|
$server_online = FALSE;
|
|
if(isset($_REQUEST['db_id']) AND $_REQUEST['db_id'] != "0")
|
|
{
|
|
$db_id = $_REQUEST['db_id'];
|
|
$mysql_db = $modDb->getMysqlHomeDBbyId($game_home['home_id'],$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)
|
|
{
|
|
$user_db = $remote->exec('mysqlshow --user='.$mysql_db['db_user'].' --password='.$mysql_db['db_passwd'].' '.$mysql_db['db_name']);
|
|
|
|
if($user_db != "")
|
|
$database_exists = TRUE;
|
|
|
|
$server_online = TRUE;
|
|
}
|
|
}
|
|
}
|
|
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 )
|
|
{
|
|
$server_online = TRUE;
|
|
$database_exists = TRUE;
|
|
$databases = mysqli_query($link, "SHOW TABLES;");
|
|
$user_db = "Database: ".$mysql_db['db_name']."\nTables:\n";
|
|
while ( $table = mysqli_fetch_array($databases) ) {
|
|
$user_db .= $table[0] . "\n";
|
|
}
|
|
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 )
|
|
{
|
|
$server_online = TRUE;
|
|
if ( mysql_select_db($mysql_db['db_name'],$link) !== FALSE )
|
|
{
|
|
$databases = mysql_query("SHOW TABLES;");
|
|
$user_db = "Database: ".$mysql_db['db_name']."\nTables:\n";
|
|
while ( $table = mysql_fetch_array($databases) ) {
|
|
$user_db .= $table[0] . "\n";
|
|
}
|
|
$database_exists = TRUE;
|
|
}
|
|
mysql_close($link);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
if(isset($_POST['restore']))
|
|
{
|
|
$command = 'mysql --host='.$mysql_db['mysql_ip'].' --port='.$mysql_db['mysql_port'].' --user='.$mysql_db['db_user'].
|
|
' --password='.$mysql_db['db_passwd'].' '.$mysql_db['db_name'].' < ';
|
|
|
|
$local_tmp = sys_get_temp_dir()."/".$_FILES["file"]["name"];
|
|
move_uploaded_file($_FILES["file"]["tmp_name"], $local_tmp);
|
|
if($mysql_db['remote_server_id'] != "0")
|
|
{
|
|
$temp_dir = trim($remote->exec('mktemp -d'));
|
|
$writefile = $temp_dir."/".$_FILES["file"]["name"];
|
|
$content = file_get_contents($local_tmp);
|
|
$command .= $writefile;
|
|
if($remote->remote_writefile($writefile, $content) === 1)
|
|
$remote->exec($command);
|
|
}
|
|
else
|
|
{
|
|
$command .= $local_tmp;
|
|
system($command);
|
|
}
|
|
unlink($local_tmp);
|
|
$view->refresh('?m=mysql&p=user_db&home_id='.$game_home['home_id'].'&db_id='.$db_id,0);
|
|
}
|
|
//voltar para o game monitor
|
|
echo "<div align='center'><form action='' method='get'>
|
|
<input type='hidden' name='m' value='gamemanager' />
|
|
<input type='hidden' name='p' value='game_monitor' />
|
|
<input type='hidden' name='home_id' value='".$_GET['home_id']."' />
|
|
<input type='submit' value='<<<Back to Game Monitor' />
|
|
</form></div>";
|
|
if($server_online and $database_exists)
|
|
{
|
|
?>
|
|
<form action="" method="post" class="form-group">
|
|
<input type="hidden" name="db_id" value="<?php echo $db_id; ?>">
|
|
<?php
|
|
echo "<table class='database' ><tr><td>\n<div class='dragbox bloc rounded' ><h4>".get_lang('db_info')."</h4>\n".
|
|
"<table class='database_info' ><tr>".
|
|
"<td><b>Sign in to :<a href='http://".$mysql_db['mysql_ip'] ."/phpmyadmin' target='_blank'> Phpmyadmin</a></td><td></td></tr>".
|
|
"<td><b>Download do :<a href='https://www.heidisql.com/installers/HeidiSQL_11.0.0.5919_Setup.exe' target='_blank'> HeidiSQL</a></td><td></td></tr>".
|
|
"<td><b>".get_lang('mysql_ip')." :</b></td><td>".$mysql_db['mysql_ip']."</td></tr>\n".
|
|
"<td><b>".get_lang('mysql_port')." :</b></td><td>".$mysql_db['mysql_port']."</td></tr>\n".
|
|
"<td><b>".get_lang('db_name')." :</b></td><td>".$mysql_db['db_name']."</td></tr>\n".
|
|
"<td><b>".get_lang('db_user')." :</b></td><td>".$mysql_db['db_user']."</td></tr>\n".
|
|
"<td><b>".get_lang('db_passwd')." :</b></td><td>".$mysql_db['db_passwd']."</td></tr>\n".
|
|
'<td><b>New database password :</b></td><td><input type="text" id="db_passwd" name="db_passwd" value="" size="25" class="form-control"></td></tr>'."\n".
|
|
'<td></td><td><input type="submit" name="save_db_changes" value="Save new password" class="btn btn-sm btn-primary"></td></tr>'."\n".
|
|
"<td><b>".get_lang('privilegies')." :</b></td><td>".$mysql_db['privilegies_str']."</td></tr></table></div>\n".
|
|
"<td><div class='dragbox bloc rounded' style='background:black;' ><h4>".get_lang('db_tables')."</h4>".
|
|
"<pre><xmp>".$user_db."</xmp></pre></div></td></tr></table>";
|
|
?>
|
|
</form>
|
|
<?php
|
|
|
|
/*
|
|
echo "<table class='database' ><tr><td>\n<div class='dragbox bloc rounded' ><h4>".get_lang('db_info')."</h4>\n".
|
|
"<table class='database_info' ><tr>".
|
|
"<td><b>Fazer login no :<a href='http://".$mysql_db['mysql_ip'] ."/phpmyadmin' target='_blank'> Phpmyadmin</a></td><td></td></tr>".
|
|
"<td><b>Download do :<a href='https://www.heidisql.com/installers/HeidiSQL_11.0.0.5919_Setup.exe' target='_blank'> HeidiSQL</a></td><td></td></tr>".
|
|
"<td><b>".get_lang('mysql_ip')." :</b></td><td>".$mysql_db['mysql_ip']."</td></tr>\n".
|
|
"<td><b>".get_lang('mysql_port')." :</b></td><td>".$mysql_db['mysql_port']."</td></tr>\n".
|
|
"<td><b>".get_lang('db_name')." :</b></td><td>".$mysql_db['db_name']."</td></tr>\n".
|
|
"<td><b>".get_lang('db_user')." :</b></td><td>".$mysql_db['db_user']."</td></tr>\n".
|
|
"<td><b>".get_lang('db_passwd')." :</b></td><td>".$mysql_db['db_passwd']."</td></tr>\n".
|
|
"<td><b>".get_lang('privilegies')." :</b></td><td>".$mysql_db['privilegies_str']."</td></tr></table></div>\n".
|
|
"<td><div class='dragbox bloc rounded' style='background:black;' ><h4>".get_lang('db_tables')."</h4>".
|
|
"<pre><xmp>".$user_db."</xmp></pre></div></td></tr></table>";
|
|
*/
|
|
|
|
if (isset($_POST['save_db_changes']))
|
|
{
|
|
$db_id = $db_id;
|
|
$home_id = $game_home['home_id'];
|
|
$post_db_user = trim($mysql_db['db_user']);
|
|
$post_db_passwd = trim($_POST['db_passwd']);
|
|
$post_db_name = trim($mysql_db['db_name']);
|
|
$enabled = 1;
|
|
|
|
if ( empty($post_db_passwd) ){
|
|
//print_failure(get_lang('enter_db_password'));
|
|
print_failure("Enter a new password!");
|
|
}
|
|
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 ((array)$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 ((array)$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=user_db&home_id='.$game_home['home_id'].'&db_id='.$db_id."&assign");
|
|
}
|
|
}
|
|
}
|
|
|
|
if(suhosin_function_exists('system') or $mysql_db['remote_server_id'] != "0")
|
|
{
|
|
echo "<h2>".get_lang('db_backup')."</h2>";
|
|
|
|
?>
|
|
<table class='administration-table'>
|
|
<tr>
|
|
<td>
|
|
<form method="POST" action="?m=mysql&p=get_dump&home_id=<?php echo $game_home['home_id']; ?>&db_id=<?php echo $db_id; ?>&type=cleared" >
|
|
<button name="download"><?php print_lang('download_db_backup'); ?></button>
|
|
</form>
|
|
<br>
|
|
<form method="POST" action="?m=mysql&p=user_db&home_id=<?php echo $game_home['home_id']; ?>&db_id=<?php echo $db_id; ?>" enctype="multipart/form-data">
|
|
<label for="file"><?php print_lang('sql_file'); ?>:</label>
|
|
<input type="file" name="file" id="file" />
|
|
<button name="restore"><?php print_lang('restore_db_backup'); ?></button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<?php
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|