В Sypex Dumper 2 предусмотрена возможность интеграции в сторонние продукты. Достигается это благодаря новой системе авторизации, которая позволяет использовать кастомные (пользовательские) авторизации.
Схема работы авторизации.
В дампере построена следующая схема работы.
- Пользователь заходит на главную страницу. По умолчанию он не имеет доступа, переменная $auth=0.
- Дампер загружает файл cfg.php с базовыми настройками.
- Последовательно перебирает указанные в «Цепочке авторизации» варианты авторизации.
- Если после выполнение очередного варианта авторизации переменная $auth становится true, значит - пользователь авторизирован, устанавливается сессия, в которую копируется конфиг-файл. И в дальнейшем пользователь работает с этим виртуальным конфиг-файлом.
- Если после перебора всех вариантов авторизации пользователь не получил авторизации, то дампер выводит страницу авторизации.
Виртуальный конфиг-файл
Виртуальный конфиг-файл создан для того чтобы во время авторизации можно было гибко менять настройки дампера . Это позволяет использовать одну копию дампера несколькими пользователями. Самый простой пример, это изменение каталога для хранения файлов резервных копий в зависимости от имени пользователя.
Файл авторизации phpBB 3
Разберем файл авторизации на примере форума phpBB 3.
Название файла состоит из префикса «auth_», названия авторизации (состоящее из английских букв, цифр и знака подчеркивания) и расширения «php».
Файл авторизации должен содержать набор инструкций, который в случае положительной авторизации пользователя, должен установить значение переменной $auth в true (либо 1). Также в файле авторизации можно менять любые свойства из конфиг-файла (в дальнейшем они попадут в виртуальный конфиг). Доступ к свойствам конфиг-файла через массив $this->CFG.
<?php // Sypex Dumper 2 authorization file for phpBB 3 if(!empty($_GET['sid']) && preg_match('/^[da-f]{32}$/', $_GET['sid'])){ $path = '../forum/config.php'; // Path to phpbb3 config include($path); $this->CFG['my_db'] = $dbname; $sid = $_GET['sid']; if($this->connect($dbhost, $dbport, $dbuser, $dbpasswd)){ // Проверяем юзера mysql_selectdb($dbname); if($r = mysql_query("SELECT session_user_id FROM {$table_prefix}sessions WHERE session_id = '{$sid}' AND session_admin = 1")){ $u = mysql_fetch_assoc($r); if(!empty($u['session_user_id'])) $auth = 1; } } } ?>
Итак, в вышеприведенном примере в строке 3 мы осуществляем проверку, был ли передан дамперу sid пользователя phpbb 3. Получать sid не обязательно через GET, можно из Cookie или любым другим способом.
Если sid правильного формата получен, то начинаем проверку. В строке 4 указан адрес конфиг-файла форума. В строке 5 он подключается, после чего в строке 6 мы присваиваем свойству my_db название БД, в которой находится форум (таким образом, зайдя в дампер из форума, пользователь будет иметь доступ только к базе форума).
В строке 8 мы осуществляем подключение к MySQL используя метод $this->connect(), этот метод проверяет возможность подключения к MySQL и в случае успеха, сохраняет параметры соединения в виртуальном конфиг-файле.
Далее в строке 10 выбираем нужную БД, а в строке 11 достаем пользователя из таблицы сессий phpBB 3. Если пользователь найден, и он залогинен в административной части, то переменная $auth становится равной 1.
Вот и всё. Пользователь заходит в дампер даже без ввода логина и пароля.
Еще один пример
В качестве еще одного примера напишем видоизмененную mysql авторизацию, отличие будет заключаться в том, что у каждого пользователя будет свой каталог для резервных копий, а также при нажатии кнопки выход дампер будет переадрессовывать на главную страницу сайта.
Назовем файл, к примеру, auth_multi.php. В файл авторизации дампер передает переменные из формы авторизации: $user, $pass, $host, $port. В данном примере мы их используем. А также для настройки кнопки Выхода, используем свойство $this->CFG ['exitURL'].
<?php // Sypex Dumper 2 authorization file for Example if(!empty($user) && isset($pass) && $this->connect($host, $port, $user, $pass)){ $auth = 1; $this->CFG['backup_path'] = '/home/' . $user. '/backup/'; $this->CFG['exitURL'] = '/'; } ?>
В строке 3 проверяем, имеет ли пользователь доступ к MySQL, если имеет, то в строке 4 указываем, что пользователь авторизирован. В строке 5 указываем каталог, в который будут сохраняться бэкапы пользователя (каталог должен существовать, дампер не создает его), а в строке 6 указывается путь для Выхода, в данном случае корень сайта.
После чего останется только скопировать файл в каталог дампера, и в начало Цепочки авторизации добавить название файла авторизации multi. Следует учитывать, что варианты авторизации проверяется по порядку их расположения в цепочке.
Интеграция в интерфейс
Теперь после создания файла авторизации, нужно встроить дампер в административную часть скрипта. Учитывая, что у дампера постоянные высота и ширина окна, то проще всего интегрировать дампер в интерфейс сторонних скриптов с помощью iframe. Достаточно вставить строку:
<iframe src="/sxd/" width="586" height="462" frameborder="0" style="margin:0;"></iframe>
где в src подставить адрес URL-дампера.
Если у возникли вопросы по интеграции дампера, можете задавать их на форуме или используя страницу контактов.