Документация по версии 1.5 — различия между версиями

Материал из ExpertBilling
Перейти к: навигация, поиск
(Апгрейд с версии 1.4.1)
(Платёжные системы)
 
(не показано 37 промежуточных версий 2 участников)
Строка 17: Строка 17:
 
Кроме этого ExpertBilling 1.5 стал гораздо безопаснее и надёжнее. Мы проделали огромную работу и надеемся, что это не напрасно.
 
Кроме этого ExpertBilling 1.5 стал гораздо безопаснее и надёжнее. Мы проделали огромную работу и надеемся, что это не напрасно.
  
Обратите внимание, что выложенная версия ExpertBilling 1.5 является alpha версией и вы её используете на свой страх и риск. Мы просим вас сообщать на форуме о всех найденных проблемах, чтобы они были быстрее исправлены.
+
Обратите внимание, что выложенная версия ExpertBilling 1.5 является RC версией и вы её используете на свой страх и риск. Мы просим вас сообщать на форуме о всех найденных проблемах, чтобы они были быстрее исправлены.
  
 
= Установка =
 
= Установка =
Строка 28: Строка 28:
  
 
<pre>
 
<pre>
#apt-get install fabric
+
#apt-get install fabric python-psycopg2
 +
</pre>
 +
 
 +
Установка postgresql 9.1
 +
<pre>
 +
#apt-get update
 +
#apt-get install fabric postgresql-9.1 postgresql-contrib-9.1 postgresql-server-dev-9.1
 
</pre>
 
</pre>
  
Строка 42: Строка 48:
 
</pre>
 
</pre>
  
Установка postgresql 9.1
 
<pre>
 
#apt-get update
 
#apt-get install fabric postgresql-9.1 postgresql-contrib-9.1 postgresql-server-dev-9.1
 
</pre>
 
  
 
Создание директории:
 
Создание директории:
Строка 65: Строка 66:
 
Запустите установку биллинга с нуля с правами root-а из директории /opt/.  
 
Запустите установку биллинга с нуля с правами root-а из директории /opt/.  
 
<pre>
 
<pre>
#fab deploy:demo.tar.gz  
+
#fab deploy:demo1.5_x64.tar.gz  для 64-бит версии демо
 +
#fab deploy:demo1.5_x32.tar.gz для 32-бит версии демо
 
</pre>
 
</pre>
 
+
или подставить ваш скачанынй архив с системой.
 
После того, как устанвока завершится - откройте в браузере айпи вашего сервера и войдите в веб-кабинет
 
После того, как устанвока завершится - откройте в браузере айпи вашего сервера и войдите в веб-кабинет
  
Строка 128: Строка 130:
  
 
Имя и пароль по-умолчанию для входа в веб-кабинет admin/admin.
 
Имя и пароль по-умолчанию для входа в веб-кабинет admin/admin.
 +
 +
= Компоненты биллинг-системы =
 +
* процесс core - занимается списанием периодиеских и разовых услуг, контроллирует RADIUS сессии, тарифицирует их, производит сервисные процедуры по проверке баланса для блокировок и их снятия.
 +
* процесс nf - коллектор NetFlow. Занимается её сбором, упаковкой и отсылкой на обработку посредством брокера очередей RabbitMQ
 +
* процесс nffilter - фильтр и агрегатор NetFlow. Занимается фильтрацией NetFlow, соотношением статистики и аккаунтов, поиск подходящих классов.
 +
* процесс nfroutine - тарификатор NetFlow.
 +
* процесс nfwriter - получает от nffilter через RabbitMQ пачки сырой отфильтрованной NetFlow статистики и записывает её на диск
 +
* процесс rad_auth - RADIUS сервер. Занимается авторизацией и аутентификацией
 +
* процесс rad_acct - RADIUS Accounting сервер.
 +
* процесс celery - асинхронный обработчик заданий на взаимодействие с серверами доступа, отсылку SMS и выполнение сервисных процедур
 +
* веб-кабинет
 +
 +
'''В нормальном состоянии все процессы должны быть запущены'''.
 +
Для обеспечения работы биллинг-системы должны быть запущены следующие процессы:
 +
* postgresql - СУБД
 +
* rabbitmq-server - брокер очередей
 +
* memcached - кэширующий сервер для RADIUS - сервера и веб-кабинета.
 +
  
 
= Платёжные системы =
 
= Платёжные системы =
Строка 136: Строка 156:
 
* Liqpay
 
* Liqpay
 
* EasyPay
 
* EasyPay
 +
* MasterPlat
 +
* SimpleTerminal
 +
* Robokassa
 +
* Privat24
  
 
Настройка производится разово в файле settings_local.py веб-кабинета:
 
Настройка производится разово в файле settings_local.py веб-кабинета:
Строка 145: Строка 169:
 
                     'payments.w1ru',
 
                     'payments.w1ru',
 
                     'payments.qiwiru',
 
                     'payments.qiwiru',
 +
                    'payments.simplaterminal',
 +
                    'payments.robokassa',
 
                     )
 
                     )
 
                    
 
                    
Строка 152: Строка 178:
 
         'TYPE': 'frontend',  
 
         'TYPE': 'frontend',  
 
         'DEFAULT_CURRENCY' : 'UAH',
 
         'DEFAULT_CURRENCY' : 'UAH',
         'MERCHANT_ID': 'i7444123444',
+
         'PUBLIC_KEY' : 'XXXXXXXX',
         'MERCHANT_SIGNATURE': 'LMoTlGet9IVubuNbBvKIZ0wNDdsluOLsIvdzd',
+
         'PRIVATE_KEY' : 'XXXXXXXXXXXXXXXXXXXXXXX',
 +
        'LANGUAGE' : 'ru',
 
         'PAY_WAY': ('card', 'liqpay', 'delayed'),
 
         'PAY_WAY': ('card', 'liqpay', 'delayed'),
 
         'EXPIRE_TIME': 36,
 
         'EXPIRE_TIME': 36,
Строка 172: Строка 199:
 
         'allowed_ip': ('93.183.196.28', '93.183.196.26'),
 
         'allowed_ip': ('93.183.196.28', '93.183.196.26'),
  
 +
    },
 +
    'payments.robokassa' : {
 +
                          'TYPE': 'frontend',
 +
        'DEFAULT_CURRENCY' : 'RUB',
 +
        'MERCHANT_LOGIN' : 'login',
 +
        'PASSWORD1' : 'password1',
 +
        'PASSWORD2' : 'password2',
 +
        'TEST_MODE': False,
 
     },
 
     },
 
     'payments.w1ru' : {
 
     'payments.w1ru' : {
Строка 198: Строка 233:
 
         'ALARM_SMS': 0,
 
         'ALARM_SMS': 0,
 
         'ACCEPT_CALL': 0,
 
         'ACCEPT_CALL': 0,
 +
        'MIN_SUM': 100,
  
 +
    },
 +
    'payments.masterplat' : {
 +
        'TYPE': 'backend',
 +
        'DEFAULT_CURRENCY' : 'RUB',
 +
        'DUSER' : 'test',
 +
        'DPASS': 'test',
  
 
     },
 
     },
 +
    'payments.simpleterminal' : {
 +
        'TYPE': 'backend',
 +
        'DEFAULT_CURRENCY' : 'RUB',
 +
        'SECRET': '12345678901234567890hgh55g54',
 +
 +
    }
 +
 
}
 
}
 
</pre>
 
</pre>
 +
Дополнительно нужно зайти через веб-интерфейс в закрытую часть интерфейса администрирвоания по пути /admin/, зайти в раздел sites и для сайта по-умолчанию указать доменное имя сервера, которое доступно снаружи. УДАЛЯТЬ ЗАПИСЬ НЕЛЬЗЯ. ЕЁ НУЖНО ИМЕННО ОТРЕДАКТИРОВАТЬ.
 +
  
 
Для приёма QIWI требуется прописать в cron (crontab -e) следующее:
 
Для приёма QIWI требуется прописать в cron (crontab -e) следующее:
 
<pre>
 
<pre>
*/5 * * * *      cd /opt/ebs/web/ebscab/ && bash --init-file /opt/ebs/web/venv/bin/activate -c "python manage.py process_qiwi_payments"
+
*/5 * * * *      cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py process_qiwi_payments
 
</pre>
 
</pre>
 +
При работе с терминалами qiwi ссылка для постбэка будет выглядеть следующим образом:
 +
<pre>
 +
http://<server>/payments.qiwiru/qiwiru/payment/
 +
</pre>
 +
При работе с единой кассой ссылка для постбэка:
 +
<pre>
 +
http://<server>/payments.w1ru/w1ru/postback/
 +
</pre>
 +
Для единой кассы дополнительно нужно авторизовать сайт. Для этого добавьте в файл
 +
<pre>
 +
/opt/ebs/web/ebscab/templates/site_verify_codes.html
 +
</pre>
 +
тэг, который вы получили в интерфейсе единой кассы.
 +
 
За то, какие способы оплаты будут доступны пользователям, отвечает переменная GETPAID_BACKENDS.
 
За то, какие способы оплаты будут доступны пользователям, отвечает переменная GETPAID_BACKENDS.
 
Настройки конкретного платёжного шлюза находятся в соответствующих секциях GETPAID_BACKENDS_SETTINGS.  
 
Настройки конкретного платёжного шлюза находятся в соответствующих секциях GETPAID_BACKENDS_SETTINGS.  
  
 
Все типы платежей разбиты на 2 логических типа - frontend и backend. Frontend доступен для выбора через веб-кабинет. Backend используется, если оплата происходит без взаимодействия пользователя с веб-кабинетом. К примеру через терминал. Не меняйте эти значения.
 
Все типы платежей разбиты на 2 логических типа - frontend и backend. Frontend доступен для выбора через веб-кабинет. Backend используется, если оплата происходит без взаимодействия пользователя с веб-кабинетом. К примеру через терминал. Не меняйте эти значения.
 +
 +
=== Платёжная система SimpleTerminal ===
 +
Это псевдо-платёжная система, которая позволяет использовать API биллинга для пополнения счёта с помощью HTTP запросов.
 +
Типичный запрос на пополнение выглядит так: sum=100&uid=contract&trans=123456&secret=1235453423423g4
 +
Полный URL
 +
<pre>
 +
http://<server>/payments.simpleterminal/simpleterminal/payment/?sum=100&uid=contract&trans=123456&secret=1235453423423g4
 +
</pre>
 +
Если в настройках указан SECRET - его необходимо указывать в запросе в качестве параметра.
 +
  
 
Просмотр оплаченных счетов доступен через интерфейс администратора по ссылке /ebsadmin/payment/. Допускается изменять статус платежа. Пополнение счёта абонента или удаление пополнения произойдёт автоматически.
 
Просмотр оплаченных счетов доступен через интерфейс администратора по ссылке /ebsadmin/payment/. Допускается изменять статус платежа. Пополнение счёта абонента или удаление пополнения произойдёт автоматически.
 
  
 
= Импорт платежей =
 
= Импорт платежей =
Строка 303: Строка 377:
 
Для обработки платежей, вам нужно настроить crontab на вызов файла process.py раз в 10-15 минут.
 
Для обработки платежей, вам нужно настроить crontab на вызов файла process.py раз в 10-15 минут.
 
<pre>
 
<pre>
*/10 * * * *      cd /opt/ebs/data/scripts/payments/ && bash --init-file /opt/ebs/web/venv/bin/activate -c "python process.py"
+
*/10 * * * *      cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python process.py
 
</pre>
 
</pre>
  
Строка 332: Строка 406:
 
                                                         'TEST': '0',
 
                                                         'TEST': '0',
 
                                                         'PARTNER_ID': '',
 
                                                         'PARTNER_ID': '',
 +
                                                        },
 +
                            'sendsms.backends.smspilotru': {
 +
                                                        'FROM_NAME': '',
 +
                                                        'API_ID': '',
 
                                                         }
 
                                                         }
 
                             }
 
                             }
Строка 348: Строка 426:
 
Для автоматизации ежемесячной рассылки нужно добавить в crontab следующие записи:
 
Для автоматизации ежемесячной рассылки нужно добавить в crontab следующие записи:
 
<pre>
 
<pre>
12 * * * *      cd /opt/ebs/web/ebscab/ && bash --init-file /opt/ebs/web/venv/bin/activate -c "python manage.py ballance_sms_messages" # раз в сутки в 12 дня слат ь нотификации о балансе
+
12 * * * *      cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py ballance_sms_messages # раз в сутки в 12 дня слат ь нотификации о балансе
*/5 * * * *      cd /opt/ebs/web/ebscab/ && bash --init-file /opt/ebs/web/venv/bin/activate -c "python manage.py process_sms_messages" # каждые 5 минут выполнять отсылку отложенных SMS сообщений.   
+
*/5 * * * *      cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py process_sms_messages # каждые 5 минут выполнять отсылку отложенных SMS сообщений.   
 
</pre>
 
</pre>
 +
 +
= Резервное копирование =
 +
Основную ценность предоставляет база данных, паэтому рекомендуется настроить регулярное создание бэкапов с копированием их на удалённый сервер. Ниже описаны способы создания бэкапов и дана необходимая информация о их восстановлении.
 +
 +
== Бэкапы при обновлении системы ==
 +
При каждом обновлении скрипт обновления автоматически создаёт бэкапы
 +
* базы данных
 +
* содержимого директории /opt/ebs/data/
 +
* содержимого директории /opt/ebs/web/
 +
 +
== Ручной бэкап базы данных ==
 +
*sudo -s
 +
*su postgres
 +
*pg_dump ebs>/tmp/ebs.dump
 +
*exit
 +
*mv /tmp/ebs.dump /opt/ebs/backups/датавремя.sql
 +
 +
== Восстановление ручного бэкапа базы данных ==
 +
sudo -s
 +
billing force-stop
 +
su postgres
 +
dropdb ebs
 +
createdb -O ebs ebs
 +
psql ebs -f /путь к несжатому бэкапу
 +
exit
 +
billing start
 +
 +
= Настройка работы Биллинг-системы с Микротиком =
 +
Подымем адрес Микротика в сторону клиентов, допустим 192.168.1.1/24
 +
 +
----
 +
Смотрим список доступных в системе интерфейсов:
 +
<pre>
 +
[test@MikroTik] > interface print
 +
#    NAME                        TYPE            RX-RATE    TX-RATE    MTU 
 +
0  R ether1                      ether            0          0          1500
 +
1  R ether2                      ether            0          0          1500
 +
</pre>
 +
пусть ether1 будет смотреть локальную сеть. Активируем
 +
<pre>
 +
[test@MikroTik] > interface enable 0
 +
[test@MikroTik] > ip address add address 192.168.1.1/24 interface ether1
 +
</pre>
 +
Подымаем адрес биллинга, естественно. что в этой схеме он должен соответствовать диапазону адресов локальной сети
 +
Проверяем подключенные сетевые устройства
 +
$ sudo lshw -C network
 +
По умолчанию обычно это eth0. Присваиваем статический адрес.
 +
<pre>
 +
#nano /etc/network/interfaces
 +
 +
auto eth0
 +
iface eth0 inet static
 +
address 192.168.1.2
 +
netmask 255.255.255.0
 +
gateway 192.168.1.1
 +
</pre>
 +
Перезагружаем сетевой интерфейс для вступления в силу изменений:
 +
<pre>
 +
#/etc/init.d/networking restart
 +
</pre>
 +
 +
После установки набираем в адресной строке браузера 192.168.1.2 - отобразиться вебкабинет биллинга. входим дефолтным логином/паролем: admin/admin в администраторскую часть, где вам будут предоставлены
 +
все возможности настроек биллинга.
 +
Теперь переходим на биллинг в интерфейс администратора.
 +
==Параметры сервера доступа==
 +
Справочники-Серверы Доступа-Добавить
 +
