### ABILLS

(Asmodeus BILLing System)

Возможности
Скриншоты
Установка.
Abills
MySQL
Radius
Web Server
Perl
Soft
Настройка
ExPPP
PPPoE
PPTP
MPD
PPPoE
PPTP
Дополнительно
MCH
Forum
CVS

## Возможности

- Тарификация по времени
- Тарификация по трафику
- Периодические отчисления (месячная и дневная абонплата)
- Возможность раздельной и совместной тарификации по времени и трафику
- Ограничение доступа в интернет по времени суток
- Система скидок
- Установка минимальной цены сесии
- Работа с неограниченым количеством NAS серверов
- Авторизация по SQL базе даных или по системной UNIX базе паролей
- Авторизация по PAP, CHAP, MS-CHAP, MS-CHAPv2 (CHAP при сохраниени паролей в SQL базе)
- Авторизация PPPOE по MAC адресу
- Авторизация PPTP по IP адресу (для MPD по IP и MAC одновременно)
- Изменение тарифного плана или снятие денег со счета по расписаню
- Разделение трафика на 3 вида (внутрений, внешний, бесплатный) (Только для VPN)
- Ограничение скорости в зависемости от вида трафика (Только для VPN)
- Создание месячных предоплаченых по трафику пакетов
- Дневные, недельные и месячные лимиты по трафику и времени
- Отчёты по работе системы и с остоянию счетов за любой период времени
- Генерация и отправка администратору добовых и месячных отчётов по работе системы
- Лог действий администратора, менеджера
- Ограничение сесий по количеству общего (in+out) трафика (для exppp, mpd, pppd + RADIUS plugin (Linux)) (new)
- WEB нтрефейс с ограничеными возможностями для касиров и сапорта (cgi-bin/manager.cgi) (new)
- Несёмный минимум для подключений к NAS серверам (Tarif Plans -> Credit Tresshold)(new)
- Выписка счётов из пользовательского интерфейса (new)
- Обратная связь (new)

## Скриншоты

Список пользователей
Управление пользователем
Статистика пользователя
Оплаты
Снятия денег со счёта
Отчёты по трафику времени
Текущие сесии
Настройка серверов доступа
Интерфейс пользователя

## Установка

Abills

    Загрузить пакет можно по адресу http://sourceforge.net/projects/abills/

    tar zxvf abills-0.24b.tgz
    cp -Rf abills /usr/

Правим файлы

/usr/abills/libexec/config.pl

`#DB configuration
$conf{dbhost}='localhost';
$conf{dbname}='abills';
$conf{dblogin}='abills';
$conf{dbpasswd}='password';
$conf{ADMIN_MAIL}='info\@your.domain';
$conf{USERS_MAIL_DOMAIN}="your.domain";
$conf{secretkey}="test12345678901234567890";
`

/usr/abills/cgi-bin/admin/Abwconf.pm

`$dbhost='localhost';
$dbname='abills';
$dbuser='abills';
$dbpasswd='password';
$mail_domain='your.domain';
$mail_from='abills@your.domain';
`

/etc/crontab

`*/5 * * * * root /usr/abills/libexec/billd -all
1 0 * * * root /usr/abills/libexec/periodic daily
1 0 1 * * root /usr/abills/libexec/periodic monthly
`

