Файл конфигурации

abills/libexec/config.pl

Файл настроек существует для создания конфигурации системы. Он заполняется в формате синтаксиса Perl. Если переменной нет в файле настроек или она отключена (значение 0) значит система выполняется команды по умолчанию.

Переменные включения функций.
Для включения нужно указать 1 (один) для выключения 0 (ноль) или комментировать переменную.

Настройки доступа к СУБД

$conf{dbhost}='localhost'; Хост СУБД
$conf{dbname}='abills'; Название базы
$conf{dbuser}='abills'; Пользователь для доступа к базе
$conf{dbpasswd}='password'; Пароль доступа к базе
$conf{dbtype}='mysql'; Тип СУБД
$conf{dbcharset}='cp1251'; Кодировка СУБД
$conf{dbdebug}=0; Режим отладки базы.
1. запись количества запросов $self→{dbo}→{queries_list}
2,3. Запись запросов в /tmp/sql_debug.
4. Запись полного дебага запросов в /tmp/sql_trace

Настройки системных сообщений

$conf{ADMIN_MAIL}='admin@your.host'; E-mail адрес администратора от имени которого будут производиться все системные E-mail рассылки. Если данный параметр не заполнен система не будет производить E-mail уведомлений
$conf{USERS_MAIL_DOMAIN}='your.domain'; Домен пользователей. Данный параметр используется если нужно уведомлять пользователей используя логи@$conf{USERS_MAIL_DOMAIN} при отправке сообщений
$conf{MAIL_CHARSET}='utf8'; Кодировка для писем по умолчанию
$conf{default_language}='ukraine'; Язык сообщений по умолчанию
$conf{default_charset}='utf8'; Кодировка WEB интерфейса по умолчанию
$conf{SYSTEM_ADMIN_ID}=1; Номер администратора для системных операций.
По умолчанию 2 (system)
$conf{USERS_WEB_ADMIN_ID}=3; Номер администратора для операций с портала пользователя
По умолчанию 3 (users_web)
$conf{AUTH_METHOD}=1; Тип авторизации.
0 - Apache Basic Auth (по умолчанию)
1 - Cookie auth. При этом типе авторизации появляется кнопка выхода из административного интерфейса
$conf{WEB_TITLE}='ABIllS'; Название организации. Отображается в заголовке браузера

Другие настройки

$conf{ADMINS_ALLOW_IP}='xx.xx.xx.xx'; Список адресов с которых разрешён доступ в админ интерфейс. адреса указываются через запятую
$conf{DEFAULT_ADMIN_WEBCOLORS}='mycolors' Название файла цветов загружаемого по умолчанию в админке. (По умолчанию: Bootstrap3). Файл цветов должен располагаться в каталоге /usr/abills/cgi-bin/styles/$self→{HTML_STYLE}/colors/
$conf{tech_works}='Technical works'; Технические работы.
Появляется оповещение в интерфейсе администратора и блокируется доступ пользователей к системе.
$conf{WEB_DEBUG} Включение отладки веб формы. Внизу страницы появляются данные с параметрами запроса передаваемые при помощи GET/POST методов
$conf{secretkey}=«test12345678901234567890»; Ключ для шифрования паролей в системе
$conf{version}='0.50dev'; Версия системы
$conf{octets_direction}='server'; Направление подсчёта трафика
user - со стороны пользователя: входящий/исходящий
server - со стороны сервера входящий/исходящий
$conf{WEB_IMG_SCRIPT_PATH}='../'; Местоположение картинок и ява скриптов. По умолчанию: '../'
$conf{PASSWD_LENGTH}=6; Минимальная длина пароля
$conf{PASSWD_SYMBOLS}=«1234567890abcdefgh»; Символы разрешённые в пароле
$conf{MAX_USERNAME_LENGTH}=12; Максимальная длина логина
$conf{PHONE_FORMAT}='\d+'; формат номера телефона. По умолчанию данная опция не включена.