Имя:          - имя сервиса, произвольный, но для простоты можно повторить радиус имя<br>
 +
Type:        - из списка выберите версию оборудования <br>
 +
И кликните на '''"Значения для выбранного типа"''' <br>
 +
Версия SNMP:  - поддерживающий тип протокола для оборудования в сети <br>
 +
 +
==RADIUS параметры==
 +
<br>
 +
RADIUS имя: - '''(Важно!)''' должно соответствовать системному имени Mikrotik. То есть вы должны проверить, по умолчанию
 +
<pre>
 +
[test@Mikrotik] > system identity print
 +
  name: Mikrotik
 +
</pre>
 +
если Вы переименовали системное имя, то должны его продублировать тем же образом. В другом случае SSH протокол не будет обрабатывать запросы с биллинга! <br>
 +
Секретная фраза:  - Пароль для аутентификации по радиусу <br>
 +
 +
Атрибуты установки скорости  - выставляются по умолчанию после клика на "Значения для выбранного типа" <br>
 +
 +
==Параметры SSH==
 +
Имя пользователя: Пароль: - по умолчанию ebs/ebspassword, логин и пароль для обмена пакетами по ssh протоколу.
 +
Переходим на Mikrotik. System->Users Подымаем нового активного пользователя именем ebs и паролем ebspassword. Дополняем адресс адресом биллинга и в итоге должно получиться
 +
<pre>
 +
[test@Mikrotik] > user  print
 +
Flags: X - disabled
 +
#  NAME        GROUP      ADDRESS
 +
0  ;;; system default user
 +
    test        full
 +
1  ebs          full        192.168.1.2/32
 +
</pre>
 +
С биллинга проверяем SSH подключение "Проверить SSH подключение". Если все сделано правильно, тест пройдет успешно.
 +
На этом начальный этап связки оборудования окончен
 +
 +
 +
= Тарифный план, Расчетный Период, Пул для PPPoE,L2TP,PPTP=
 +
==Создание Пула==
 +
Перед созданием тарифных планов следует определиться каким образом будут вестись расходы клиентов, каким образом доступ станет ограниченным, как будет сниматься сумма и многое другое. Правила биллинга позволяют широкие многогранные возможности для этого.
 +
определим стандарный вариант.
 +
Создаем для начала пул для сессии, Не смотря что протоколы различны, пул для них создается по единому правилу IPv4.
 +
СПРАВОЧНИКИ -> IP пулы -> Добавить <br>
 +
 +
'''Название*''' - имя пула, памятка, можете назвать на свое усмотрение <br>
 +
'''Тип''' - IPv4 VPN  - для реализации данных протоколов <br>
 +
'''C IP*'''  - начало диапазона, пример 10.0.128.0  <br>
 +
'''По IP*''' - конец диапазона,  пример 10.0.131.255 <br>
 +
то есть в результате получили единый диапазон адресов 10.0.128.0/22 на 1023 клиента <br>
 +
'''Следующий Пул'''  -  тут же после создания данного пула можно добавить новый <br>
 +
[[Файл:2.jpg]]
 +
==Создание Расчетного Периода==
 +
Расчетный период обязателен, именно таким образом биллинг будет снимать вложенную сумму клиента. Не смотря на то, что сумма будет отчисляться ежедневно или раз месяц, этот момент необходим для полной формы взаимодействий.
 +
Допустим для разных тарифов будут разные условия, тогда стоит добавить несколько пунктов, к примеру один тариф отсчитывает сумму с момента подключения, другой обязательно вычитает с указанной даты или период даты (день,месяц, год)
 +
 +
СПРАВОЧНИКИ -> Расчетные периоды -> Добавить <br>
 +
'''Параметры расчётного периода''' <br>
 +
'''Название'''  - Любое для памятки, в тестовом варианте отметим "Месяц" <br>
 +
'''Начинать при активации''' - установка галочки уберет дату снятия суммы, так как каждому клиенту будет принят индивидуальный подход расчета, начиная с момента активации аккаунта. <br>
 +
'''Длина Промежутка''' - через какой определенный момент будет определяться правило.
 +
Пример: создаем с расчетным периодом Месяц и начинать при активации. Сумма снятия допустим будет 1000 условных единиц. Клиент ложит 23 числа сумму, с этой суммы 23 числа другого
 +
месяца снимается именно 1000 условных единиц.
 +
Другой пример: есть подключенная гостиница, где любой постоялец может активировать карточку и подключить свой ноутбук
 +
через wi-fi. Правило с расчетным периодом День даст суточный режим активации данного аккаунта
 +
Все остальные тонкости правил по отношению к акканту рассмотрим ниже <br>
 +
[[Файл:3.jpg]]
 +
 +
==Тарифные Планы==
 +
Перейдем во вкладку Тарифные Планы, где и создадим все необходимые условия правил выхода в интернет для аккаунтов.Варианты как все будет работать безграничны, для начала мы создадим стандартный вариант <br>
 +
Добавить - <br>
 +
'''Общие параметры:''' <br>
 +
'''Название:'''  Имя тарифного Плана. Именно это название будет отображаться в кабинете пользователя. Учтите этот момент <br>
 +
'''Способ Доступа:''' Выбираете тип аутентификации. <br>
 +
'''Выполнять IPN действия:''' - этот момент нужно активировать при получение DHCP адресов с биллинга, если выдача идет с Mikrotik или коммутаторов второго уровня, то пункт следует пропустить <br>
 +
'''VPN IP пул:''' - в списке отобразится все созданные до ныне пулы ( смотреть Ip Пулы) Примечание: Можно создать несколько тарифных планов и дать им один и тот же пул, если количество адресов позволяет это, в принципе, количество адресов можно увеличить в любой момент. Сам по себе пул не играет ни какой активной роли, все активные правила задаются в тарифных и дополнительных планах к аккаунту. <br>
 +
'''Гостевой VPN IP пул:'''- служит для задач поднятия сессий, не входящий для роли к выходу в интернет. Например, для гостей сети, и как удачный вариант, для выдачи других адресов аккаунтам, которые попали в список должников. Таким образом удобно назначить в нате дополнительные правила для этих адресов и пересылать, к примеру, при любом запросе на страницу - заглушку с информационным листом, о том, что закончились деньги на счету. <br> для этого создаете в IP пуле еще один IPv4 VPN , отличный по адресному пространству от основного. Например, основной 192.168.1.1/24. дополнительный 192.168.2.1/24 - и назовите его,например, "блокировка".
 +
Отсюда в списке Гостевой Пул выберите Блокировка. Подробно об этом опишется в разделе Страница- заглушка. <br>
 +
'''Доступ разрешён:''' Здесь Вы можете определить в каком периоде будет работать тарифный план. <br>
 +
'''Расчётный период:''' - Определяется для тарифного плана созданный до ныне расчетный период для снятия денег <br>
 +
'''Стоимость пакета:''' - стоимость тарифного плана. Именно с этого значения  определяется расчетный период и формулируется подсчет <br>
 +
'''Требовать наличия стоимости пакета:''' <br>
 +
 +
'''Производить доснятие:''' - дополнительное условие, при котором в конце месяца не смотря на установленные правила снимется данная сумма. указанная в стоимости пакета. Если правила сформулированы через Периодические услуги, '''ВНИМАНИЕ!''', не отмечайте данный пункт, иначе сумма вычитается вдвойне. <br>
 +
'''Оплата экспресс картами:''' - Разрешить через веб-кабинет оплату экспресс-картами <br>
 +
'''Разрешить услугу перевода баланса:''' - пункт разрешает из своего счета-балланса пользователю перевести заданную сумму другому пользователю единой биллинговой системы. Разрешать или не разрешать зависит от ваших предпочтений. <br>
 +
'''Описание тарифного плана:''' - текст, который отобразится в клиентской части вебкабинета, при описаниях тарифных планов, особенно удобен, если разрешить самостоятельно пользователю переходить по истечению срока на другие тарифные планы.<br>
 +
