Взаимодействие с панелью управления

Материал из ISPWiki

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

Содержание

Введение

Поскольку панель управления в данный момент не может обрабатывать одновременно более одного внутреннего запроса, то обращаться к ней из обработчиков событий нельзя. Исключение составляют обработчики, описание которых содержит атрибут final="yes". Также вы можете беспрепятственно вызывать любые функции панели управления из обработчиков своих собственных функций.

Специально для взаимодействия с панелью управления из скриптов-обработчиков мы разработали библиотеку для нескольких популярных интерпретаторов. Хотя вы можете воспользоваться любым другим удобным вам способом, описанным в статье взаимодействие через API

Использование в Perl

Начните программу со строк:

BEGIN { push @INC, '/usr/local/ispmgr/lib/perl' }

use Mgr;

Теперь можно использовать функции библиотеки.

Запросы к панели управления (функция query)

Чтобы сделать запрос к панели управления, используйте функцию query:

($xmldoc, $xmlroot) = Mgr::query (имя_функции, список_параметров [, тип_вывода]);

Где:

имя_функции
Имя функции панели управления, которая должна быть вызвана.
список_параметров
Параметры, которые необходимо передать панели управления. Это список списков. Например: [['elid', 'root'], ['su', 'admin']]
тип_вывода
В каком виде получить XML. Возможные значения: xml (по умолчанию), devel. Не обязательный параметр.

В качестве результата, возвращается пара значений:

  1. XML::LibXML::Document (документ XML)
  2. XML::LibXML::Node (корневой элемент XML)

Примеры использования

($xmldoc, $xmlroot) = Mgr::query ('user', []);

Получить список пользователей.

($xmldoc, $xmlroot) = Mgr::query ('user.edit', [ ['elid', 'someuser'] ]);

Получить данные пользователя someuser.

($xmldoc, $xmlroot) = Mgr::query ('user.edit', [ ['elid', 'someuser'] ], 'devel');

Получить данные пользователя someuser в формате 'devel'.

Получение данных текущего пользователя (функция session)

Для получения данных текущего пользователя (сделавшего запрос к вашему расширению), используется функция session.

$ses = Mgr::session (имя_cookie, объект_CGI);

Где:

имя_cookie
Название cookie панели управления. Например, 'ispmgr4'.
объект_CGI
Объект стандартного модуля Perl CGI: $Q = new CGI.

Функция возвращает либо undef (пользователь не найден), либо ссылку на хэш с ключами:

skin
Текущая тема оформления.
lang
Текущий выбранный язык.
sesid
Идентификатор сессии пользователя.
username
Имя пользователя.
ip
IP пользователя.

Если запрос был сделан через mgrctl, выставляется только username.

Примеры использования

my $Q = new CGI;
my $ses = Mgr::session ('ispmgr4', $Q);

if (!defined $ses || $ses->{username} ne 'root') {
  print "Authentication failed!\n";
  exit;
}

Если пользователь не авторизован, или пользователь не root — напечатать строчку отказа в авторизации.

Использование в Python

Начните программу со строк:

from sys import path
path.append('/usr/local/ispmgr/lib/python') 
import mgr

Теперь можно использовать функции модуля mgr.

Запросы к панели управления (функция query)

Чтобы сделать запрос к панели управления, используйте функцию query:

xmldoc, xmlroot = mgr.query(имя_функции, список_параметров [, тип_вывода] [, mgrname]);

Где:

имя_функции
Имя функции панели управления, которая должна быть вызвана.
список_параметров
Параметры, которые необходимо передать панели управления. Это список списков. Например: [['elid', 'root'], ['su', 'admin']]
тип_вывода
В каком виде получить XML. Возможные значения: xml (по умолчанию), devel. Не обязательный параметр.
mgrname
К какой панели управление происходит обращение. Возможные значения: ispmgr (по умолчанию), billmgr и т.д. Не обязательный параметр.

В качестве результата возвращается пара значений:

  1. xml.dom.minidom.Document (документ XML)
  2. xml.dom.minidom.Element (корневой элемент XML)

Примеры использования

xmldoc, xmlroot = mgr.query('user', [])

Получить список пользователей.

xmldoc, xmlroot = mgr.query('user.edit', [ ['elid', 'someuser'] ])

Получить данные пользователя someuser.

xmldoc, xmlroot = mgr.query('user.edit', [ ['elid', 'someuser'] ], out='devel')

Получить данные пользователя someuser в формате 'devel'.

Получение данных текущего пользователя (функция session)

Для получения данных текущего пользователя (сделавшего запрос к вашему расширению), используется функция session.

ses = mgr.session(имя_cookie, [, объект_CGI] [, mgrname]);

Где:

имя_cookie
Название cookie панели управления. Например, 'ispmgr4'.
объект_CGI
Объект, который будет использован для получения cookie. По умолчанию используется переменная окружения HTTP_COOKIE. Не обязательный параметр.
mgrname
К какой панели управление происходит обращение. Возможные значения: ispmgr (по умолчанию), billmgr и т.д. Не обязательный параметр.

Функция возвращает либо None (пользователь не найден), либо ссылку на хэш с ключами:

skin
Текущая тема оформления.
lang
Текущий выбранный язык.
sesid
Идентификатор сессии пользователя.
username
Имя пользователя.
ip
IP пользователя.
level
Уровень доступа пользователя.

Если запрос был сделан через mgrctl, выставляется только username.

Примеры использования

ses = mgr.session('ispmgr4')
if ses is None or ses['username'] != 'root':
    print "Authentication failed!\n"

Если пользователь не авторизован, или пользователь не root — напечатать строчку отказа в авторизации.

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