BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 21 июн 2025, 05:32

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 08 май 2013, 18:33 
Не подскажете, как решить данную задачу.
Нужно сделать в предобработке изменение атрибутов с 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 );


Вернуться к началу
  
 
СообщениеДобавлено: 08 май 2013, 18:45 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Код:
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 ) );


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 10 май 2013, 01:35 
Спасибо.
Заработало со вторым вариантом.


Вернуться к началу
  
 
СообщениеДобавлено: 10 май 2013, 14:44 
А не подскажете еще один момент?
Есть свой ProtocolHandler.
Как в postprocessAccessRequest получить значения из "RadiusPacket request"?
Что ни пробую - везде "null", даже самое простое:
String userName = request.getStringAttribute( -1, 1, null );
Задача простая вроде бы - делать спец. обработку в postprocessAccessRequest в зависимости от определенных атрибутов, полученных в "Access-Request".


Вернуться к началу
  
 
СообщениеДобавлено: 16 май 2013, 12:47 
UP


Вернуться к началу
  
 
СообщениеДобавлено: 16 май 2013, 15:49 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
А у вас не EAP случайно? Если да - то в postprocessAccessRequest, скорее всего, попадают запросы, внутри которых туннелируются "настоящие" запросы.

Чтобы обрабатывать ответ EAP нужно, чтобы обработчик процессора протокола имплементировал интерфейс RadiusAccessRequestHandler, в нем есть метод afterAuthorization.
viewtopic.php?f=44&t=7119&p=58959&hilit=RadiusAccessRequestHandler#p58959
При этом для EAP аргумент request - это туннелируемый запрос, а req.getRequest() - обычный. Для обычных запросов request == req.getRequest().


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 май 2013, 17:52 
Да нет.
Нету EAP.
Чудеса правда - только что еще раз проверил - работает .


Вернуться к началу
  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.039s | 19 Queries | GZIP : On ]