'''Активен:''' Активация тарифного плана. Без галочки все что вы здесь сделали работать не будет на сторону аккаунта <br>
 +
 +
==Параметры блокировки==
 +
'''Разрешить пользовательскую блокировку:''' - пункт, разрешающий пользователю через вебкабинет приостановить услугу провайдера на период указанный ниже. при активации закрывается доступ по заданному протоколу и "замораживается" вычет баланса. <br>
 +
'''Стоимость блокировки:''' Сумма для услуги данного тарифного плана <br>
 +
'''MAX длительность блокировки:''' - число, определяющее количество дней <br>
 +
'''Минимальный баланс для блокировки:''' - сумма, которая должна присутствовать на балансе в момент блокировки <br>
 +
Удобен: для категории лиц, которые работают вахтовым методом, а также летний сезон с отпусками.
 +
== Параметры Доступа ==
 +
'''Способ доступа''' - в списке выбираем метод аутентификации для данного тарифа <br>
 +
'''Выполнять IPN действия:''' - ставим галочку, если требуется  <br>
 +
'''Доступ разрешён'''        - здесь есть несколько моментов, особенно при учете изменения скорости в зависимости от времени или дня недели. К примеру у Вас есть смена тарифа с Дневного на Ночной. Определим, что дневная скорость будет по умолчанию и в списке выберем имя, для которого вы задавали временной промежуток для данного правила, ниже в Настройках скорости по-умолчанию зададим параметры MAX tx (kbps)
 +
Rx (kbps) именно для этого времени <br>
 +
'''Одноверменных RADIUS сессий на субаккаунт''' - крайне важная функция, не стоит ей пренебрегать, особенно учитывая протоколы PPP . Известно, что сессию, например PPPOE можно поднять повторно на другом компьютере. То есть одним логим и паролем можно подключиться с нескольких машин, момент правила на микротике дает лишь момент. при котором дублирующая сессия не способна нормально получать трафик. <br>
 +
<pre>
 +
[test@Mikrotik] /ppp profile> print
 +
Flags: * - default
 +
0 * name="default" local-address=10.64.0.0 use-mpls=default use-compression=no
 +
    use-vj-compression=no use-encryption=no only-one=yes change-tcp-mss=no
 +
    address-list=internet_users
 +
 +
1 * name="default-encryption" local-address=10.64.0.0 use-mpls=default
 +
    use-compression=default use-vj-compression=default use-encryption=yes
 +
    only-one=yes change-tcp-mss=default address-list=internet_users
 +
</pre>
 +
 +
Здесь проблема, почему так приходиться на ней заострять, не заключается именно в попытке получить с одной сессии трафик на две и более клиентской машины, а в принципе работы биллинговой системы. Для биллинговой системы такая ситуация является коллизионной, и эту коллизию она решает сбросом данных сессий. В этот круговорот в итоге вовлекается дополнительно все клиентские сессии, не прошедшие допустимый временной интервал. То есть возникнет проблемы с клиентами, у которых в момент коллизии начнет рваться сесиия. Поэтому необходимо '''строго''' задать условия в данном пункте. если по умолчанию канал присваивается одной работающей машине так и укажите цифрой 1. Остальные попытки подключении на данный адрес пула будут отброшены. <br>
 +
 +
Конечный момент в настройках скоростях, добавляем дополнительные правила смены скорости  в зависимости выставленных временных условий. допустим до этого вы задали временной параметр Ночной. кликаем '''Добавить''' .'''Time''' - выбираем имя ночного правила и задаем ниже все необходимые параметры скорости для данного временного промежутка
 +
 +
= Списания =
 +
Позволяют сделать детальную настройку списания аккаунта <br>
 +
Периодические услуги -> Добавить <br>
 +
'''Название*''' - имя услуги <br>
 +
'''Период*'''  - выбираем из списка созданных расчетных периодов <br>
 +
'''Стоимость''' - вычитаемая сумма за данный период <br>
 +
'''Способ списания''' -  каким образом по отношению к дате производится вычет ( в начале месяца снимается тарифная сумма, в конце или ежедневное списание методом деления стоимости на число календарных дней текущего месяца)
 +
'''Кол-во списаний в сутки''' - При ежедневном списании можно увеличить деление в суточном режиме <br>
 +
'''Условие списания*''' - вычет суммы производится до определенного момента, определяется числом, больше или меньше которого возможен дополнительный вычет <br>
 +
'''Сумма для условия''' - Число для условия списания <br>
 +
'''Активировать''' и '''Отключить''' - период времени для правила данного списания
 +
 +
==Разовые услуги==
 +
Сумма для условия активации аккаунта к данному тарифному плану <br>
 +
 +
С этого момента можно приступить к созданию акканта и проверить работоспособность системы
 +
 +
=Смена скорости трафика в зависимости от времени "Дневной" и "Ночной план", дней недели=
 +
 +
Создадим услугу смены скоростей в зависимости от времени суток. <br>
 +
'''Период тарификации'''<br>
 +
'''Добавить период''' - назовем первый период "Дневной". После этого выбираем его в общем списке и заполняем для него требуемые условия.<br>
 +
'''Название подпериода''' - дублируем словом "Дневной" <br>
 +
'''Начало периода*'''    - время, с которого активируется данное правило, часы, минуты и секунды определяем моментом запуска данной скорости, год ставим прошедшим на данный момент временем<br>
 +
'''Конец периода*'''      - время, с которого деактивируется данное правило, часы, минуты и секунды опять же определяем моментом остановки данной скорости, год ставим с расчетом очень далекого будущего <br>
 +
'''Повторять через'''    - выбираем "День" <br>
 +
Сохранить подпериод <br>
 +
Аналогично для периода "Ночной". Время окончания одного периода совпадает с началом другого. <br>
 +
Переходим во вкладку '''Тарифные планы'''. Для каждого тарифного плана, для которого будет руководствоваться данное правило нужно будет отдельно добавить следующее в Параметрах тарифного плана. В кладке "Параметры Доступа"  в "Доступ раздрешен" в списке выбираем период. который у нас будет по умолчанию, к примеру это будет "Дневной",
 +
Настройки скорости по-умолчанию заполняем требуемые для этого временного интервала и сохраняем. Теперь нам нужно изменить скорость на ночной. Кликаем на кнопку "Добавить" и заполняем "Добавить параметры изменения скорости" уже в списке "Time" выбрав имя ночного временного интервала, у нас он определен именем "Ночной" заполняем необходимые параметры скорости для этого времени суток.<bre>
 +
Таким образом можно сутки раздробить еще на несколько временных интервалов, каждому выставив свой скоростной приоритет.<br>
 +
Теперь давайте возьмем за образец смену скорости от дней недели, причем совместить данное правило с суточным изменением вполне резонно, главное в добавлении не создать противоречия со временем. <br>
 +
Допустим есть ситуация, когда в будничные дни общий поток не имеет максимальной планки, а в субботние и ,особенно воскресенье, линия перегружена. То есть требуется как-то занизить скорость всех или определенных тарифных планов.<br>
 +
'''Период тарификации'''<br>
 +
'''Добавить период''' - назовем период "Будничный".<br>
 +
'''Название подпериода''' - дублируем слово "Будничный" <br>
 +
И начало периода с помощью календаря определяем. что у нас есть понедельник в прошедшем времени. Выставляем число понедельника и время с которого можно запустить данное правило. Конец периода определим пятницу той же календарной недели. Повторять через "Неделя". Сохраняем подпериод. Таким же образом определяем субботний и воскресный день и опять же повторяем через неделю и сохраняем подпериод. Далее в тарифных планах в "Добавить" выставляем в "Time" данные периоды и определяем требуемые параметры скоростей.

Текущая версия на 18:27, 11 мая 2014

Введение

Этот раздел wiki будет посвящён новой версии биллинг-системы ExpertBilling 1.5.


ExpertBilling 1.5 принципиально другая биллинга система и не многим похожа на предыдущие версии. Она содержит веб-интерфейс, рассчитанный на работу с абонентскими базами до 300 000 - 500 000 абонентов и вертикально/горизонтально масштабируемую структуру, которая способна плавно наращивать вычислительные мощности.

