BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 июн 2025, 20:27

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
СообщениеДобавлено: 28 фев 2017, 14:07 
Не в сети

Зарегистрирован: 14 фев 2017, 18:55
Сообщения: 9
Карма: 0
Есть задача, в сервисах добавить дополнительный IP адрес для клиента в модуле Inet, хотим это сделать через добавление дочернего сервиса. Например:
Вложение:
Выделение_519.png
Выделение_519.png [ 9.45 КБ | Просмотров: 7514 ]

Проблема возникает при добавлении дочернего сервиса, отрабатывает полный список команд из конфигурации устройста, то есть пересоздается родительский сервис, как этого избежать? В telegram'е товарищ Amir подсказал сделать так:
Код:
servCreateLoop=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$providerConractTitle;
sa.commandSet.cmd1.serv.create.1=interface GigabitEthernet 0/$param(cl_interface,0).$providerConractTitle;
$loopServ(servCreateLoop,false,true);
$loopServ(имя_параметра_шаблона_команды,использовать_в_цикле_родительский_сервис,выполять_как_отдельную_команду_или_построить_строку)


Получаем лог:
Вложение:
Выделение_520.png
Выделение_520.png [ 59.43 КБ | Просмотров: 7514 ]

То есть loopServ пустой, что не так?
Вот полный список команд в настройках устройства:
Код:
# Команды, выполняемые при подключении к терминалу( например configure treminal для cisco)
sa.command.connect=configure terminal
# Команды, выполняемые перед отключением от терминала.
# sa.command.disconnect=exit
# Команды создания сервиса на устройстве.
# Создание IP, 1 - тип услуги "Интернет"
sa.commandSet.cmd1.servTypeIds=1
# Создание дополнительного IP в том же VLAN'е, 3 - тип услуги доп. IP
sa.commandSet.cmd3.servTypeIds=3

sa.commandSet.cmd1.serv.create.1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd1.serv.create.2=description Contract $translit($contractTitle)
sa.commandSet.cmd1.serv.create.3=encapsulation dot1Q $vlan
sa.commandSet.cmd1.serv.create.4=ip unnumbered $param(loopback,Loopback0)
sa.commandSet.cmd1.serv.create.5=no cdp enable
sa.commandSet.cmd1.serv.create.6=traffic-shape rate $param($option,ceil_in,5000000)
sa.commandSet.cmd1.serv.create.7=exit
# sa.commandSet.cmd1.serv.create.8=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle

######
servCreateLoop=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle;
sa.commandSet.cmd1.serv.create.8=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle;$loopServ(servCreateLoop,false,true);
######

# Дополнительный IP адрес
sa.commandSet.cmd3.serv.create=ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle

#Команды удаления сервиса с устройства.
sa.commandSet.cmd1.serv.cancel=no interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd3.serv.cancel=no ip route $ip 255.255.255.255 GigabitEthernet 0/$param(cl_interface,0).$provConractTitle

#Команды включения сервиса на устройстве
sa.commandSet.cmd1.serv.cancel1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd1.serv.cancel2=no shutdown
#Команды выключения сервиса на устройстве

sa.commandSet.cmd1.serv.disable1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.commandSet.cmd1.serv.disable2=shutdown
# sa.commandSet.cmd3.serv.disable=HELLLOOOOOOOOOOOOOOOOOO

# Команды включения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции).
sa.command.common.ancestor.inetOption.1.enable.1=interface GigabitEthernet 0/$param(cl_interface,0).$provConractTitle
sa.command.common.ancestor.inetOption.1.enable.2=no traffic-shape rate
sa.command.common.ancestor.inetOption.1.enable.3=traffic-shape rate $param($option,ceil_in,5000000)

## Команды выключения опций сервиса на устройстве, которые задаются на опции-предке (действуют для всех опции, которые находятся снизу в иерархии опции).
sa.command.common.ancestor.inetOption.1.disable=


На тестовом стенде версия биллинга:
BGBillingServer v 7.0.1129
Java:
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)

_________________

BGBillingServer v 7.0.1129
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.92-b14, mixed mode)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 мар 2017, 21:51 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Похоже в дин. коде был/скомпилирован старый AbstractTerminalServiceActivator, в котором не было макроса $servLoop.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 мар 2017, 14:18 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Добрый день!

Вижу, что опять сделали что-то полезное. А можно все же написать как этим правильно пользоваться? Что означает, например, флаг "использовать_в_цикле_родительский_сервис"? И wiki бы обновить.

С уважением,
Борис


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 мар 2017, 15:21 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Похоже нашел баг в loopServ :) Не учитывает даты дочернего сервиса.

Код:
#
sa.commandSet.staticIP.servTypeIds=3
#
m_ipLoop=$net
sa.commandSet.staticIP.serv.create.1=/queue/simple/remove\n=numbers=$contractId:$servId
sa.commandSet.staticIP.serv.create.2=/queue/simple/add\n=name=$contractId:$servId\n=target=127.0.0.1/32,$loopServ(m_ipLoop, false, false)
#
sa.commandSet.staticIP.serv.cancel.1=/queue/simple/remove\n=numbers=$contractId:$servId