телефоны формата 380xxxxxxxxx - \d{10}$
Два телефона через пробел /\d{10}\s?\d{0,10}/
$conf{USERNAMEREGEXP}=«^[a-z0-9_][a-z0-9_-]*\$»; Символы разрешённый для использования в логине. По умолчанию система разрешает только только маленькие символы английского алфавита и цифры.
Для разрешения больших букв в логине нужно включить следующее выражениe ^[A-Za-z0-9_][A-Za-z0-9_-]*\$
$conf{list_max_recs}=25; Максимальное количество строк выводимых в отчётах WEB интерфейса
$conf{HELP_EDIT}=1; Разрешить администратору правку системы помощи.
$conf{ERROR_ALIVE_COUNT}=3; Количество периодов не пришедших Alive пакетов после которого сессия автоматом попадает в Zap таблицу. Время Alive периода выставляется в
/ System configuration/ NAS/ [Alive]
Если сессия находится в Zap таблице больше двух $conf{ERROR_ALIVE_COUNT} (2 * $conf{ERROR_ALIVE_COUNT}) интервалов система автоматически её закрывает и рассчитывает время сессии и суму. Временем такой сессии считает время от старта до поучения последнего Alive пакета. (По умолчанию 3 периода)

Перенос в Zap журнал: Nas Alive * $conf{ERROR_ALIVE_COUNT}
Занесении сессии в статистику: Nas Alive * ($conf{ERROR_ALIVE_COUNT} * 2)
$conf{payment_chg_activate}=1; Изменение даты активизации на текущую при внесении денег на текущую. Дата изменяется только в случае если поле активизации не равно 0000-00-00. Дата закрытия акаунта (EXPIRE) устанавливается в 0000-00-00.
Если установленно занчение 1 дата меняется всегда при поплнении.
При значении 2 меняется только если дата активации меньше от текущей больше чем на 30 дней.
@EX_PAYMENT_METHODS = ('Счёт н 453', 'Счет н 10'); Дополнение типов оплаты собственными через опцию
$conf{CROSS_MODULES_DEBUG}='/tmp/cross_modules'; Вывод функций crossmodules в файл
$conf{ADDRESS_REGISTER}=1; Ведение журнала адресов
/ Система/ Журнал Адресов
миграция базы на журнал адресов
$conf{NON_PRIVILEGES_LOCATION_OPERATION}=1; Работы с журналом адресов переносятся из раздела Система В раздел Другое
$conf{START_PERIOD_DAY}=1; Число снятия абон. платы. По умолчанию 1 число месяца.
Распределение абон. платы или другие операции с месячной абон. платой делаются исходя из этого значения. Трафик или другие расчёты использованных ресурсов ведутся как обычно с 1 числа месяца.
$conf{LANGS}='english:English;russian:Русский;ukraine:Українська'; Указывает языки с которыми должна работать система.
Языка разделяются точкой с запятой. В описании языка указывается файл языка без расширения .pl и через две точки название языка.

Например:
заводим новый словарь Новый русский
$conf{LANGS}='new_russian:Новый русский;'
При таком описании в меню выбора языка покажется только один этот язык. Сам файл соваря следует записать в каталог /usr/abills/language/ вот так /usr/abills/language/new_russian.pl
$conf{MAX_STABLE_CREDIT}=0; Значение кредита после процедуры обнуления по времени
$conf{EXT_BILL_ACCOUNT}=1; Дополнительный денежный счёт.
$conf{SYSTEM_CURRENCY}=840; Валюта системы. В качестве идентификатора используются коді валют стандарта ISO 4217
Данная переменная полезна если учет в биллинговой систему производится в одной валюте а документы отображаются в другой
Таблица кодов http://index.minfin.com.ua/code/
$conf{PAYMENTS_NOT_CREATE_INVOICE}=1; Не создавать счет при оплате, выбор только из списка счетов
$conf{PAYMENTS_INNER_DESCRIBE_AUTOCOMPLETE}=1; автоматическое заполнение поля внутреннего комментария
$conf{USER_ALL_SERVICES}=1; Отобразить все модули учётной записи в интерфейсе администратора
$conf{FEES_PRIORITY}='bonus,main'; Установка приоритета снятия денег с аккаунтов пользователей. Данная установка является глобальной и относится ко всем списаниям системы.