Код ExpertBilling теперь открыт на 70%. Вы свободно можете модифицировать интерфейс и логику отсылки команд на сервера доступа.

ExpertBilling использует зарекомендовавшие себя production решения RabbitMQ, Celery, PostgreSQL, которые используются такими гигантами как Twitter, VmWare и многими другими.

ExpertBilling стал гораздо аккуратнее и логичнее в своей работе.

ExpertBilling теперь не привязывается к жёсткому диску. Вы сможете переустановить систему в любой момент, используя свою лицензию.

Увеличение количества абонентов стало возможно без обновления системы.

Кроме этого ExpertBilling 1.5 стал гораздо безопаснее и надёжнее. Мы проделали огромную работу и надеемся, что это не напрасно.

Обратите внимание, что выложенная версия ExpertBilling 1.5 является RC версией и вы её используете на свой страх и риск. Мы просим вас сообщать на форуме о всех найденных проблемах, чтобы они были быстрее исправлены.

Установка

Перед началом работы выполните следующее:

Выполните в консоли с правами суперпользователя:

$sudo -s
#apt-get install fabric python-psycopg2

Установка postgresql 9.1

#apt-get update
#apt-get install fabric postgresql-9.1 postgresql-contrib-9.1 postgresql-server-dev-9.1


Возможно 3 варианта установки ExpertBilling 1.5. Обновление, апгрейд, апгрейд с версии 1.4.1. Апгрейд с более ранних версий не предусмотрен.


Установка с нуля

Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.

#cd /opt/
#tar -xvzf путь к архиву с биллингом fabfile.py install.txt


Создание директории:

#mkdir /opt/ebs


Создание пользователя базы данных и базы данных. Рекомендуемый пароль - ebspassword:

#su postgres
$createuser -P -s ebs
$createdb -O ebs ebs
$exit
$exit

Запустите установку биллинга с нуля с правами root-а из директории /opt/.

#fab deploy:demo1.5_x64.tar.gz  для 64-бит версии демо
#fab deploy:demo1.5_x32.tar.gz  для 32-бит версии демо

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

Апгрейд

Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.

#cd /opt/
#tar -xvzf путь к архиву с биллингом fabfile.py install.txt

И

#fab upgrade:demo.tar.gz

Апгрейд с версии 1.4.1

Скачанный архив нужно положить в /opt/ и распаковать из него только скрипт-инсталлятор fabfile.py и инструкцию по установке.

#cd /opt/
#tar -xvzf путь к архиву с биллингом fabfile.py install.txt

При апгрейде с версии 1.4.1 нужно: 1. Установить postgresql-9.1 postgresql-contrib-9.1. 2. Выполнить дамп базы данных с биллингом с помощью pg_dump

su postgres
pg_dump ebs >/tmp/ebs.dump
exit
cp /tmp/ebs.dump /opt/ebs.dump

3. Удалить postgresql-8.4.

apt-get remove postgresql-8.4

4. Настроить postgresql-9.1 на запуск на порту 5432 (/etc/postgres/9.1/main/postgresql.conf). 5. Перезапустить postgresql, 6. Создать БД ebs с пользователем ebs

createuser -s -P ebs
createdb -O ebs ebs

7. Импортировать в созданную базу дамп:

su postgres
psql ebs -f /opt/ebs.dump

8. Запустить апгрейд:

#fab upgrade_14:demo.tar.gz

После установки откройте файл /opt/ebs/web/ebscab/settings_local.py и переопределите в нём значения из файла /opt/ebs/web/ebscab/settings.py. Этот файл не будет перезатираться при обновлениях.

После настройки веб-кабинета:

  1. /etc/init.d/apache2 reload

Внимание!!! Это не финальная версия 1.5. О всех найденных прблемах просьба писать на форуме http://forum.expertbilling.ru/

Имя и пароль по-умолчанию для входа в веб-кабинет admin/admin.

Компоненты биллинг-системы

  • процесс core - занимается списанием периодиеских и разовых услуг, контроллирует RADIUS сессии, тарифицирует их, производит сервисные процедуры по проверке баланса для блокировок и их снятия.
  • процесс nf - коллектор NetFlow. Занимается её сбором, упаковкой и отсылкой на обработку посредством брокера очередей RabbitMQ
  • процесс nffilter - фильтр и агрегатор NetFlow. Занимается фильтрацией NetFlow, соотношением статистики и аккаунтов, поиск подходящих классов.
  • процесс nfroutine - тарификатор NetFlow.
  • процесс nfwriter - получает от nffilter через RabbitMQ пачки сырой отфильтрованной NetFlow статистики и записывает её на диск
  • процесс rad_auth - RADIUS сервер. Занимается авторизацией и аутентификацией
  • процесс rad_acct - RADIUS Accounting сервер.
  • процесс celery - асинхронный обработчик заданий на взаимодействие с серверами доступа, отсылку SMS и выполнение сервисных процедур
  • веб-кабинет

В нормальном состоянии все процессы должны быть запущены. Для обеспечения работы биллинг-системы должны быть запущены следующие процессы:

  • postgresql - СУБД
  • rabbitmq-server - брокер очередей
  • memcached - кэширующий сервер для RADIUS - сервера и веб-кабинета.


Платёжные системы

В ExpertBilling 1.5 реализован приём следующих типов платежей:

  • QIWI
  • Единая Касса w1.ru
  • Сбербанк РФ
  • Liqpay
  • EasyPay
  • MasterPlat
  • SimpleTerminal
  • Robokassa
  • Privat24

Настройка производится разово в файле settings_local.py веб-кабинета:

GETPAID_BACKENDS = ('payments.easypay',
                    'payments.liqpay',
                    'payments.ru_sberbank',
                    'payments.w1ru',
                    'payments.qiwiru',
                    'payments.simplaterminal',
                    'payments.robokassa',
                    )
                  
GETPAID_BACKENDS_SETTINGS = {
    # Please provide your settings for backends
    'payments.liqpay' : {
        'TYPE': 'frontend', 
        'DEFAULT_CURRENCY' : 'UAH',
        'PUBLIC_KEY' : 'XXXXXXXX',
        'PRIVATE_KEY' : 'XXXXXXXXXXXXXXXXXXXXXXX',
        'LANGUAGE' : 'ru',
        'PAY_WAY': ('card', 'liqpay', 'delayed'),
        'EXPIRE_TIME': 36,

    },

    'payments.easypay' : {
        'TYPE': 'backend', 
        'DEFAULT_CURRENCY' : 'UAH',
        'SERVICE_ID' : '1',
        'allowed_ip': ('93.183.196.28', '93.183.196.26'),

    },
    'payments.ru_sberbank' : {
                          'TYPE': 'backend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'PASSWORD' : '12345',
        'allowed_ip': ('93.183.196.28', '93.183.196.26'),

    },
    'payments.robokassa' : {
                          'TYPE': 'frontend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'MERCHANT_LOGIN' : 'login',
        'PASSWORD1' : 'password1',
        'PASSWORD2' : 'password2',
        'TEST_MODE': False,
    },
    'payments.w1ru' : {
        'TYPE': 'frontend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'MERCHANT_ID': '163789612661',
        'MERCHANT_PASSWORD': 'MFVSdmZNajdBRXdcWmE3Z191cjBLWFJsZjhb',
        #=======================================================================
        # 'PTENABLED':[
        #             'YandexMoneyRUB',
        #           'WebMoneyRUB', 
        #             ],
        #=======================================================================
        'PTDISABLED':[
                     ],
        'allowed_ip': ('93.183.196.28', '93.183.196.26'),
        'EXPIRE_DAYS': 31,

    },
    'payments.qiwiru' : {
        'TYPE': 'frontend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'TERMINAL_ID' : '12345',
        'TERMINAL_PASSWORD' : '12345',
        'LIFETIME': 48,
        'ALARM_SMS': 0,
        'ACCEPT_CALL': 0,
        'MIN_SUM': 100,

    },
    'payments.masterplat' : {
        'TYPE': 'backend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'DUSER' : 'test',
        'DPASS': 'test',

    },
    'payments.simpleterminal' : {
        'TYPE': 'backend', 
        'DEFAULT_CURRENCY' : 'RUB',
        'SECRET': '12345678901234567890hgh55g54',

    }

}

Дополнительно нужно зайти через веб-интерфейс в закрытую часть интерфейса администрирвоания по пути /admin/, зайти в раздел sites и для сайта по-умолчанию указать доменное имя сервера, которое доступно снаружи. УДАЛЯТЬ ЗАПИСЬ НЕЛЬЗЯ. ЕЁ НУЖНО ИМЕННО ОТРЕДАКТИРОВАТЬ.


Для приёма QIWI требуется прописать в cron (crontab -e) следующее:

*/5 * * * *       cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py process_qiwi_payments

При работе с терминалами qiwi ссылка для постбэка будет выглядеть следующим образом:

http://<server>/payments.qiwiru/qiwiru/payment/

При работе с единой кассой ссылка для постбэка:

http://<server>/payments.w1ru/w1ru/postback/

Для единой кассы дополнительно нужно авторизовать сайт. Для этого добавьте в файл

/opt/ebs/web/ebscab/templates/site_verify_codes.html

тэг, который вы получили в интерфейсе единой кассы.

За то, какие способы оплаты будут доступны пользователям, отвечает переменная GETPAID_BACKENDS. Настройки конкретного платёжного шлюза находятся в соответствующих секциях GETPAID_BACKENDS_SETTINGS.

Все типы платежей разбиты на 2 логических типа - frontend и backend. Frontend доступен для выбора через веб-кабинет. Backend используется, если оплата происходит без взаимодействия пользователя с веб-кабинетом. К примеру через терминал. Не меняйте эти значения.

Платёжная система SimpleTerminal

Это псевдо-платёжная система, которая позволяет использовать API биллинга для пополнения счёта с помощью HTTP запросов. Типичный запрос на пополнение выглядит так: sum=100&uid=contract&trans=123456&secret=1235453423423g4 Полный URL

http://<server>/payments.simpleterminal/simpleterminal/payment/?sum=100&uid=contract&trans=123456&secret=1235453423423g4

Если в настройках указан SECRET - его необходимо указывать в запросе в качестве параметра.


Просмотр оплаченных счетов доступен через интерфейс администратора по ссылке /ebsadmin/payment/. Допускается изменять статус платежа. Пополнение счёта абонента или удаление пополнения произойдёт автоматически.

Импорт платежей

В ExpertBilling 1.5 реализован импорт выписок о проведённых платежах. Скрипт находится в директории /opt/ebs/data/scripts/payments/. Система импорта автономна и может работать на другом сервере или по любому пути на файловой системе.

Перед началом работы нужно переименовать файл pattern.ini.tmpl в pattern.ini и настроить формат обрабатываемых платёжек.

Пример:

[belpost]
active=1
folderin=belpost/IN/
folderout=belpost/OUT/
foldererr=belpost/ERR/
mask=*.alt
rmask=r*.alt
separator=;
payment_type=BELPOST_PAYMENT_IMPORT
fieldnames=DATETIME;ACC;FIO;SUM;EMPTY;PID;EMPTY
fielddefault=;;;;;;
datetime_fmt=%d/%m/%Y %H:%M:%S
reversal_payments=False


[Belarusbank]
active=1
folder_in=Belarusbank/IN/
folder_out=Belarusbank/OUT/
folder_err=Belarusbank/ERR/
file_mask=*.asb
exclude_mask=lan.*
separator=;
payment_type=BELARUSBANK_PAYMENT_IMPORT
encoding=cp855
fieldnames=ACC;FIO;DATETIME;TIME;SUM;EMPTY;EMPTY;EMPTY;PID
datetime_fmt=%d/%m/%Y
time_fmt=%H:%M
reversal_payments=False

[Webmoney]
active=1
folder_in=WebMoney/IN/
folder_out=WebMoney/OUT/
folder_err=WebMoney/ERR/
file_mask=*.*
exclude_mask=r*.*
separator=;
payment_type=WEBMONEY_PAYMENT_IMPORT
fieldnames=DATETIME;ACC;SUM;EMPTY;EMPTY;PID;EMPTY;EMPTY;EMPTY;EMPTY
datetime_fmt=%d/%m/%Y %H:%M:%S
time_fmt=
encoding=utf-8
reversal_payments=False

[EasyPay]
active=1
folder_in=EasyPay/IN/
folder_out=EasyPay/OUT/
folder_err=EasyPay/ERR/
file_mask=*.txt
exclude_mask=r*.txt
separator=;
payment_type=EASYPAY_PAYMENT_IMPORT
fieldnames=DATETIME;ACC;PID;FIO;SUM
datetime_fmt=%d/%m/%Y %H:%M:%S
encoding=utf-8
time_fmt=
reversal_payments=False

[PriorBank]
active=1
folder_in=Priorbank/IN/
folder_out=PriorBank/OUT/
folder_err=Priorbank/ERR/
file_mask=*.prb
exclude_mask=r*.prb
separator=;
payment_type=PRIORBANK_PAYMENT_IMPORT
fieldnames=SUM;EMPTY;ACC;EMPTY;PID;EMPTY;EMPTY;EMPTY;DATETIME;EMPTY
datetime_fmt=%d%m%y
encoding=utf-8
time_fmt=
reversal_payments=False

Опция reversal_payments=True говорит, что платёж нужно сторнировать - отменить. Директории folder_in, folder_out, folder_err содержат входящие платежи (вы должны помещать их туда чем-либо в раздельных файлах с расширением, указанным в переменной file_mask), обработанные платежи и платежи с ошибками соответственно.

Для обработки платежей, вам нужно настроить crontab на вызов файла process.py раз в 10-15 минут.

*/10 * * * *       cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python process.py

SMS рассылка

В ExpertBilling 1.5 реализован механизм рассылки SMS. Он позволяет:

  • Слать SMS конкретному пользователю, используя шаблон сообщения.
  • Слать SMS группе пользователей, используя шаблон сообщения.
  • Создавать отложенные сообщения для отправки их в будущем
  • Выполнять рассылку сообщений о балансе.

Настройка SMS подсистемы производится в файле settings_local.py

SENDSMS_BACKENDS = (
                    ('sendsms.backends.websms.SmsBackend', 'websms.ru'),
                    ('sendsms.backends.smsru.SmsBackend', 'sms.ru'),
                    )
                    
SENDSMS_BACKENDS_SETTINGS = {
                             'sendsms.backends.websms': {
                                                         'FROM_NAME': '', # http://websms.ru/FromName.asp
                                                         'USERNAME': '',
                                                         'PASSWORD': '',
                                                         },
                             'sendsms.backends.smsru': {
                                                         'FROM_NAME': '', 
                                                         'API_ID': '',
                                                         'TRANSLIT': '1',
                                                         'TEST': '0',
                                                         'PARTNER_ID': '',
                                                         },
                             'sendsms.backends.smspilotru': {
                                                         'FROM_NAME': '', 
                                                         'API_ID': '',
                                                         }
                             }

SENDSMS_IF_BALLANCE_AMOUNT = 0
SENDSMS_DEFAULT_BACKEND = 'sendsms.backends.websms.SmsBackend'

Переменная SENDSMS_BACKENDS содержит пути к бэкэндам для работы с соответствующими SMS-операторами. По-умолчанию реализована поддержка sms.ru и websms.ru Переменная SENDSMS_BACKENDS_SETTINGS содержит настройки конкретного оператора.

Если вы планируете использовать рассылку о балансе - вам необходимо также заполнить переменные SENDSMS_IF_BALLANCE_AMOUNT (минимальный баланс, ниже которого будут слаться уведомления) и SENDSMS_DEFAULT_BACKEND (бэкэнд, используемый при отсылке сообщений из скриптов).

