SOFT
BLOG
&
Логин
Имя:
Пароль:

Drupal manager. Программа удаленного управления контентом

Drupal популярная система, с огромными возможностями. И для этого в нем задействаны множество WEB-технологии. Цель проекта создать программу удаленного управления сайтом на основе CMS Drupal.

В данной вводной я дам описание технологическим аспектам. Для управления сайтом в Друпал есть встроеный интерфейс внешного управления на основе XML-RPC. Это достаточно старый и очень простой протокол на основе XML. Описание протокола можно посмотреть на официальном сайте XML-RPC.

Схема

Структура клиент-серверного приложения представлена на рисунке. С обеих сторон на транспортном уровне работает WEB-сервер и клиентское сетевое приложение. На сервере работает друпал с модулем, который обрабатывает и выполняет команды. На другой стороне программа создает команды и отправляет их на сервер. Также эта программа контролирует выполнение команд сервером.

В основе "общения" между клиентом и сервером лежит протоколо XML-RPC. Клиент и сервер посылают друг другу опредленным образом сформированные XML-документы. Для обмена данными между клиентом и сервером существует всего несколько типов данных (строковые, числовые, массивы, структуры, формат Base64 и т.д.). Всех этих видов данных достаточно для того, чтобы осуществлять корректный обмен данными.

Пример запроса

На стороне сервера синтаксическую обработку XML-документов производит Drupal, точнее файл xmlrpc.php. Анализатор кода формирует данные из поступающих XML-документов. А также осуществляет обработку ошибок в документах. Друпал сообщит клиенту о наличии ошибок и строку ошибки (на странице http://xmlrpc.scripting.com/spec, Fault example).

Непосредственно запрос передается на сервер методом POST. Пример (из сайта):

POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181
<?xml version="1.0"?>
<methodcall>
<methodname>examples.getStateName</methodname>
<params><param>
<value><i4>41</i4></value>
</param>
</params>
</methodcall>

Здесь XML-документ первой версии. Тэг <methodCall> содержит непосредственно запрос. В запросе указывается функция <methodName> к которому необходимо передать параметры. В качестве параметров здесь передается целое число 41 (i4 - это 4хбайтовое число со знаком).

Ответ сервера, например:

HTTP/1.1 200 OK
Connection: close
Content-Length: 158
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: UserLand Frontier/5.1.2-WinNT
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>

Ответ на запрос содержится в тэге <methodResponse>. В параметрах функция вернула строковое значение South Dakota.

Среда разработки

В качестве инструмента используется Drupal 7, PHP5, MySQL или MariaDB в серверной части и Lazarus 1.08 и некоторые дополнительные библиотеки в клиентской. Про установку и настройку друпала не пишу, уважаемый читатель это уже знает.

В следующем документе будет описан пример модуля, пример запроса клиентской программой.