ISPmanager: Пример плагина. Смена директории домена

Материал из ISPWiki
Перейти к: навигация, поиск

На этой странице описан пример, как добавить на форму редактирования web домена checkbox, при активации которого будет меняться автоматически домашняя директория домена с www/domain.name на www/pub.

XML описание плагина

# cat /usr/local/mgr5/etc/xml/ispmgr_mod_example.xml 
<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
   <handler name="dir" type="xml"> // dir - имя обработчика, который будет вызываться. Тип указываем xml
         <event name="webdomain.edit" after="yes" /> 
// так как нам нужен плагин на редактирование веб домена, соответственно в event name указываем функцию webdomain.edit
// для того, чтобы плагин отрабатывал после изменения формы, ставим тип after, а не before
   </handler>
<metadata name="webdomain.edit" type="form">
   <form>
      <page name="features">
        <field name="cms" experience="expert">
           <input type="checkbox" name="cms" setvalues="yes"> // для checkbox ставим setvalues="yes" для того, чтобы плагин срабатывал сразу при изменении значения checkbox'a
           </input>
        </field>
      </page>
   </form>
</metadata>
<lang name="ru">
   <messages name="webdomain.edit">
      <msg name="cms">Example</msg> // Указываем название checkbox'a
      <msg name="hint_cms">This is an example</msg> // Подсказка
   </messages>
</lang>
</mgrdata>

Примечание. Для ISPmanager Business название xml файла должно быть ispmgrnode_mod_example.xml и файлы плагина должны быть размещены на всех нодах.

Обработчик

# cat /usr/local/mgr5/addon/dir 
#!/bin/bash
   if [ "$PARAM_cms" = "on" ] 
       then 
               cat |xmlstarlet ed -i "/doc/cancreatebox" -t elem -n "home" -v "www/pub"
       else 
               cat 
       fi 

Чтобы при редактировании формы изменить значения поля "корневая директория", необходимо изменить xml, на основе которой формируется форма. За поле "корневая директория" отвечает элемент <home>. На этапе редактирования формы <home> еще не определен в xml, поэтому необходимо его добавить средствами плагина в xml. Для редактирования xml в bash я использую утилиту xmlstarlet.

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

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

Для ISPmanager Business перезапускаем следующим образом

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

Результат

На форме редактирвоания web домена присутствует дополнительный checkbox

Dirxml.png

При изменении значения checkbox'a, домашняя директория домена меняется на www/pub

Diraddon2.png

P. S. Проверено на ISPmanager Lite 5.23