Просмотр Исходного

Интеграция пользовательской схемы состоит из трёх этапов:

{toc}

h1. Добавьте NAS в список

# В меню "*Оборудование*" \-> "*NAS*" нажмите кнопку "*Добавить*"
\\
\\ !nas_list.png|border=0,width=500!\\
\\
# В открывшейся форме заполните поля *Название*, *IP адрес*, выберите *OSS схему* "*Пользовательская*", укажите *версию "1"* и нажмите "*Сохранить*"
\\
\\ !nas_add_form.png|border=0,width=350!\\
\\
# Обратите внимание, что после сохранения автоматически должно заполниться поле "*OSS Каталог управления*"
\\
\\ !nas_created.png|border=0,width=350!\\
\\
# Перейдите на вкладку "*Управление*" и нажмите кнопку "*rtsh cfg init default v1*"
\\
\\ !nas_management_tab.png|border=0,width=550!\\
\\
# Должно появиться всплывающее окно, через несколько секунд появится надпись "/usr/local/bin/rtsh cfg init default_v1 \[8032\] is finished"
\\
\\ !nas_initiated.png|border=0,width=400!\\
\\
# Подключитесь к серверу по SSH и проверьте что файлы схемы создались: посмотрите какой указан путь до OSS каталога в настройках NAS и подставьте в команду:
\\
\\
{code:title=Пример команды, путь до Вашего NAS уточните в его настройках}chroot /app/asr_billing/ ls -l /var/oss/core/MyNAS/{code}
Вывод должен быть приблизительно следующий:
\\
\\ !nas_list_files.png|border=1!


h1. Настройте авторизацию RADIUS если это требуется

На вкладке "*Дополнительно*" выберите по какому параметру (Логин, IP или MAC) искать абонента в биллинге. Подробней как это настроить и отладить описано в статье "[CarbonBilling:Авторизация по RADIUS]"

h1. Кастомизируйте скрипт

# Зайдите в контейнер биллинга
{code}chroot /app/asr_billing{code}
Перейдите в каталог с файлами схемы, каталог можно посмотреть в интерфейсе биллинга в настройках NAS. В нашем примере это "/var/oss/core/MyNAS/"
{code}cd /var/oss/core/MyNAS/{code}
# Скопируйте шаблон скрипта управления session
{code}cp bin/session ubin/{code}
# Откройте файл для редактирования. Например, это можно сделать редактором VIM
{code}vim ubin/session{code}
или MC
{code}mcedit ubin/session{code}
# Добавьте в скрипт ссылку на основной скрипт session. Это необходимо для правильной работы [синхронизация|CarbonBilling:Синхронизация абонентов на оборудовании]. Первые две строки в скрипте должны выглядеть так:
{code}#!/bin/bash
. $(dirname $BASH_SOURCE)/../bin/session
{code}
# [Опишите команды|CarbonBilling:Состояния пользователей, услуг и команды управления интернет] необходимые для управления Вашим оборудованием. Например, событие user_accept, которое проходит при любой разблокировке пользователя.
{code}user_accept(){
__coa_send ip forward_allow add $ip
__coa_send ip snat add $ip $snatip
}
{code}
Обязательными обычно являются следующие состояния (их описания есть в [статье|http://docs.carbonsoft.ru/pages/viewpage.action?pageId=51708843]):
#* user_add
#* user_del
#* user_accept
#* user_drop
# Выставьте права на выполнение скрипта
{code}
chmod +x ubin/session
{code}

h1. Перезапустите [CarbonBilling:nas_event_daemon]

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

{code}chroot /app/asr_billing service nas_event_daemon restart{code}

h1. Проверьте что получилось

Выполните несколько команд, которые добавили в скрипте.
Например, для проверки работоспособности функции user_accept выполните следующую команду:
{code:title=Запрос к клиенту 192.168.200.2}
rtsh session 192.168.200.2 accept {code}

{code:title=В ответ будет представлен вывод:}
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416echo 'env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False
rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1'
env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in=
nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416user_accept
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416send_mikrotik_cmd -s 192.168.0.5 bill+ct billadmin /ip firewall address-list remove numbers=192.168.200.2_crb_blocked
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416:
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416send_mikrotik_cmd -s 192.168.0.5 bill+ct billadmin /ip firewall address-list remove numbers=192.168.200.2_crb_blocked
WARNING: NoSearchItem message: 'no such item', command: '/ip/firewall/address-list/remove =numbers=192.168.200.2_crb_blocked' exit code: 253
2020-07-14 05:58:11 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 accept[19416set +
{code}

Для проверки работоспособности функции user_get_mac:
{code:title=Запрос к клиенту 192.168.200.2 на получение его mac-адреса}
rtsh session 192.168.200.2 get_mac
{code}

{code:title=Вывод:}
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074echo 'env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False

blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1'
env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False
blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074user_get_mac
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074local TMPDIR=/tmp/nas_event_daemon/192.168.0.5/user_get_mac/
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074mkdir -p /tmp/nas_event_daemon/192.168.0.5/user_get_mac//
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074read ip int mac t
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[207send_mikrotik_cmd 192.168.0.5 bill+ct billadmin /ip arp print .proplist=address,mac-address,interface '?address=192.168.200.2'
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074echo 08:00:27:55:41:04
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074chmod 777 -R /tmp/nas_event_daemon/
2020-07-14 05:59:37 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 get_mac[2074set +x
{code}


Для проверки работоспособности функции отключения абонента user_drop:
{code:title=Запрос к клиенту 192.168.200.2}
rtsh session 192.168.200.2 drop
{code}

{code:title=Вывод:}
2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:echo 'env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True
redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in= nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1'
env ip=192.168.200.2 abonent_id=1361 user_id=1413 login=BILL0000100 snatip= mac= logged=True redirect=False blocked=False rate_in= ceil_in= burst_in= cburst_out= rate_out= ceil_out= burst_out= cburst_in=
nas_ip=192.168.0.5 telnet_login=bill telnet_password=billadmin auth_type=1
2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:user_drop
2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:send_mikrotik_cmd 192.168.0.5 bill+ct billadmin /ip firewall address-list add list=crb_blocked_list
address=192.168.200.2 comment=192.168.200.2_crb_blocked
2020-07-14 06:17:03 ssh 192.168.10.2 localhost.localdomain rtsh session 192.168.200.2 drop[13792]:set +x
{code}