forum.bitel.ru http://forum.bitel.ru/ |
|
[7.1] connection.inetOption.x. http://forum.bitel.ru/viewtopic.php?f=44&t=12793 |
Страница 1 из 1 |
Автор: | borisk [ 14 фев 2018, 00:50 ] |
Заголовок сообщения: | [7.1] connection.inetOption.x. |
Добрый день! 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 |
Автор: | borisk [ 14 фев 2018, 00:56 ] |
Заголовок сообщения: | Re: [7.1] connection.inetOption.x. |
Для информации - пробовал connection заменить на serv. Тогда да, комманды при добавлении и убирании опции с сервиса команды начинают вызываться, но, почему-то, в этом случае ${ip()} возвращает null |
Автор: | borisk [ 14 фев 2018, 01:35 ] |
Заголовок сообщения: | Re: [7.1] connection.inetOption.x. |
Вот, оказывается 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 |
Автор: | borisk [ 14 фев 2018, 19:14 ] |
Заголовок сообщения: | Re: [7.1] connection.inetOption.x. |
Провёл тут еще несколько тестов - при вызове connectionModify выполняются только команды из sa.terminal.connection.modify А вот inetOption.x.enable/disable не вызываются ни при каких обстоятельствах. Забыли где-то это в коде Поправьте, пожалуйста. |
Автор: | borisk [ 14 фев 2018, 19:36 ] |
Заголовок сообщения: | Re: [7.1] connection.inetOption.x. |
И еще наблюдения - принудительно сделал 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) ..... |
Автор: | borisk [ 14 фев 2018, 19:43 ] |
Заголовок сообщения: | Re: [7.1] connection.inetOption.x. |
По exception разобрался, ошибка на строке 1138 TerminalServiceActivator Код: case "mikrotikLastIds": { if( terminalSession instanceof MikrotikApiTerminalSession ) { return ((MikrotikTerminalSession)terminalSession).getLastIds(); } Теперь осталось понять как правильно сделать изменение опций в случае когда состояние соединения не меняется |
Автор: | borisk [ 14 фев 2018, 21:48 ] |
Заголовок сообщения: | Re: [7.1] connection.inetOption.x. |
Пока нашел вот такое вот решение, не знаю насколько оно правильное, все ли ситуации будет учитывать: sa.terminal.set.ipoe.connection.modify=${(newState()==1&&oldState()==1)?(optionsSwitch()):''} |
Автор: | Amir [ 19 фев 2018, 18:29 ] |
Заголовок сообщения: | Re: [7.1] connection.inetOption.x. |
Выкладывается обновление, поменяли Код: defaults.set( "connection.modify.after", "${(newState()!=1)?(optionsDisable()+connectionDisable()):''}" ); на Код: defaults.set( "connection.modify.after", "${(newState()!=1)?(optionsDisable()+connectionDisable()):''};" + "${(newState()==1&&oldState()==1)?(optionsSwitch()):''}" ); и MikrotikApiTerminalSession. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |