Идентификация Voip оператора по подсети (транзит)
Материал из BiTel WiKi
(Различия между версиями)
Admin (Обсуждение | вклад) (Новая: http://www.bgbilling.ru/forum/viewtopic.php?t=2802) |
WhiteWind (Обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
http://www.bgbilling.ru/forum/viewtopic.php?t=2802 | http://www.bgbilling.ru/forum/viewtopic.php?t=2802 | ||
+ | <source lang="java"> | ||
+ | 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 ); | ||
+ | } | ||
+ | </source> |
Текущая версия на 04:32, 5 февраля 2010
http://www.bgbilling.ru/forum/viewtopic.php?t=2802
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 ); }