Справка и советы по ABillS

В этой статье я напишу немного информации про ABillS, которая пригодится операторам и системным администраторам.

Начиная с версии ABillS 0.82 в настройках тарифов, серверов доступа и т.д. FreeRadius параметры нужно указывать через запятую с пробелом, если версия ниже 0.82, то через запятую без пробела.

По каждому администратору ведется история действий которую можно увидеть в меню «Отчёт» — «События».

Чтобы включить отладку SQL запросов, нужно найти dbdebug в файле конфигурации и раскомментировать, после этого в конце каждой страницы биллинга будет отображен SQL запрос и время его выполнения.

Логи неверных подключений администраторов, SQL запросов и прочих изменений настроек можно увидеть в меню «Отчёт» — «Настройка».

При добавлении NAS сервера «NAS Alive» должно быть равно «DHCP Lease Time», при изменении параметров NAS сервера необходимо повторно ввести пароль.

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

Кредит абоненту ставится без минуса и нужно обязательно указать напротив дату окончания, после этой даты он обнулится, если дату не указать, то кредит будет всегда, пока не уберется вручную.

Если необходимо запретить клиенту доступ к кнопке получения кредита, то можно создать группу без доступа к кредиту («Клиенты» — «Группы», снять галочку «Разрешено Кредит») и добавить пользователя в эту группу.

Чтобы не листать информацию на странице в постраничном режиме, а отобразить все, можно указать в профиле администратора количество отображаемых строк или в конце ссылки добавить &PAGE_ROWS=50000

В случае ошибок, можно посмотреть больше отладочной информации добавив в конце ссылки:
&DEBUG=10

Иногда чтобы перезапустить сервер доступа, например Accel-ipoe, необходимо обязательно очистить активные сессии, чтобы после запуска сервера доступа быстро поднялись новые, иначе будут дубли и будут долго подниматься. Для этого откроем меню «Мониторинг+» — «Internet+», сделаем «Zap ALL», потом откроем список Zap сессий, отметим все первой галочкой и удалим. У меня было такое, что после Zap All в списке пропал сервер доступа и не видно было zap сессии, в этом случае добавим к ссылке &ZAPED=1, например https://ixnfo.com:9443/admin/index.cgi?index=155&NAS_ID=11&ZAPED=1

Страница «заглушка» с информацией об отрицательном балансе должна быть запущена на отдельном веб-сервере и на NGINX, если ее запустить на том же веб-сервере Apache2 где биллинг, то при малейших нагрузках, например при достижения 250 подключений по умолчанию из-за флуда вирусов у клиентов, биллинг перестанет открываться в браузере, а оптимизировать Apache2 под эту страницу я не вижу смысла, так как nginx справляется лучше, либо можно настроить еще HAProxy перед Apache2.
Смотрите мои статьи:
Установка и настройка Nginx
Как настроить доступ по IP в nginx
Установка и настройка HAProxy

В новых версиях ABillS функции модулей dv, dhcphost, ipn и vlan перенесены в модуль Internet+, поэтому эти модули не должны быть активированы.

Если пользователь много раз вводил неверный пароль, заблокировался и его нужно разблокировать, то можно удалить записи в «Отчет» — «User portal».

Через универсальный поиск удобнее искать чем через обычный, например:
улица 15,5
ули*15*5
фамилия*имя
Через глобальный поиск можно искать по MAC, IP, номеру телефона, тексту в комментариях и т.д.
Через обычный поиск в поле ФИО нужно в начале и в конце слова добавить *
Чтобы увидеть клиентов у кого добавлено больше 1 сервиса, откроем «Клиенты» — «Логины» — «Интернет» и при поиске в блоке «Дополнительно» где «Сервисы» укажем >1

Если нужно определенным клиентам массово изменить тариф, то сделаем поиск услуг этих клиентов через меню «Клиент» — «Логины» — «Интернет+», после чего внизу списка будет вкладка «Многопользовательские операции», в которой отметит галочкой «Тарифный план» и выберем новый тарифный план. При таком изменении абонентская плата, дата активации не снимается и никаких других действий кроме, прямого изменения тарифного плана, не происходит.

При смене статуса услуги на «Активно» с тарифами с дневным начислением не списываются деньги так как услуга была приостановлена на половине дня и включена тоже на половине дня, списание выполнит billd ночью уже за следующий день.

В услуге пользователя, в поле «Скорость (kb)» можно указать индивидуальную скорость, приоритет которой выше чем у тарифного плана, скорость указывается одним числом в обе стороны, например 50000, в поле «Фильтр» можно указать для клиента индивидуальные Radius параметры, например скорость на закачку, а исходящая скорость останется по тарифу, так как она не указана:

RAD: PPPD-Downstream-Speed-Limit=20000

С accel-ipoe биллинг отключает и включает клиентов в течении 5-10 минут, это зависит от периодического задания «billd» в cron, обычно оно выполняется каждые 5 минут, а также от времени аренды IP адреса по DHCP, то есть если услуга клиента была отключена и клиент пополнил счет, billd завершит гостевую сессию, а когда клиенту пошлет запрос на продление аренды, accel-ipoe ответит DHCP Nak, что заставить клиента послать DHCP Request и в следствии чего поднимется новая рабочая сессия.

Новый тариф применяется при авторизации клиента, а если он уже был в сети, то на протяжении 5-10 минут, время зависит также как описано выше от billd и времени аренды IP адреса по DHCP.

Биллинг не даст указать одинаковый IP адрес абонентам, но можно указать одинаковые MAC адреса, например если настроена привязка к порту коммутатора или VLAN на пользователя, то клиенты могут получать разные IP адреса, даже если у них всех будут одинаковые MAC-адреса, но в разных VLAN, если авторизация только по MAC-адресу и клиенты в одном VLAN, то интернет работать будет только у того кто подключился первым и будут проблемы.

Отчет платежей, общий и по каждому оператору можно увидеть в «Отчет» — «Оплаты» (выбрать «Тип:Администраторы»), также можно в «Отчет» — «Документы» — «Квитанции» (в поле «Администратор:» можно указать логин оператора).
В «Отчёт» — «Оплаты» также можно посмотреть оплаты по району или улице, а также по другим критериям.

Отчет ошибок подключения можно посмотреть в меню «Отчёт» — «Интернет+» — «Последнее подключение», на стартовой странице биллинга администратору можно настроить индивидуальный блок с топ ошибками, что удобно обнаруживать проблемы.

В настройках прав администраторов модули не нужно отмечать галочками если нужно дать доступ ко всем (когда не отмечен ни один из модулей, это аналогично когда отмечены все), отметить можно только тогда когда необходимо запретить доступ к некоторым, тогда отмечаем те к которым нужно разрешить доступ и не отмечаем те к которым нужно запретить.

Если необходимо создать например годовой тариф, то при создании тарифа укажем «Время существования: 365», а где «Тарифный план Следующий учётный период:» укажем тариф которым применится по истечении «Время существования».

Если в биллинге отображается что пользователь Online, значит он сейчас в сети или был в сети за последние X минут (X=NASAlive*3). то есть если пользователь выключил свое устройство и не в сети, то скрипт billd перенесет сессию в zap спустя nas alive*3.
Напротив сессии отображается ее длительность, когда сессия завершается, то эта информация попадает в статистику.

Если у абонента несколько IP адресов, то для каждого IP начислится отдельная абонентская плата, либо можно ставить специальный тариф, например «Доп.IP» со стоимостью 0.01, но желательно чтобы на клиента был заведен только один IP адрес, тем более если настраивать QinQ, а если нужно больше — пусть клиент ставит маршрутизатор.

Приведу пример прямой ссылки просмотра сессий с определенными IP адресами, например я так смотрю гостевые сессии неизвестных и не заведенных устройств:
https://ixnfo.com:9443/admin/index.cgi?get_index=internet_online&header=1&NAS_ID=&FILTER=10.55.56.*&FILTER_FIELD=CLIENT_IP&REFRESH=0&SHOW=Показать
Подобным образом можно открывать и другие страницы, например Maps2:
https://ixnfo.com:9443/admin/index.cgi?header=1&get_index=maps2_main
get_index можно найти в файлах config каждого модуля:

find /usr/abills/ -name config

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

Можно ограничить процесс регистрации пользователя для администратора, например отображая только первый шаг или первый и заведение сервиса:

$conf{REG_WIZARD}="user_form::Добавить Пользователя;";
$conf{REG_WIZARD}="user_form::Добавить Пользователя;internet_user:Internet:Internet+;";

Если необходимо перезагрузить 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

Смотрите также мои статьи:
Как выполнить списания 2 января
Использование и настройка CRON
Настройка L4-Redirect-ipset для Accel-ipoe и ABillS
Другие мои статьи про ABillS

Оставьте комментарий

Добавить комментарий