Abills NMS Addon: различия между версиями
Sirmax (обсуждение | вклад) м (Защищена страница «Abills NMS Addon» [edit=sysop:move=sysop]) |
Sirmax (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
=Abills Addons= |
=Abills Addons= |
||
В связи с тем, что появилась необходимость доработать Abills до уровня AI, сюда заношу действия которые были проделаны. |
В связи с тем, что появилась необходимость доработать Abills до уровня AI, сюда заношу действия которые были проделаны. |
||
| + | Все что написано ниже устарело. новая статья в разработке. |
||
==Програмное обеспечение== |
==Програмное обеспечение== |
||
Версия 16:17, 24 августа 2011
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;
Представление для неавторизованных клиентов.
DROP VIEW IF EXISTS view_dhcp_config_jail;
CREATE VIEW
view_dhcp_config_jail
AS
SELECT
dhcphosts_vlans.vlan_id AS vlan_id,
INET_NTOA(dhcphosts_networks_jails.network_unauth) AS subnet,
nas.id AS bs_id,
nas.ip AS bs_ip,
dhcphosts_nas_ports.port as port_number,
30 AS lease_time,
INET_NTOA(dhcphosts_networks.mask) AS netmask,
INET_NTOA(dhcphosts_networks_jails.network_unauth+1) AS router,
INET_NTOA(dhcphosts_networks_jails.network_unauth | (dhcphosts_networks.mask ^ (power(2, 32) - 1))) AS broadcast,
INET_NTOA(dhcphosts_networks_jails.network_unauth+2) AS first_addr,
INET_NTOA(dhcphosts_networks_jails.network_unauth | (dhcphosts_networks.mask ^ (power(2, 32) - 2))) AS last_addr,
dhcphosts_hosts.mac as mac
FROM
( dhcphosts_vlans
INNER JOIN
(
nas INNER JOIN dhcphosts_nas_ports on(dhcphosts_nas_ports.nas_id=nas.id)
)
ON(dhcphosts_nas_ports.vlan_id=dhcphosts_vlans.vlan_id)
)
INNER JOIN dhcphosts_networks_jails ON (dhcphosts_networks_jails.id=dhcphosts_vlans.network_id)
INNER JOIN dhcphosts_networks ON(dhcphosts_networks.id=dhcphosts_networks_jails.id)
LEFT JOIN dhcphosts_hosts ON(dhcphosts_hosts.vid=dhcphosts_vlans.vlan_id);
Таблица с описанием всх портов всех NAS (в моем случае NAS - это коммутаторы, Dlink DES-3550)
DROP TABLE IF EXISTS dhcphosts_nas_ports;
CREATE TABLE dhcphosts_nas_ports (
id smallint(3) unsigned NOT NULL,
vlan_id int(10) unsigned NOT NULL default '0',
nas_id int(10) unsigned NOT NULL default '0',
port int(10) unsigned NOT NULL default '0',
comments varchar(250) NOT NULL default '',
UNIQUE KEY nas_port(nas_id,port)
);
Описание вланов (что бы можно было сопоставить сеть и влан)
DROP TABLE IF EXISTS dhcphosts_vlans;
CREATE TABLE dhcphosts_vlans (
id smallint(3) unsigned NOT NULL,
name varchar(40) NOT NULL default '',
vlan_id int(10) unsigned NOT NULL default '0',
nas_id int(10) unsigned NOT NULL default '0',
network_id int(10) unsigned NOT NULL default '0',
comments varchar(250) NOT NULL default ''
);
Описание для сетей которые используются для неавторизованных клиентов.
DROP TABLE IF EXISTS dhcphosts_networks_jails;
CREATE TABLE dhcphosts_networks_jails (
id smallint(3) unsigned NOT NULL UNIQUE,
name varchar(40) NOT NULL default '',
network_unauth int(10) unsigned NOT NULL default '0',
network_nopay int(10) unsigned NOT NULL default '0',
dns_unauth varchar(100) NOT NULL default '',
dns_nopay varchar(100) NOT NULL default '',
routers_unauth int(11) unsigned NOT NULL default '0',
routers_nopay int(11) unsigned NOT NULL default '0',
disable tinyint(1) unsigned NOT NULL default '0',
comments varchar(250) NOT NULL default ''
);
Редирект абонентов на другой порт=
iptables -t nat -A PREROUTING -i eth1.101 -s 10.0.0.0/16 -p tcp --dport 80 -j DNAT --to-destination 172.16.253.2:998