Многие популярные 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();
Как пример, можно скачать готовые файлы интеграции для следующих популярных систем: Drupal, ImageCMS, IPBoard, Joomla, MODx, phpBB, PHP-Fusion, vBulletin, WordPress, XenForo.
Автор статьи zapimir
Hello to every , for the reason that I am in fact
eager of reading this webpage’s post to be updated regularly. It carries nice material.