forum.bitel.ru http://forum.bitel.ru/ |
|
manad & ipfw http://forum.bitel.ru/viewtopic.php?f=7&t=7032 |
Страница 1 из 1 |
Автор: | Andr-232 [ 01 авг 2012, 18:06 ] |
Заголовок сообщения: | manad & ipfw |
Столкнулся недавно с такой проблемкой... Делаю проверку шлюзов ipn. Задача запускается, через некоторое время в планировщике заданий все проходит без ошибок. На шлюзе наблюдаю как идет опрос, добавляются/удаляются правила... Через пару минут на почту администратора приходит сообщение "ошибка шлюзов ipn"... Пробовал "чистый" шлюз (freebsd 9, только загруженный, клиентов нет). Запускаю задачу чтобы восстановить (прописать) на нем активных клиентов. После завершения - часть клиентов действительно "появляется" на шлюзе, но не все, а только часть. При ручном "передергивании" шлюза клиентам, которые должны быть, но не оказались на шлюзе, все Ок, клиенты появляются. В чем может быть причина? manad под freebsd с поддержкой табличек. Update: Сервер: вер. 5.1 сборка 773 от 07.03.2012 16:09:07 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_29 |
Автор: | stark [ 02 авг 2012, 18:26 ] |
Заголовок сообщения: | Re: manad & ipfw |
А логах шедулера ошибок нет? Дайте точный текст сообщения |
Автор: | Andr-232 [ 03 авг 2012, 13:15 ] |
Заголовок сообщения: | Re: manad & ipfw |
Запустил задачу. Вот логи: Sheduler.log Код: 08-03/10:52:14 INFO [Thread-9] TaskRunProcessor - Running Task: bitel.billing.server.ipn.IPNTestGates 08-03/10:52:14 INFO [pool-1-thread-15] IPNTestGates - start task id => 5 at time 03.08.2012 10 08-03/10:52:18 INFO [pool-11-thread-2] ManadGateWorker - Running script 08-03/10:52:18 INFO [pool-11-thread-8] ManadGateWorker - Running script 08-03/10:52:18 INFO [pool-11-thread-2] ManadGateWorker - I test Manad 08-03/10:52:18 INFO [pool-11-thread-8] ManadGateWorker - I test Manad 08-03/10:52:18 INFO [pool-11-thread-2] ManadGateWorker - 5 Test => 559-1 1588-5 32-3 565-1 560-3 937-3 532-4 580-1 1387-3 194-3 424-3 163-7 994-3 2288-7 722-3 89-3 1021-5 2365-8 35-3 11-3 1550-3 208-3 978-3 665-3 742-3 572-1 968-3 114-3 153-3 211-3 15-3 684-8 1577-5 2387-7 689-3 382-3 337-3 101-3 2236-8 1924-3 833-3 982-3 1329-3 198-3 489-3 2379-7 727-3 1345-3 320-3 732-3 966-3 2314-7 992-3 957-3 236-3 1954-3 706-3 218-3 135-3 348-3 2333-8 2381-7 2375-8 858-5 1876-6 104-3 131-3 985-3 154-3 23-3 1872-3 479-3 2339-8 2114-9 326-3 160-3 1015-1 47-3 8-3 716-5 98-3 1992-3 1061-3 43-3 5-3 2054-8 21-3 2176-8 1957-2 680-3 2377-8 1270-3 2129-8 586-8 1460-3 180-3 1923-3 74-2 1138-3 1289-3 2374-7 536-5 201-3 1741-7 901-3 113-3 1266-3 1319-3 1529-3 91-3 579-1 2137-9 107-3 2385-4 87-7 701-6 77-3 174-3 2189-8 563-1 97-3 2378-9 41-3 573-8 910-3 237-3 370-3 188-3 68-3 2371-8 116-3 136-3 338-3 144-3 2366-8 1947-3 100-2 576-8 965-3 616-1 25-3 2270-7 286-3 83-3 1935-8 928-3 2386-10 544-5 1407-5 177-3 1512-3 1644-3 2382-8 607-2 143-3 628-1 22-3 42-3 46-3 1685-3 399-3 1309-3 733-3 6-3 562-9 436-3 1497-6 213-3 2269-7 183-2 1260-2 608-2 1542-3 1234-3 171-3 836-2 2258-7 2174-8 2043-8 2177-8 407-3 1888-8 2029-8 1457-3 2349-8 1339-3 376-3 44-2 587-1 27-3 582-9 2343-8 20-5 243-3 109-3 1310-3 2376-9 779-3 151-3 1977-2 981-5 1825-3 78-3 987-3 413-3 990-3 2316-8 1140-3 106-3 707-3 157-3 515-5 203-3 138-9 1107-3 1383-3 81-3 137-3 60-3 792-3 17-3 1753-8 82-3 147-3 2202-8 1154-3 1291-8 69-3 596-1 1986-5 2388-8 187-3 588-1 1043-6 974-3 79-3 212-7 1668-3 494-6 577-2 996-2 1137-3 2346-8 1104-10 1548-3 176-3 1575-2 117-3 574-1 1941-8 33-3 1540-3 428-3 80-3 977-3 99-3 1120-3 821-3 566-3 179-3 2132-8 1187-3 963-3 2022-8 182-3 2031-8 462-3 980-3 207-3 142-3 929-3 514-5 1736-7 995-3 133-3 592-8 2246-8 547-4 1519-3 56-3 66-3 19-3 1272-3 54-3 1151-3 353-1 166-3 575-1 570-8 1566-2 2384-8 979-3 128-3 2089-7 156-3 589-1 2087-8 687-3 1998-8 1617-3 2247-8 626-1 900-3 1863-3 583-1 105-3 1879-8 3-3 809-3 597-1 2380-8 146-3 111-3 1486-3 38-3 4-7 591-1 745-3 34-3 2304-8 164-3 539-5 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - Eval error2: TargetError TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - java.lang.RuntimeException: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask.run(FutureTask.java:138) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - Caused by: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:161) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - ... 8 more 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - Gate unaccesible - x.x.x.x 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - ------------------------- 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - error: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 java.lang.RuntimeException: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) ... 8 more sheduler.error.log: Код: scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - Eval error2: TargetError TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - java.lang.RuntimeException: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask.run(FutureTask.java:138) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - Caused by: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:161) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] LoggingPrintStream - ... 8 more scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - Gate unaccesible - x.x.x.x scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - ------------------------- scheduler 08-03/10:52:18 ERROR [pool-11-thread-2] ManadGateWorker - error: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 java.lang.RuntimeException: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: TargetError : at Line: 112 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) ... 8 more В sheduler.out, sheduler.mq.log ошибок никаких нет. |
Автор: | skyb [ 03 авг 2012, 13:18 ] |
Заголовок сообщения: | Re: manad & ipfw |
тег CODE же |
Автор: | Andr-232 [ 03 авг 2012, 13:47 ] |
Заголовок сообщения: | Re: manad & ipfw |
Прошу прощения, поторопился. |
Автор: | stark [ 06 авг 2012, 13:03 ] |
Заголовок сообщения: | Re: manad & ipfw |
уберите try catch и снова получите ошибку . Так не понятно где конкретно упало |
Автор: | Andr-232 [ 07 авг 2012, 12:42 ] |
Заголовок сообщения: | Re: manad & ipfw |
stark писал(а): уберите try catch и снова получите ошибку . Так не понятно где конкретно упало В манаде нет такой структуры. Или ее надо убрать на стороне сервера?... |
Автор: | Andr-232 [ 07 авг 2012, 17:07 ] |
Заголовок сообщения: | Re: manad & ipfw |
stark писал(а): уберите try catch и снова получите ошибку . Так не понятно где конкретно упало Ок, выключил, вот вывод sheduler.error.log: Код: scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] ManadGateWorker - Eval error2: Method Invocation rule.substring
Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:186) at bsh.Name.invokeLocalMethod(Name.java:917) at bsh.Name.invokeMethod(Name.java:804) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHForStatement.eval(BSHForStatement.java:111) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - java.lang.RuntimeException: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask.run(FutureTask.java:138) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - Caused by: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHAssignment.eval(BSHAssignment.java:77) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:186) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.Name.invokeLocalMethod(Name.java:917) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.Name.invokeMethod(Name.java:804) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHAssignment.eval(BSHAssignment.java:77) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHForStatement.eval(BSHForStatement.java:111) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:161) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] LoggingPrintStream - ... 8 more scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] ManadGateWorker - Gate unaccesible - x.x.x.x scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] ManadGateWorker - ------------------------- scheduler 08-07/14:55:05 ERROR [pool-3-thread-2] ManadGateWorker - error: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 java.lang.RuntimeException: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:186) at bsh.Name.invokeLocalMethod(Name.java:917) at bsh.Name.invokeMethod(Name.java:804) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHForStatement.eval(BSHForStatement.java:111) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) ... 8 more |
Автор: | stark [ 09 авг 2012, 13:58 ] |
Заголовок сообщения: | Re: manad & ipfw |
выложите еще текст скрипта(BeanShell) манада |
Автор: | Andr-232 [ 09 авг 2012, 14:48 ] |
Заголовок сообщения: | Re: manad & ipfw |
Скрипт не на BeanShell, а на Perl-е. Код: #!/usr/bin/perl use POSIX; use IO::Socket; use IO::Select; use Socket; use Fcntl; use Tie::RefHash; $debug = 1; $port = 4445; $ipfw = "/sbin/ipfw"; $rule_start = 35000; #$pipe_start = 800; $set = 10; # База данных правил клиентов %CLRULE = (); %CLRULE_ID = (); # База данных используемых номеров правил %USERULEN = (); %CLUSERULEN = (); # База данных используемых номеров труб %USEPIPEN = (); %CLUSEPIPEN = (); # Начать с пустыми буферами %inbuffer = (); %outbuffer = (); %ready = (); tie %ready, 'Tie::RefHash'; # Прослушивать порт $server = IO::Socket::INET->new( LocalPort => $port, Listen => 10 ) or die "Can`t make server socket: $@\n"; nonblock( $server ); $SIG{INT} = sub { $server->close(); exit( 0 ); }; $select = IO::Select->new( $server ); $pid = getpid(); open(FILE, ">/var/run/manad.pid"); print FILE $pid; close(FILE); # Устанавливаем новый root каталог для процесса # chroot( $homedir ) or die "Couldn`t chroot to $homedir: $!\n"; # Главный цикл: проверка чтения/принятия, проверка записи, # проверка готовности к работе while( 1 ) { my $client; my $rv; my $data; # Проверить наличие новой информации на имеющихся подключениях # Есть ли что-нибудь для чтения или подтверждения? foreach $client ( $select->can_read( 1 ) ) { if ( $client == $server ) { # Принять новое подключение $client = $server->accept(); $select->add( $client ); nonblock( $client ); } else { # Прочитать данные $data = ''; $rv = $client->recv( $data, POSIX::BUFSIZ, 0 ); unless( defined( $rv ) && length $data ) { # Это должен быть конец файла, поэтому закрываем клиента delete $inbuffer{$client}; delete $outbuffer{$client}; delete $ready{$client}; $select->remove( $client ); close $client; next; } $inbuffer{$client} .= $data; # Проверить, говорят ли данные в буфере или только что прочитанные # данные о наличии полного запроса, ожидающего выполнения. Если да - # заполнить $ready{$client} запросами, ожидающими обработки. while( $inbuffer{$client} =~ s/(.*\n)// ) { push( @{$ready{$client}}, $1 ) } } } # Есть ли полные запросы для обработки? foreach $client ( keys %ready ) { handle( $client ); } # Сбрасываем буферы? foreach $client ( $select->can_write( 1 ) ) { # Пропустить этого слиента, если нам нечего сказать next unless $outbuffer{$client}; block( $client ); $rv = $client->send( $outbuffer{$client}, 0 ); nonblock( $client ); unless( defined $rv ) { # Пожаловаться, но следовать дальше warn "I was told I could write? but I can`t.\n"; next; } if ( $rv == length $outbuffer{$client} || $! == POSIX::EWOULDBLOCK ) { substr( $outbuffer{$client}, 0, $rv ) = ''; delete $outbuffer{$client} unless length $outbuffer{$client}; } else { # Не удалось записать все данные и не из-за блокировки. # Очистить буферы и следовать дальше. delete $inbuffer{$client}; delete $outbuffer{$client}; delete $ready{$client}; $select->remove($client); close($client); next; } } } # handle( $socket ) обрабатывает все необработанные запросы # для клиента $client sub handle { # Запрос находится в $ready{$client} # Отправить вывод в $outbuffer{$client} my $client = shift; my $request; foreach $request ( @{$ready{$client}} ) { print "\nrequest=".$request if ( $debug == 1 ); if ( $request =~ /^testRID/ ) { my $open_client = ""; foreach my $kod ( keys %CLRULE ) { $open_client .= $open_client eq "" ? $kod : " ".$kod; ($CLRULE_ID{$kod} ne "")?$open_client.="-".$CLRULE_ID{$kod}:""; } $outbuffer{$client} .= $open_client."\n"; } elsif ( $request =~ /^test/ ) { my $open_client = ""; foreach my $kod ( keys %CLRULE ) { $open_client .= $open_client eq "" ? $kod : " ".$kod;} $outbuffer{$client} .= $open_client."\n"; } elsif ( $request =~ /^add\t([0-9]+)\t(.*)/ ) { my ($skip,$rid)=split /RULE/,$2; print "\n=rule".$rid."\n" if ( $debug == 1 ); my ($kod, $rule) = ($1, $2); &delete_rule( $kod ) if ( exists $CLRULE{$kod} ); &add_rule( $kod, $rule,$rid ) if ( !exists $CLRULE{$kod} ); } elsif ( $request =~ /^remove\t([0-9]+)\t(.*)/ ) { &delete_rule( $1,$2 ) if ( exists $CLRULE{$1} ); } } delete $ready{$client}; } # nonblock( $socket ) переводит сокет в неблокирующий режим sub nonblock { my $socket = shift; my $flags; $flags = fcntl( $socket, F_GETFL, 0 ) or die "Can`t get flags for socket: $!\n"; fcntl( $socket, F_SETFL, $flags | O_NONBLOCK ) or die "Can`t make socket nonblocking: $!\n"; } sub block { my $socket = shift; my $flags; $flags = fcntl( $socket, F_GETFL, 0 ) or die "Can`t get flags for socket: $!\n"; fcntl( $socket, F_SETFL, $flags ^ O_NONBLOCK ) or die "Can`t make socket nonblocking: $!\n"; } sub add_rule { my $kod = $_[0]; my $rule = $_[1]; my $rid = $_[2]; my %N = (); my %P = (); $CLRULE{$kod} = $rule; $CLRULE_ID{$kod} = $rid; while ( $rule =~ /\{N([AB0-9]+)\}/ ) { my $n = $1; my $i = $rule_start - 1; my $j = 0; while( 1 ) { while( 1 ) { $i++; last if ( !exists $USERULEN{$i} ); } $j++; last if ( $j == $n ); last if ( $n == 0 ); } $USERULEN{$i} = $kod; $N{$n} = $i; $rule =~ s/\{N$n\}/$N{$n}/g; } # while ( $rule =~ /\{P([AB0-9]+)\}/ ) # { # my $p = $1; # my $i = $pipe_start - 1; # my $j = 0; # while( 1 ) # { # while( 1 ) # { # $i++; # last if ( !exists $USEPIPEN{$i} ); # } # $j++; # last if ( $j == $p ); # last if ( $p == 0 ); # } # $USEPIPEN{$i} = $kod; # $P{$p} = $i; # $rule =~ s/\{P$p\}/$P{$p}/g; # } foreach my $i ( keys %N ) { $CLUSERULEN{$kod} .= exists $CLUSERULEN{$kod} && $CLUSERULEN{$kod} ne "" ? " ".$N{$i} : $N{$i}; } # foreach my $i ( keys %P ) { $CLUSEPIPEN{$kod} .= exists $CLUSEPIPEN{$kod} && $CLUSEPIPEN{$kod} ne "" ? " ".$P{$i} : $P{$i}; } # $rule =~ s/\|pipe/; \/sbin\/ipfw -q pipe /g; $rule =~ s/\|table/; \/sbin\/ipfw -q table /g; $rule =~ s/\|add ([0-9]+)/; \/sbin\/ipfw -q add $1 set $set /g; # $rule =~ s/^pipe/\/sbin\/ipfw -q pipe /g; $rule =~ s/^table/\/sbin\/ipfw -q table /g; $rule =~ s/^add ([0-9]+)/\/sbin\/ipfw -q add $1 set $set /g; $rule =~ s/\|/;/g; # print "$ipfw -q $rule\n" if ( $debug == 1 ); # $err = `$ipfw -q $rule`; print "$rule\n" if ( $debug == 1 ); $err = `$rule`; } sub delete_rule { my $kod = $_[0]; my $rule= $_[1]; if ( exists $CLRULE{$kod} ) { $rule =~ s/\|table/; \/sbin\/ipfw -q table /g; $rule =~ s/^table/\/sbin\/ipfw -q table /g; $rule =~ s/\|/;/g; # print "$ipfw -q $rule\n" if ( $debug == 1 ); # $err = `$ipfw -q $rule`; print "$rule\n" if ( $debug == 1 ); $err = `$rule`; my @N = split( / /, $CLUSERULEN{$kod} ); foreach my $i ( @N ) { print "$ipfw delete $i\n" if ( $debug == 1 ); $err = `$ipfw delete $i`; delete $USERULEN{$i}; } my @P = split( / /, $CLUSEPIPEN{$kod} ); foreach my $i ( @P ) { print "$ipfw pipe delete $i\n" if ( $debug == 1 ); # $err = `$ipfw pipe delete $i`; # delete $USEPIPEN{$i}; } delete $CLUSERULEN{$kod}; # delete $CLUSEPIPEN{$kod}; delete $CLRULE_ID{$kod}; delete $CLRULE{$kod}; } }. Скрипт был взят с этого форума, "переделанный под работу с табличками". Шейпер реализован другими методами, поэтому выкинут из скрипта. Такой же скрипт работает на другом шлюзе с freebsd, там проблем нет, но клиентов там на сейчас немного меньше. Этот скрипт тоже работал "как надо", проблемы начались после "перехода" какого-то количества клиентских записей, привязанных к шлюзу. Лично у меня сложилось такое ощущение, что не хватает каких-то буферов (может на прием на шлюзе, может на передачу, на сервере), - при запуске задачи "проверка шлюзов ipn" на "проблемном" шлюзе наблюдаю, что он начал обрабатывать запросы с сервера(БГ), но на каком-то этапе его "клинит"... |
Автор: | stark [ 09 авг 2012, 15:09 ] |
Заголовок сообщения: | Re: manad & ipfw |
да нет , нужен именно скрипт из биллинга на BeanShell. Из типа шлюза. Ошибку то то он выдает , а не perl . |
Автор: | Andr-232 [ 09 авг 2012, 15:14 ] |
Заголовок сообщения: | Re: manad & ipfw |
Он вообще "дефолтный": Код: import java.io.*;
import java.net.*; import java.util.*; import bitel.billing.common.module.ipn.*; import bitel.billing.server.ipn.bean.*; import ru.bitel.bgbilling.modules.ipn.server.bean.command.*; protected void doSync() { host = gate.getHost(); port = gate.getPort(); gid = gate.getId(); if ( log.isDebugEnabled() ) { log.debug( gid + " gate: " + host + ":" + port ); } // try // { socket = new Socket( host, port ); out = new PrintWriter( socket.getOutputStream(), true ); isr = new InputStreamReader( socket.getInputStream() ); in = new BufferedReader( isr ); log.info("I test Manad"); out.println( "testRID" ); kods = in.readLine(); if ( log.isDebugEnabled() ) { log.debug( gid + " Test => " + kods + "\n" ); } log.info( gid + " Test => " + kods + "\n" ); // список открытых договоров с шлюза gateRules = new HashMap( 5, 5 ); st = new StringTokenizer( kods ); while ( st.hasMoreTokens() ) { sp=st.nextToken().split("-"); if(sp.length==2) gateRules.put( new Integer( sp[0] ),(sp[1]==null)?null:new Integer(sp[1]) ); else gateRules.put( new Integer( sp[0] ),null); } for( i = 0; i < statusList.size(); i++ ) { status = statusList.get(i); cid = status.contractId; // флаг того то правило есть на шлюзе flag = false; ruleChanged=false; // правило для этого договора есть на шлюзе if ( gateRules.containsKey( cid ) ) { // если правило есть а юзер заблокирован - удаляем правило if ( status.status > 0 ) { rule = generateRule( status ,false); command = "remove\t" + cid.intValue() + "\t" + rule; out.println( command ); if ( log.isDebugEnabled() ) { log.debug( gid + " " + command ); } log.info( gid + " " + command ); }else{ // правило есть и юзер открыт - проверяем тип правила rid=gateRules.get(cid); if(rid!=null && status.ruleType==null) ruleChanged=true; if(rid==null && status.ruleType!=null) ruleChanged=false; // совместимость со старым manad if(rid!=null && status.ruleType!=null && !rid.equals(status.ruleType.getId())) ruleChanged=true; if(ruleChanged){ if ( log.isDebugEnabled() ) { log.debug( gid + " rule changed"); } log.info( gid + " rule changed"); } } flag = true; gateRules.remove( cid ); } // правила нет, а юзер открыт, правило есть, но было изменение типа правила if ( (!flag && status.status == IPNContractStatus.STATUS_OPEN ) ||(ruleChanged && status.status == IPNContractStatus.STATUS_OPEN )) { rule = generateRule( status, true); command = "add\t" + cid.intValue() + "\t" + rule; // в случае изменения manad затрет старые правила ipfw if( status.ruleType != null ) command+=" // RULE"+status.ruleType.getId(); out.println( command ); if ( log.isDebugEnabled() ) { log.debug( gid + " " + command ); } log.info( gid + " " + command ); } } in.close(); out.close(); socket.close(); /* } catch ( e ) { throw new RuntimeException ( e ); } */} private generateRule( status ,open) { rule = null; // пользовательское правило, без типа if( status.ruleType == null ) { rule = status.rule.getRuleText(); } // типизированное правило else { ruleText = GateCommandUtil.getRule( status.gateType, status.ruleType ); rule = GateCommandUtil.generateRule( ruleText, status.rule.getRuleText(), null, status.ruleType ); } rule = rule.replaceAll( "\r", "" ); rule = rule.replaceAll( "\n", "|" ); if(open){ ib=rule.indexOf("[OPEN]")+7; ie=rule.indexOf("[/OPEN]")-1; if(ib>-1&&ie>-1) rule=rule.substring(ib,ie); }else{ ib=rule.indexOf("[CLOSE]")+8; ie=rule.indexOf("[/CLOSE]")-1; if(ib>-1&&ie>-1) rule=rule.substring(ib,ie); } return rule; } |
Автор: | stark [ 09 авг 2012, 17:32 ] |
Заголовок сообщения: | Re: manad & ipfw |
Andr-232 писал(а): Он вообще "дефолтный": Он выложен на wiki одним из наших пользователей . Даже не знаю можно ли назвать это дефолтным. Вот в этом коде ошибка Код: ib=rule.indexOf("[OPEN]")+7; ie=rule.indexOf("[/OPEN]")-1; if(ib>-1&&ie>-1) rule=rule.substring(ib,ie); У вас что стоит в командах шлюза ? Секция [OPEN]..[/OPEN] там есть ? |
Автор: | Andr-232 [ 09 авг 2012, 20:32 ] |
Заголовок сообщения: | Re: manad & ipfw |
stark писал(а): Andr-232 писал(а): Он вообще "дефолтный": Он выложен на wiki одним из наших пользователей . Даже не знаю можно ли назвать это дефолтным. Да, все верно, беру свои слова обратно. Думал брал его в справке к программе, даже проверил... stark писал(а): У вас что стоит в командах шлюза ? Секция [OPEN]..[/OPEN] там есть ? Вот команды шлюза: Код: [DEFAULT]
[OPEN] <LOOP> table ${speed} delete {A} table ${speed} add {A} table 1 list </LOOP> [/OPEN] [CLOSE] <LOOP> table ${speed} delete {A} </LOOP> [/CLOSE] [/DEFAULT] |
Автор: | stark [ 10 авг 2012, 10:24 ] |
Заголовок сообщения: | Re: manad & ipfw |
попробуйте в этом месте Код: ib=rule.indexOf("[OPEN]")+7; ie=rule.indexOf("[/OPEN]")-1; if(ib>-1&&ie>-1) rule=rule.substring(ib,ie); сделать такой вывод Код: ib=rule.indexOf("[OPEN]")+7; ie=rule.indexOf("[/OPEN]")-1; log.info( "rule=" + rule +";ib=" + ib + ";ie=" + ie ); if(ib>-1&&ie>-1) rule=rule.substring(ib,ie); и полученную строку из лога сюда |
Автор: | Andr-232 [ 10 авг 2012, 13:16 ] |
Заголовок сообщения: | Re: manad & ipfw |
Вот sheduler.error.log: Код: scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] ManadGateWorker - Eval error2: Method Invocation rule.substring
Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:186) at bsh.Name.invokeLocalMethod(Name.java:917) at bsh.Name.invokeMethod(Name.java:804) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHForStatement.eval(BSHForStatement.java:111) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - java.lang.RuntimeException: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask.run(FutureTask.java:138) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - Caused by: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHAssignment.eval(BSHAssignment.java:77) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:186) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.Name.invokeLocalMethod(Name.java:917) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.Name.invokeMethod(Name.java:804) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHAssignment.eval(BSHAssignment.java:77) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHForStatement.eval(BSHForStatement.java:111) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:161) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] LoggingPrintStream - ... 8 more scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] ManadGateWorker - Gate unaccesible - x.x.x.x scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] ManadGateWorker - ------------------------- scheduler 08-10/11:06:13 ERROR [pool-3-thread-2] ManadGateWorker - error: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 java.lang.RuntimeException: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: Method Invocation rule.substring : at Line: 139 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:186) at bsh.Name.invokeLocalMethod(Name.java:917) at bsh.Name.invokeMethod(Name.java:804) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHForStatement.eval(BSHForStatement.java:111) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) ... 8 more |
Автор: | stark [ 14 авг 2012, 15:03 ] |
Заголовок сообщения: | Re: manad & ipfw |
у вас до этого ругалось на 139 строчке, сейчас опять ругается на этой же строчке . Значит вы скрипт не поменяли. Он должен вывести "rule=...", потом ругаться . |
Автор: | Andr-232 [ 14 авг 2012, 21:13 ] |
Заголовок сообщения: | Re: manad & ipfw |
Уппс, ошибочка вышла. Вот текст скрипта: Код: import java.io.*; import java.net.*; import java.util.*; import bitel.billing.common.module.ipn.*; import bitel.billing.server.ipn.bean.*; import ru.bitel.bgbilling.modules.ipn.server.bean.command.*; protected void doSync() { host = gate.getHost(); port = gate.getPort(); gid = gate.getId(); if ( log.isDebugEnabled() ) { log.debug( gid + " gate: " + host + ":" + port ); } // try // { socket = new Socket( host, port ); out = new PrintWriter( socket.getOutputStream(), true ); isr = new InputStreamReader( socket.getInputStream() ); in = new BufferedReader( isr ); log.info("I test Manad"); out.println( "testRID" ); kods = in.readLine(); if ( log.isDebugEnabled() ) { log.debug( gid + " Test => " + kods + "\n" ); } log.info( gid + " Test => " + kods + "\n" ); // список открытых договоров с шлюза gateRules = new HashMap( 5, 5 ); st = new StringTokenizer( kods ); while ( st.hasMoreTokens() ) { sp=st.nextToken().split("-"); if(sp.length==2) gateRules.put( new Integer( sp[0] ),(sp[1]==null)?null:new Integer(sp[1]) ); else gateRules.put( new Integer( sp[0] ),null); } for( i = 0; i < statusList.size(); i++ ) { status = statusList.get(i); cid = status.contractId; // флаг того то правило есть на шлюзе flag = false; ruleChanged=false; // правило для этого договора есть на шлюзе if ( gateRules.containsKey( cid ) ) { // если правило есть а юзер заблокирован - удаляем правило if ( status.status > 0 ) { rule = generateRule( status ,false); command = "remove\t" + cid.intValue() + "\t" + rule; out.println( command ); if ( log.isDebugEnabled() ) { log.debug( gid + " " + command ); } log.info( gid + " " + command ); }else{ // правило есть и юзер открыт - проверяем тип правила rid=gateRules.get(cid); if(rid!=null && status.ruleType==null) ruleChanged=true; if(rid==null && status.ruleType!=null) ruleChanged=false; // совместимость со старым manad if(rid!=null && status.ruleType!=null && !rid.equals(status.ruleType.getId())) ruleChanged=true; if(ruleChanged){ if ( log.isDebugEnabled() ) { log.debug( gid + " rule changed"); } log.info( gid + " rule changed"); } } flag = true; gateRules.remove( cid ); } // правила нет, а юзер открыт, правило есть, но было изменение типа правила if ( (!flag && status.status == IPNContractStatus.STATUS_OPEN ) ||(ruleChanged && status.status == IPNContractStatus.STATUS_OPEN )) { rule = generateRule( status, true); command = "add\t" + cid.intValue() + "\t" + rule; // в случае изменения manad затрет старые правила ipfw if( status.ruleType != null ) command+=" // RULE"+status.ruleType.getId(); out.println( command ); if ( log.isDebugEnabled() ) { log.debug( gid + " " + command ); } log.info( gid + " " + command ); } } in.close(); out.close(); socket.close(); /* } catch ( e ) { throw new RuntimeException ( e ); } */} private generateRule( status ,open) { rule = null; // пользовательское правило, без типа if( status.ruleType == null ) { rule = status.rule.getRuleText(); } // типизированное правило else { ruleText = GateCommandUtil.getRule( status.gateType, status.ruleType ); rule = GateCommandUtil.generateRule( ruleText, status.rule.getRuleText(), null, status.ruleType ); } rule = rule.replaceAll( "\r", "" ); rule = rule.replaceAll( "\n", "|" ); if(open){ ib=rule.indexOf("[OPEN]")+7; ie=rule.indexOf("[/OPEN]")-1; log.info( "rule=" + rule +";ib=" + ib + ";ie=" + ie ); if(ib>-1&&ie>-1) rule=rule.substring(ib,ie); }else{ ib=rule.indexOf("[CLOSE]")+8; ie=rule.indexOf("[/CLOSE]")-1; log.info( "rule=" + rule +";ib=" + ib + ";ie=" + ie ); if(ib>-1&&ie>-1) rule=rule.substring(ib,ie); } return rule; } Вот вывод sheduler.error.log: Код: scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] ManadGateWorker - Eval error2: Method Invocation rule.substring
Method Invocation rule.substring : at Line: 140 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:186) at bsh.Name.invokeLocalMethod(Name.java:917) at bsh.Name.invokeMethod(Name.java:804) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHForStatement.eval(BSHForStatement.java:111) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - java.lang.RuntimeException: Method Invocation rule.substring : at Line: 140 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.FutureTask.run(FutureTask.java:138) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at java.lang.Thread.run(Thread.java:662) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - Caused by: Method Invocation rule.substring : at Line: 140 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHAssignment.eval(BSHAssignment.java:77) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:186) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.Name.invokeLocalMethod(Name.java:917) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.Name.invokeMethod(Name.java:804) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHAssignment.eval(BSHAssignment.java:77) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHForStatement.eval(BSHForStatement.java:111) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:161) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] LoggingPrintStream - ... 8 more scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] ManadGateWorker - Gate unaccesible - x.x.x.x scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] ManadGateWorker - ------------------------- scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] ManadGateWorker - error: Method Invocation rule.substring : at Line: 140 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 java.lang.RuntimeException: Method Invocation rule.substring : at Line: 140 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:288) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:145) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:107) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: Method Invocation rule.substring : at Line: 140 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Target exception: java.lang.StringIndexOutOfBoundsException: String index out of range: -1 at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:97) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:186) at bsh.Name.invokeLocalMethod(Name.java:917) at bsh.Name.invokeMethod(Name.java:804) at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102) at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47) at bsh.BSHAssignment.eval(BSHAssignment.java:77) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHIfStatement.eval(BSHIfStatement.java:48) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHForStatement.eval(BSHForStatement.java:111) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:331) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:274) ... 8 more |
Автор: | vdd [ 16 авг 2012, 12:24 ] |
Заголовок сообщения: | Re: manad & ipfw |
Была проблема с неблокирующим режимом. Должна быть версия manad с исправлением. Как дефолтная, так и "с таблицами". |
Автор: | vdd [ 16 авг 2012, 12:29 ] |
Заголовок сообщения: | Re: manad & ipfw |
"Табличный" manad сделан на основе http://wiki.bgbilling.ru/index.php/FreeBSD_manad,_%D0%BF%D0%BE%D0%BD%D0%B8%D0%BC%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB_%D0%B2_%D1%82%D0%B0%D1%80%D0%B8%D1%84%D0%B0%D1%85 Там необходимая корректировка уже была внесена. Так что могу только сообщить, что "табличная" модификация работает на нескольких шлюзах без каких-либо проблем. |
Автор: | stark [ 16 авг 2012, 12:43 ] |
Заголовок сообщения: | Re: manad & ipfw |
Andr-232 писал(а): Уппс, ошибочка вышла. Вот текст скрипта: ... Вот вывод sheduler.error.log: [code] scheduler 08-14/18:58:48 ERROR [pool-3-thread-2] ManadGateWorker - Eval error2: Method Invocation rule.substring Method Invocation rule.substring : at Line: 140 : in file: inline evaluation of: ``import java.io.*; import java.net.*; import java.util.*; import bitel.billing.co . . . '' : rule .substring ( ib , ie ) Ta Теперь выводит правильную строчку но до этого оно еще должен вывести сервисное сообщение "rule=...", вы его не показываете(он в обычном логе выведется, не в логе с ошибками). Просто передерните шлюз в клиенте на этом договоре и посмотрите что выводит еще в server.log кроме ошибки. На крайний можете заменить log.info на log.error чтобы все в одно место попадало . |
Автор: | Andr-232 [ 22 авг 2012, 13:28 ] |
Заголовок сообщения: | Re: manad & ipfw |
Ок, спасибо за информацию. Вынужден был отъехать на неделю, завтра буду на работе, о результатах отпишусь. |
Автор: | Andr-232 [ 30 авг 2012, 16:53 ] |
Заголовок сообщения: | Re: manad & ipfw |
Да, проблема разрешилась, ошибок больше нет. Благодарю за помощь. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |