Документация ispmanager 6 lite, pro, host

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

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

Цель состоит в добавлении флажка с названием 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>

<handler name="bitrix" type="xml"> 
         <event name="webdomain.edit" after="yes" /> 
</handler>


 <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="domain">
        <field name="bitrix">
              <input type="checkbox" name="bitrix"/>
        </field>
    </page>
    </form>    
</metadata>

<lang name="ru">
    <messages name="webdomain.edit">
    <msg name="bitrix">1С-Битрикс</msg>
    <msg name="hint_bitrix">Отметьте галку, чтобы сформировать оптимальные файлы конфигурации для 1С-Битрикс</msg>
    </messages>
</lang>

<lang name="en">
        <messages name="webdomain.edit">
        <msg name="bitrix">1C-Bitrix</msg>
        </messages>
</lang>
</mgrdata>

Два Блока metadata описывает, что на форму (type="form") редактирования веб домена (name="webdomain.edit") на вкладку WWW-домен (page name="domain") добавляем новое поле (name="bitrix") с типом чекбокс (type="checkbox").

Обратите Внимание!
 

В блоке <metadata name="site.edit" type="form"> для названия поля необходимо добавить префикс "_"

Пример: <field name="site_drupal_nginx">

Без данного префикса плагин работать не будет!  

В блоке metadata site.edit для названия необходимо добавить префикс site_

<field name="site_drupal_nginx">

Блок handler описывает, что после (after="yes") редактирования веб домена (webdomain.edit) будет вызываться скрипт с названием bitrix (handler name="bitrix") и типом xml (type="xml").

Тип xml означает, что скрипту на вход (stdin) будет передан от панели управления xml файл с параметрами. Плагин в свою очередь должен вернуть панели такой же xml на выходе (stdout), где могут быть добавлены собственные параметры или изменено значение существующих.

Блок lang определяет описание и подсказку на русском и английском языках.

После того, как добавлена собственная xml необходимо перезапустить панель управления командой:

/usr/local/mgr5/sbin/mgrctl -m ispmgr exit

Обработчик

Скрипт обработчика должен всегда располагаться в директории /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 файл, что получил на вход, но добавляет в xml собственный параметр — CUSTOM_BASEDIR, который принимает значение none, если галка "1C-Битрикс" отмечена или принимает значение <домашняя директория домена>, если галка не отмечена.

Теперь остается отредактировать файл шаблонизатора , именно он определяет какие директивы будут прописываться в файл конфигурации 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-Битрикс" на форме редактирования домена.