BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 мар 2024, 20:55

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 29 авг 2009, 19:01 
Не в сети

Зарегистрирован: 12 сен 2008, 02:51
Сообщения: 11
Карма: 0
Здравствуйте. Сложилась следующая ситуация: один из транзитных операторов отдает трафик с подсети /24. Идентифицируем операторов по Framed-IP-Address.

Можно ли как-то средствами биллинга идентифицировать этого оператора? Не очень бы хотелось заводить 254 логина с алиасами в виде каждого IP адреса из подсети...


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Можно скриптом предобработки запроса определять по ip и подставлять логин/calling-station-id
http://bgbilling.ru/v4.6/doc/ch04s05s01.html


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

Зарегистрирован: 12 сен 2008, 02:51
Сообщения: 11
Карма: 0
Спасибо, в итоге так и сделали:

Код:
import bitel.billing.server.call.bean.Login;
import bitel.billing.server.radius.*;
import bitel.billing.server.contract.bean.*;
import bitel.billing.server.script.event.*;
import bitel.billing.common.IPUtils;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.sql.*;

   op = request.getIntAttribute( 8 );
   op = IPUtils.convertIpToString( op );

   print( "Operator's IP: " + op );
   String [] arr = op.split("\\.");
   op = arr[0] + "." + arr[1] + "." + arr[2] + ".";
   ps = con.prepareStatement( "SELECT id, net, name, login_name from transit_operators_with_nets WHERE net REGEXP '^" + op + "'" );
   rs = ps.executeQuery();
   rs.last();
    int rowCount = rs.getRow();
    rs.beforeFirst();
   // Сколько записей получили
    print("Retrieved " + rowCount + " row(s).");
   found = false;
   while(rs.next()) {
      // Есть хотя бы одна запись...
       username = rs.getString( 4 );
      operatorname = rs.getString( 3 );
      print ( "Found UserName for " + operatorname + ", username: " + username);   
      found = true;
      break;
   }

if( found ) {
request.setStringAttribute( 1, username );
request.setStringAttribute( 2, username );
}

   


В БД хранится информация о сети, и что нужно подставлять в UserName.


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

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


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

Сейчас этот форум просматривают: Google [Bot] и гости: 1


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

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