BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 27 ] 
Автор Сообщение
СообщениеДобавлено: 24 янв 2008, 13:21 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
Можно попросить сделать скрипт, который выберет из базы по сессиям соответствие логин - мак адрес и автоматом пропишет его в ограничения логина, чтобы выйти клиент в будущем мог только со своего адреса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 24 янв 2008, 16:05 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
А может функцию в радиусе проще сделать автоматического занесения ограничения?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 янв 2008, 06:51 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
1. Это будет заноситься для новых клиентов или для старых тоже?
2. Если человек вышел первый раз с одного мака а второй раз с другого, каким образом система поймет какой правильный мак?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 янв 2008, 15:20 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
1. у кого не стоит ограничение - будет ставить
2. ни как не поймет, первый раз приколотит. второй - будет звонить и просить убрать приколот.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2008, 16:55 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
Согласен с данной функцией.

Как и где ее сделать? :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 янв 2008, 17:28 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Для начала напишите письмо на billing@bitel.ru, вышлите краткое описание функции и ссылку на данную ветку обсуждения. Чтобы не забылось.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 30 янв 2008, 04:07 
Не в сети

Зарегистрирован: 26 ноя 2007, 07:23
Сообщения: 75
Откуда: Санкт-Петербург
Карма: 0
Согласен с предложением, тоже нужна такая функция. В какой версии планируете сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 мар 2008, 08:04 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
UP

Как дела в этом направлениии?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 20 мар 2008, 15:09 
Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93
Запись в TODO есть, как будет время - сделаем. Гарантий по срокам никаких не даем.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 04 апр 2008, 18:26 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
В 4.4 добавлено событие на аутентификацию. Вызывается после аутентификации, перед отправкой ответа.
Т.е. сейчас есть возможность скриптом занести ограничение, если его нет.
Цитата:
24.03.08 - Добавлено событие RADIUS-аутентификации (после аутентификации, перед отправкой ответа; event.getRequest|getResponse|getLogin|getContract|getErrorCode). Необходимо обновление BGRadiusDialup.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 июл 2008, 13:51 
Не в сети

Зарегистрирован: 26 ноя 2007, 13:35
Сообщения: 122
Карма: 0
Как доработать этот скрипт чтобы он сразу прописывал в договоре что клиенту можно выходить только с того мак адреса, с которого выходил 1 раз

import bitel.billing.server.radius.*;

prefix = "client-mac-address";
length = prefix.length();

attributes = request.getVendorAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair );
if( attributes != null )
for( it = attributes.iterator(); it.hasNext(); )
{
ra = (RadiusAttribute)it.next();
value = ra.getStringValue();

if( value.startsWith( prefix ) )
{
request.setStringAttribute( RadiusStandartAttributes.Calling_Station_Id, value.substring( length + 1 ) );
}
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 31 июл 2008, 01:11 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
2 SEA-Jay
Вы с ума сошли? если Вы измените этот скрипт так чтобы он проверял МАС - это убъет Ваш мускул! надо писать скрипт на радиус аутентификацию!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 31 июл 2008, 17:18 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Код выше должен быть в скрипте предобработки, чтобы при каждом подключении устанавливался caller-id

В скрипте на аутентификацию же можно поставить скрипт, который будет проверять наличие ограничений у логина и добавлять их, если они отсутсвуют.
Примерно такой:
Код:
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 java.util.*;
 
// event.getRequest|getResponse|getLogin|getContract|getErrorCode
errCode = event.getErrorCode();
if(errCode==0) {

 login = event.getLogin();
 ps = con.prepareStatement( "SELECT id FROM user_login_limit_{mid} WHERE lid=?" );
 ps.setInt(1, login.getId());
 rs = ps.executeQuery();
 if(!rs.next()){
  number = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id ) );
  ps = con.prepareStatement( "INSERT INTO user_login_limit_{mid} (num,lid,sid,param1,param2,comment,type_con) VALUES (?,?,'',?,?,'',5)" );//5 - по номеру клиента
  ps.setInt(1, 0);//первое правило
  ps.setInt(2, login.getId());
  ps.setString(3, "1");//запретить
  ps.setString(4, "*");//все
  ps.executeUpdate();
 
  ps.setInt(1, 1);//второе правило
  ps.setString(3, "0");//разрешить
  ps.setString(4, number);//номер
  ps.executeUpdate();
 }
}


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

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
А где этот скрипт на аутентификацию ставить??? Извините за глупый вопрос :oops:


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrustik писал(а):
А где этот скрипт на аутентификацию ставить??? Извините за глупый вопрос :oops:

http://bgbilling.ru/v4.5/doc/ch07s08s01.html


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 ноя 2008, 13:16 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
я ошибся скрипт в договоре : Автоматизация ->Функции скриптов поведения->там выбрать радиус- аутефикацию


Последний раз редактировалось stark 12 ноя 2008, 13:18, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 ноя 2008, 13:16 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Amir писал(а):
Код выше должен быть в скрипте предобработки, чтобы при каждом подключении устанавливался caller-id
В скрипте на аутентификацию же можно поставить скрипт, который будет проверять наличие ограничений у логина и добавлять их, если они отсутсвуют.

