BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
СообщениеДобавлено: 18 апр 2012, 17:39 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Called-Station-Id заполняю в скрипте предобработки с помощью
request.setStringAttribute( -1, RadiusDictionary.Called_Station_Id, called );

Почему-то не пишется в табличку to_number.
Точнее там постоянно пишется "*".
Это баг или фича, или где-то включается?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 апр 2012, 19:02 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
скрипт предобработки? можно его сюда?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 апр 2012, 19:13 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Код:
import bitel.billing.server.radius.*;
import ru.bitel.bgbilling.kernel.network.radius.*;
 
void processRequest( request, response, setup, con, conSlave )
{
   String prefix = "client-mac-address";
   int length = prefix.length();

   List attributes = request.getAttributes( Vendors.CISCO, CiscoVendor.Cisco_AVPair );

   if( attributes != null ) {
      for( it = attributes.iterator(); it.hasNext(); )   {
         RadiusAttribute ra = (RadiusAttribute)it.next();
         String value = ra.getValue();
 
         if( value.startsWith( prefix ) )   {
            request.setStringAttribute( -1, RadiusStandartAttributes.Calling_Station_Id, value.substring( length + 1 )  );
           }
      }
   }


    nas_port_id = request.getStringAttribute( -1, 87, null );
    if( nas_port_id != null )
    {
      String called = nas_port_id.substring(6);
      print("DEBUG NAS-Port-Id="+nas_port_id+" -> called="+called);
        request.setStringAttribute( -1, RadiusDictionary.Called_Station_Id, called );
    } else {
      print("DEBUG NAS-Port-Id=null");
   }
}


В логах видно, что called заполняется правильно.
Код:
04-18/17:14:58  INFO [radiusListener-p-12-t-24] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2103.334 -> called=2103.334
04-18/17:14:58  INFO [radiusListener-p-12-t-12] LoggingPrintStream - DEBUG NAS-Port-Id=0/1/0/2217.1206 -> called=2217.1206
04-18/17:14:58  INFO [radiusListener-p-12-t-5] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/1501 -> called=1501
04-18/17:14:58  INFO [radiusListener-p-12-t-21] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2211.1112 -> called=2211.1112
04-18/17:14:58  INFO [radiusListener-p-12-t-43] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2223.1043 -> called=2223.1043
04-18/17:14:58  INFO [radiusListener-p-12-t-6] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2223.1060 -> called=2223.1060
04-18/17:14:58  INFO [radiusListener-p-12-t-16] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2221.142 -> called=2221.142
04-18/17:14:58  INFO [radiusListener-p-12-t-43] LoggingPrintStream - DEBUG NAS-Port-Id=0/1/0/2214.1418 -> called=2214.1418
04-18/17:14:58  INFO [radiusListener-p-12-t-46] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2210.416 -> called=2210.416
04-18/17:14:58  INFO [radiusListener-p-12-t-20] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2103.334 -> called=2103.334
04-18/17:14:58  INFO [radiusListener-p-12-t-48] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2210.422 -> called=2210.422
04-18/17:14:58  INFO [radiusListener-p-12-t-53] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2223.1075 -> called=2223.1075
04-18/17:14:58  INFO [radiusListener-p-12-t-15] ScriptInstance - DEBUG NAS-Port-Id=0/1/0/2221.128 -> called=2221.128


Мак адрес в from_number пишется, а в to_number звездочки.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 апр 2012, 19:19 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Собственно задача в том, чтобы привязать абонентов к портам.
В NAS-Port-Id числа через точку - это outer и inner vlan'ы, каждый порт имеет уникальное сочетание outer+inner.
from_number занят маком, поэтому решил заюзать to_number и добавлять правила, что конкретным логинам можно "звонить" на эти конкретные "типа номера".
а там все равно звезды :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2012, 05:58 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Код:
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 = it.next();
value = ra.getValue();
 
if( value.startsWith( prefix ) )
{
request.setStringAttribute( RadiusStandartAttributes.Calling_Station_Id, value.substring( length + 1 ) );
}
}

Поменяйте на нужно и может и поможет =)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Чего менять то? В Calling_Station_Id все прекрасно заносится. С этим проблем нет. А мне надо Callied_Station_Id.

Т.е. например после такого тестового кода:
Код:
import bitel.billing.server.radius.*;
 
request.setStringAttribute( RadiusStandartAttributes.Calling_Station_Id, "XXX" );
request.setStringAttribute( RadiusStandartAttributes.Called_Station_Id, "YYY" );


в from_number имеем XXX, а вот в to_number по прежнему звезды, а не YYY.
Почему?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2012, 13:55 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
дело было в
nas.port_phone
все заработало.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2012, 16:20 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
что было то?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2012, 16:51 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
в конфиге присутствовало nas.port_phone.*="*"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 апр 2012, 05:53 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
ааа)))

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 апр 2012, 18:34 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
afedorov писал(а):
Собственно задача в том, чтобы привязать абонентов к портам.

