Аутентификация с учетом Calling-Id-Station
Материал из BiTel WiKi
(Различия между версиями)
Admin (Обсуждение | вклад) |
Admin (Обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
private CheckLoginLimit(DialUpLogin login, mid) { | private CheckLoginLimit(DialUpLogin login, mid) { | ||
- | query = "SELECT COUNT(*) FROM user_login_limit_"+mid+" WHERE type_con=5"; | + | query = "SELECT COUNT(*) FROM user_login_limit_"+mid+" WHERE type_con=5 AND lid="+login.getId(); |
ps = con.prepareStatement(query); | ps = con.prepareStatement(query); | ||
rs = ps.executeQuery(); | rs = ps.executeQuery(); |
Версия 06:55, 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) { 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) { lm = new DialUpLoginManager(con, mid); 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); }