Оформление плагинов

Материал из ISPWiki

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


Содержание

Описание плагина

Описание плагина хранится в файле MGR_mod_XXXXXXX.xml, где MGR - имя панели см. Из чего состоит плагин, а XXXXXXX - имя плагина, отображается в списке установленных плагинов.

Файл MGR_mod_XXXXXXX.xml должен содержать в себе следующие теги описания плагина:

  • name - краткое описание плагина, отображается в списке установленных плагинов;
  • description - развернутое описание плагина, зачем он нужен, где и какие элементы интерфейса появляются при его активации, отображается в форме "Инфо";
  • version - версия плагина. Рекомендованный вид - цифры, разделенные точкой. Количество точек может быть любым. Сравнение версий производится путем последовательного сравнения каждой части (части разделяются точкой), начиная сначала. Если часть невозможно приравнять к числу (например, при наличии символов отличных от цифр), она будет равняться нулю;
  • url - URL источника для скачивания файла;
  • lang - язык, на котором написан плагин. Установщик будет проверять возможность его использования, допустимые варианты: perl, php, python (при необходимости список будет расширен). Если вашему плагину не нужны интерпретаторы, например, он написан на Shell или вообще не содержит обработчиков, то данный тег не указывается;
  • langver - минимальная версия интерпретатора, если тег отсутствует, то проверка версии не выполняется. Тег имеет атрибут strict, если он равен yes, то проверяется точное соответствие версии. Если ваш плагин работает только с Python версии 2.5 и 2.6, но не работает с версией 3.0, сделайте два тега langver со strict="yes". Наличие нескольких версий интерпретатора на сервере не поддерживается, проверка выполняется запуском примерно такой команды "python --version", при необходимости сервер можно настроить так, чтобы по умолчанию запускался нужная версия;
  • require - необходимые для работы плагина модули. Установщик будет проверять их наличие и, в случае необходимости, требовать от пользователя их установку;
  • depend - имя и версия плагина необходимого для работы данного плагина. Например "libxxx 2.0", версия является необязательной, при ее наличии проверяется, чтобы версия установленного плагина была не ниже указанной.
  • manager - имя продукта, для которого предназначен плагин. Например: ispmgr, billmgr. Тегов может быть несколько. Тег является обязательным.
  • mgrver - версия продукта, для которого предназначен плагин. Например, ISPmanager-Lite, ISPmanager-Pro 4.3. Тегов может быть несколько, при отсутствии данного вида тегов считается, что плагин предназначен для всех версий. Если указана цифровая версия, то она проверяется по алгоритмам проверки версий, описанным выше;
  • os - операционная система, для который предназначен плагин. Можно указывать цифровую версию, например Linux, FreeBSD-8. Значение текущей ОС определяется так же, как и в информации о лицензии. Тегов может быть несколько;
  • author - информация об авторе в любом удобном ему виде;
  • site - страница описания и поддержки плагина. Это может быть сайт, тема на форуме или запись в блоге;
  • contact - контактная информация автора в любом удобном ему виде.

Ни один из тегов (за исключением manager) не является обязательным, но мы рекомендуем заполнять информацию по возможности более полно. Описание плагина может выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<mgrdata>
<plugin> 
<name lang="ru">Массовая смена пароля</name>
<description lang="ru">Плагин предназначен для массовой смены паролей пользователям. 
В списки пользователей добавляется новая кнопка, выделите пользователей, которым хотите сменить пароль и нажмите ее</description>
<url>http://download.ispsystem.com/plugins/plugins/masspasswdchange.tar.gz</url>
<version>1.0</version>
<lang>perl</lang>
<langver strict="yes">5.8</langver>
<require>XML-LibXML</require>
<require>DBD-mysql</require>
<require>Math-BigInt</require>
<manager>ispmgr</manager>
<author>John Ivanov</author>
<site>http://mysite.com/plugin1</site>
<contact>ICQ: 123; email:user@example.com</contact>
</plugin>
 теги, описывающие функционал плагина
</mgrdata>

Скрипты плагина

Плагин может содержать в себе следующие скрипты:

  • preinstall – скрипт, вызываемый перед установкой плагина;
  • postinstall – скрипт, вызываемый после установки плагина;
  • preupdate – скрипт, вызываемый перед обновлением;
  • postupdate – скрипт, вызываемый после обновления;
  • predelete – скрипт, вызываемый перед удалением плагина.

Все скрипты должны находиться в директории var/.plugin_scripts/ и иметь имена вида NAME_TYPE, где NAME - это имя плагина, а TYPE - тип скрипта, например apachestatus_preinstall.

При успешном выполнении скрипта, он должен вернуть 0.

Если что-то не отработало, код возврата должен быть отличный от 0, и стандартный вывод (stdout) может содержать любое сообщение, которое будет отображено пользователю.

Алгоритм установки плагинов

После того, как пользователь инициировал процедуру установки плагина, происходят следующие действия:

  • загрузка плагина на сервер и распаковка архива во временную директорию;
  • проверка наличия интерпретатора и его версии;
  • проверка наличия необходимых модулей;
  • запуск скрипта preinstall;
  • копирование файлов плагина в директорию панели управления и ее перезапуск;
  • запуск скрипта postinstall.

Если на каком-либо этапе произошла ошибка, установка будет прервана, а все файлы плагина удалены. Обращаем ваше внимание на то что, в случае ошибок, скрипты preinstall и postinstall должны самостоятельно позаботится об откате сделанных ими изменений.

Обновление плагинов

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

Алгоритм обновления полностью соответствует алгоритму установки, за исключением вызываемых скриптов. В случае апдейта вызываются preupdate и postupdate. Внимание! Если скрипт postupdate вернет ошибку, плагин будет удален.

Выбор языка программирования

Если вы собираетесь распространять свой плагин, то имейте ввиду, что выбранный вами интерпретатор может отсутствовать у пользователей, иметь разные несовместимые между собой версии в разных дистрибутивах операционных систем, либо отсутствовать совсем. Проблемы с использованием плагина приведут к его меньшей распространенности, а следовательно полезности.

Ярким примером проблем служит python, версии 2.4 2.5 2.6 и тем более 3.0 несовместимы между собой. В разных дистрибутивах по умолчанию используются разные версии, некоторые дистрибутивы хоть и позволяют установить другую версию, но создают другие проблемы с установкой модулей. Разумеется, необходимый интерпретатор и модули всегда можно установить вручную, однако подумайте, сколько пользователей будут этим озадачиваться? Вместо того, чтобы нажать пару кнопок в интерфейсе.

PHP - в большинстве своем проблем не имеет, версия 4 уже давно в прошлом. Однако различие версий 5.2 и 5.3 может доставить некоторые проблемы, имейте это ввиду и по возможности избегайте использования не совместимых функций.

Perl - пожалуй наиболее устоявшийся интерпретатор, проблемы работоспособности скриптов на разных дистрибутивах практически отсутствуют.

sh - отлично подойдет для несложных обработчиков, всегда присутствует на всех системах и не требует ничего дополнительного.

Написанное выше не субъективное мнение автора, а данные,основанные на статистике установки/использования плагинов, сообщений о проблемах с плагинами на форуме и в технической поддержке.

Была ли эта информация полезной? Да | Нет
Личные инструменты