автоматическое востановление базы данных, с помошью дампера

Потребовалось мне закаченную базу в gzip архиве востановить, да так чтобы и менеджеры на работе могли это сделать и пароли не приходилось вводить. Использовал для этой цели всем известный Sypex Dumper + чьято разработка по авторезерву а мне нужно автовостановление.

Открываем dumper.php и в начале после

setcookie(”sxd”, base64_encode(”SKD101:{$_POST['login']}:{$_POST['pass']}”));

вставляем: setcookie(”sxdr”, base64_encode(”SKD101:{$_POST['login']}:{$_POST['pass']}”));

после:

elseif (!empty($_GET['sxd'])) {
$user = explode(”:”, base64_decode($_GET['sxd']));
if (@mysql_connect(DBHOST, $user[1], $user[2])){
$auth = 1;
}
else{
$error = ‘#’ . mysql_errno() . ‘: ‘ . mysql_error();
}
}
вставляем:

elseif (!empty($_COOKIE['sxdr'])) {
$user = explode(”:”, base64_decode($_COOKIE['sxdr']));
if (@mysql_connect(DBHOST, $user[1], $user[2])){
$auth = 1;
}
else{
$error = ‘#’ . mysql_errno() . ‘: ‘ . mysql_error();
}
}
elseif (!empty($_GET['sxdr'])) {
$user = explode(”:”, base64_decode($_GET['sxdr']));
if (@mysql_connect(DBHOST, $user[1], $user[2])){
$auth = 1;
}
else{
$error = ‘#’ . mysql_errno() . ‘: ‘ . mysql_error();
}
}

после:

setcookie(”sxd”);

вставляем:

setcookie(”sxdr”);

находим:

function restore(){

и вместо:

if (!isset($_POST)) {$this->main();}

вставляем:

if (!isset($_REQUEST)) {$this->main();}

if (empty($_GET['sxdr'])) {

$base_root = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == ‘on’) ? ‘https’ : ‘http’;
$base_url = $base_root .= ‘://’. preg_replace(’/[^a-z0-9-:._]/i’, ”, $_SERVER['HTTP_HOST']);

$req = $base_url.$_SERVER['REQUEST_URI'].’?sxdr=’.$_COOKIE['sxdr'].’&’;

$req .= isset($_REQUEST['db_restore']) ? ‘db_restore=’.$_REQUEST['db_restore'].’&’ : ”;
$req .= isset($_REQUEST['file']) ? ‘file=’.$_REQUEST['file'].’&’ : ”;
//$req .= isset($_REQUEST['comp_method']) ? ‘comp_method=’.$_REQUEST['comp_method'].’&’ : ”;
//$req .= isset($_REQUEST['comp_level']) ? ‘comp_level=’.$_REQUEST['comp_level'].’&’ : ”;
$req .= ‘action=restore’;
echo tpl_page(’<form><div><label for=”url”>Use this URL to make the action you wanted to:<label><input value=”‘.$req.’” size=”30″ style=”width:100%” onclick=”this.setSelectionRange(0, ‘.strlen($req).’);”></div></form>’);
exit;
}

меняем:

$this->SET['last_db_restore'] = isset($_POST['db_restore']) ? $_POST['db_restore'] : ”;
$file = isset($_POST['file']) ? $_POST['file'] : ”;

на:

$this->SET['last_db_restore'] = isset($_REQUEST['db_restore']) ? $_REQUEST['db_restore'] : ”;
$file = isset($_REQUEST['file']) ? $_REQUEST['file'] : ”;

В итоге получаем ссылку после ввода логина и пароля и нажатия на кнопочку “восстановить”.
Эту ссылку можно добавить в избранное менеджеру или в bat файл,  который предварительно загружает новую базу данных.

Tags: , ,

Leave a Reply