forum.bitel.ru http://forum.bitel.ru/ |
|
Автосоздание Устройства+Порта+Договора+Сервиса Opt82 http://forum.bitel.ru/viewtopic.php?f=19&t=9319 |
Страница 1 из 1 |
Автор: | Угрюмов Роман [ 03 июн 2014, 13:47 ] |
Заголовок сообщения: | Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
У нас реализована схема подключения абонентов с использованием Opt82. Для идентификации используется Идентификатор устройства и порт на устройстве. Если заранее создать устройство и интерфейсы на устройстве и соответственно завести договор с сервисом то авторизация проходит. В настоящий момент, для автоматизации этого процесса мы пишем специальный скрипт, который по приходу пакета авторизации автоматически создает Устройство (если оно отсутствует), порт (если отсутствует), договор и сервис на договоре. Скрипт отрабатывает верно, то есть Устройство+Порт+Договор+Сервис в BGBilling создаются верно, но не удается авторизоваться на этом договоре. Сервис упорно находится в состоянии "удалено". Однако! Если перегрузить биллинг, то на этом же договоре авторизация проходит. Ну куда копать? |
Автор: | stark [ 03 июн 2014, 13:55 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
А скрипт как создает все это ? через наши Web-сервисы или напрямую в БД пишет ? |
Автор: | Угрюмов Роман [ 03 июн 2014, 14:04 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
В функции protected void setAgentOptions( RadiusPacket request ) анализируется MAC адрес устройства Если МАС устройства совпадает с заданным (это специальная коробка, выдаваемая инженеру, который ее будет втыкать в кабель у клиента) то производится комплекс операций по автосозданию устройства порта договора и сервиса (Отправил скрипт в личку) |
Автор: | stark [ 03 июн 2014, 14:45 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Нужно посмотреть в логи access-а какие события туда приходят и в каком порядке . Возможно, например, что событие создание сервиса приходит, например, раньше события создания устройства. |
Автор: | Угрюмов Роман [ 03 июн 2014, 14:48 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Я сейчас обнаружил, что на строке servService.inetServUpdate( serv, new ArrayList<InetServOption>(), false, false, 0 ); возникает NullPointerExeption |
Автор: | stark [ 03 июн 2014, 14:51 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Угрюмов Роман писал(а): Я сейчас обнаружил, что на строке servService.inetServUpdate( serv, new ArrayList<InetServOption>(), false, false, 0 ); возникает NullPointerExeption покажите его. |
Автор: | Угрюмов Роман [ 03 июн 2014, 14:56 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Она сейчас стала 451 строкой Код: at ru.bitel.bgbilling.modules.inet.api.server.service.InetServServiceImpl.inetServUpdate(InetServServiceImpl.java:462)
at custom.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsProtocolHandler.CreateTemporaryContract(SmartEdgeClipsProtocolHandler.java:451) at custom.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsProtocolHandler.setAgentOptions(SmartEdgeClipsProtocolHandler.java:94) at ru.bitel.bgbilling.modules.inet.dyn.device.redback.SmartEdgeClipsProtocolHandler.preprocessAccessRequest(SmartEdgeClipsProtocolHandler.java:219) at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.preprocessAccessRequest(InetRadiusProcessor.java:352) at ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor.preprocessAccessRequest(InetRadiusProcessor.java:1) at ru.bitel.bgbilling.kernel.network.radius.RadiusProcessor.accessRequest(RadiusProcessor.java:382) at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:59) at ru.bitel.bgbilling.modules.inet.radius.InetRadiusListenerWorker.accessRequest(InetRadiusListenerWorker.java:1) at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.processPacket(RadiusListenerWorker.java:228) at ru.bitel.bgbilling.kernel.network.radius.RadiusListenerWorker.runImpl(RadiusListenerWorker.java:147) at ru.bitel.common.worker.WorkerTask.run(WorkerTask.java:86) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40) |
Автор: | stark [ 03 июн 2014, 14:58 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
а версия какая у вас ? |
Автор: | Угрюмов Роман [ 03 июн 2014, 14:59 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Информация о версии: Клиент: вер. 6.0 сборка 1314 от 14.04.2014 19:58:50 os: Windows Vista; java: Java HotSpot(TM) Client VM, v.1.6.0_07 ВНИМАНИЕ: Необходимо обновить таймзоны Сервер: вер. 6.0 сборка 1725 от 14.04.2014 19:59:03 os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.7.0_21 ВНИМАНИЕ: Спецификация версии 1.7 не рекомендуется bill вер. 6.0 сборка 343 от 12.03.2014 19:11:40 card вер. 6.0 сборка 226 от 05.02.2014 15:53:15 inet вер. 6.0 сборка 1370 от 14.04.2014 16:39:50 npay вер. 6.0 сборка 224 от 10.04.2014 19:28:32 ru.bitel.bgbilling.plugins.cladr вер. 6.0 сборка 121 от 05.02.2014 15:55:14 |
Автор: | stark [ 03 июн 2014, 15:14 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Проблема ваша в том, что вы договор создаете в другом соединении к базе. А текущая транзакция, в которой создается сервис эти данные не считывает, не находит договора. Лучше используйте то же самое соединение к базе. Ну и в случае ошибки можно вызывать rollback и откатывать изменения (но это уже по желанию). |
Автор: | stark [ 03 июн 2014, 15:27 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Возьмите соединение так Код: context.getConnectionSet().getConnection() Но только его нельзя закрывать . |
Автор: | Угрюмов Роман [ 03 июн 2014, 16:13 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Эту часть победили, сервис стал нормально создаваться, но он все равно в находится в состоянии "удален" Код: Packet type: Access-Request
Identifier: 191 Authenticator: {C9 4F AF BF EC 5F 41 5F 85 EE 13 55 C2 02 9F 61} Attributes: User-Name=d4:ca:6d:7b:c9:8a NAS-Port-Id=3/3 vlan-id 100 clips 264128 NAS-Identifier=RedBack User-Password=Redback NAS-IP-Address=172.16.98.7 NAS-Port=50528256 Service-Type=5 Calling-Station-Id=Vlan100+Ethernet1/5#\0x00\0x1f\0xffx\0xff\0xff NAS-Port-Type=5 Platform-Type=6 Medium-Type=11 Agent-Remote-Id={00 1F CE 78 F5 B6} UNKNOWN[2352-202]={3D 3D 07 01 D4 CA 6D 7B C9 8A} UNKNOWN[2352-202]={0C 0C 07 46 6F 78 32 30 31 31} Agent-Circuit-Id={56 6C 61 6E 31 30 30 2B 45 74 68 65 72 6E 65 74 31 2F 35} OS-Version=11.1.2.7p2 Mac-Addr=d4-ca-6d-7b-c9-8a NAS-Real-Port=855638116 UNKNOWN[3561--1]={02 08 00 1F CE 78 F5 B6} UNKNOWN[3561--1]={01 15 56 6C 61 6E 31 30 30 2B 45 74 68 65 72 6E 65 74 31 2F 35} 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - Start setAgentOptions 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - Parse as Qtech SWITCH bytes (setAgentOptions) 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - deviceIdString 001FCE78F5B6 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - devicePort 5 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - deviceMAC d4-ca-6d-7b-c9-8a 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - AutoCreate routine started! 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - CreateTemporaryContract started! 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - GetDeviceId: -1 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - CreateDevice started! 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - IsPortExists: 0 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - CreatePort started! 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] CommonKernelEventProcessor - Process event cid:0; event:Event[ru.bitel.bgbilling.kernel.event.events.system.ContractCreateEvent] moduleId: 0; pluginId: no; cid: 0; scid: -1; userId: 0; timestamp: 1401790114620 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] CommonKernelEventProcessor - Process event cid:90225; event:Event[ru.bitel.bgbilling.kernel.event.events.system.ContractCreateEvent] moduleId: 0; pluginId: no; cid: 90225; scid: -1; userId: 0; timestamp: 1401790114714 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - inetServUpdate! deviceId:61 cid: 90225 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - inetServUpdate Ok! 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - Set Group - Tehnological! 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - SetContractTimeStamp!90225 : 03.05.2014 14:08:34 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] SmartEdgeClipsProtocolHandler - AutoCreate routine finished! 90225 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - REQUEST_AFTER_PREPROCESS: Packet type: Access-Request Identifier: 191 Authenticator: {C9 4F AF BF EC 5F 41 5F 85 EE 13 55 C2 02 9F 61} Attributes: User-Name=001fce78f5b6:566c616e3130302b45746865726e6574312f35 NAS-Port-Id=3/3 vlan-id 100 clips 264128 NAS-Identifier=RedBack User-Password=Redback NAS-IP-Address=172.16.98.7 NAS-Port=50528256 Service-Type=5 Calling-Station-Id=d4ca6d7bc98a NAS-Port-Type=5 Platform-Type=6 Medium-Type=11 Agent-Remote-Id={00 1F CE 78 F5 B6} UNKNOWN[2352-202]={3D 3D 07 01 D4 CA 6D 7B C9 8A} UNKNOWN[2352-202]={0C 0C 07 46 6F 78 32 30 31 31} Agent-Circuit-Id={56 6C 61 6E 31 30 30 2B 45 74 68 65 72 6E 65 74 31 2F 35} OS-Version=11.1.2.7p2 Mac-Addr=d4-ca-6d-7b-c9-8a NAS-Real-Port=855638116 UNKNOWN[3561--1]={02 08 00 1F CE 78 F5 B6} UNKNOWN[3561--1]={01 15 56 6C 61 6E 31 30 30 2B 45 74 68 65 72 6E 65 74 31 2F 35} Common options: {agentRemoteId=001FCE78F5B6, interfaceId=5, deviceState=1} 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetNas - AgentDevice not found. 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetNas - Search serv on deviceId=2; interfaceId=5 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - [username=001fce78f5b6:566c616e3130302b45746865726e6574312f35] InetServ not found. 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - [username=001fce78f5b6:566c616e3130302b45746865726e6574312f35] Authenticated as inetServId:3 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetNas - AgentDevice not found. 06-03/14:08:36 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - Write new waiting connection to DB 06-03/14:08:36 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - New connection id=40991 06-03/14:08:36 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - Return code=0 06-03/14:08:36 INFO [rdsLstnr-p-9-t-1] InetConnectionKeyMap - interfaceId not set 06-03/14:08:36 INFO [rdsLstnr-p-9-t-1] InetDhcpHelperProcessor - Put auth accept 2:0:5:D4CA6D7BC98A 06-03/14:08:36 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - RESPONSE_BEFORE_POSTPROCESS: Packet type: Access-Accept Identifier: 191 Authenticator: {} Attributes: Reply-Message=1 Framed-IP-Address=192.168.172.2 DHCP-Max-Leases=1 Service-Name:1=RSE-SVC-EXT Service-Options:1=1 Service-Parameter:1=Rate=1000 Burst=250000 IP-Interface-Name=NOAUTH Process time auth: 2045 |
Автор: | Угрюмов Роман [ 03 июн 2014, 16:35 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Но! Если перегрузить bgbilling и bginet_access то он переходит в состояние "включен" |
Автор: | stark [ 03 июн 2014, 16:45 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Угрюмов Роман писал(а): 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetNas - AgentDevice not found. 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetNas - Search serv on deviceId=2; interfaceId=5 06-03/14:08:34 INFO [rdsLstnr-p-9-t-1] InetRadiusProcessor - [username=001fce78f5b6:566c616e3130302b45746865726e6574312f35] InetServ not found. У вас не находит устройство и сервис . Попробуйте вызвать в конце Код: context.getConnectionSet().commit(); Вообще обработчик протокола не задумывался для таких действий. Могут вылезти еще всякие проблемы типа deadlock-ов и т.п. |
Автор: | Угрюмов Роман [ 03 июн 2014, 16:48 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
stark писал(а): Вообще обработчик протокола не задумывался для таких действий. Могут вылезти еще всякие проблемы типа deadlock-ов и т.п. А у меня два имбицила монтажника которые при обжимке пары путают не говоря уже о номерах портов на свичах. Это жизненная необходимость и поверьте мне не только моя. |
Автор: | stark [ 03 июн 2014, 16:52 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Так работать не будет. Вы же устройство добавляете . Даже если его создавать вручную, access его не подцепит , пока вы не нажмете конопку "Перечитать конфигурацию на серверах". Это нужно вызвать Код: InetDeviceService.deviceReload(); после добавления устройства. |
Автор: | stark [ 03 июн 2014, 17:00 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
В общем скорее всего без помощи с нашей стороны это все равно работать не будет. Там все происходит асинхронно. Напишите лучше в helpdesk. |
Автор: | stark [ 03 июн 2014, 17:05 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
И еще можно экспериментировать. Вызывать Thread.sleep после каждой операции типа создание устройства и т.п. И еще желательно знать если просто зайти в сервис и пересохранить, то он меняет состояние? |
Автор: | Угрюмов Роман [ 03 июн 2014, 17:08 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
stark писал(а): И еще желательно знать если просто зайти в сервис и пересохранить, то он меняет состояние? Нет, сервис упорно в состоянии "удален" |
Автор: | Amir [ 03 июн 2014, 17:17 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Помоему это лучше сделать через личный кабинет. Например, настраивается radius.disable.accessCodes=1, radius.disable.servId=<servId> для того, чтобы если сервис не найден, абонент все равно мог подключиться, например, с серым IP с ограниченным доступом только к ЛК. Далее заходим в ЛК договора, там доступно "Дополнительное действие" - "Подключиться", которое по IP-адресу, с которого зашли в ЛК находит активную сессию, в которой есть информация об устройстве (agentDeviceId), порте/VLAN (circuitId). На основе этой информации дополнительное действие создает сервис (и сбрасывает сессию). Вариант если договора нет: монтажник заходит сначала не в ЛК, а в создание договора по карточке модуля Card и по логину паролю карточки (которые, например, просто могут быть перечислены на бумажке) сначала создает договор. Немного не то, но похоже: http://wiki.bitel.ru/index.php/DHCP82_% ... 1%81%D1%83 |
Автор: | Угрюмов Роман [ 03 июн 2014, 17:22 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Хочется сделать без всякой ручной работы. Вставили коробочку с известным MAC в порт у клиента и все что нужно создано. Монтажники настолько тупые, что им ничего доверить нельзя |
Автор: | Угрюмов Роман [ 03 июн 2014, 17:28 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
И не страшно что по первому пакету нет авторизации! Это не важно, главное что все создается, и какими-то манипуляциями два раза мне удалось перевести сервис в состояние "включен". Типа перезагрузкой, нажатием на кнопки перечитать на серверах, включить, синхронизировать. Пару раз мне это удавалось и тогда авторизайия идет. |
Автор: | Amir [ 03 июн 2014, 17:33 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Попробуйте найти в каком случае срабатывает. Например, попробуйте после срабатывания скрипта нажать Перечитать конфигурацию и посмотреть, не переключится ли состояние в течении минуты. Если не переключится - попробуйте пересохранить сервис. |
Автор: | Угрюмов Роман [ 03 июн 2014, 17:51 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Amir писал(а): Попробуйте найти в каком случае срабатывает. 1) Если нет устройства и скриптом создано устройство, порт, договор, сервис ./bgbilling restart ./bginet_access restart И больше не нажимал вообще никаких кнопок, сервис стал "включен" авторизация прошла 2) Если после этого на другом порту попробовать авторизовываться то создается порт договор сервис и авторизация проходит со второй попытки. |
Автор: | Amir [ 03 июн 2014, 17:57 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Попробуйте при создании устройства сразу после добавления в БД вызвать commit и только после этого послать InetReloadEvent. |
Автор: | Угрюмов Роман [ 03 июн 2014, 18:59 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Нет, помогает только перезагрузка |
Автор: | stark [ 04 июн 2014, 10:39 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Ну попробуйте тогда только создание устройства сделать через скрипт, а остальное все вручную. В этом варианте будет работать ? |
Автор: | Угрюмов Роман [ 04 июн 2014, 12:48 ] |
Заголовок сообщения: | Re: Автосоздание Устройства+Порта+Договора+Сервиса Opt82 |
Общем проблему решили таким костылем. 1) Руками создали специальное устройство с идентификатором AUTOCREATE , для него договор и сервис в состоянии ОТКЛЮЧЕН 2) При приходе пакета авторизации если нет такого устройства то создаю новое устройство и авторизую его с AUTOCREATE. Поскольку сервис на договоре находится в статусе ОТКЛЮЧЕН, то radius выдает Reject 3) Приходит второй пакет авторизации. Поскольку для него устройство уже создано, то создается порт+договор+ сервис и перебрасывается авторизация опять на AUTOCREATE. Соответственно radius выдает Reject 4) Приходит третий пакет на авторизацию. Поскольку Устройство+порт+договор+ сервис созданы то авторизация проходит успешно. Технически схема работает, но не красивая, хотелось бы сразу же в первом пакете все создать и получить Accept |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |