Abills NMS Addon: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуСтрока 14: | Строка 14: | ||
Сервер достался уже готовым, почему apache и php собраны именнно так - не разбирался. |
Сервер достался уже готовым, почему apache и php собраны именнно так - не разбирался. |
||
+ | dL9JOm <a href="http://uimcmpohxgng.com/">uimcmpohxgng</a>, [url=http://hzwsppshgeni.com/]hzwsppshgeni[/url], [link=http://tckbciuzutrg.com/]tckbciuzutrg[/link], http://eiyozyuunhqs.com/ |
||
− | ==Изменение в БД== |
||
− | <P>Использование нужного мне функционала подразумевате, что в биллинге содержиться информация о каждом активном порту, т.к. эта информация необходима для использования option 82. |
||
− | <P>Я не нашел этой информации в имеющейся инсталляции, потому часть таблиц пришлось добавить. Не уверен что это идеальный вариант. |
||
− | |||
− | <P> |
||
− | Для того что бы отвязать свой код от базы Abills и свести к минимуму возможные изменения в случае изменения формата базы, использую представления. |
||
− | <BR> |
||
− | Предсьавление для авторизованных клииентов. (для них допустима нормальная работа) |
||
− | <PRE> |
||
− | 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; |
||
− | </PRE> |
||
− | |||
− | Представление для неавторизованных клиентов. |
||
− | <PRE> |
||
− | 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); |
||
− | </PRE> |
||
− | |||
− | |||
− | Таблица с описанием всх портов всех NAS (в моем случае NAS - это коммутаторы, Dlink DES-3550) |
||
− | <PRE> |
||
− | 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) |
||
− | ); |
||
− | </PRE> |
||
− | |||
− | Описание вланов (что бы можно было сопоставить сеть и влан) |
||
− | <PRE> |
||
− | 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 '' |
||
− | ); |
||
− | </PRE> |
||
− | |||
− | |||
− | Описание для сетей которые используются для неавторизованных клиентов. |
||
− | <PRE> |
||
− | 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 '' |
||
− | ); |
||
− | </PRE> |
||
==Редирект абонентов на другой порт=== |
==Редирект абонентов на другой порт=== |
Версия 09:38, 12 марта 2010
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 собраны именнно так - не разбирался.
dL9JOm <a href="http://uimcmpohxgng.com/">uimcmpohxgng</a>, [url=http://hzwsppshgeni.com/]hzwsppshgeni[/url], [link=http://tckbciuzutrg.com/]tckbciuzutrg[/link], http://eiyozyuunhqs.com/
Редирект абонентов на другой порт=
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