Abills NMS Addon

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

Abills Addons

В связи с тем, что появилась необходимость доработать Abills до уровня AI, сюда заношу действия которые были проделаны.

Програмное обеспечение

Что бы полностью отвязать свой код от оригинального использую nginx вместо apache php подключаю через fastcgi (нужно установить lighttpd, от него я использую spawn-fcgi)

#cat /etc/portage/package.use
dev-lang/php apache2 berkdb bzip2 cli crypt ctype ftp gd gdbm iconv imap mysql ncurses nls pcre readline reflection session sockets spl ssl unicode xml zip zlib -adabas -bcmath -birdstep -calendar -cdb cgi -cjk -concurrentmodphp -curl -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -doc -empress -empress-bcs -esoob -exif -fastbuild -fdftk -filter -firebird -flatfile -force-cgi-redirect -frontbase -gd-external -gmp -hash -inifile -interbase -iodbc -ipv6 (-java-external) -json -kerberos -kolab -ldap -ldap-sasl -libedit -mcve -mhash -msql -mssql -mysqli -oci8 -oci8-instant-client -odbc -pcntl pdo pic -posix -postgres -qdbm -recode -sapdb -sharedext -sharedmem -simplexml -snmp -soap -solid -spell -sqlite -suhosin -sybase -sybase-ct -sysvipc threads -tidy -tokenizer -truetype -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xsl -yaz -zip-external
www-servers/nginx imap pcre perl ssl zlib addition -debug fastcgi flv status sub webdav
www-servers/lighttpd bzip2 gdbm mysql pcre ssl -doc fam fastcgi -ipv6 -ldap -lua -memcache -minimal php rrdtool -test -webdav -xattr

Сервер достался уже готовым, почему apache и php собраны именнно так - не разбирался.

Изменение в БД

Использование нужного мне функционала подразумевате, что в биллинге содержиться информация о каждом активном порту, т.к. эта информация необходима для использования option 82.

Я не нашел этой информации в имеющейся инсталляции, потому часть таблиц пришлось добавить. Не уверен что это идеальный вариант.

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

DROP VIEW IF EXISTS view_dhcp_config_authorized;
CREATE   VIEW
view_dhcp_config_authorized
AS
SELECT
    INET_NTOA(dhcphosts_hosts.ip) AS ip,
    INET_NTOA(dhcphosts_networks.network) AS subnet,
    1 as enabled,
    dhcphosts_hosts.mac AS mac,
    nas.name AS bs_id,
    nas.ip AS bs_ip,
    dhcphosts_hosts.ports AS port_number,
    300 AS lease_time,
    INET_NTOA(dhcphosts_networks.mask) AS netmask,
    INET_NTOA(dhcphosts_networks.network+1) AS router,
    INET_NTOA(dhcphosts_hosts.ip | (dhcphosts_networks.mask  ^ (power(2, 32) - 1))) AS broadcast
FROM
    dhcphosts_hosts,
    dhcphosts_networks,
    nas
WHERE
    (dhcphosts_hosts.ip & dhcphosts_networks.mask=dhcphosts_networks.network)
    AND
    nas.id=dhcphosts_hosts.nas;

SELECT * from view_dhcp_config_authorized;