forum.bitel.ru
http://forum.bitel.ru/

Проблема с типами атрибутов радиуса
http://forum.bitel.ru/viewtopic.php?f=6&t=10738
Страница 1 из 1

Автор:  Unior [ 25 июл 2015, 22:55 ]
Заголовок сообщения:  Проблема с типами атрибутов радиуса

Здравствуйте, пересмотрел много статей и книг по Java, но так и не нашел нужной команды. Bgbilling 6.1, Centos 6.6
В пакете приходит атрибут радиуса: Framed-IP-Address = х.х.х.х
В словаре он имеет следующий тип
<attribute name="Framed-IP-Address" type="ipaddr" code="8"/>
Какую мне нужно применить команду в скрипте предобработки, чтобы без ошибок получить значение атрибута и перевести его в строку.
Пробовал request.getAttribute(8) - выскакивает ошибка.
Это нужно для обсчета операторов по новой схеме.
operator_1 = "x.x.x.x";
operator_2 = "y.y.y.y";

oper = request.getAttribute(8);

if ( oper.startsWith( operator_1 ) )
{
request.setOption( "operator", 1 );

}
else if ( oper.startsWith( operator_2 ) )
{
request.setOption( "operator", 2 );

}

Заранее благодарен

Автор:  Unior [ 26 июл 2015, 02:11 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

Сама же отвечу на этот вопрос. Пришлось помучиться.
Первоначально получаем IP адрес в типе Integer:
op = request.getIntAttribute( -1, RadiusDictionary.Framed_IP_Address, null );

Функции как таковой нет, которая конвертировала тип IP в строку, поэтому пишем свою функцию:
public static String intToIp(int i) {
return ((i >> 24 ) & 0xFF) + "." +
((i >> 16 ) & 0xFF) + "." +
((i >> 8 ) & 0xFF) + "." +
( i & 0xFF);
}

Теперь ее только остается вызвать:
oper = intToIp(op);
В итоге получим IP адрес строкой.

Автор:  stark [ 27 июл 2015, 17:57 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

У нас есть функция
Код:
IPUtils.convertIpToString

Автор:  Unior [ 28 июл 2015, 14:14 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

Спасибо) только тогда скажите, как получить IP в таком типе, а не Integer. Применяя данную функцию, пишет ошибку, ссылаясь на неправильный тип переменной

Автор:  Phricker [ 28 июл 2015, 14:47 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

String ipAddr = IPUtils.convertIpToString(oper);

Автор:  stark [ 28 июл 2015, 18:36 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

Unior писал(а):
Спасибо) только тогда скажите, как получить IP в таком типе, а не Integer. Применяя данную функцию, пишет ошибку, ссылаясь на неправильный тип переменной

Код:
IPUtils.convertIpToString(request.getIntAttribute( -1, RadiusDictionary.Framed_IP_Address, null ))

Автор:  Unior [ 28 июл 2015, 19:05 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

Так делал уже.
Attempt to resolve method: convertIpToString() on undefined variable or class name: IPUtils
Sourced file: inline evaluation of: ``import java.sql.*; import java.util.*; import bitel.billing.server.radius.*; imp . . . '' : Attempt to resolve method: convertIpToString() on undefined variable or class name: IPUtils : at Line: 64 : in file: inline evaluation of: ``import java.sql.*; import java.util.*; import bitel.billing.server.radius.*; imp . . . '' : IPUtils .convertIpToString ( request .getIntAttribute ( - 1 , RadiusDictionary .Framed_IP_Address , null ) )

Автор:  stark [ 28 июл 2015, 19:08 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

Unior писал(а):
Так делал уже.
Attempt to resolve method: convertIpToString() on undefined variable or class name: IPUtils
Sourced file: inline evaluation of: ``import java.sql.*; import java.util.*; import bitel.billing.server.radius.*; imp . . . '' : Attempt to resolve method: convertIpToString() on undefined variable or class name: IPUtils : at Line: 64 : in file: inline evaluation of: ``import java.sql.*; import java.util.*; import bitel.billing.server.radius.*; imp . . . '' : IPUtils .convertIpToString ( request .getIntAttribute ( - 1 , RadiusDictionary .Framed_IP_Address , null ) )

Код:
import bitel.billing.common.IPUtils;

Автор:  Unior [ 28 июл 2015, 19:14 ]
Заголовок сообщения:  Re: Проблема с типами атрибутов радиуса

Да, спасибо, понял. Заработало.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/