forum.bitel.ru
http://forum.bitel.ru/

Параметр mpd-rule
http://forum.bitel.ru/viewtopic.php?f=19&t=6946
Страница 1 из 1

Автор:  id835559 [ 09 июл 2012, 12:32 ]
Заголовок сообщения:  Параметр mpd-rule

Снова здравствуйте. Задачу с активацией тарифной опции я решил самостоятельно, сейчас задача такая.

При активации тарифной опции должно произойти следующее (опишу ручной способ, который надо запрограммировать):
1. В пункте "Модули" выбираться подпункт "Dial-Up".
2. Далее выбирается вкладка «Атрибуты RADIUS» и подвкладка «Атрибуты».
3. Внизу вкладки необходимо выбрать параметр «mpd-rule».
4. В соседней пустой строке вводится параметр в зависимости от того, какая тарифная опция выбрана.

Буду благодарен за подсказки.

Автор:  id835559 [ 09 июл 2012, 13:23 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Я нашёл в библиотеке функции модуля DialUp, похоже, что надо использовать их. Подскажите, пожалуйста, как, либо где почитать об этом.

Автор:  Amir [ 09 июл 2012, 14:33 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Помоему лучше использовать наборы атрибутов, чтобы в зависимости от какой-то тарифной опции добавлять атрибуты:
http://bgbilling.ru/v5.1/doc/ch13s06.html
http://bgbilling.ru/v5.1/doc/ch13s12s08.html

Автор:  id835559 [ 09 июл 2012, 15:16 ]
Заголовок сообщения:  Re: Параметр mpd-rule

К сожалению мы не можем под каждый тариф прописывать опции, это пройденный этап, мы считаем его громоздким и неудобным вариантом. Поэтому нам бы хотелось решить задачу именно через скрипты поведения и мы будем благодарны за подсказку как это сделать. Спасибо.

Автор:  Amir [ 09 июл 2012, 15:57 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Но сейчас нет события на конец действия тарифной опции, т.е. если активировать опцию на час, ровно через час не будет никакого события, что опция закончилась...
Код:
DialUpLoginManager loginManager = new DialUpLoginManager( con, moduleId );

Login login = loginManager.getLoginById( 123 );
Map<String, List<String[]>> attributeMap = loginManager.loadAVPPairs( login );

List<String[]> list = attributeMap.get( "default" );
if( list == null ) { list = new ArrayList<String[]>(); attributeMap.put( "default", list ); }
list.add( new String[]{ "mpd-rule", "xxxxxxxx" } );

List<String[]> attributes = new ArrayList<String[]>();
for( Map.Entry<String, List<String[]> e : attributeMap.entrySet() )
{
  String realm = e.getKey();
  for( String[] avp : e.getValue() )
  {
     attributes.add( new String[] { realm, avp[0], avp[1] } );
  }
}

loginManager.updateAttributes( login.getId(), attributes );

Автор:  id835559 [ 09 июл 2012, 17:42 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Спасибо, а не могли бы вы пояснить некоторые моменты этого кода? Например, я не смог понять что делает третья строка.

Автор:  Amir [ 09 июл 2012, 18:29 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Метод updateAttributes перетирает все атрибуты полностью, поэтому чтобы добавить что-нибудь - нужно получить сначала полный набор, добавить туда и вызвать updateAttributes. Для того чтобы получить атрибуты - нужен объект-логин, поэтому его получаем по id (123).

Автор:  id835559 [ 10 июл 2012, 12:30 ]
Заголовок сообщения:  Re: Параметр mpd-rule

А заместо параметров в угловых скобках что указывать?

Автор:  Amir [ 10 июл 2012, 14:04 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Если beanshell(bsh) скрипты 5.1 - то просто убрать их.

Автор:  id835559 [ 11 июл 2012, 17:50 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Хорошо, спасибо. Получается что в нашем случае (а у нас надо менять параметр в зависимости от выбранной тарифной опции) следует поставить проверку вместо строки
Код:
attributes.add( new String[] { realm, avp[0], avp[1] } );


Правильно?

Автор:  snark [ 12 июл 2012, 00:39 ]
Заголовок сообщения:  Re: Параметр mpd-rule

id835559 писал(а):
не смог понять что делает третья строка

id835559 писал(а):
заместо параметров в угловых скобках что указывать?

Пожалуйста, не поймите неправильно, но ... может все же лучше наборами атрибутов?

Автор:  id835559 [ 12 июл 2012, 10:45 ]
Заголовок сообщения:  Re: Параметр mpd-rule

Вероятно лучше, я предлагал. Но нам сказали так. Тем более, что этот скрипт будет ещё дополняться разрывом сессии и оповещением клиента об этом.

Прекрасно понимаю вашу озабоченность, я действительно мало что понимаю, я не ява-программист. Потому и задаю такие вопросы, так как хочу исключить ошибки.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/