PfSense: Создание локального XMLRPC сервера
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.
- http://www.pfsense.org/packages/pkg_config.xml
- http://www.pfsense.org/packages/pkg_config.7.xml
- http://www.pfsense.org/packages/pkg_config.8.xml
Изменение ссылки на 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.