Встраиваем Sypex Dumper в свою админку

в 7:37, , рубрики: imagecms, mysql, php, бэкап, Восстановление данных, интеграция, метки: , , ,

Встраиваем Sypex Dumper в свою админкуМногие популярные CMS, как с открытым исходным кодом, так и коммерческие, имеют в своем составе модули бэкапа. Но проблема в том, что чаще всего эти модули делаются по остаточному принципу, и весьма примитивны, не учитывают многих тонкостей создания дампа. Также чаще всего эти модули банально никто не тестируют на большие объемы (прогнали его на тестовой полупустой БД и рады).

В отличии от подобных модулей, Sypex Dumper является скриптом заточенным исключительно на бэкап и восстановление MySQL. И без проблем работающий с базами даже в несколько гигабайт. Но, кроме того, что дампер работает, как отдельное приложение, в нем была предусмотрена возможность встраивать его в сторонний софт.

В данной статье я расскажу, как быстро и довольно просто встроить Sypex Dumper в административную панель своей CMS (форума, блога и т.п.). А также рассмотрим некоторые недокументированные возможности такой интеграции.

Вступление

Для встраивания дампера, я рекомендую следующую схему:

  • Создание в вашей админке страницы на которой будет расположен iframe, в который будет загружаться дампер.
  • Создание файла авторизации для дампера, который будет использовать авторизацию вашей CMS.

У данной схемы есть следующие преимущества, по сравнению с привычным подключением модуля бэкапа с помощью include в свою систему:

  • Меньше затрат времени (не нужно вписывать дампер в свой интерфейс, да и у дампера не совсем стандартная схема работы).
  • Дампер может работать, как в админке, так и самостоятельно (что полезно, когда по каким-либо причинам в админку зайти нельзя).

Файл авторизации

Файл авторизации представляет собой небольшой скрипт, единственная задача которого проверить есть у пользователя права доступа к дамперу. В дампере используются, так называемые, цепочки авторизации. В которых указывается, какие файлы авторизации использовать и в какой последовательности. Разберем файл авторизации на примере недавно созданной интеграции в ImageCMS.

Название файла состоит из префикса «auth_», названия авторизации (состоящее из английских букв, цифр и знака подчеркивания) и расширения «php».

Файл авторизации должен содержать набор инструкций, который в случае положительной авторизации пользователя, должен установить значение переменной $auth в true (либо 1). Также в файле авторизации можно менять любые свойства из конфиг-файла (в дальнейшем они попадут в виртуальный конфиг). Доступ к свойствам конфиг-файла через массив $this->CFG.

<?php
// Sypex Dumper 2 authorization file for ImageCMS 3
session_start();
if(!empty($_SESSION['DX_permission']['backup_create'])){
	define('BASEPATH', 1);
	include '../application/config/config.php';
    if($this->connect($db['default']['hostname'], '', $db['default']['username'], $db['default']['password'])){
        $this->CFG['my_db'] = $db['default']['database'];
        $this->CFG['exitURL'] = '../admin/logout';
        $auth = 1;
    }
}
?>

В ImageCMS для авторизации используются стандартные сессии, поэтому в начале скрипта создаем сессию, и получаем данные о пользователе. Для того чтобы проверить права доступа в этой CMS используем родное свойство 'backup_create', если оно истинно значит пользователь может пользоваться дампером.

Дальше подключаем конфиг-файл CMS-ки, чтобы достать оттуда данные для подключения к MySQL. И с помощью $this->connect() подключаемся к MySQL, в случае успеха запоминаем базу к которой будет доступ в дампере, и настраиваем 'exitURL' – адрес по которому будет переходить дампер при нажатии кнопки выхода. Ну и главное $auth присваиваем 1, говорящую о том, что авторизация успешна.
После этого нужно будет добавить имя файла авторизации в цепочку авторизации. Это можно сделать в интерфейсе дампера Опции -> Цепочка авторизации, либо в cfg.php в строке

'auth' => ‘mysql cfg',

Теперь если вы залогинены в CMS, и у вас есть право создавать бэкапы, то для входа в дампер дополнительная авторизация не понадобится.

Интеграция в интерфейс

Осталось только встроить дампер в админку CMS. Для чего на нужную страницу админки нужно вставить строку:

<iframe src="/sxd/" width="586" height="462" frameborder="0" style="margin:0;"></iframe>

где в src подставить адрес дампера (относительный или полный).

Недокументированные возможности

Поскольку в Sypex Dumper интерфейс работает полностью на JS, то мы можем довольно просто выполнять любые функции дампера из своей CMS, как с помощью кнопок так и автоматически.

К примеру для создания бэкапа нужно выполнить команду (предварительно в iframe добавив id=sxdframe):

sxdframe.sxd.runBackup();

Или такой вариант:

// Открываем вкладку импорта
sxdframe.sxd.actions.tab_restore();
// Выбираем базу test1
sxdframe.sxd.combos.restore_db.select('test1');
// Выбираем файл
sxdframe.sxd.combos.restore_file.select('test1_2012-11-17_10-02-34.sql.gz');
// Восстановить дамп
sxdframe.sxd.runRestore();

В связи с подготовкой третьей версии дампера, интересует насколько востребован подобный JS API для него. Также принимаются пожелания по тому, что еще добавить в дампер. И конечно, если возникли какие-то сложности по интеграции, можете смело задавать вопросы.

В документации разбираются еще несколько файлов авторизации Sypex Dumper.
Кроме того вы можете скачать готовые файлы интеграции для следующих популярных систем: Drupal, ImageCMS, IPBoard, Joomla, MODx, phpBB, PHP-Fusion, vBulletin, WordPress, XenForo.

Автор: zapimir

Источник

Поделиться

* - обязательные к заполнению поля