forum.bitel.ru http://forum.bitel.ru/ |
|
[7.0] TerminalServiceActivator http://forum.bitel.ru/viewtopic.php?f=44&t=12622 |
Страница 1 из 1 |
Автор: | borisk [ 18 сен 2017, 16:19 ] |
Заголовок сообщения: | [7.0] TerminalServiceActivator |
Добрый день! Помогите найти ошибку. У меня, видимо, глаз замылился. Хочу управлять mikrotik через новый TerminalServiceActivator sa.terminal.type=mikrotik стоит конифгурация: Цитата: # V1.0 m_ipLoop=,${net()} sa.terminal.set.ipService.serv.create.1=/queue/simple/remove\n=numbers="${contractId()}_${servId()}" sa.terminal.set.ipService.serv.create.2=/queue/simple/add\n=name=${contractId()}_${servId()}\n=queue=ethernet-default/ethernet-default\n=target=127.0.0.1/32${loopServ(m_ipLoop, false, '')} # sa.terminal.set.ipService.serv.cancel.1=/queue/simple/remove\n=numbers="${contractId()}_${servId()}" # sa.terminal.set.ipService.serv.disable.1=/queue/simple/set\n=numbers="${contractId()}_${servId()}"\n=max-limit=64K/64K # sa.terminal.set.ipService.serv.inetOption.1.enable=/queue/simple/set\n=numbers="${contractId()}_${servId()}"\n=max-limit=${param(option(),'mkt_max_limit','64K/64K')} Но, увы, получаю exception: Цитата: connection 09-18/15:14:36 ERROR [sa-p-13-t-60] AcknowledgeConsumer - Error on device:189 - java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
ru.bitel.bgbilling.common.BGException: Error on device:189 - java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:504) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:211) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.notify(AsyncEventWorker.java:201) at ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer.onMessage0(AcknowledgeConsumer.java:83) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:176) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:109) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:246) at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:142) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:152) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) 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(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.invoke(TerminalServiceActivator.java:944) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator$TGroovyMacro.invoke(TerminalServiceActivator.java:231) at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:258) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) at Script2$_run_closure1.doCall(Script2.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) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at ru.bitel.common.groovy.MetaClassDelegate.invokeMethod(MetaClassDelegate.java:107) at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:228) at groovy.lang.Closure.call(Closure.java:414) at ru.bitel.common.groovy.GroovyMacro.eval(GroovyMacro.java:200) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:672) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:650) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceCancel(TerminalServiceActivator.java:1939) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceModify(TerminalServiceActivator.java:1990) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceModify(ServiceActivatorSet.java:413) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:527) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:500) ... 17 more |
Автор: | borisk [ 18 сен 2017, 16:36 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Вставив пару сообщений в исходный код понял что, проблема возникает где в ${contractId()}, который он почему-то и где-то не может преобразовать в строку. Но где именно и почему? Код: bill: вер. 7.0.124 / 11.08.2017 16:04:07
card: вер. 7.0.44 / 04.08.2017 17:34:18 dialup: вер. 7.0.321 / 04.08.2017 17:33:58 email: вер. 7.0.182 / 04.08.2017 17:34:39 inet: вер. 7.0.772 / 05.09.2017 19:44:59 ipn: вер. 7.0.270 / 08.08.2017 15:43:59 mps: вер. 7.0.221 / 11.09.2017 16:42:32 npay: вер. 7.0.210 / 07.08.2017 03:07:28 phone: вер. 7.0.293 / 04.08.2017 17:34:56 reports: вер. 7.0.236 / 04.09.2017 14:32:37 ru.bitel.bgbilling.plugins.documents: вер. 7.0.178 / 08.08.2017 15:44:22 ru.bitel.bgbilling.plugins.organizer: вер. 7.0.75 / 05.10.2016 13:43:02 voiceip: вер. 7.0.196 / 04.08.2017 17:33:59 |
Автор: | borisk [ 18 сен 2017, 17:39 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
В обще решил пойти последовательно. Убрал пока вообще все макросы, просто использую статические строки. И наткнулся на странную проблему - TerminalServiceActivator не хочет соединяться с mikrotik. Пишет Код: connection 09-18/16:27:19 ERROR [sa-p-13-t-96] TerminalServiceActivator - Can't connect to Mikrotik: RB3011 [X.X.X.125:8728] to X.X.X.125:8728. Check host/port, username/password and sa.endSequence (command prompt) Меняю на MikrotikServiceActivator - и тут же все прекрасно начинает работать. Что может быть не так? |
Автор: | borisk [ 18 сен 2017, 20:53 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Так, одну проблему нашел. В TerminalSession::newTerminalSession забыты break; в ветках case. Разработчики, пофиксите плиз в коде. заодно я бы написал type.toLowerCase(), а то вдруг кто-нибудь решить написать Telnet или SSH и тоже будет долго мучаться почему не работает Код: switch( type )
{ case "ssh": result = new SshTerminalSession( host, port ); case "shell": result = new ExecTerminalSession(); case "tcp": result = new TcpTerminalSession( host, port ); case "mikrotik": result = new MikrotikTerminalSession( host, port ); case "telnet": default: result = new TelnetTerminalSession( host, port ); } |
Автор: | borisk [ 18 сен 2017, 21:01 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
А вот дальше всё же жду помощи, потому что такие команды выполняются на ура и на mikrotik создаются нужные очереди Код: sa.terminal.set.ipService.serv.create.1=/queue/simple/add\n=name=555\n=queue=ethernet-default/ethernet-default\n=target=127.0.0.1/32 sa.terminal.set.ipService.serv.cancel.1=/queue/simple/remove\n=numbers=555 А вот такие Код: sa.terminal.set.ipService.serv.create.1=/queue/simple/add\n=name=${contractId()}\n=queue=ethernet-default/ethernet-default\n=target=127.0.0.1/32 sa.terminal.set.ipService.serv.cancel.1=/queue/simple/remove\n=numbers=${contractId()} уже приводят к Exception Код: connection 09-18/19:59:06 ERROR [sa-p-13-t-39] EventWorker - Error on device:189 - java.lang.NullPointerException
ru.bitel.bgbilling.common.BGException: Error on device:189 - java.lang.NullPointerException at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:504) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:211) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:183) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:109) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:246) at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:142) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:152) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) 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(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: java.lang.NullPointerException at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.invoke(TerminalServiceActivator.java:1176) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator$TGroovyMacro.invoke(TerminalServiceActivator.java:231) at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:233) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:158) at Script2$_run_closure1.doCall(Script2.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) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at ru.bitel.common.groovy.MetaClassDelegate.invokeMethod(MetaClassDelegate.java:107) at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:228) at groovy.lang.Closure.call(Closure.java:414) at ru.bitel.common.groovy.GroovyMacro.eval(GroovyMacro.java:200) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:672) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:651) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceCreate(TerminalServiceActivator.java:1929) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceCreate(ServiceActivatorSet.java:386) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:564) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:500) ... 15 more |
Автор: | Arcad77 [ 18 сен 2017, 21:45 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
А у меня вот так работает: sa.command.serv.enable.9=/ip/dhcp-server/lease/add\n=address=$ip\n=mac-address=$mac\n=server=$ipParam(DHCP)\n=comment=$contractTitle sa.command.serv.disable.3=/ip/firewall/address-list/add\n=address=$ip\n=list={@name_al}\n=comment=$contractTitle Правда через MikrotikServiceActivator, возможно в TerminalServiceActivator перестали работать с Микротиком, все в отдельный динкод пошло! |
Автор: | Amir [ 18 сен 2017, 21:49 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Смотрим. |
Автор: | borisk [ 18 сен 2017, 22:09 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Arcad77 писал(а): А у меня вот так работает: Правда через MikrotikServiceActivator, возможно в TerminalServiceActivator перестали работать с Микротиком, все в отдельный динкод пошло! В TerminalServiceActivator стали использовать Groovy Macros, но что-то пошло не так |
Автор: | Amir [ 19 сен 2017, 19:21 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Выложили обновление (ядра и TerminalServiceActivator). |
Автор: | borisk [ 20 сен 2017, 00:03 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Спасибо, завтра обновлюсь |
Автор: | borisk [ 20 сен 2017, 14:21 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Уже лучше. Но вот для такой конструкции Код: sa.terminal.set.ipService.serv.cancel.1=/queue/simple/remove\n=numbers="${contractId()}" бросает Exception что не может cast java.lang.Integer to java.lang.String |
Автор: | borisk [ 20 сен 2017, 14:32 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Еще не воспринимает вот такую вот конструкцию: Код: sa.terminal.set.ipService.serv.create.1=/queue/simple/add\n=name=${contractId()}_${servId()}\n=queue=ethernet-default/ethernet-default\n=target=127.0.0.1/32${loopServ(m_ipLoop, false, '')} Цитата: connection 09-20/13:29:04 ERROR [sa-p-13-t-92] AcknowledgeConsumer - Error on device:189 - org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
General error during canonicalization: Constant expression type [boolean] is not allowed java.lang.SecurityException: Constant expression type [boolean] is not allowed at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitConstantExpression(SecureASTCustomizer.java:1004) at org.codehaus.groovy.ast.expr.ConstantExpression.visit(ConstantExpression.java:83) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitListOfExpressions(SecureASTCustomizer.java:1038) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitTupleExpression(SecureASTCustomizer.java:927) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitArgumentlistExpression(SecureASTCustomizer.java:1092) at org.codehaus.groovy.ast.expr.ArgumentListExpression.visit(ArgumentListExpression.java:76) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitMethodCallExpression(SecureASTCustomizer.java:864) at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java:66) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitListOfExpressions(SecureASTCustomizer.java:1038) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitGStringExpression(SecureASTCustomizer.java:1046) at org.codehaus.groovy.ast.expr.GStringExpression.visit(GStringExpression.java:52) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitExpressionStatement(SecureASTCustomizer.java:779) at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:42) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitBlockStatement(SecureASTCustomizer.java:739) at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:71) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitClosureExpression(SecureASTCustomizer.java:922) at org.codehaus.groovy.ast.expr.ClosureExpression.visit(ClosureExpression.java:45) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitBinaryExpression(SecureASTCustomizer.java:899) at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:51) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitExpressionStatement(SecureASTCustomizer.java:779) at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:42) at org.codehaus.groovy.control.customizers.SecureASTCustomizer$SecuringCodeVisitor.visitBlockStatement(SecureASTCustomizer.java:739) at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:71) at org.codehaus.groovy.control.customizers.SecureASTCustomizer.call(SecureASTCustomizer.java:554) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1065) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688) at groovy.lang.GroovyShell.parse(GroovyShell.java:700) at groovy.lang.GroovyShell.parse(GroovyShell.java:736) at groovy.lang.GroovyShell.parse(GroovyShell.java:727) at ru.bitel.common.groovy.GroovyMacro.parse(GroovyMacro.java:290) at ru.bitel.common.groovy.GroovyMacro.lambda$eval$0(GroovyMacro.java:191) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at ru.bitel.common.groovy.GroovyMacro.eval(GroovyMacro.java:191) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:672) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:650) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceCreate(TerminalServiceActivator.java:1929) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceCreate(ServiceActivatorSet.java:386) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:564) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:500) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:211) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.notify(AsyncEventWorker.java:201) at ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer.onMessage0(AcknowledgeConsumer.java:83) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:176) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:109) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:246) at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:142) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:152) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) 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(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) 1 error |
Автор: | Amir [ 20 сен 2017, 17:39 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
sa.terminal.set.ipService.serv.cancel.1=/queue/simple/remove\n=numbers="${contractId()}" Может где-то по другому указано, с еще одним $, например ${$contractId()} ? |
Автор: | Amir [ 20 сен 2017, 17:47 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Повторили, смотрим. |
Автор: | Amir [ 20 сен 2017, 19:23 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Выложили обновление ядра, кавычки не правильно обрабатывались. Также в последнем макросе нужно указывать имя параметра в апострофах: ${loopServ('m_ipLoop', false, '')} |
Автор: | borisk [ 21 сен 2017, 12:23 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Всё лучше и лучше Теперь вопрос про опции. Сделано так: Код: sa.terminal.set.ipService.serv.inetOption.1.enable=/queue/simple/set\n=numbers=${contractId()}_${servId()}\n=max-limit=${param(option(),'mkt_max_limit','64K/64K')} Меняю опцию, вижу такие события: Код: mq 09-21/11:15:52 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet .api.server.event.InetServModifiedEvent] moduleId: 14; pluginId: no; cid: 2; scid: -1; userId: 2; timestamp: 15059745 52809 mq 09-21/11:15:52 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Reload InetServRuntime: 1800 mq 09-21/11:15:52 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Removing InetServRuntime: 1800 mq 09-21/11:15:52 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Adding InetServRuntime: 1800 mq 09-21/11:15:52 INFO [event-proc-p-2-t-1] InetServRuntimeMap - ContractId: 2; status: 0; servId: 1800 3844:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:7 Options [34:01.09.2017-01.01.1970; ] TariffModuleTreeSet [61:01.09.2009-…; ] Device state: 1; optionSet:10,29 connection 09-21/11:15:52 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Do task deviceId: 189; Event[ru.bitel.b gbilling.modules.inet.access.sa.event.InetSaServModifyEvent] moduleId: 14; pluginId: no; cid: 2; scid: -1; userId: -1 ; oldInetServ: 3844:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:7; newInetServ: 3844:SNR-S2960-24G: 00030F25FCC0 [172.16.3.1]:7; newInetServState: 1; newInetServOptionList: InetServOption [serviceId:1800; optionId:34; 01.09.2017-…]; timestamp: 1505974552812 connection 09-21/11:15:52 INFO [sa-p-13-t-79] InetApplication - contract tariffOptions: {} connection 09-21/11:15:52 INFO [sa-p-13-t-79] InetApplication - OptionSet: [34] connection 09-21/11:15:52 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Command result event: ServiceActivatorEvent type=2; inetServId: 1800; call: false; oldState: 1; newState: 1; oldOptionSet: 10,29; newOptionSet: 34 connection 09-21/11:15:52 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Processing deviceId:189; command ServiceActivatorEvent type=2; inetServId: 1800; call: false; oldState: 1; newState: 1; oldOptionSet: 10,29; newOptionSet: 34 connection 09-21/11:15:52 INFO [sa-p-13-t-79] ServiceActivatorSet - Invoking serviceModify connection 09-21/11:15:52 INFO [sa-p-13-t-79] TerminalServiceActivator - serviceModify connection 09-21/11:15:52 INFO [sa-p-13-t-79] TerminalServiceActivator - switchOptions connection 09-21/11:15:52 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Process event type[2] result=true connection 09-21/11:15:52 INFO [sa-p-13-t-79] ServiceActivatorDeviceWorker - Changing InetServ:1800 state and/or options mq 09-21/11:15:52 INFO [event-proc-p-2-t-1] InetServRuntimeMap - Caught event: Event[ru.bitel.bgbilling.modules.inet.access.event.InetServDeviceStateAndOptionsModifiedEvent] moduleId: 14; pluginId: no; cid: global; scid: -1; userId: -1; deviceId: 189; inetServId: 1800; state: -1000; optionSet: 34; timestamp: 1505974552816 Опция ID == 34 является потомком опции ID == 1. Но почему-то команды для установки опции не выполняются. Да, sa.terminal.set.ipService.serv.modify у меня пустой, но ведь раньше, с MikrotikServiceActivator всё это работало? Тут как-то изменилась логика? Как сейчас правильно делать? |
Автор: | Amir [ 25 сен 2017, 18:06 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Упустил последнее сообщение. Выложили обновление TerminalServiceActivator. |
Автор: | borisk [ 28 сен 2017, 14:30 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Спасибо. Продолжаем дальше Еще раз напоминаю мою конфигурацию: Код: m_ipLoop=,${net()} sa.terminal.set.ipService.serv.create.1=/queue/simple/add\n=name=${contractId()}_${servId()}\n=queue=ethernet-default/ethernet-default\n=target=127.0.0.1/32${loopServ('m_ipLoop', false, '')}\n=max-limit=${param(option(),'mkt_max_limit','64K/64K')} sa.terminal.set.ipService.serv.cancel.1=/queue/simple/remove\n=numbers=${contractId()}_${servId()} sa.terminal.set.ipService.serv.inetOption.1.enable=/queue/simple/set\n=numbers=${contractId()}_${servId()}\n=maxlimit=${param(option(),'mkt_max_limit','64K/64K')} Создаю основной сервис - всё создаётся хорошо: Цитата: connection 09-28/13:18:53 INFO [sa-p-13-t-50] TerminalServiceActivator - Connected to Mikrotik: RB3011-GGM-TAGNET [x.x.29.125:8728] connection 09-28/13:18:53 INFO [sa-p-13-t-50] TerminalServiceActivator - [Mikrotik: RB3011-GGM-TAGNET [x.x.29.125:8728]] execute: /queue/simple/add =name=2_1822 =queue=ethernet-default/ethernet-default =target=127.0.0.1/32 =max-limit=50M/50M connection 09-28/13:18:53 INFO [sa-p-13-t-50] TerminalServiceActivator - !done =ret=*21 connection 09-28/13:18:53 INFO [sa-p-13-t-50] TerminalServiceActivator - optionsEnable connection 09-28/13:18:53 INFO [sa-p-13-t-50] TerminalServiceActivator - switchOptions connection 09-28/13:18:53 INFO [sa-p-13-t-50] TerminalServiceActivator - [Mikrotik: RB3011-GGM-TAGNET [x.x.29.125:8728]] execute: /queue/simple/set =numbers=2_1822 =max-limit=50M/50M connection 09-28/13:18:53 INFO [sa-p-13-t-50] TerminalServiceActivator - !done Теперь добавляю дочерний сервис, в этом дочернем сервисе только ip. Получаю: Цитата: connection 09-28/13:19:51 INFO [sa-p-13-t-41] TerminalServiceActivator - Connected to Mikrotik: RB3011-GGM-TAGNET [x.x.29.125:8728]
connection 09-28/13:19:51 INFO [sa-p-13-t-41] TerminalServiceActivator - [Mikrotik: RB3011-GGM-TAGNET [x.x.29.125:8728]] execute: /queue/simple/remove =numbers=2_1822 connection 09-28/13:19:51 INFO [sa-p-13-t-41] TerminalServiceActivator - !done connection 09-28/13:19:51 ERROR [sa-p-13-t-41] AcknowledgeConsumer - Error on device:189 - java.lang.NullPointerException ru.bitel.bgbilling.common.BGException: Error on device:189 - java.lang.NullPointerException at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:504) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTaskImpl(AsyncEventWorker.java:211) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.notify(AsyncEventWorker.java:201) at ru.bitel.bgbilling.kernel.event.AcknowledgeConsumer.onMessage0(AcknowledgeConsumer.java:83) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.internalDoTask(AsyncEventWorker.java:176) at ru.bitel.bgbilling.kernel.event.AsyncEventWorker.doTasks(AsyncEventWorker.java:109) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runWorker(ServiceActivatorDeviceWorker.java:246) at ru.bitel.bgbilling.kernel.event.EventWorker.internalRunWorker(EventWorker.java:142) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.runImpl(ServiceActivatorDeviceWorker.java:152) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) 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(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:748) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:46) Caused by: java.lang.NullPointerException at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.invoke(TerminalServiceActivator.java:1066) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator$TGroovyMacro.invoke(TerminalServiceActivator.java:231) at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:233) at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:158) at Script1$_run_closure1.doCall(Script1.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) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) at ru.bitel.common.groovy.MetaClassDelegate.invokeMethod(MetaClassDelegate.java:107) at ru.bitel.common.groovy.GroovyMacro$MacroMetaClassDelegate.invokeMethod(GroovyMacro.java:228) at groovy.lang.Closure.call(Closure.java:414) at ru.bitel.common.groovy.GroovyMacro.eval(GroovyMacro.java:200) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:673) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.executeCommands(TerminalServiceActivator.java:651) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceCreate(TerminalServiceActivator.java:1930) at ru.bitel.bgbilling.modules.inet.dyn.device.terminal.TerminalServiceActivator.serviceModify(TerminalServiceActivator.java:1992) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorSet.serviceModify(ServiceActivatorSet.java:413) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doCommand(ServiceActivatorDeviceWorker.java:527) at ru.bitel.bgbilling.modules.inet.access.sa.ServiceActivatorDeviceWorker.doTask(ServiceActivatorDeviceWorker.java:500) ... 17 more connection 09-28/13:19:51 INFO [sa-p-13-t-41] ServiceActivatorSet - Disconnecting from device connection 09-28/13:19:51 INFO [sa-p-13-t-41] TerminalSession$TelnetTerminalSession - sendCommand: exit connection 09-28/13:19:51 INFO [sa-p-13-t-41] ServiceActivatorDeviceWorker - Execution error - waiting 60000ms for next try. |
Автор: | Amir [ 28 сен 2017, 17:11 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Это вся текущая конфигурация? |
Автор: | Amir [ 28 сен 2017, 18:37 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Выложили обновление ядра, была проблема во вложенных вызовах loopServ. |
Автор: | borisk [ 03 окт 2017, 21:43 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Великолепно! Спасибо! Остался один ньюанс - loopServ не учитывает периоды активности дочерних сервисов. Можно всё же сделать чтобы учитывал? Я пока реализовал так: Код: else if( "loopServ".equals( macros ) ) { String macr = AbstractTerminalServiceActivator.this.config.get( getString( args, 0, "n_2356" ), null ); if( Utils.isEmptyString( macr ) ) { return ""; } boolean needParent = Utils.parseBoolean( getString( args, 1, "false" ) ); boolean exec = Utils.parseBoolean( getString( args, 2, "false" ) ); Date today = new Date(); final InetServ serv = (InetServ)globalArgs[1]; if( exec ) { if( needParent ) { try { executeCommand0( macr, (ServiceActivatorEvent)globalArgs[0], serv, (InetConnection)globalArgs[2], (Set<Integer>)globalArgs[3] ); } catch( Exception e ) { throw new BGRuntimeException( e ); } } final List<InetServ> children = serv.getChildren(); if( children != null && children.size() > 0 ) { for( InetServ child : children ) { if(!TimeUtils.dateInRange(today, child.getDateFrom(), child.getDateTo())) continue; try { executeCommand0( macr, (ServiceActivatorEvent)globalArgs[0], child, (InetConnection)globalArgs[2], (Set<Integer>)globalArgs[3] ); } catch( Exception e ) { throw new BGRuntimeException( e ); } } } return ""; } else { StringBuilder sb = new StringBuilder(); if( needParent ) { //getValue( (ServiceActivatorEvent)globalArgs[0], (InetServ)globalArgs[1], (InetConnection)globalArgs[2], (Set<Integer>)globalArgs[3], macros, args, globalArgs ); Object[] globalArgs2 = Arrays.copyOf( globalArgs, globalArgs.length ); globalArgs[1] = serv; sb.append( this.format( macr, globalArgs ) ); } final List<InetServ> children = serv.getChildren(); if( children != null && children.size() > 0 ) { for( InetServ child : children ) { if(!TimeUtils.dateInRange(today, child.getDateFrom(), child.getDateTo())) continue; //getValue( (ServiceActivatorEvent)globalArgs[0], (InetServ)globalArgs[1], (InetConnection)globalArgs[2], (Set<Integer>)globalArgs[3], macros, args, globalArgs ); Object[] globalArgs2 = Arrays.copyOf( globalArgs, globalArgs.length ); globalArgs[1] = child; sb.append( this.format( macr, globalArgs ) ); } } return sb.toString(); } } Но вы как-то писали, что есть еще один ньюанс - система самостоятельно не отслеживает начало/конец периода. Но может быть можно это реализовать в задаче "активация/деактивация сервисов"? |
Автор: | borisk [ 10 окт 2017, 10:18 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Идея не мила сердцам разработчиков? |
Автор: | Amir [ 10 окт 2017, 21:43 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Не отслеживает начало/конец периода дочерних сервисов - да. Пока не выглядит просто - надо подумать. Или отдельную задачу, которая должна будет запускаться только раз в день и отслеживать, что вчера/сегодня что-то в дочерних сервисах закрылось/открылось. Или добавлять поддержку состояний для дочерних сервисов, что логичней, но сложнее. Вроде такое есть в модуле ТВ. |
Автор: | borisk [ 10 окт 2017, 22:04 ] |
Заголовок сообщения: | Re: [7.0] TerminalServiceActivator |
Ну добавьте в свой волшебный TODO А то ведь нелогично. Выделяешь пользователю адреса, забираешь, а в шейперах или еще где - ничего не поменяется. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |