Пример плагина. Смена директории домена
На этой странице описан пример, как добавить на форму редактирования 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>
XML-файл должен иметь права на чтение и запись для пользователя root.
Обработчик
# cat /usr/local/mgr5/addon/dir #!/bin/bash if [ "$PARAM_cms" = "on" ] then echo $(cat | sed 's/<\/doc>/<home>www\/pub<\/home><\/doc>/g') else cat fi
Чтобы при редактировании формы изменить значения поля "корневая директория", необходимо изменить xml, на основе которой формируется форма. За поле "корневая директория" отвечает элемент <home>. На этапе редактирования формы <home> еще не определен в xml, поэтому необходимо его добавить средствами плагина в xml. Для редактирования xml в bash я использую утилиту xmlstarlet.
Установите права для обработчика следующими командами:
chmod 750 /usr/local/mgr5/addon/<имя_файла_обработчика>
chown 0:0 /usr/local/mgr5/addon/<имя_файла_обработчика>
После того, как создан xml файл с описанием плагина и создан файл обработчика, необходимо перезапустить панель командой
/usr/local/mgr5/sbin/mgrctl -m ispmgr exit
Результат
На форме редактирвоания web домена присутствует дополнительный checkbox
При изменении значения checkbox'a, домашняя директория домена меняется на www/pub