BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: 10 май 2009, 20:50 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Код:
   // Ищем пользователя и IP, привязанный к нему в таблице
      // "radius_pair_ip_x", где "x" код модуля Dialup.
      login = event.getLogin();
      loginid = login.getId();
      print ( "loginid: " + loginid );
      ps = con.prepareStatement( "SELECT ip FROM radius_pair_ip_1 WHERE id=?");
       
      ps.setInt( 1, loginid );
      rs = ps.executeQuery();
 
      login_ip = 0;
      while( rs.next() )
      {
           login_ip = rs.getInt( 1 );
         print ( "login_ip: " + login_ip );
         ipadr = Utils.convertIpToString( login_ip );
          print("ip:" + ipadr);
      }
      

Лог
Код:
05-10/00:41:05  INFO [processor-p-2-t-3] EventProcessor - Process event cid:2; event:Event bitel.billing.server.processor.event.RadiusAuthenticationEvent cid: 2; module: 1; type: 120
05-10/00:41:05  INFO [processor-p-2-t-3] ScriptInstance - Eval script Function [id:2; title:test]
05-10/00:41:05  INFO [processor-p-2-t-3] script - Process time => 171
05-10/00:41:05  INFO [processor-p-2-t-3] script - loginid: 2
login_ip: 2147483647
ip:127.255.255.255

Как видно, LoginId правильный, а цифры, реально записанные в базе и извлеченные оттуда различны. Как решить эту проблему?


Вложения:
IP.jpg
IP.jpg [ 31.53 КБ | Просмотров: 4328 ]
radius_pair_ip.jpg
radius_pair_ip.jpg [ 96.41 КБ | Просмотров: 4339 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 май 2009, 16:18 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
замени rs.getInt( 1 ); на rs.getLong( 1 );

для int положительный max = 2147483648


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 май 2009, 18:16 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Благодарствую!
Надо бы тогда в WIKI изменить http://wiki.bgbilling.ru/index.php/%D0%9F%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0_ACCEPT_%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%BE_REJECT_%D0%B2%D0%BC%D0%B5%D1%81%D1%82%D0%B5_%D1%81_%D0%B4%D0%BE%D0%BF._%D0%B0%D1%82%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D0%B0%D0%BC%D0%B8
а то народ будет брать для примера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 11 май 2009, 20:35 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В wiki правильно, потому что он везде интерпретируется как int.
А в Utils.convertIpToString( login_ip ); он интерпретируется как long, потому слетает...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июн 2009, 18:26 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Тоже столкнулись с этой проблемой. Решили при поддержке хелпдеска, скрипт в вики уже поправил =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июн 2009, 19:52 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Цитата:
скрипт в вики уже поправил =)
Вот это вы зря. Там действительно правильно, я его потом разобрал. Для передачи в качестве радиус-атрибутов нужно его действительно извлекать как Int. Там далее стоит
Код:
 
raIp = new RadiusAttribute( 8 );
raIp.setIntValue((int) login_ip );
А из базы извлечется Long, будет ошибка скрипта. Верните на место.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июн 2009, 21:17 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
ну вообще-то в базе он хранится не в инт формате, а в бигинт. и у нас этот скрипт в данном вариант работает без каких либо проблем. проверили.
про будет ошибка скрипта - вы бы сначала проверили тот вариант, который я выложил и уже говорили про ошибки


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июн 2009, 22:58 
Не в сети

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
Ну хз... Bean Shell позволяет втыкать Long в Int? Я когда попытался извлеченный лонг скормить радиусу какие-то траблы были, точно не помню..Если работает, то можно и рукой махнуть.:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 03 июн 2009, 23:21 
Не в сети
Клиент

Зарегистрирован: 30 мар 2009, 17:51
Сообщения: 431
Карма: 23
Chaos писал(а):
Ну хз... Bean Shell позволяет втыкать Long в Int? Я когда попытался извлеченный лонг скормить радиусу какие-то траблы были, точно не помню..Если работает, то можно и рукой махнуть.:)

raIp.setIntValue( (int)login_ip )

в скобках переменная с добавлением (инт). без этого не работает и ругается на несовместимость формата.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 июн 2009, 14:34 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Цитата:
raIp.setIntValue( (int)login_ip )

в скобках переменная с добавлением (инт). без этого не работает и ругается на несовместимость формата.

Это жесткое приведение типа, при этом бит, отведенный под знак, тоже забивается значащим битом из long. Т.е. int получается отрицательный, но хранящим нужное значение в битах.


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

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


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

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


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

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