BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 16:36

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: [7.1] connection.inetOption.x.
СообщениеДобавлено: 14 фев 2018, 00:50 
Не в сети
Клиент

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

DHCP, opt82. Есть сервис, уже подключен, адрес по DHCP выделен. В качестве access - mikrotik через TerminalServiceActivator.
Настройки:
Код:
# протокол подключения (telnet/ssh/tcp/mikrotik/shell)
sa.terminal.protocol=mikrotik-api
#timeout соединения (в миллисекунд-apiах).
#sa.command.timeout=
#команды завершения соединения
sa.command.exit=
#Команды, выполняемые при подключении к терминалу( например configure treminal для cisco)
#sa.command.connect=
#Команды, выполняемые перед отключением от терминала.
#sa.command.disconnect=
# V2.0
sa.terminal.set.ipoe.servTypeIds=1
#
#sa.terminal.set.ipoe.serv.modify.enable.1=/queue/simple/set\n=numbers=${contractId()}_${servId()}\n=max-limit=${param(option(),'mkt_max_limit','64K/64K')}
#sa.terminal.set.ipoe.serv.modify.disable.1=/queue/simple/set\n=numbers=${contractId()}_${servId()}\n=max-limit=64K/64K
#
sa.terminal.set.ipoe.connection.inetOption.1.enable.1=/ip/firewall/address-list/add list=${param(option(),'mkt.acl.name','ACL_Q_NONE')} address=${ip()}
sa.terminal.set.ipoe.connection.inetOption.1.disable.1=/ip/firewall/address-list/print where list=${param(option(),'mkt.acl.name','ACL_Q_NONE')} and address=${ip()}
sa.terminal.set.ipoe.connection.inetOption.1.disable.2=/ip/firewall/address-list/remove numbers=${mikrotikLastIds()}


Опция с ID=2 является дочерней по отношению к опции ID=1. Захожу в договор, назначаю на сервис (id типа сервиса == 1) опцию с ID=2.
Вижу вот такую вот последовательность событий и команд.

Код:
connection 02-13/21:41:44  INFO [sa-p-10-t-96] ServiceActivatorSet - Connecting to device
connection 02-13/21:41:44  INFO [sa-p-10-t-96] ServiceActivatorDeviceWorker - Do task deviceId: 4; Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: -1; oldInetServ: 3475C723DC00:8; newInetServ: 3475C723DC00:8; newInetServState: 1; newInetServOptionList: InetServOption [serviceId:9; optionId:2; 13.02.2018-…]; timestamp: 1518547304732
connection 02-13/21:41:44  INFO [sa-p-10-t-96] InetApplication - contract tariffOptions: {}
connection 02-13/21:41:44  INFO [sa-p-10-t-96] InetApplication - OptionSet: [2]
connection 02-13/21:41:44  INFO [sa-p-10-t-96] ServiceActivatorDeviceWorker - Command result event: ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/21:41:44  INFO [sa-p-10-t-96] ServiceActivatorDeviceWorker - Processing deviceId:4; command ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/21:41:44  INFO [sa-p-10-t-96] ServiceActivatorSet - Invoking serviceModify
connection 02-13/21:41:44  INFO [sa-p-10-t-96] TerminalServiceActivator - serviceModify
connection 02-13/21:41:44  INFO [sa-p-10-t-96] TerminalServiceActivator - switchOptions
connection 02-13/21:41:44  INFO [sa-p-10-t-96] ServiceActivatorDeviceWorker - Process event type[2] result=true
connection 02-13/21:41:44  INFO [sa-p-10-t-96] ServiceActivatorDeviceWorker - Changing InetServ:9 state and/or options
mq 02-13/21:41:44  INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet.access.event.InetServDeviceStateAndOptionsModifiedEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: -1; deviceId: 4; inetServId: 9; state: -1000; optionSet: 2; timestamp: 1518547304761
connection 02-13/21:41:49  INFO [sa-p-10-t-96] ServiceActivatorSet - Disconnecting from device


Как я понимаю - изменение connection не вызывается??? Поэтому, как я понимаю, не вызываются и команды для Mikrotik. Но почему? Где и что я недопонял в документации? :)

Код:
 Сервер: вер. 7.1.959 / 07.02.2018 19:49:22
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_162

  bill: вер. 7.1.248 / 07.02.2018 17:05:13
  inet: вер. 7.1.577 / 07.02.2018 17:04:45
  mps: вер. 7.1.169 / 23.01.2018 17:02:47
  npay: вер. 7.1.165 / 23.01.2018 17:02:55
  reports: вер. 7.1.183 / 23.01.2018 17:03:30
  ru.bitel.bgbilling.plugins.dispatch: вер. 7.1.24 / 05.02.2018 18:46:49
  ru.bitel.bgbilling.plugins.documents: вер. 7.1.128 / 23.01.2018 17:02:16
  subscription: вер. 7.1.13 / 23.01.2018 17:03:50
  tv: вер. 7.1.174 / 02.02.2018 20:21:26
  yamoney: вер. 7.1.45 / 07.02.2018 16:40:17


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.1] connection.inetOption.x.
СообщениеДобавлено: 14 фев 2018, 00:56 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Для информации - пробовал connection заменить на serv. Тогда да, комманды при добавлении и убирании опции с сервиса команды начинают вызываться, но, почему-то, в этом случае ${ip()} возвращает null


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.1] connection.inetOption.x.
СообщениеДобавлено: 14 фев 2018, 01:35 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Вот, оказывается connectionModify всё же вызывается, но чуть позже. Но почему-то команды не выполняются :/
То ли лыжи не едут, то ли я

Код:
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorSet - Connecting to device
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Do task deviceId: 4; Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: -1; oldInetServ: 3475C723DC00:8; newInetServ: 3475C723DC00:8; newInetServState: 1; newInetServOptionList: InetServOption [serviceId:9; optionId:2; 13.02.2018-…]; timestamp: 1518550232231
connection 02-13/22:30:32  INFO [sa-p-10-t-28] InetApplication - contract tariffOptions: {}
connection 02-13/22:30:32  INFO [sa-p-10-t-28] InetApplication - OptionSet: [2]
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Command result event: ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Processing deviceId:4; command ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorSet - Invoking serviceModify
connection 02-13/22:30:32  INFO [sa-p-10-t-28] TerminalServiceActivator - serviceModify
connection 02-13/22:30:32  INFO [sa-p-10-t-28] TerminalServiceActivator - switchOptions
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Process event type[2] result=true
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Changing InetServ:9 state and/or options
mq 02-13/22:30:32  INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet.access.event.InetServDeviceStateAndOptionsModifiedEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: -1; deviceId: 4; inetServId: 9; state: -1000; optionSet: 2; timestamp: 1518550232261
connection 02-13/22:30:37  INFO [sa-p-10-t-28] ServiceActivatorSet - Disconnecting from device
^C

root@blng:/opt/bgbill/inet-access00/log# tail -30 all.log
mq 02-13/22:30:32  INFO [event-proc-p-2-t-1] InetServRuntimeMap - Reload InetServRuntime: 9
mq 02-13/22:30:32  INFO [event-proc-p-2-t-1] InetServRuntimeMap - Removing InetServRuntime: 9
mq 02-13/22:30:32  INFO [event-proc-p-2-t-1] InetServRuntimeMap - Adding InetServRuntime: 9
mq 02-13/22:30:32  INFO [event-proc-p-2-t-1] InetServRuntimeMap - ContractId: 1; status: 0; servId: 9
        3475C723DC00:8
        Options [2:13.02.2018-01.01.1970; ] TariffModuleTreeSet [3:30.01.2018-…; ]
        Device state: 1; optionSet:
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorSet - Connecting to device
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Do task deviceId: 4; Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: -1; oldInetServ: 3475C723DC00:8; newInetServ: 3475C723DC00:8; newInetServState: 1; newInetServOptionList: InetServOption [serviceId:9; optionId:2; 13.02.2018-…]; timestamp: 1518550232231
connection 02-13/22:30:32  INFO [sa-p-10-t-28] InetApplication - contract tariffOptions: {}
connection 02-13/22:30:32  INFO [sa-p-10-t-28] InetApplication - OptionSet: [2]
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Command result event: ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Processing deviceId:4; command ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorSet - Invoking serviceModify
connection 02-13/22:30:32  INFO [sa-p-10-t-28] TerminalServiceActivator - serviceModify
connection 02-13/22:30:32  INFO [sa-p-10-t-28] TerminalServiceActivator - switchOptions
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Process event type[2] result=true
connection 02-13/22:30:32  INFO [sa-p-10-t-28] ServiceActivatorDeviceWorker - Changing InetServ:9 state and/or options
mq 02-13/22:30:32  INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet.access.event.InetServDeviceStateAndOptionsModifiedEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: -1; deviceId: 4; inetServId: 9; state: -1000; optionSet: 2; timestamp: 1518550232261
connection 02-13/22:30:37  INFO [sa-p-10-t-28] ServiceActivatorSet - Disconnecting from device
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorSet - Connecting to device
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorDeviceWorker - Do task deviceId: 4; Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaOptionsModifyEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: 0; deviceId: 4; inetServId: 9; connectionId: 0; options: 2; timestamp: 1518550244039
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorDeviceWorker - Do task deviceId: 4; Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaOptionsModifyEvent] moduleId: 2; pluginId: no; cid: 1; scid: -1; userId: 0; deviceId: 4; inetServId: 9; connectionId: 25; options: 2; timestamp: 1518550244040
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorDeviceWorker - Command result event: ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorDeviceWorker - Processing deviceId:4; command ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: ; newOptionSet: 2
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorSet - Invoking connectionModify
connection 02-13/22:30:44  INFO [sa-p-10-t-78] TerminalServiceActivator - connectionModify
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorDeviceWorker - Process event type[2] result=true
connection 02-13/22:30:44  INFO [sa-p-10-t-78] ServiceActivatorDeviceWorker - Changing InetConnection:25 state and/or options
connection 02-13/22:30:49  INFO [sa-p-10-t-78] ServiceActivatorSet - Disconnecting from device


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.1] connection.inetOption.x.
СообщениеДобавлено: 14 фев 2018, 19:14 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Провёл тут еще несколько тестов - при вызове connectionModify выполняются только команды из sa.terminal.connection.modify
А вот inetOption.x.enable/disable не вызываются ни при каких обстоятельствах. Забыли где-то это в коде :) Поправьте, пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.1] connection.inetOption.x.
СообщениеДобавлено: 14 фев 2018, 19:36 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
И еще наблюдения - принудительно сделал sa.terminal.set.ipoe.connection.modify=${optionsSwitch()}
После этого получаю вот такую вот ошибку

Код:
connection 02-14/16:32:36  INFO [sa-p-10-t-40] ServiceActivatorSet - Connecting to device
connection 02-14/16:32:36  INFO [sa-p-10-t-40] ServiceActivatorDeviceWorker - Do task deviceId: 4;
Event[ru.bitel.bgbilling.modules.inet.access.sa.event.InetSaOptionsModifyEvent] moduleId: 2; plugin
Id: no; cid: 1; scid: -1; userId: 0; deviceId: 4; inetServId: 9; connectionId: 25; options: ; times
tamp: 1518614916071
connection 02-14/16:32:36  INFO [sa-p-10-t-40] ServiceActivatorDeviceWorker - Command result event:
 ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOptionSet: 2
; newOptionSet:
connection 02-14/16:32:36  INFO [sa-p-10-t-40] ServiceActivatorDeviceWorker - Processing deviceId:4
; command ServiceActivatorEvent type=2; inetServId: 9; call: true; oldState: 1; newState: 1; oldOpt
ionSet: 2; newOptionSet:
connection 02-14/16:32:36  INFO [sa-p-10-t-40] ServiceActivatorSet - Invoking connectionModify
connection 02-14/16:32:36  INFO [sa-p-10-t-40] TerminalServiceActivator - connectionModify
connection 02-14/16:32:36  INFO [sa-p-10-t-40] TerminalServiceActivator - switchOptions
connection 02-14/16:32:36  INFO [sa-p-10-t-40] TerminalSession$TelnetTerminalSession - Connected
connection 02-14/16:32:36  INFO [sa-p-10-t-40] TerminalServiceActivator - Connected to Mikrotik: CC
R-1009 [172.31.254.254:8728]
connection 02-14/16:32:36  INFO [sa-p-10-t-40] TerminalServiceActivator - [Mikrotik: CCR-1009 [172.
31.254.254:8728]] execute: /ip/firewall/address-list/print where list=ACL_5M and address=31.44.15.1
60
connection 02-14/16:32:36  INFO [sa-p-10-t-40] TerminalServiceActivator -
connection 02-14/16:32:36 ERROR [sa-p-10-t-40] EventWorker - Error on device:4 - java.lang.ClassCas
tException: ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession$MikrotikApiTerminal
Session cannot be cast to ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalSession$Mikro
tikTerminalSession
        at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceAct
ivatorDeviceWorker.java:504)
        at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.jav
a:248)
        at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:22
0)
        at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:120)
        at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(Service
ActivatorDeviceWorker.java:246)
        at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:147)
        at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceAc
tivatorDeviceWorker.java:152)
        at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:87)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Schedule
dThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThread
PoolExecutor.java:294)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
        at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46)
Caused by: java.lang.ClassCastException: ru.bitel.bgbilling.modules.inet.dyn.device.terminal.Termin
alSession$MikrotikApiTerminalSession cannot be cast to ru.bitel.bgbilling.modules.inet.dyn.device.t
erminal.TerminalSession$MikrotikTerminalSession
        at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.invoke(Term
inalServiceActivator.java:1138)
        at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator$TGroovyMacr
o.invoke(TerminalServiceActivator.java:233)
        at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:
241)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.jav
a:69)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
158)
        at Script79$_run_closure1.doCall(Script79.groovy:1)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
.....


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.1] connection.inetOption.x.
СообщениеДобавлено: 14 фев 2018, 19:43 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
По exception разобрался, ошибка на строке 1138 TerminalServiceActivator
Код:
         case "mikrotikLastIds":
         {
            if( terminalSession instanceof MikrotikApiTerminalSession )
            {
               return ((MikrotikTerminalSession)terminalSession).getLastIds();
            }


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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.1] connection.inetOption.x.
СообщениеДобавлено: 14 фев 2018, 21:48 
Не в сети
Клиент

Зарегистрирован: 15 мар 2009, 14:04
Сообщения: 1337
Карма: 12
Пока нашел вот такое вот решение, не знаю насколько оно правильное, все ли ситуации будет учитывать:
sa.terminal.set.ipoe.connection.modify=${(newState()==1&&oldState()==1)?(optionsSwitch()):''}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [7.1] connection.inetOption.x.
СообщениеДобавлено: 19 фев 2018, 18:29 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Выкладывается обновление, поменяли
Код:
        defaults.set( "connection.modify.after", "${(newState()!=1)?(optionsDisable()+connectionDisable()):''}" );

на
Код:
        defaults.set( "connection.modify.after", "${(newState()!=1)?(optionsDisable()+connectionDisable()):''};"
                                                 + "${(newState()==1&&oldState()==1)?(optionsSwitch()):''}" );


и MikrotikApiTerminalSession.


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

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


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

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


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

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