В этой статье я напишу немного информации про АСР Казна-39, которая пригодится операторам и системным администраторам.

улица 15,5
ули*15*5 
фамилия*имя
RAD: PPPD-Downstream-Speed-Limit=20000

Чтобы скрипт «periodic» не присылал отчеты на email можно указать «NO_ADM_REPORT=1», например:
/usr/abills/libexec/periodic monthly NO_ADM_REPORT=1 > /dev/null 2>&1

Если необходимо перезагрузить MySQL сервер, то обязательно потребуется также перезагрузить Freeradius так как он потеряет соединение с базой данных.

Логотип Abills это не картинка, а просто текст, например чтобы изменить его нужно отредактировать header.tpl и form_client_main.tpl через меню в биллинге Настройка — Другое — Шаблоны.

В ABillS есть две схемы ведения адресов, старая, это когда в address_street название улицы и т.д. (устарела в версиях 0.5х) и новая, через журнал адресов. Учитывается только location_id, который совпадает с адресом дома. Когда я писал sql запрос чтобы выбрать клиентов по адресам, то соединял в запросе по location_id с домами, улицами и районам.

Для тестов уже установленный Abills есть в docker контейнере, который можно скачать по ссылке:
http://abills.net.ua:8090/plugins/servlet/mobile?contentId=11403447#content/view/11403447

В меню «Настройка» — «Другое» — «Информационные поля» я добавлял некоторые дополнительные поля, например: «Тип подключения»: Ethernet, GPON, WiFi и т.д.», потом чекбокс «Актуальный тел.», благодаря этому полю мои скрипты для рассылки СМС клиентам проверяли кому отправлять, а кому нет. Актуальность мобильного телефона могут проверять работники на кассе, когда клиент приходит оплачивать интернет услуги, и можно снять галочку тем кто не хочет получать СМС.

Можно завершать сессии используя autozh.pl, например:

cd /usr/abills/misc/
./autozh.pl help
./autozh.pl DEBUG=1 HANGUP=1
./autozh.pl DEBUG=2 NEGATIVE_DEPOSIT=1

Если указать debug>7, то операции не выполняются, а просто выводится информация.

Чтобы работал гостевой режим, в конфигурации необходимо указать:

$conf{INTERNET_STATUS_NEG_DEPOSIT}=1;

Ротация оплат, снятий, документов и статистики за предыдущие периоды (SELECT — отображение удаляемых данных без удаления, DELETE — удаление данных, ROTATE — перемещение данных в отдельные таблицы, SHOW — просмотр запросов на удаление, SHOW_SUMMARY — просмотр статистики строк на удаление):

/usr/abills/misc/mysql/clear_db.pl SELECT DATE=2018-08-01
/usr/abills/misc/mysql/clear_db.pl SHOW DATE=2018-08-01
/usr/abills/misc/mysql/clear_db.pl SHOW_SUMMARY DATE=2018-08-01

Проверка поля CID и CPE MAC (например чтобы можно было ввести только цифры и маленькие буквы a-f в формате MAC адреса):

$conf{INTERNET_CID_FORMAT}="^(([0-9a-f]{2}[:]){5}([0-9a-f]{2});?){1,}\$";

Проверка поля «Телефон» и «Мобильный телефон» (например 0980001122, чтобы можно было ввести только 10 цифр):

$conf{PHONE_FORMAT}='^\d{10}$';
$conf{CELL_PHONE_FORMAT}='^\d{10}$';

Можно добавить кнопку PING на странице абонента:

$conf{INTERNET_EXTERNAL_DIAGNOSTIC}='PING:ping -c 15 -i 0.2 -s 1024 %FRAMED_IP_ADDRESS%';

Чтобы в личный кабинет пускало пользователей без ввода пароля (последняя опция указывает что нужно пускать только тех у кого статус «Слишком маленький депозит» и «Приостановление»):

$conf{PASSWORDLESS_ACCESS}=1;
$conf{PASSWORDLESS_GUEST_ACCESS}='3;5';

Для указания периода в днях, через который будет очищаться статистика сессий ipoe клиентов (таблицы s_detail_*):

$conf{INTERNET_DETAIL_CLEAN_PERIOD}=180;

Если необходимо удалить списание денег за определенный день и снова списать, то выполним:

/usr/abills/bin/abm_console FEES=1 DEL=1 METHOD=1 DATE="2019-08-16"
/usr/abills/libexec/periodic daily DATE="2019-08-16"
/usr/abills/libexec/periodic monthly DATE="2019-08-16"

Просмотр списаний денег за определенный день:

/usr/abills/bin/abm_console FEES=1 DATE="2019-08-16" METHOD=1

На странице клиента в меню «Сервер доступа» можно выбрать сервер доступа чтобы клиент мог авторизоваться только на нем и не мог авторизоваться на других серверах доступа, либо можно в настройках тарифа привязаться тариф к серверу доступа.

Порядок расположения модулей в config.pl влияет на порядок их отображение в web интерфейсе и выполнения периодических заданий.

Иногда при подключении платежной системы, которая может работать по разным протоколам или поддерживает бесплатный OSMP, можно ее подключить через существующий плагин или OSMP на примерах ниже:

$conf{PAYSYS_SUCCESSIONS}="192.168.2.2:46:FcSistema:FcSis:osmp_payments";
$conf{PAYSYS_SUCCESSIONS}="192.168.3.3:85:Name:ShortName:City24.pm";

Если в тарифе настроено несколько интервалов с разными скоростями, то на границе интервалов в cron нужно добавить скрипт, например:

1     17     *    *     *   root /usr/abills/libexec/billd checkspeed NAS_ID=11 > /dev/null 2>&1
30     23     *    *     *   root /usr/abills/libexec/billd checkspeed NAS_ID=11 > /dev/null 2>&1

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

/usr/abills/libexec/billd checkspeed SHOW_SPEED=1 NAS_IDS=11

Если используется TrinityTV и активировать одному клиенту больше 4 устройств, то бухгалтерия Trinity будет считать его как два клиента.

Чтобы система следила за дублированными сессиями, укажем опцию ниже в файле конфигурации, а также заполним в настройках тарифов параметр «Одновременно»:

$conf{hard_simultaneously_control}=1;
update tarif_plans set logins=1

Для того чтобы отметить проценты на оптическом делителе в Maps2+Cablecat, выберем необходимую коммутацию, нажмем левой кнопкой мыши по делителю, выберем «Изменить» и в поле «Затухание» укажем проценты в виде 50/50.

Если в Maps2 в названии узла связи указать кириллический апостроф, то в дальнейшем на карте перестанут отображаться кабеля (проблему заметил в ABillS 0.83).

Если используются динамические ippool, то для лучшей производительности рекомендуется включить опцию GET_IP2, для статических ippool она не нужна, для включения необходимо пересохранить существующие ippool, указать в файле конфигурации опцию ниже и перезапустить freeradius:

$conf{GET_IP2}=1;

Один динамический ippool можно привязывать одновременно к нескольким серверам доступа.

Если необходимо найти пользователей которые были зарегистрированы за определенный период времени, то на странице поиска в поле Регистрация укажем например:
2019-01-01/2020-01-01

Просмотр общего количества строк на удаление или ротацию до указанной даты (из таблиц payments, fees, internet_log):

cd /usr/abills/misc/mysql
./clear_db.pl SHOW_SUMMARY DATE=2019-01-01