Abills NMS Addon
Abills Addons
В связи с тем, что появилась необходимость доработать Abills до уровня AI, сюда заношу действия которые были проделаны.
Програмное обеспечение
Что бы полностью отвязать свой код от оригинального использую nginx вместо apache php подключаю через fastcgi (нужно установить lighttpd, от него я использую spawn-fcgi)
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;