MySQL

    Загрузить пакет MySQL можно по адресу http://www.mysql.com

    tar xvfz mysql-4.0.23a.tar.gz
    cd mysql-4.0.23a
    ./configure
    make
    make install

    Создаём пользователя и базу.

    use mysql;
    INSERT INTO user (Host, User, Password) VALUES ('%','abills', password('******'));

    INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Index_priv, Alter_priv)
    VALUES ('localhost', 'abills', 'abills', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y');

    CREATE DATABASE abills;

    mysqladmin flush-privileges

    Загружаем таблицы в базу.
    mysql -D abills < abills.sql

Radius

    Загрузить пакет FreeRadius можно по адресу http://www.freeradius.org

    tar zxvf freeradius-1.0.1.tar.gz
    freeradius-1.0.1
    ./configure --prefix=/usr/local/radiusd/
    make
    make install

После успешной установки правим файлы:

/usr/local/radiusd/etc/raddb/users

`DEFAULT Auth-Type = Accept
Exec-Program-Wait = "/usr/abills/libexec/rauth.pl"
`

/usr/local/radiusd/etc/raddb/acct_users

`DEFAULT Acct-Status-Type == Start
Exec-Program = "/usr/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Alive
Exec-Program = "/usr/abills/libexec/racct.pl"
DEFAULT Acct-Status-Type == Stop
Exec-Program = "/usr/abills/libexec/racct.pl"
`

/usr/local/radiusd/etc/raddb/clients.conf
В этот файл нужно вписать IP адрес или имя NAS сервера с которого будут поступать данные для радиуса и пароль доступа.

`client nashost.nasdomain {
secret = radsecret
shortname = shorrname
}`

/usr/local/radiusd/etc/raddb/radiusd.conf
В этом файле нужно закоментировать использование модулей 'chap' и 'mschap' в разделе 'authorize'

`authorize {
preprocess
# chap
# counter
# attr_filter
# eap
suffix
files
# etc_smbpasswd
# sql
# mschap
}
`

ABillS

Отрываем веб интерфейс http://your.host/billing/admin/

Прежде всего надо скунфигурировать NAS сервер.
Переходим в меню
Other->NAS configuration

IP - IP адрес NAS сервера
Name - Название
Radius NAS-Identifier - Индентификатор сервера (можно не вписывать)
Describe - Описание сервера
Type - Тип сервера. В зависимости от типа по разному обрабатываются запроси на авторизацию и акаунтинг информация.
Authorization - Тип авторизации. SYSTEM - При хранении паролей в UNIX базе (/etc/passwd) SQL - при хранении паролей SQL базе (MySQL, PosgreSQL)
:Manage: - Секция менеджмента NAS сервера
IP:PORT - IP адрес и порт для контроля соединения. Например для отключения пользователя с веб интерфейса.
User - Пользователь для контроля
Password - Пароль
RADIUS Parameters - Дополнительные параметры которые передаются NAS серверу после успешной авторизации.

Создание тарифного плана Меню
Tarif Plans

Регистрация пользователя
Users->Add

Проверяем

`# radtest testuser testpassword 127.0.0.1:1812 0 radsecret 0 127.0.0.1`

Если всё правильно настроено в файле логов '/usr/abills/var/log/abills.log' должна появится строка

2005-02-23 12:55:55 LOG_INFO: AUTH [testuser] NAS: 1 (xxx.xxx.xxx.xxx) GT: 0.03799

Web Server

Apache

В случае использования веб сервера Apache вносим в httpd.conf

`Alias /billing "/usr/abills/cgi-bin/"
<Directory "/usr/abills/cgi-bin">
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_CGI_AUTHORIZATION:%1]
Options Indexes ExecCGI SymLinksIfOwnerMatch
</IfModule>
Options Indexes ExecCGI FollowSymLinks
AllowOverride none
DirectoryIndex users.cgi
AddHandler cgi-script .cgi
Order allow,deny
Allow from all
</Directory>
<Directory "/usr/abills/cgi-bin/admin">
Options Indexes ExecCGI SymLinksIfOwnerMatch
AllowOverride none
DirectoryIndex users.cgi
order deny,allow
deny from all
AuthType Basic
AuthName "ABillS"
AuthUserFile /usr/abills/cgi-bin/admin/admins
Satisfy Any
require valid-user
</Directory>
`

Создаём файл /usr/abills/cgi-bin/admin/admins с паролями администратора

`# htpasswd -c /usr/abills/cgi-bin/admin/admins admin`

Установить права на чтение и запись вебсервером для файлов веб интерфейса

`chown -Rf www /usr/abills/cgi-bin`

Perl modules

Для работы системы нужны модули.

DBI
DBD::mysql
Digest-MD5 - для Chap авторизации
Digest-MD4 - для MS-Chap авторизации
Crypt-DES - для MS-Chap авторизации
Digest-SHA1$ - для MS-ChapV2 авторизации
libnet - Нужен только при авторизации из UNIX passwd
Time-HiRes - Нужен только для тестирования скорости выполнения авторизаци, акаунтинга, и страниц веб интерфейса.

Эти модули можно загрузить с сайта http://www.cpan.org

## Soft

    exppp_asm-0.2.4.tar.gz - стандартный FreeBSD ppp демон с возможностью разделять трафик,
    установкой лимита трафика на сесию и другими улутшениями.
    expppd-0.2.1.tar.gz - pppd c радиус авторизацией и акаунтингом.
    radpppd.tar.gz - pppd c радиус авторизацией и акаунтингом.

## Настройка

PPPoE

    Переходим в каталог с програмами
    cd abills/soft

    tar zxvf exppp_asm-0.2.4.tar.gz
    cd exppp_asm-0.2.4
    make
    cp ppp /usr/sbin/
    cp etc/shape.ppp /etc/ppp
    cp raddb/exppp /usr/local/radiusd/etc/raddb/

Дописываем в файл

/usr/local/radiusd/etc/raddb/dictionary

`$INCLUDE /usr/local/radiusd/etc/raddb/exppp`

перезагружаем радиус

Правим файл настройки ppp
/etc/ppp/ppp.conf

`default:
set log Warning
pppoe-in: # Метка (индентификатор правил)
set mtu 1492
set mru 1492
allow mode direct
enable lqr
set timeout 6000
disable acfcomp protocomp
deny acfcomp
# если авторизация из UNIX базы паролей enable pap
enable chap
set speed sync
accept dns
#set dns xxx.xxx.xxx.xxx
# Номер порта для контроля и пароль
set server +3000 password
set radius /etc/radius.conf
set rad_service_type 11
# Таймаут для Alive пакетов
set rad_alive 60
# Скрипт для поднятия шейпера
set ip-up /etc/ppp/shape.ppp
set ip-down /etc/ppp/shape.ppp
`

Не забывайте делать отступы для правил расположеных после мотки. В противном случае они не будут приниматься.

Если нужна независимая обрезка трафика по категориям коментируем последние две строчики и правим файлы
/etc/ppp/ppp.linkup

`MYADDR:
!bg /usr/abills/libexec/linkupdown up INTERFACE USER HISADDR
`

/etc/ppp/ppp.linkdown

`MYADDR:
!bg /usr/abills/libexec/linkupdown down INTERFACE USER HISADDR`

Конфигурационный файл для подключения к радиусу
/etc/radius.conf

`auth radius.hostname:1812 radsecret 4 4
acct radius.hostname:1813 radsecret 4 4
`

Запускаем PPPoE демон
/usr/libexec/pppoed -l pppoe-in -p * fxp2

Для автоматического поднятия PPPoE демона после перезагрузки правим файл
/etc/rc.conf

`pppoed_enable="YES"
pppoed_flags="-l pppoe-in"
pppoed_interface="fxp2" # Интерфейс на котором демон будет слушать
`

PPTP

Правим файл настройки ppp
/etc/ppp/ppp.conf

`default:
set log Warning
pptp:
set mtu 1460
set mru 1460
allow mode direct
enable lqr
set timeout 6000
disable acfcomp protocomp
deny acfcomp
# если авторизация из UNIX базы паролей enable pap
enable chap
accept dns
#set dns xxx.xxx.xxx.xxx
# Номер порта для контроля и пароль
set server +3000 password
set radius /etc/radius.conf
set rad_service_type 11
# Таймаут для Alive пакетов
set rad_alive 60
# Скрипт для поднятия шейпера
set ip-up /etc/ppp/shape.ppp
set ip-down /etc/ppp/shape.ppp
`

Если нужна независимая обрезка трафика по категориям коментируем последние две строчики и правим файлы
/etc/ppp/ppp.linkup

`MYADDR:
!bg /usr/abills/libexec/linkupdown up INTERFACE USER HISADDR
`

/etc/ppp/ppp.linkdown

`MYADDR: !bg /usr/abills/libexec/linkupdown down INTERFACE USER HISADDR`

Конфигурационный файл для подключения к радиусу
/etc/radius.conf

`auth radius.hostname:1812 password 4 4
acct radius.hostname:1813 password 4 4
`

Настройка pptp демона

    cd /usr/ports/net/poptop/
    make
    make install
    /usr/local/sbin/pptpd

    Для автоматического запуска после перезагрузки
    cp /usr/local/etc/rc.d/pptpd.sh.sample /usr/local/etc/rc.d/pptpd.sh

## CVS

Для получения регулярных обновлений и баг фиксов Вы можете пользоваться CVS репозитарием.

Получить последнюю версию можно при помощи команд

`# cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/abills login
# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/abills co -P abills`

Author: ~AsmodeuS~
ICQ: 50254692