Если я добавляю и удаляю ip, организованные как дочерний сервис (servTypeIds=3 это родительский сервис), то все вроде как хорошо. Но вот если я на одном из дочерних сервисов поставлю закрывающую дату < текущей, то эти IP все равно попадают в выводе loopServ. Но это же не правильно?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 31 мар 2017, 12:58 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
вот такой вот код:
Код:
m_ipLoop=/ip/firewall/address-list/add\n=list=ACL_TEST\n=address=$net
sa.commandSet.staticIP.serv.create.1=/queue/simple/remove\n=numbers=$contractId:$servId
sa.commandSet.staticIP.serv.create.2=$loopServ(m_ipLoop, false, true)


Я думал что каждая комманда m_ipLoop будет независимо посылаться на терминал. А по факту не посылаются (проверял tcpdump), посылается только комманда serv.create.1.

Цитата:
Информация о версии:

Клиент: вер. 6.2.854 / 22.02.2017 19:04:14
os: Windows XP; java: Java HotSpot(TM) Client VM, v.1.8.0_121
Сервер: вер. 6.2.1166 / 16.03.2017 23:47:37
os: FreeBSD; java: OpenJDK 64-Bit Server VM, v.1.8.0_112
ВНИМАНИЕ: Виртуальная машина OpenJDK 64-Bit Server VM не рекомендуется

bill: вер. 6.2.100 / 22.02.2017 19:06:28
card: вер. 6.2.43 / 16.03.2017 23:47:47
dialup: вер. 6.2.315 / 01.03.2016 00:17:59
email: вер. 6.2.177 / 14.12.2016 14:27:42
inet: вер. 6.2.713 / 10.03.2017 18:23:44
ipn: вер. 6.2.264 / 09.01.2017 16:41:56
mps: вер. 6.2.222 / 16.03.2017 23:47:51
npay: вер. 6.2.198 / 03.02.2017 21:00:04
phone: вер. 6.2.288 / 10.03.2017 18:14:36
reports: вер. 6.2.216 / 15.03.2017 19:48:19
ru.bitel.bgbilling.plugins.documents: вер. 6.2.176 / 14.12.2016 14:33:16
ru.bitel.bgbilling.plugins.organizer: вер. 6.2.72 / 04.10.2016 19:16:19
voiceip: вер. 6.2.191 / 14.12.2016 14:29:33
wellpay: вер. ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 04 апр 2017, 12:37 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
please :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 07 апр 2017, 13:05 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
О, Amir, великий и всемогущий, услышь мою молитву!
О, Amir, великий и всемогущий, услышь мою молитву!
О, Amir, великий и всемогущий, услышь мою молитву!


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 11 апр 2017, 17:02 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Не совсем понятно - до этого же вроде работало?
Когда работает, а когда нет?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 апр 2017, 11:08 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
А у кого работало? Видимо не у меня. Я вот только начал эксперименты в эту сторону.
Я понял так, что в случае, если последний флаг true, то команды макроса будут независимо посылаться на устройство для каждого субсервиса? У меня почему-то не посылаются.

Сегодня наконец-то докопался. AbstractTerminalServiceActivator вызывает executeCommand0, которая в свою очередь вызывает protected executeCommand. Но почему-то в MikrotikServiceActivator эта функция пустая, с комментарием
Цитата:
//ничего не делаем все делают в executeCommandMikrotik
. После того, как я в эту функцию добавил вызов executeCommandMikrotik( command ) - все заработало как надо. Но вопрос - зачем-то же эта функция оставлена пустой? Что-то же автор MikrotikServiceActivator думал? Ничего мои действия не поломают? И если не поломают, то может имеет смысл добавить это в основной код?


Последний раз редактировалось borisk 16 апр 2017, 10:22, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 апр 2017, 09:10 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Огромнейшая просьба обновить Wiki Описание_общих_параметров_для_терминальных(ssh/telnet/manad/mikrotik_api)_обработчиков_активации_сервисов с учетом последних изменений в макросах. Потому что "нипанятно" (c) :) Копаясь в коде обнаружил еще макрос $switch, но чего он делает?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 апр 2017, 11:26 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Цитата:
Amir, [27.02.17 17:01]
[In reply to Alexander Yakunin]
Я вообще другой TerminalServiceActivator для 7.0 сделал, только не успел его описать еще :(

Amir, [27.02.17 17:03]
Там макросы через groovy вызываются, более гибко, но по другому писать надо будет: ${ip()}

Ожидаем

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 апр 2017, 11:28 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Ожидать можно долго, а работать надо уже сейчас :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 апр 2017, 22:57 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
http://docs.bitel.ru/display/BGBILLING7 ... eActivator


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 апр 2017, 12:40 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Вот прямо СПАСИБИЩЕ!!!!


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.072s | 48 Queries | GZIP : On ]