Аутентификация с учетом Calling-Id-Station
Материал из BiTel WiKi
(Различия между версиями)
Admin (Обсуждение | вклад) |
Rush (Обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
private CheckLoginLimit(DialUpLogin login, mid) { | private CheckLoginLimit(DialUpLogin login, mid) { | ||
+ | // Проверяет, существуют ли у данного логина ограничения с типом 5 (На Calling-Station-Id). | ||
query = "SELECT COUNT(*) FROM user_login_limit_"+mid+" WHERE type_con=5 AND lid="+login.getId(); | query = "SELECT COUNT(*) FROM user_login_limit_"+mid+" WHERE type_con=5 AND lid="+login.getId(); | ||
ps = con.prepareStatement(query); | ps = con.prepareStatement(query); | ||
Строка 18: | Строка 19: | ||
private AddLoginLimit(int mid, DialUpLogin login, String csi) { | private AddLoginLimit(int mid, DialUpLogin login, String csi) { | ||
+ | // Добавляет в список ограничений два. Первое - разрешает заходить с нужного Calling-Station-Id (параметр csi), второе - запрещает выходить с любых других IP/MAC/телефонов | ||
lm = new DialUpLoginManager(con, mid); | lm = new DialUpLoginManager(con, mid); | ||
+ | // Пустой массив временных масок, null вызывает Null Pointer Exception | ||
List cond = new ArrayList(); | List cond = new ArrayList(); | ||
lm.updateLimitService(login.getId(), "0", 5, "0", csi, null, null, "", 1, cond); | lm.updateLimitService(login.getId(), "0", 5, "0", csi, null, null, "", 1, cond); |
Версия 07:31, 15 февраля 2010
Версия биллинга 5.0. Обрабатывается событие RADIUS-аунтификации.
Необходимо сделать так, чтобы в модуле Dial-Up у абонента при первом дозвоне фиксировалось значение атрибута Calling-Id-Station (будь то номер телефона, MAC-адрес или IP-адрес) и при последующих дозвонах доступ разрешался только с этого адреса/телефона. Сброс ограничения осуществляется по звонку в ТП.
import bitel.billing.server.dialup.bean.DialUpLoginManager; import bitel.billing.server.dialup.bean.DialUpLogin; import bitel.billing.server.radius.RadiusStandartAttributes; import java.util.List; private CheckLoginLimit(DialUpLogin login, mid) { // Проверяет, существуют ли у данного логина ограничения с типом 5 (На Calling-Station-Id). query = "SELECT COUNT(*) FROM user_login_limit_"+mid+" WHERE type_con=5 AND lid="+login.getId(); ps = con.prepareStatement(query); rs = ps.executeQuery(); return rs.next() && rs.getInt(1) > 0; } private AddLoginLimit(int mid, DialUpLogin login, String csi) { // Добавляет в список ограничений два. Первое - разрешает заходить с нужного Calling-Station-Id (параметр csi), второе - запрещает выходить с любых других IP/MAC/телефонов lm = new DialUpLoginManager(con, mid); // Пустой массив временных масок, null вызывает Null Pointer Exception List cond = new ArrayList(); lm.updateLimitService(login.getId(), "0", 5, "0", csi, null, null, "", 1, cond); lm.updateLimitService(login.getId(), "0", 5, "1", "*", null, null, "", 0, cond); } mid = 1; login = event.getLogin(); request = event.getRequest(); csi = request.getStringAttribute(RadiusStandartAttributes.Calling_Station_Id); if (! CheckLoginLimit(login, mid)) { AddLoginLimit(mid, login, csi); }