BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 04 июл 2025, 18:26

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: 07 май 2009, 19:40 
Не в сети

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
Необходимо научить модуль соеденять при отрицательном балансе дебитовые договора.
Попробовал скипт из вики - дает ошибку:

Цитата:
EXCEPTIONS:
Sourced file: Function [id:1; title:rad-auth] : Method Invocation ps.setIntSourced file: Function [id:1; title:rad-auth] : Method Invocation ps.setInt : at Line: 14 : in file: Function [id:1; title:rad-auth] : ps .setInt ( 1 , login .getId ( ) )

Target exception: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).


А нельзя как нить попроще ? Вроде простая задача.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 май 2009, 10:32 
Не в сети
Клиент

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
Во-первых, соединять Вам нужно для чего? Если обсчитывать, то не выйдет, т.к. сессии в биллинге не будет. Если просто проинформировать абонента, то выйдет.
Во-вторых, что за скрипт и куда вы его прикручиваете?


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

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
Соединять нужно, что б пустить абонента на сайт оператора и личный кабинет. Считать ненужно.

Скрипт из вики: http://wiki.bgbilling.ru/index.php/Передача_ACCEPT_вместо_REJECT_вместе_с_доп._аттрибутами

С приведенной ошибкой скрипта уже разобрался.
Но скрипт все равно не авторизует.
Срабатывает это условие.

Цитата:
// Если логину не присвоен IP-адрес, то даем AUTH_REJECT.
if( login_ip == 0 )
{
errCode = 2;
response = event.getResponse();
response.setPacketType( RadiusPacket.AUTHENTICATION_REJECT );
}


Я не совсем понимаю, при чем тут адрес. Можно пояснить. ?
Я проверил, без скрипта - авторизует. Если прикрутить скрипт к событию RADIUS-авторизация и добавить в договор. - срабатывает условие приведеное выше.


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

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
попробуйте такой вариант:
Код:
import bitel.billing.server.radius.*;
import bitel.billing.server.script.event.*;
import java.util.*;

errorCode = event.getErrorCode();
response  = event.getResponse();

if (errorCode == 4 || errorCode == 33) {
    response.setPacketType(RadiusPacket.AUTHENTICATION_ACCEPT);

    // Service-Type = 2
    rad_attrib_1 = new RadiusAttribute(6);
    rad_attrib_1.setIntValue(2);

    // Framed-Protocol = 1
    rad_attrib_2 = new RadiusAttribute(7);
    rad_attrib_2.setIntValue(1);

    // Session-Timeout = 300
    rad_attrib_3 = new RadiusAttribute(27);
    rad_attrib_3.setIntValue(300);

    response.addAttribute(rad_attrib_1);
    response.addAttribute(rad_attrib_2);
    response.addAttribute(rad_attrib_3);

    print("\nБаланс отрицательный.\nЛогин '" + login + "' подключился, но доступна только статистика.");
}
точно должен пустить ;)


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

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
Ага. Работатет. :)

Но адрес из пула не назначает... :(
Как быть ?


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

Зарегистрирован: 12 фев 2007, 18:49
Сообщения: 335
Карма: 15
Переписать скрипт и назначать адреса из другого диапазона...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 май 2009, 15:41 
Не в сети
Клиент

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

iros писал(а):
Как быть ?
тут все конечно же де-факто знают какое оборудование Вы используете, как ему сообщить что адреса надо брать из пула созданного на этом оборудовании и имя этого пула да?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 08 май 2009, 17:21 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
может вообще настроить так что бы на статистику пускала без VPN... :D


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

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
>может вообще настроить так что бы на статистику пускала без VPN...
У меня "тотальный" PPPoE.

iros писал(а):
Как быть ?
тут все конечно же де-факто знают какое оборудование Вы используете?[/quote]

Извиняюсь, но я был уверен, что радиус сам все это решит.
Linux
ppp-2.4.4b1
rp-pppoe-3.10

iros писал(а):
как ему сообщить что адреса надо брать из пула созданного на этом оборудовании и имя этого пула да?


Вы намекаете на FramedPool ? Незнаком с этой методикой. Буду признателен за ссылки или примеры.


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

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
Если я опишу в модуле пул адресов
Например:

pools.pool_1=192.168.168.1-192.168.168.254

Какие классы/методы я могу использовать,что бы самому выбирать из этого пула адреса в скрипте?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 май 2009, 21:57 
snark писал(а):
попробуйте такой вариант:
Код:
import bitel.billing.server.radius.*;
import bitel.billing.server.script.event.*;
import java.util.*;

errorCode = event.getErrorCode();
response  = event.getResponse();

if (errorCode == 4 || errorCode == 33) {
    response.setPacketType(RadiusPacket.AUTHENTICATION_ACCEPT);

    // Service-Type = 2
    rad_attrib_1 = new RadiusAttribute(6);
    rad_attrib_1.setIntValue(2);

    // Framed-Protocol = 1
    rad_attrib_2 = new RadiusAttribute(7);
    rad_attrib_2.setIntValue(1);

    // Session-Timeout = 300
    rad_attrib_3 = new RadiusAttribute(27);
    rad_attrib_3.setIntValue(300);

    response.addAttribute(rad_attrib_1);
    response.addAttribute(rad_attrib_2);
    response.addAttribute(rad_attrib_3);

    print("\nБаланс отрицательный.\nЛогин '" + login + "' подключился, но доступна только статистика.");
}
точно должен пустить ;)