Варианты настройки
bonus,main - с начала сума списывается с дополнительного счета и если на дополнительном счету недостаточно средств то остаток списывается с основного счета
main,bonus - с начала сума списывается с основного счета и если на нём недостаточно средств, а на дополнительном положительный баланс то сума недостающих средств списывается с дополнительного счета. Если ни на основном ни на дополнительном счете не достаточно средств для писания, тогда с дополнительного счета списывается вся сума баланса дополнительного счета а основного остаток сумы после вычитания списания с доп. счета
$conf{FIXED_FEES_DAY}=1; Фиксирования дата абон. платы. При включении данной опции модули системы будут снимать абон. плату всегда фиксированного числа месяца. Дата первой абон. плаьы указывается в поле «Активация» и после каждого снятия абон. платы переносится на 1 месяц вперёд. Если дата активации включает дни 29, 30, 31 дата активации устанавливается в 0000-00-00 и датой абон. платы считается первый день месяца. В некоторых модуля могут быть задействованы дополнительные опции тарифного плана.
$conf{CUSTOM_START_PAGE}=1; При включении данного параметра на стартовой странице интерфейса администратора будет отображаться альтернативная форма «CUSTOM_START_PAGE» которую можно модифицировать через редактор шаблонов
$conf{WEB_AUTH_KEY}='LOGIN'; Первичный параметр авторизации. По умолчанию LOGIN. Также можно использовать:
CONTRACT_ID
UID
BILL_ID
или любой другой персональный параметр абонента
$conf{CURRENCY_ICON}='currency hrn'; Значок валюты. Варианты: manat, hrn, rouble, larri
$conf{DEPOSIT_FORMAT}='%.2f'; Формат депозита
$conf{DOCS_INVOICE_TERMO_PRINTER}=1; Кнопка Печать чека для термо-принтера

Перенос должников в другую группу

Автоматическое создание группы должников. В группу заносятся пользователи у которых депозит ниже указанного в конфигурации и последняя оплата старше определённого количества дней. При включении пользователя в эту группу система автоматически добавляет комментарии с указанием даты добавлении. Если указанная группа не существует система пытается её создать. При погашении долга пользователя автоматически удаляется из группы вместе с комментарием. Можно вносить несколько правил переноса разделяя их запятой.
GROUP_ID - Група в которую переносить должников
DEPOSIT - Депозит при достижении которого клиент попадает в групу должников
LAST_PAYNMENT_DAYS - Количество дней прошедших с дня последней оплаты
USER_GID - Поточная группа пользователя (Не обязательный параметр). Если указан система переносит только пользователей указанной группы.
LAST_FEES_DAYS - Вносить в группу пользователей с которых на протяжении LAST_FEES_DAYS дней не снималась абон. плата. При обявлении этой опции игнорируется опция LAST_PAYNMENT_DAYS


Пример:

$conf{DEBETORS_GROUP}='500:0:20'; # перенести всех должников оплативших 20 дней назад в группу 500)

$conf{DEBETORS_GROUP}='100:0:20:10,500:0:20'; # перенести всех должников из группы 10 в группу 100 и перенести всех должников без группы в группу 500

Включение модулей

Система является модульным решением что разрешает в зависимости от потребностей использовать сочетание тех или иных модулей. Список модулей задаётся в переменной @MODULES

@MODULES = (‘Dv’, ‘Mail’);

Показывает что к системе подключены следующие модули Dv (Модуль управления Dialup/VPN соединениями) и Mail (Модуль управления почтой).

Настройки авторизации

$conf{AUTH_ERROR_CMD}='EXRP:CMD' Определение обработчика ошибок авторизации.
EXPR - выражение
CMD - команде которая запускается при попадении ошибки в выражение. Команде передаются следующие аргументы - USER_NAME=$user_name NAS_PORT=$RAD→{NAS_PORT} NAS_IP=$nas→{NAS_IP} ERROR=$message

ПРИМЕР
Отлавливание ошибки Login Not Exist or Expire и запуск программы /usr/abills/misc/error.sh
$conf{AUTH_ERROR_CMD}=«Login Not Exist or Expire:/usr/abills/misc/error.sh»

Настройки административного интерфейса

