forum.bitel.ru http://forum.bitel.ru/ |
|
[5.2] предобработка - работа с атрибутами с IP http://forum.bitel.ru/viewtopic.php?f=44&t=8014 |
Страница 1 из 1 |
Автор: | nik247 [ 08 май 2013, 18:33 ] |
Заголовок сообщения: | [5.2] предобработка - работа с атрибутами с IP |
Не подскажете, как решить данную задачу. Нужно сделать в предобработке изменение атрибутов с type="ipaddr": С обработкой типов "string" и "int" разобрался, а вот как обработать "ipaddr" не понятно. На основании атрибута "Framed-IP-Address", добавить два новых (type="ipaddr"), а сам "Framed-IP-Address" убить. 1) получение "Framed-IP-Address": Код: String FramedIP = request.getAttribute( -1, 8, null ); 2) нужно скопировать "Framed-IP-Address" в новый атрибут: Код: request.addAttribute( new RadiusAttribute.RadiusAttributeIpAddr( -1, X, FramedIP) ); Здесь засада - несовпадение типов. 3) на основании "Framed-IP-Address" , например X.X.X.X, вычислить такой X.X.X.1 и создать новый атрибут: Код: вычисление X.X.X.1 request.addAttribute( new RadiusAttribute.RadiusAttributeIpAddr( -1, Y, new_attr) ); 4) удаление "Framed-IP-Address" - самое простое и уже рабочее. Код: response.removeAttributes( -1, 8 );
|
Автор: | Amir [ 08 май 2013, 18:45 ] |
Заголовок сообщения: | Re: [5.2] предобработка - работа с атрибутами с IP |
Код: RadiusAttribute<?> framedIp = this.getAttribute( -1, 8 ); или byte[] ip = framedIp.getDataAsByteArray(); this.setAttribute( new RadiusAttribute<Integer>( -1, Y, 0, ByteBuffer.wrap( ip ) ) ); Код: RadiusAttribute<Integer> framedIp = this.getAttribute( -1, 8 );
Integer ip = framedIp.getValue(); this.setAttribute( new RadiusAttribute<Integer>( -1, Y, 0, ip ) ); |
Автор: | nik247 [ 10 май 2013, 01:35 ] |
Заголовок сообщения: | Re: [5.2] предобработка - работа с атрибутами с IP |
Спасибо. Заработало со вторым вариантом. |
Автор: | nik247 [ 10 май 2013, 14:44 ] |
Заголовок сообщения: | Re: [5.2] предобработка - работа с атрибутами с IP |
А не подскажете еще один момент? Есть свой ProtocolHandler. Как в postprocessAccessRequest получить значения из "RadiusPacket request"? Что ни пробую - везде "null", даже самое простое: String userName = request.getStringAttribute( -1, 1, null ); Задача простая вроде бы - делать спец. обработку в postprocessAccessRequest в зависимости от определенных атрибутов, полученных в "Access-Request". |
Автор: | nik247 [ 16 май 2013, 12:47 ] |
Заголовок сообщения: | Re: [5.2] предобработка - работа с атрибутами с IP |
UP |
Автор: | Amir [ 16 май 2013, 15:49 ] |
Заголовок сообщения: | Re: [5.2] предобработка - работа с атрибутами с IP |
А у вас не EAP случайно? Если да - то в postprocessAccessRequest, скорее всего, попадают запросы, внутри которых туннелируются "настоящие" запросы. Чтобы обрабатывать ответ EAP нужно, чтобы обработчик процессора протокола имплементировал интерфейс RadiusAccessRequestHandler, в нем есть метод afterAuthorization. viewtopic.php?f=44&t=7119&p=58959&hilit=RadiusAccessRequestHandler#p58959 При этом для EAP аргумент request - это туннелируемый запрос, а req.getRequest() - обычный. Для обычных запросов request == req.getRequest(). |
Автор: | nik247 [ 16 май 2013, 17:52 ] |
Заголовок сообщения: | Re: [5.2] предобработка - работа с атрибутами с IP |
Да нет. Нету EAP. Чудеса правда - только что еще раз проверил - работает . |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |