PfSense: Создание локального XMLRPC сервера

Материал из wiki.lissyara.su
Перейти к: навигация, поиск

XMLRPC север является основой системы пакетов (packages) pfSense. Сервер состоит их XMLRPC ядра, расположенного в http://www.pfsense.org/pfSense, и конфигурационных манифест-файлов http://www.pfsense.org/packages. В настоящее время существуют 3 манифест файла для разных версий pfSense:

  • pkg_config.xml - версия FreeBSD 6.x
  • pkg_config.7.xml - версия FreeBSD 7.x
  • pkg_config.8.xml - версия FreeBSD 8.x

Если вы хотите протестировать свои собственные разработки, то локальный RPC сервер вам в этом поможет.

Установка локального XMLRPC сервера

В первую очередь создадим каталоги XMLRPC сервера:

  • /usr/local/www/pfSense
  • /usr/local/www/packages

После этого качаем архив XMLRPC сервера и распаковываем в /usr/local/www/pfSense:

-rw-r--r--  1 root  wheel  34754 Dec 13 23:20 PEAR.inc
-rw-r--r--  1 root  wheel  33668 Dec 13 23:20 PEAR.php
-rw-r--r--  1 root  wheel   2548 Dec 13 23:20 array_intersect_key.php
-rw-r--r--  1 root  wheel    795 Dec 13 23:20 pkg_tester.php
-rw-r--r--  1 root  wheel     89 Dec 13 23:20 test.php
-rw-r--r--  1 root  wheel     28 Dec 13 23:20 version
-rw-r--r--  1 root  wheel  19008 Dec 13 23:20 xml_parser.inc
-rw-r--r--  1 root  wheel  39683 Dec 13 23:20 xml_serializer.inc
-rw-r--r--  1 root  wheel  28467 Dec 13 23:20 xml_unserializer.inc
-rw-r--r--  1 root  wheel  26503 Dec 13 23:20 xml_util.inc
-rw-r--r--  1 root  wheel   4227 Dec 13 23:20 xmlparse.inc
drwxr-xr-x  2 root  wheel    512 Apr 25 06:37 xmlrpc/
-rw-r--r--  1 root  wheel   4465 Dec 13 23:20 xmlrpc.inc
-rw-r--r--  1 root  wheel   6886 Dec 13 23:20 xmlrpc.php
-rw-r--r--  1 root  wheel  56610 Dec 13 23:20 xmlrpc_client.inc
-rw-r--r--  1 root  wheel  21096 Dec 13 23:20 xmlrpc_server.inc
-rw-r--r--  1 root  wheel   1307 Dec 13 23:20 xmlrpc_tester.php

./xmlrpc:
total 12
-rw-r--r--  1 root  wheel   24 Dec 13 23:20 echo_time.php
-rw-r--r--  1 root  wheel  226 Dec 13 23:20 version
-rw-r--r--  1 root  wheel  104 Dec 13 23:20 version_base
-rw-r--r--  1 root  wheel   99 Dec 13 23:20 version_comment
-rw-r--r--  1 root  wheel   83 Dec 13 23:20 version_embedded
-rw-r--r--  1 root  wheel  108 Dec 13 23:20 version_pfSense

Копирование манифест-файлов

Скачиваем по приведенным ниже ссылкам файлы и переписываем их в каталог /usr/local/www/packages.

Изменение ссылки на XMLRPC сервер в PFSense

Теперь необходимо указать pfSense, откуда брать данные о пакетах. Откроем файл /etc/inc/globals.php и найдем в нем параметр

"xmlrpcbaseurl" => "www.pfsense.com",

Если вы для тестов используете тот же pfSense, на котором установлен локальный XMLRPC сервер, то проще установить ссылку на localhost. Тогда не придется при каждом изменении IP адреса локального интерфейса менять значение 'xmlrpcbaseurl'.

#"xmlrpcbaseurl" => "www.pfsense.com",
"xmlrpcbaseurl" => "127.0.0.1",

Для других pfSense систем вместо 127.0.0.1 придется указывать IP адрес интерфейса (обычно LAN) сервера pfSense с установленным XMLRPC.

Тестирование собственных пакетов

После проведенных выше манипуляций в вашем распоряжении имеется локальный XMLRPC сервер, настроенный на официальный репозиторий pfSense. Но теперь есть возможность манипулировать списками пакетов без лишних ухищрений. Можно добавить описание своего собственного пакета, указав в качестве источника локальный URL. Необходимо лишь отредактировать манифест-файлы pkg_config.

Сначала создаем каталоги config, config/mypkg и files:

  • /usr/local/www/packages/config — каталог с папками конфигураций пакетов;
  • /usr/local/www/packages/config/mypkg — каталог тестового пакета;
  • /usr/local/www/files — локальный каталог с бинарниками.

Затем в каталог тестового пакета /usr/local/www/packages/config/mypkg записываем все XML и INC файлы, относящиеся к тестовому пакету. При этом ссылки на бинарники могут указывать как на любой внешний источник (к примеру на дерево портов FreeBSD или pfSense), так и на локальный источник (http://local_pfSense_LAN_IP/files/bin_archive.tbz).

Добавляем во все манифест-файлы следующую секцию:

<package>
  <name>mypackage</name>
  <descr>My Test Package</descr>
  <category>Test</category>
  <version>0.1</version>
  <status>Alpha</status>
  <required_version>1.2.1</required_version>
  <config_file>http://local_pfsense_LAN_IP/packages/config/mypkg/mypkg.xml</config_file>
  <configurationfile>mypkg.xml</configurationfile>
</package>

Теперь в WebGUI в меню System -> Packages можно видеть свой пакет и протестировать его установку/удаление. Описание создания пакета выходит за рамки данной статьи. Вы можете посмотреть в качестве примера другие пакеты, установленные в вашу систему pfSense. Файлы WebGUI пакетов расположены в /usr/local/pkg.

ЗАМЕЧАНИЕ К сожалению было замечено, что невозможно таким образом скачать PHP/INC файлы. Вместо скачивания происходит попытка их исполнения. Для обхода этой проблемы нужно разместить свои файлы на другом сервере (ftp/http) или разбираться с настройками Lighttpd pfSense.