Пример плагина. Работа с шаблонизатором
Добавление флажка с названием 1С-Битрикс на форму редактирования домена. В соответствии с состоянием этого флажка, различные значения для директивы open_basedir будут автоматически внесены в файл конфигурации Apache.
- флажок установлен (включен) - параметр open_basedir принимает значение none;
- флажок сброшен (выключен) - параметр open_basedir принимает значение, соответствующее домашней директории домена.
Плагины для панели управления представлены XML файлами, содержащими описание плагина. В этих файлах можно настраивать интерфейс плагина, добавляя или скрывая различные элементы. Также в XML файле описывается обработчик - это скрипт, который выполняется перед или после определенных действий в панели управления.
Расположение XML файлов строго определено: они должны находиться в директории /usr/local/mgr5/etc/xml/. Имя каждого файла должно начинаться с префикса ispmgr_mod_ и завершаться конкретным именем плагина, например ispmgr_mod_bitrix.xml.
XML описание плагина
<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
<metadata name="site.edit" type="form">
<form>
<page name="additional">
<field name="site_drupal_nginx">
<input type="checkbox" name="site_drupal_nginx" />
</field>
</page>
</form>
</metadata>
<metadata name="webdomain.edit" type="form">
<form>
<page name="additional">
<field name="drupal_nginx">
<input type="checkbox" name="drupal_nginx" />
</field>
</page>
</form>
</metadata>
<lang name="ru">
<messages name="site.edit">
<msg name="site_drupal_nginx">Drupal NGINX</msg>
<msg name="hint_site_drupal_nginx">Отметьте, чтобы конфигурации NGINX были оптимизированы под Drupal.</msg>
</messages>
</lang>
<lang name="en">
<messages name="site.edit">
<msg name="site_drupal_nginx">Drupal NGINX</msg>
<msg name="hint_site_drupal_nginx">Check for optimized Drupal NGINX config.</msg>
</messages>
</lang>
</mgrdata>
Информация о двух блоках метаданных описывает процедуру добавления нового поля на форму редактирования веб-домена. Эта форма имеет атрибут type="form" и идентификатор name="webdomain.edit". Поле будет добавлено на вкладку с именем WWW-домен page name="domain". Новое поле будет иметь идентификатор name="bitrix" и тип "чекбокс" type="checkbox".
В блоке <metadata name="site.edit" type="form"> для названия поля необходимо добавить префикс "_"
Пример: <field name="site_drupal_nginx">
Без данного префикса плагин работать не будет!
Для блока с названием site.edit рекомендуется добавить префикс site_ для улучшения идентификации.
<field name="site_drupal_nginx">
Блок handler определяет последующие действия после редактирования веб-домена (webdomain.edit). После этого события будет вызван скрипт с именем bitrix (handler name="bitrix") с типом xml (type="xml").
Тип xml указывает, что скрипту на вход будет передан XML-файл с параметрами через стандартный ввод (stdin). Скрипт должен вернуть XML-ответ через стандартный вывод (stdout), где могут быть добавлены новые параметры или изменены существующие.
Блок lang определяет текстовые описания и подсказки на русском и английском языках для удобства пользователя.
После добавления новых параметров через XML необходимо перезапустить панель управления с помощью следующей команды:
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Добавление дополнительных полей таблицы
При необходимости добавления дополнительных полей в таблицу, таких как чекбоксы или другие элементы, требуется процедура модификации соответствующей таблицы. Например, если чекбокс будет находиться в разделе Сайты, то необходимо будет модифицировать таблицу webdomain. Для получения более подробной информации перейдите по ссылке.
Обработчик
- местоположение — скрипт обработчика всегда должен располагаться в директории /usr/local/mgr5/addon;
- наименование файла — имя файла должно соответствовать указанному в XML в разделе handler.
В текущем примере это файл /usr/local/mgr5/addon/bitrix , который имеет следующее содержимое:
#!/bin/bash
if [[ "$PARAM_bitrix" = "on" ]]
then
cat | sed 's|</doc>$|<params><CUSTOM_BASEDIR>none</CUSTOM_BASEDIR></params></doc>|'
else
cat | sed 's|</doc>$|<params><CUSTOM_BASEDIR>'$PARAM_docroot':.</CUSTOM_BASEDIR></params></doc>|'
fi
Установите права для обработчика следующими командами:
chmod 750 /usr/local/mgr5/addon/<имя_файла_обработчика>
chown 0:0 /usr/local/mgr5/addon/<имя_файла_обработчика>
Проверка значения переменной $PARAM_bitrix осуществляется в условии. Некоторые параметры панели управления передаются в переменные окружения и могут быть использованы в обработчике плагина. Переменная $PARAM_bitrix принимает значение on, если на форме редактирования домена отмечена галка 1С-Битрикс, и значение off, если галка не отмечена.
Плагин возвращает панели XML-файл точно такой же, какой получил на вход, однако добавляет собственный параметр - CUSTOM_BASEDIR. Если галочка 1C-Битрикс отмечена, параметр принимает значение none, в противном случае — значение <домашняя директория домена>.
Редактирование файла шаблонизатора определяет директивы, которые будут включены в конфигурационный файл Apache.
Измените строки в файле /usr/local/mgr5/etc/templates/apache2-vhosts.template.
php_admin_value open_basedir "{% $BASEDIR_PATH %}"
Измените на строку написанную ниже
php_admin_value open_basedir "{% $CUSTOM_BASEDIR %}"