События

Материал из 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
Личные инструменты