События
Материал из ISPWiki
Механизм событий служит дополнительным расширением панели управления за счёт добавления пользовательских CGI-программ или скриптов, которые будут автоматически запущены во время или после выполнения соответствующей функции.
Обработчики событий могут быть трех видов:
- (final="yes") Независимые, запускающиеся до или после выполнения функции и никак не влияющие на её результат. Зато, такие обработчики сами могут вызывать функции manager.
- (before="yes") Запускаемые до выполнения функции. Такие события не могут сами обращаться к manager. Но зато xml, который они возвращают, будет объеденен с тем xml, который сформирует manager. Кроме того, если это событие вернет ошибку, обработчик функции manager вообще не будет вызван.
- (after="yes") Запускаемые после выполнения функции. Такие события тоже не могут сами обращаться к manager. Но зато xml, который они возвращают, будет объеденен с тем xml, который сформирует manager. В отличие от предыдущего типа событий, они будут вызваны только если функция manager завершилась успешно.
При объединении xml, следущие теги имеют особое значение:
- error - означает, что произошла ошибка при обработке события. Никакие теги после этого тега обработаны не будут.
- redirect - перенаправление. Содержимое этого тега будет передано клиенту ввиде javascript. Используется при создании мастеров настройки - пошаговых интерфейсов, где одна формочка сменяет другую. Например: location='ispmgr?func=usrparam' приведет к открытию формочки с параметрами пользователя.
- ok - переопределяет значение тега ok.
- param - данные тэги будут проигнорированны.
На вход пользовательская CGI-программа - обработчик событий получает все то же самое, что и панель управления. На выходе должна выдавать правильный xml (результат независимых обработчиков значения не имеет).
Если обработчик имеет тип XML, то на входе он получает сформированный XML с описание форм, таблиц, и сообщений. На выходе он должен также отдать XML, которым будет полностью заменен тот XML, с которым работает manager. В самом простом случае, можно вернуть тот же XML, который был получен на входе.
Для того, чтобы выяснить от имени какого пользователя была вызвана функция , которая привела к выполнению вашего события, можно использовать переменную окружения REMOTE_USER. При этом вы можете быть уверены, что данный пользователь был авторизован.
Для того, чтобы добавить свой обработчик событий, надо создать файл с именем ispmgr_mod_имя.xml с содержанием:
<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
<handler name="myhandler" type="cgi">
<event after="yes">eventname</event>
</handler>
</mgrdata>
и поместить его в /usr/local/ispmgr/etc/
myhandler - имя вашей программы, которая должна быть расположена в каталоге /usr/local/ispmgr/addon
eventname - имя события. Список возможных событий можно получить с помощью функции панели управления eventlist, например, используя mgrctl:
/usr/local/ispmgr/sbin/mgrctl eventlist