Шаблон самого сообщения вы можете отредактировать в интерфейсе администратора Справочники->Шаблоны->Минимальный баланс. Шаблон будет обработан шаблонизатором Django. Внутри него вы можете использовать объект account, который содержит текущие значения из полей аккаунта. К примеру Шаблон:Account.balance - подставит баланс, Шаблон:Account.password - пароль. Парсинг шаблона и подстановка будут выполняться непосредственно в момент отсылки. До отсылки сообщение будет храниться в базе в виде шаблона.

Для автоматизации ежемесячной рассылки нужно добавить в crontab следующие записи:

12 * * * *       cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py ballance_sms_messages # раз в сутки в 12 дня слат ь нотификации о балансе
*/5 * * * *       cd /opt/ebs/web/ebscab/ && /opt/ebs/venv/bin/python manage.py process_sms_messages # каждые 5 минут выполнять отсылку отложенных SMS сообщений.   

Резервное копирование

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

Бэкапы при обновлении системы

При каждом обновлении скрипт обновления автоматически создаёт бэкапы

  • базы данных
  • содержимого директории /opt/ebs/data/
  • содержимого директории /opt/ebs/web/

Ручной бэкап базы данных

  • sudo -s
  • su postgres
  • pg_dump ebs>/tmp/ebs.dump
  • exit
  • mv /tmp/ebs.dump /opt/ebs/backups/датавремя.sql

Восстановление ручного бэкапа базы данных

sudo -s billing force-stop su postgres dropdb ebs createdb -O ebs ebs psql ebs -f /путь к несжатому бэкапу exit billing start

Настройка работы Биллинг-системы с Микротиком

Подымем адрес Микротика в сторону клиентов, допустим 192.168.1.1/24


Смотрим список доступных в системе интерфейсов:

[test@MikroTik] > interface print 
 #    NAME                         TYPE             RX-RATE    TX-RATE    MTU  
0  R ether1                       ether            0          0          1500 
1  R ether2                       ether            0          0          1500 

пусть ether1 будет смотреть локальную сеть. Активируем

[test@MikroTik] > interface enable 0
[test@MikroTik] > ip address add address 192.168.1.1/24 interface ether1 

Подымаем адрес биллинга, естественно. что в этой схеме он должен соответствовать диапазону адресов локальной сети Проверяем подключенные сетевые устройства $ sudo lshw -C network По умолчанию обычно это eth0. Присваиваем статический адрес.

#nano /etc/network/interfaces

auto eth0
iface eth0 inet static 
address 192.168.1.2 
netmask 255.255.255.0 
gateway 192.168.1.1 

Перезагружаем сетевой интерфейс для вступления в силу изменений:

#/etc/init.d/networking restart

После установки набираем в адресной строке браузера 192.168.1.2 - отобразиться вебкабинет биллинга. входим дефолтным логином/паролем: admin/admin в администраторскую часть, где вам будут предоставлены все возможности настроек биллинга. Теперь переходим на биллинг в интерфейс администратора.

Параметры сервера доступа

Справочники-Серверы Доступа-Добавить Имя: - имя сервиса, произвольный, но для простоты можно повторить радиус имя
Type: - из списка выберите версию оборудования
И кликните на "Значения для выбранного типа"
Версия SNMP: - поддерживающий тип протокола для оборудования в сети

RADIUS параметры


RADIUS имя: - (Важно!) должно соответствовать системному имени Mikrotik. То есть вы должны проверить, по умолчанию

[test@Mikrotik] > system identity print
  name: Mikrotik

если Вы переименовали системное имя, то должны его продублировать тем же образом. В другом случае SSH протокол не будет обрабатывать запросы с биллинга!
Секретная фраза: - Пароль для аутентификации по радиусу

Атрибуты установки скорости - выставляются по умолчанию после клика на "Значения для выбранного типа"

Параметры SSH

Имя пользователя: Пароль: - по умолчанию ebs/ebspassword, логин и пароль для обмена пакетами по ssh протоколу. Переходим на Mikrotik. System->Users Подымаем нового активного пользователя именем ebs и паролем ebspassword. Дополняем адресс адресом биллинга и в итоге должно получиться

[test@Mikrotik] > user  print
Flags: X - disabled
 #   NAME         GROUP       ADDRESS
 0   ;;; system default user
     test         full
 1   ebs          full        192.168.1.2/32

С биллинга проверяем SSH подключение "Проверить SSH подключение". Если все сделано правильно, тест пройдет успешно. На этом начальный этап связки оборудования окончен


Тарифный план, Расчетный Период, Пул для PPPoE,L2TP,PPTP

Создание Пула

Перед созданием тарифных планов следует определиться каким образом будут вестись расходы клиентов, каким образом доступ станет ограниченным, как будет сниматься сумма и многое другое. Правила биллинга позволяют широкие многогранные возможности для этого. определим стандарный вариант. Создаем для начала пул для сессии, Не смотря что протоколы различны, пул для них создается по единому правилу IPv4. СПРАВОЧНИКИ -> IP пулы -> Добавить

Название* - имя пула, памятка, можете назвать на свое усмотрение
Тип - IPv4 VPN - для реализации данных протоколов
C IP* - начало диапазона, пример 10.0.128.0
По IP* - конец диапазона, пример 10.0.131.255
то есть в результате получили единый диапазон адресов 10.0.128.0/22 на 1023 клиента
Следующий Пул - тут же после создания данного пула можно добавить новый
Файл:2.jpg

Создание Расчетного Периода

Расчетный период обязателен, именно таким образом биллинг будет снимать вложенную сумму клиента. Не смотря на то, что сумма будет отчисляться ежедневно или раз месяц, этот момент необходим для полной формы взаимодействий. Допустим для разных тарифов будут разные условия, тогда стоит добавить несколько пунктов, к примеру один тариф отсчитывает сумму с момента подключения, другой обязательно вычитает с указанной даты или период даты (день,месяц, год)

СПРАВОЧНИКИ -> Расчетные периоды -> Добавить
Параметры расчётного периода
Название - Любое для памятки, в тестовом варианте отметим "Месяц"
Начинать при активации - установка галочки уберет дату снятия суммы, так как каждому клиенту будет принят индивидуальный подход расчета, начиная с момента активации аккаунта.
Длина Промежутка - через какой определенный момент будет определяться правило. Пример: создаем с расчетным периодом Месяц и начинать при активации. Сумма снятия допустим будет 1000 условных единиц. Клиент ложит 23 числа сумму, с этой суммы 23 числа другого месяца снимается именно 1000 условных единиц. Другой пример: есть подключенная гостиница, где любой постоялец может активировать карточку и подключить свой ноутбук через wi-fi. Правило с расчетным периодом День даст суточный режим активации данного аккаунта Все остальные тонкости правил по отношению к акканту рассмотрим ниже
Файл:3.jpg

Тарифные Планы

Перейдем во вкладку Тарифные Планы, где и создадим все необходимые условия правил выхода в интернет для аккаунтов.Варианты как все будет работать безграничны, для начала мы создадим стандартный вариант
Добавить -
Общие параметры:
Название: Имя тарифного Плана. Именно это название будет отображаться в кабинете пользователя. Учтите этот момент
Способ Доступа: Выбираете тип аутентификации.
Выполнять IPN действия: - этот момент нужно активировать при получение DHCP адресов с биллинга, если выдача идет с Mikrotik или коммутаторов второго уровня, то пункт следует пропустить
VPN IP пул: - в списке отобразится все созданные до ныне пулы ( смотреть Ip Пулы) Примечание: Можно создать несколько тарифных планов и дать им один и тот же пул, если количество адресов позволяет это, в принципе, количество адресов можно увеличить в любой момент. Сам по себе пул не играет ни какой активной роли, все активные правила задаются в тарифных и дополнительных планах к аккаунту.
Гостевой VPN IP пул:- служит для задач поднятия сессий, не входящий для роли к выходу в интернет. Например, для гостей сети, и как удачный вариант, для выдачи других адресов аккаунтам, которые попали в список должников. Таким образом удобно назначить в нате дополнительные правила для этих адресов и пересылать, к примеру, при любом запросе на страницу - заглушку с информационным листом, о том, что закончились деньги на счету.
для этого создаете в IP пуле еще один IPv4 VPN , отличный по адресному пространству от основного. Например, основной 192.168.1.1/24. дополнительный 192.168.2.1/24 - и назовите его,например, "блокировка". Отсюда в списке Гостевой Пул выберите Блокировка. Подробно об этом опишется в разделе Страница- заглушка.
Доступ разрешён: Здесь Вы можете определить в каком периоде будет работать тарифный план.
Расчётный период: - Определяется для тарифного плана созданный до ныне расчетный период для снятия денег
Стоимость пакета: - стоимость тарифного плана. Именно с этого значения определяется расчетный период и формулируется подсчет
Требовать наличия стоимости пакета:

