Руководство для разработчиков

Пример плагина. Работа с шаблонизатором

Добавление флажка с названием 1С-Битрикс на форму редактирования домена. В соответствии с состоянием этого флажка, различные значения для директивы open_basedir будут автоматически внесены в файл конфигурации Apache.

  • флажок установлен (включен) - параметр open_basedir принимает значение none;
  • флажок сброшен (выключен) - параметр open_basedir принимает значение, соответствующее домашней директории домена.
Обратите внимание!
По умолчанию, информация о состоянии чекбоксов не записывается в базу данных панели, что приводит к тому, что их состояние не сохраняется после перезагрузки или перезапуска. Для обеспечения сохранения состояния чекбоксов (включен/выключен) необходимо создать низкоуровневую функцию в соответствии с документацией.

Плагины для панели управления представлены XML файлами, содержащими описание плагина. В этих файлах можно настраивать интерфейс плагина, добавляя или скрывая различные элементы. Также в XML файле описывается обработчик - это скрипт, который выполняется перед или после определенных действий в панели управления.

Расположение XML файлов строго определено: они должны находиться в директории /usr/local/mgr5/etc/xml/. Имя каждого файла должно начинаться с префикса ispmgr_mod_ и завершаться конкретным именем плагина, например ispmgr_mod_bitrix.xml.

Обратите внимание!
XML-файл должен иметь права на чтение и запись для пользователя root.

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 %}"
Обратите внимание!
Значение open_basedir теперь будет определяться переменной CUSTOM_BASEDIR, добавляемой с помощью плагина, и устанавливаемой в соответствии с состоянием галки 1C-Битрикс на форме редактирования домена.