в скрипте предобработки я поставил скрипт, чтобы при каждом подключении устанавливался caller-id. Другой скрипт писать после????


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

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
stark писал(а):
я ошибся скрипт в договоре : Автоматизация ->Функции скриптов поведения->там выбрать радиус- аутефикацию

Там я скрипт поставил, а где его активизировать??????


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrustik писал(а):
stark писал(а):
я ошибся скрипт в договоре : Автоматизация ->Функции скриптов поведения->там выбрать радиус- аутефикацию

Там я скрипт поставил, а где его активизировать??????

открыть договор и там есть "скрипт поведения" слева в дереве


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 ноя 2008, 16:14 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
кстати, в этой строке выдает ошибку
Код:
number = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id ) );


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 ноя 2008, 16:28 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrustik писал(а):
кстати, в этой строке выдает ошибку
Код:
number = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id ) );

какую?


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

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Код:
number = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id ) );

1. Здесь нужна наверное одна скобка
2.
Код:
Parse error at line 16, column 86.  Encountered: )Parse error at line 16, column 86.  Encountered: )
   at bsh.Parser.generateParseException(Unknown Source)
   at bsh.Parser.jj_consume_token(Unknown Source)
   at bsh.Parser.Statement(Unknown Source)
   at bsh.Parser.BlockStatement(Unknown Source)
   at bsh.Parser.Block(Unknown Source)
   at bsh.Parser.Statement(Unknown Source)
   at bsh.Parser.IfStatement(Unknown Source)
   at bsh.Parser.Statement(Unknown Source)
   at bsh.Parser.BlockStatement(Unknown Source)
   at bsh.Parser.Block(Unknown Source)
   at bsh.Parser.Statement(Unknown Source)
   at bsh.Parser.IfStatement(Unknown Source)
   at bsh.Parser.Statement(Unknown Source)
   at bsh.Parser.BlockStatement(Unknown Source)
   at bsh.Parser.Line(Unknown Source)
   at bsh.Interpreter.Line(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bsh.Interpreter.eval(Unknown Source)
   at bitel.billing.server.script.bean.ScriptMachine.runScript(ScriptMachine.java:58)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:308)
   at bitel.billing.server.script.bean.event.EventProcessor.processEvent(EventProcessor.java:192)
   at bitel.billing.server.processor.DefaultProcessor.standartAuth(DefaultProcessor.java:250)
   at bitel.billing.server.processor.dialup.DialUpProcessor.authenticationProcess(DialUpProcessor.java:72)
   at bitel.billing.server.radius.RadiusRequestThread.processRequest(RadiusRequestThread.java:120)
   at bitel.billing.server.radius.RadiusRequestThread.run(RadiusRequestThread.java:48)
   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
   at java.lang.Thread.run(Unknown Source)

Тут дело в чем-то другом, я убрал пару пустых строк, а ошибка все таже.


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

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
mrustik писал(а):
Код:
Parse error at line 16, column 86.
вроде же русским по белому все сказало где искать ...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 12 ноя 2008, 18:28 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Вначале у меня была line 16, column 86
Код:
number = request.getStringAttribute( RadiusStandartAttributes.Calling_Station_Id ) );

а сейчас
Код:
ps = con.prepareStatement( "INSERT INTO user_login_limit_{mid} (num,lid,sid,param1,param2,comment,type_con) VALUES (?,?,'',?,?,'',5)" );

Получается, что ошибка в чем-то другом


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

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
У кого-нибудь этот скрипт рабjтает???????


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
После изменения скриптов радиуса нужно выполнить radius.sh flush_script_cache


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 18 ноя 2008, 10:23 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Вот рабочий скрипт:
Код:
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 java.util.*;
// event.getRequest|getResponse|getLogin|getContract|getErrorCode
errCode = event.getErrorCode();
if(errCode==0) {
 login = event.getLogin();
 ps = con.prepareStatement( "SELECT id FROM user_login_limit_{mid} WHERE lid=?" );
 ps.setInt(1, login.getId());
 rs = ps.executeQuery();
 if(!rs.next()){
  //Это строчку нужно поставить
  request = event.getRequest();
  number = request.getStringAttribute(RadiusStandartAttributes.Calling_Station_Id);
  ps = con.prepareStatement( "INSERT INTO user_login_limit_{mid} (num,lid,sid,param1,param2,comment,type_con) VALUES (?,?,'',?,?,'',5)" );
//5 - по номеру клиента
  ps.setInt(1, 0);//первое правило
  ps.setInt(2, login.getId());
  ps.setString(3, "1");//запретить
  ps.setString(4, "*");//все
  ps.executeUpdate();
  ps.setInt(1, 1);//второе правило
  ps.setString(3, "0");//разрешить
  ps.setString(4, number);//номер
  ps.executeUpdate();
 }
}

Нужно установить строку request = event.getRequest();
{mid} заменить кодом модуля DialUp.
Спасибо за помощь.


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

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


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

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


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

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