Производить доснятие: - дополнительное условие, при котором в конце месяца не смотря на установленные правила снимется данная сумма. указанная в стоимости пакета. Если правила сформулированы через Периодические услуги, ВНИМАНИЕ!, не отмечайте данный пункт, иначе сумма вычитается вдвойне.
Оплата экспресс картами: - Разрешить через веб-кабинет оплату экспресс-картами
Разрешить услугу перевода баланса: - пункт разрешает из своего счета-балланса пользователю перевести заданную сумму другому пользователю единой биллинговой системы. Разрешать или не разрешать зависит от ваших предпочтений.
Описание тарифного плана: - текст, который отобразится в клиентской части вебкабинета, при описаниях тарифных планов, особенно удобен, если разрешить самостоятельно пользователю переходить по истечению срока на другие тарифные планы.
Активен: Активация тарифного плана. Без галочки все что вы здесь сделали работать не будет на сторону аккаунта

Параметры блокировки

Разрешить пользовательскую блокировку: - пункт, разрешающий пользователю через вебкабинет приостановить услугу провайдера на период указанный ниже. при активации закрывается доступ по заданному протоколу и "замораживается" вычет баланса.
Стоимость блокировки: Сумма для услуги данного тарифного плана
MAX длительность блокировки: - число, определяющее количество дней
Минимальный баланс для блокировки: - сумма, которая должна присутствовать на балансе в момент блокировки
Удобен: для категории лиц, которые работают вахтовым методом, а также летний сезон с отпусками.

Параметры Доступа

Способ доступа - в списке выбираем метод аутентификации для данного тарифа
Выполнять IPN действия: - ставим галочку, если требуется
Доступ разрешён - здесь есть несколько моментов, особенно при учете изменения скорости в зависимости от времени или дня недели. К примеру у Вас есть смена тарифа с Дневного на Ночной. Определим, что дневная скорость будет по умолчанию и в списке выберем имя, для которого вы задавали временной промежуток для данного правила, ниже в Настройках скорости по-умолчанию зададим параметры MAX tx (kbps) Rx (kbps) именно для этого времени
Одноверменных RADIUS сессий на субаккаунт - крайне важная функция, не стоит ей пренебрегать, особенно учитывая протоколы PPP . Известно, что сессию, например PPPOE можно поднять повторно на другом компьютере. То есть одним логим и паролем можно подключиться с нескольких машин, момент правила на микротике дает лишь момент. при котором дублирующая сессия не способна нормально получать трафик.

[test@Mikrotik] /ppp profile> print
Flags: * - default
 0 * name="default" local-address=10.64.0.0 use-mpls=default use-compression=no
     use-vj-compression=no use-encryption=no only-one=yes change-tcp-mss=no
     address-list=internet_users

 1 * name="default-encryption" local-address=10.64.0.0 use-mpls=default
     use-compression=default use-vj-compression=default use-encryption=yes
     only-one=yes change-tcp-mss=default address-list=internet_users

Здесь проблема, почему так приходиться на ней заострять, не заключается именно в попытке получить с одной сессии трафик на две и более клиентской машины, а в принципе работы биллинговой системы. Для биллинговой системы такая ситуация является коллизионной, и эту коллизию она решает сбросом данных сессий. В этот круговорот в итоге вовлекается дополнительно все клиентские сессии, не прошедшие допустимый временной интервал. То есть возникнет проблемы с клиентами, у которых в момент коллизии начнет рваться сесиия. Поэтому необходимо строго задать условия в данном пункте. если по умолчанию канал присваивается одной работающей машине так и укажите цифрой 1. Остальные попытки подключении на данный адрес пула будут отброшены.

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

Списания

Позволяют сделать детальную настройку списания аккаунта
Периодические услуги -> Добавить
Название* - имя услуги
Период* - выбираем из списка созданных расчетных периодов
Стоимость - вычитаемая сумма за данный период
Способ списания - каким образом по отношению к дате производится вычет ( в начале месяца снимается тарифная сумма, в конце или ежедневное списание методом деления стоимости на число календарных дней текущего месяца) Кол-во списаний в сутки - При ежедневном списании можно увеличить деление в суточном режиме
Условие списания* - вычет суммы производится до определенного момента, определяется числом, больше или меньше которого возможен дополнительный вычет
Сумма для условия - Число для условия списания
Активировать и Отключить - период времени для правила данного списания

Разовые услуги

Сумма для условия активации аккаунта к данному тарифному плану

С этого момента можно приступить к созданию акканта и проверить работоспособность системы

Смена скорости трафика в зависимости от времени "Дневной" и "Ночной план", дней недели

Создадим услугу смены скоростей в зависимости от времени суток.
Период тарификации
Добавить период - назовем первый период "Дневной". После этого выбираем его в общем списке и заполняем для него требуемые условия.
Название подпериода - дублируем словом "Дневной"
Начало периода* - время, с которого активируется данное правило, часы, минуты и секунды определяем моментом запуска данной скорости, год ставим прошедшим на данный момент временем
Конец периода* - время, с которого деактивируется данное правило, часы, минуты и секунды опять же определяем моментом остановки данной скорости, год ставим с расчетом очень далекого будущего
Повторять через - выбираем "День"
Сохранить подпериод
Аналогично для периода "Ночной". Время окончания одного периода совпадает с началом другого.
Переходим во вкладку Тарифные планы. Для каждого тарифного плана, для которого будет руководствоваться данное правило нужно будет отдельно добавить следующее в Параметрах тарифного плана. В кладке "Параметры Доступа" в "Доступ раздрешен" в списке выбираем период. который у нас будет по умолчанию, к примеру это будет "Дневной", Настройки скорости по-умолчанию заполняем требуемые для этого временного интервала и сохраняем. Теперь нам нужно изменить скорость на ночной. Кликаем на кнопку "Добавить" и заполняем "Добавить параметры изменения скорости" уже в списке "Time" выбрав имя ночного временного интервала, у нас он определен именем "Ночной" заполняем необходимые параметры скорости для этого времени суток.<bre> Таким образом можно сутки раздробить еще на несколько временных интервалов, каждому выставив свой скоростной приоритет.
Теперь давайте возьмем за образец смену скорости от дней недели, причем совместить данное правило с суточным изменением вполне резонно, главное в добавлении не создать противоречия со временем.
Допустим есть ситуация, когда в будничные дни общий поток не имеет максимальной планки, а в субботние и ,особенно воскресенье, линия перегружена. То есть требуется как-то занизить скорость всех или определенных тарифных планов.
Период тарификации
Добавить период - назовем период "Будничный".
Название подпериода - дублируем слово "Будничный"
И начало периода с помощью календаря определяем. что у нас есть понедельник в прошедшем времени. Выставляем число понедельника и время с которого можно запустить данное правило. Конец периода определим пятницу той же календарной недели. Повторять через "Неделя". Сохраняем подпериод. Таким же образом определяем субботний и воскресный день и опять же повторяем через неделю и сохраняем подпериод. Далее в тарифных планах в "Добавить" выставляем в "Time" данные периоды и определяем требуемые параметры скоростей.