У меня аналогичная проблема (час назад завел отдельную тему, но видать поторопился) - хотелось бы все-таки понять почему адрес пустой? (подробности тут - http://www.bgbilling.ru/forum/viewtopic.php?t=2339)
Cкрипт же из вики - если это не баг а фича - надо бы вики поправить...


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 22 май 2009, 22:20 
Не в сети

Зарегистрирован: 25 янв 2009, 17:36
Сообщения: 221
Карма: 0
Если абонент признан должником - сессия в биллинге не появится.
IP выдан не будет. Со всеми вытекающими.

С этим можно спорить, но это так.
Скрипт заменяет ответ радиуса и как я понимаю должен сам решать какой IP выдать абоненту. Framed-Pool - не канает. pppd не умеет с этим работать. У радиусклиента такого атрибута вообще нет.
Лично я бы предпочел выдывать IP из своего пула, описаного в модуле. Но похоже и это не пройдет.
Как быть - непонятно. Разработчики выхода не предлогают.
Для них устанавливать соединение если "в минусе" - это дикость.
Считаю, что такие сесии надо заносить в базу и обрабатывать отдельно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 23 май 2009, 01:43 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
а вариант когда радиус возвращает accept, но не возвращает Framed-IP или Framed-Pool и IP назначается pppd не прокатит...?

Код:
 /etc/pptpd.conf
# Локальный IP-адрес сервера PPTP
localip 192.168.0.1
# Пул адресов, которые сервер выдаёт клиентам
# Эти адреса не должны использоваться в локальной сети
remoteip 192.168.0.10-20


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 май 2009, 12:22 
Не в сети
Клиент

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 май 2009, 15:04 
насчет пулов... я делаю так:

ra4 = new RadiusAttribute(88);
ra4.setStringValue("bitel");

resp.addAttribute(ra4);

перегружаю радиус, соединяюсь:

Type=AUTHENTICATION_REQUEST
Attributes:
User-Name=mylogin
NAS-Identifier=R2
NAS-Port-Id=0/0/0/23
User-Password=12345
NAS-IP-Address=10.0.0.2
NAS-Port=324227
Service-Type=2
Framed-Protocol=1
Calling-Station-Id=00c0.262d.83bd
NAS-Port-Type=15
cisco-avpair=client-mac-address=00c0.262d.83bd

INFO 25.05.2009 13:57:24 RESPONSE:
Type=AUTHENTICATION_ACCEPT
Process time:311
Attributes:
Reply-Message=4
Service-Type=2
Framed-Protocol=1
Session-Timeout=300
Framed-Pool=bitel

INFO 25.05.2009 13:57:24 RESPONSE:
Type=AUTHENTICATION_ACCEPT
Process time:343
Attributes:
Reply-Message=4
Service-Type=2
Framed-Protocol=1
Session-Timeout=300
Framed-Pool=bitel


при этом на cisco:
ip local pool bitel 192.168.134.1 192.168.134.100

Но при соединении получаю ошибку 738: The server did not assign an address

В чем же дело?


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 май 2009, 15:28 
Не в сети
Клиент

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

ra4 = new RadiusAttribute(88);
ra4.setStringValue("bitel");

resp.addAttribute(ra4);

перегружаю радиус, соединяюсь

...

при этом на cisco:
ip local pool bitel 192.168.134.1 192.168.134.100

Но при соединении получаю ошибку 738: The server did not assign an address

В чем же дело?

сделайте так:
Код:
response = event.getResponse();
response.setPacketType(RadiusPacket.AUTHENTICATION_ACCEPT);

ra4 = new RadiusVendorAttribute(9, 1);
ra4.setStringValue("ip:addr-pool=bitel");

response.addVendorAttribute(ra4);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 май 2009, 15:55 
Не так не получится...
У меня "ip:..." для проприетарного 9,1 атрибута почему-то попадает в username :-)
http://www.bgbilling.ru/forum/viewtopic.php?t=2348

Как получится решить эту проблему - обязательно попробую


Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: 06 июн 2009, 13:28 
Не в сети

Зарегистрирован: 29 июл 2008, 13:57
Сообщения: 94
Карма: 0
Как результат?..


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

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


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

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


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

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