У меня это давно работает, правда через объекты.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 апр 2012, 19:13 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Через какие объекты?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 апр 2012, 20:42 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Объекты договора.
При первом коннекте IP адрес свича и номер порта пробивается в объект договора и потом, при каждом последующем подключении, приходящие от юзера IP адрес и порт свича сравниваются с этим объектом и если совпало, то пускает, а если не совпало - дает отлуп.
Почему именно объекты, а не как то еще? Доступ к объектам удобнее - прямо в договоре, а не в какой-то там подменюшке модуля.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 апр 2012, 05:03 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
снарк, а расскажи как работать с объектами и каково практическое их применение помимо этого скрипта, так и не доперли =)

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 апр 2012, 11:10 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Техучет. Т.е. кто откуда и куда.
Допустим для модуля телефонии это самое то. Где абонент подключен, от какого шкафа и пр. и пр.
я щас буду это запиливать :D Надеюсь ничего сложного :D

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 21 апр 2012, 14:57 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
skyb писал(а):
расскажи как работать с объектами и каково практическое их применение помимо этого скрипта

На неделе думаю статью запилить в вики - там, в общем то, все завязано на работе с объектами. Правда у меня 5.0, но думаю в старших версиях не сильно будет отличаться.
Практическое применение тупо простое:
1. Как и говорил Phricker - _точно_ знать _куда/где_ подключен абонент.
2. Не допустить обмена логинами/паролями, т.е. даже если пользователь А отдаст свой логин и пароль пользователю Б, то у последнего просто ничего не будет работать, т.к. эта пара логин+пароль действительна только по месту подключения пользователя А. Получается что у всех юзеров может быть вообще один пароль, например 123456, а воспользоваться чужим логином все равно не получится.

skyb писал(а):
так и не доперли =)

just as planned же )))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 апр 2012, 06:56 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
о...давай давай, нужная вещь

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 апр 2012, 16:06 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Бета версия статьи тут (это все работает в 5.0), но общий смысл, думаю, будет понятен.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 апр 2012, 14:17 
Не в сети

Зарегистрирован: 16 ноя 2011, 18:30
Сообщения: 115
Карма: 0
Насколько я понял в вашей реализации на контракт вешаются объекты в которых инфа о том, откуда можно подключаться, но к конкретным логинам контракта эти объекты не привязаны и любой логин контракта сможет подключиться из любой точки описанной в объектах этого контракта?

P.S. Кода не многовато? Какой у вас call rate и какие процессорные мощности на сервере?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 апр 2012, 19:53 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
afedorov писал(а):
Насколько я понял в вашей реализации на контракт вешаются объекты в которых инфа о том, откуда можно подключаться, но к конкретным логинам контракта эти объекты не привязаны и любой логин контракта сможет подключиться из любой точки описанной в объектах этого контракта?

Именно так. Я не вижу смысла прибивать гвоздями конкретный логин/алиас договора к свичу/порту, т.к. у меня "кол-во абон. платы = абон. плата * кол-во логинов" (анлимы же, доп логин - всего лишь уход от доп. договора), а раз клиент платит - не все ли равно с какого именно свича/порта он зайдет? Например: если у него 2 логина в разных концах города - мне проще разрешить юзеру пользоваться его логинами/алиасами в любой точке подключения, чем общаться с ним и объяснять что он не может пользоваться логином А в точке Б - так и юзер доволен и мне спокойней и, главное, прибыльнее.


afedorov писал(а):
Кода не многовато?

Насколько я смог разобраться - через API короче не получится, но если Вы сможете - буду рад посмотреть как это можно сделать.


afedorov писал(а):
Какой у вас call rate и какие процессорные мощности на сервере?

Call rate большой только в начале месяца и только в полночь, вот тогда мой слабенький сервак "проседает", все остальное время полет нормальный. Сервер, на котором живут все компоненты БГБ и мускул (InnoDB), такой:
Код:
# sysctl dev.acpi.0.%desc
dev.acpi.0.%desc: INTEL S3200SHL
# sysctl hw.model
hw.model: Intel(R) Core(TM)2 Duo CPU     E7300  @ 2.66GHz
# sysctl hw.realmem
hw.realmem: 9126805504

"Проседает" только по памяти (загрузка проца стабильно 5-10%), т.к. мускулу ее не хватает, а мать бОльше не понимает. Сейчас выношу мускул на отдельный сервак с 32ГБ оператики и, надеюсь, тогда все будет нормально, т.е. без "проседаний".


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

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


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

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


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

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