$conf{p_admin_mails}=1; Отправлять ежедневный и ежемесячный отчёт о работе пользователей администратору
$conf{p_users_mails}=1; Оповещать пользователей о средствах на балансе. Лимит оповещения указывается в тарифном плане
$conf{debugmods}='LOG_DEBUG LOG_NOTICE LOG_ALERT LOG_WARNING LOG_ERR LOG_INFO'; Включение режима отладки
$conf{BACKUP_DIR}='/usr/abills/backup'; Каталог в который помещаются архивы базы. Если планируется делать архивирование базы из веб интерфейса администратора тогда нужно установить владельцем каталога пользователя под которым работает WEB сервер
$base_dir='/usr/abills/'; Базовый каталог системы
$lang_path=$base_dir . 'language/'; Каталог с словарями
$lib_path=$base_dir .'libexec/'; Каталог системных приложений
$var_dir=$base_dir .'var/'; Каталог файлов временных файлов и файлов журналов
$conf{SPOOL_DIR}=$base_dir.'var/q'; Спул незавершенных сессий. В него помещаются сессии которые завершились во время неработоспособности базы данных
$conf{TPL_DIR}= $base_dir . 'Abills/templates/'; Каталог размещения пользовательских шаблонов. Обязательно права на каталог должны соответвовать правам WEB сервера
$conf{WEB_LOGFILE} = 'weblog.log'; Лог некоторых действий в WEB интерфейсе администраторами
$conf{CHART_ANIMATION} = 0; Анимировать графики в веб интерфейсе
$conf{LOGFILE} = $base_dir . 'var/log/abills.log'; Размещение файла логов.
$conf{ERROR2DB}=1; Возможность складывать сообщения об ошибке прямо в базу. Опция разрешает использовать удалённые сервера доступа и несколько радиус серверов. Более гибкая система выборки логов. Файл abills.log используеться только для SQL ошибок.
$conf{RADIUS_ID}=1; Номер радиус сервера используется для идентификации RADIUS сервера в запросах авторизации.
$conf{RADIUS2}=1; При влючении этой опции параметр User-Password == «$password» меняется на Cleartext-Password := «$password». Влючать при использовании FreeRadius 2
$conf{extern_acct_dir}=$base_dir.'libexec/ext_acct/'; Каталог для размещения файлов внешнего акаунтинга.
$conf{MINIMUM_SESSION_TIME}=10; Минимальное время (в секундах) для отправки сесии в базу
$conf{MINIMUM_SESSION_TRAF}=0; Минимальный трафик (в байтах) для отправки сесии в базу

Регистрация клиентов через веб интерфейс

Некоторые модули имеют возможность авторегистрации. Авторегистрация подразумевает что пользователь может самостоятельно зарегистрироваться в системе. Для включения возможности авторегистрации нужно прописать в переменную @REGISTRATION название модулей. Если включить несколько модулей для регистрации пользователю будет предоставлен выбор для регистрации.

 @REGISTRATION = ('Dv');

Также можно указать несколько модулей для регистрации:

 @REGISTRATION = ('Dv', 'Msgs');

при регистрации пользователь увидит первый модуль регистрации и кнопки перехода для регистрации в других модулях

Страница регистрации: https://your.host:9443/registration.cgi

Для явного указания отображаемого модуля в строке запроса нужно добавить параметр module=название_модуля

https://your.host:9443/registration.cgi?modules=Dv

Для защиты от роботов авторегистрации можно включить отображения цифр (CAPTCHA) параметр конфигурационного файла:

 $conf{REGISTRATION_CAPTCHA}=1;

Чтобы использовать эту функцию Вам также нужно установить Perl Authen::Captcha либо воспользоваться сервисом Google reCAPTCHA

Чтобы нужный тариф был в авторегистрации нужно его добавить в группу ТП и GID этой группы вписать в следующий параметр

$conf{DV_REGISTRATION_TP_GIDS}='1;2;35;' Группы тарифных планов доступные при регистрации
$conf{DV_REGISTRATION_SEND_SMS}=1; Отправлять смс при регистрации (если включён модуль SMS)
$conf{DV_REGISTRATION_ADDRESS}=1; Показывать форму адреса при регистрации

Дополнительные параметры:

$conf{REGISTRATION_EXTERNAL}='…'; Выполнения внешней консольной команды после регистрации. Команде передаются параметры введённые пользователем как аргументы программы.
Например:

yourprogram USER_NAME=«username» FIO=«FIO» EMAIL='useremail'
$conf{REGISTRATION_SHOW_PASSWD}=1; Показывать пользователю пароль после регистрации
$conf{REGISTRATION_GID}='11'; Вносить вновь зарегистрированных абонентов в группу
$conf{REGISTRATION_PREFIX}='a_'; добавляется данный префикс при регистрации логинов
$conf{REGISTRATION_DEFAULT_TP}='111'; Тарифный план по умолчанию при регистрации
$conf{REGISTRATION_CHECK_PHONE}=1; Обязательный телефон при регистрации
$conf{REGISTRATION_REDIRECT} = 'http://google.com/'; Перенаправлять пользоватля на указанный URL после регистрации

Проверка адреса

Теперь на странице регистрации появилась кнопка проверки адресов. При нажатии на нее, выскакивает модальное окно в котором абонент может выбрать свой адрес и проверить подключен ли его дом к вашей сети или же только на планировании.

Восстановления пароля

Страница восстановления пароля по E-mail или логину: https://your.host:9443/registration.cgi?FORGOT_PASSWD=1

События для внешних обработчиков

При возникновении определённых событий система может вызывать внешние программы их обработки.
Для вызова таких программ, нужно прописать в конфигурационном файле название файла обработки и путь к нему. При определении внешних обработчиков можно указывать дополнительные флаги.
При вызове внешних обработчиков, система передаёт им определенный параметры и ожидает ответа в формате:

флаг_успешного_выполнения:информационное_сообщение_для_системы

флаг_успешного_выполнения 1 - Операция выполнена успешно
0 - Операция не выполнена
информационное_сообщение_для_системы Набор пар НАЗВАНИЕ=ПАРАМЕТРЫ

Пример ответа об успешном выполнении внешнего обработчика:
1:INFO=Операция выполнена

Пример программы . Возвращает код успешного выполнения

#!/bin/sh
# External щзукфешщт example

echo "1:INFO=Operation complite. Arguments: '$@'";

Система может обрабатывать следующие события:

$conf{external_useradd} Создание пользователя.
Вызывается после успешного заведения пользователя в системе
Пример файла: abills/misc/external_adduser
$conf{external_userdel} удаление пользователя.
Вызывается поле выдаления пользователя из системы.
$conf{external_userchange} изменение учетных данных

Параметры передаваемые команде

DOMAIN_ID=0
ACTIVATE=0000-00-00
UID=1356
LOGIN=VarfolomeevaNG
REDUCTION=1
CREDIT=0.00
ACTION_COMMENTS=
REDUCTION_DATE=0000-00-00
CREDIT_DATE=0000-00-00
GID=0
EXPIRE=0000-00-00
DEPOSIT=208.930789
COMPANY_ID=
$conf{external_payments} изменение баланса внесение суммы

Параметры передаваемые команде

DOMAIN_ID=0
ORDER=
ACCOUNT_ID=417
UID=3434
DATE=2010-09-21 14:01:55
LOGIN=casper
ER=
CREDIT=180.00
INNER_DESCRIBE=
CUSTOMER=-
GID=0
OP_SID=nUGgWkGQYUHhZ5bB
SUM=12
DEPOSIT=273.004166
COMPANY_ID=0
DESCRIBE=
CREATE_INVOICE=1
METHOD=0
EXT_ID=
QUICK=1
$conf{external_fees} изменение баланса списание суммы)
$conf{external_userdisable} блокировка пользователя.

LDAP авторизация

Возможность авторизовать администраторов с LDAP сервера

Параметры

$conf{LDAP_IP}='xx.xx.xx.xx'; IP адрес LDAP сервера
$conf{LDAP_BASE}='dc=your.domain'; Базовый элемент дерева (dc domainComponent)
dn: cn=abills_admin,ou=users,dc=your.domain
objectClass: top
objectClass: person
#mail: pupkin@mail.com
#homePhone: 3322334455
telephoneNumber: 38050774433
cn: abills_admin2
sn: Vasya Pupkin
userPassword: {SSHA}wEFKat3VPBps4cAfcFsjZL4j7GOOA3N8

Дополнительные параметры

$ENV{CMD_EMULATE_MODE}=1; Включение режима эмуляции команд. В данное режиме команды не выполняются а только записываются в файлы /usr/abills/var/log/cmd.log
$ENV{SENDMAIL_SAVE_ATTACH}=1; Сохранение отправляемых аттачментов почты в каталоге /tmp