BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: 22 май 2009, 20:50 
Доброго времени суток!

Помогите, пожалуйста, разобраться!

Вот мой скрипт предобработки:
-----------------------------------------------------------------------
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
login = event.getLogin();

// Ищем пользователя и IP, привязанный к нему в таблице
// "radius_pair_ip_x", где "x" код модуля Dialup.
ps = con.prepareStatement( "SELECT ip FROM radius_pair_ip_1 WHERE id=?" );

ps.setInt( 1, login.getId() );
rs = ps.executeQuery();

login_ip = 0;
while( rs.next() )
login_ip = rs.getInt( 1 );

errCode = event.getErrorCode();

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

// 0 - нет ошибки, 2 - ошибка ввода пароля.
if( errCode != 0 && errCode != 2 )
{

response = event.getResponse();

response.setPacketType( RadiusPacket.AUTHENTICATION_ACCEPT );

// Готовим аттрибуты на отдачу

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

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

// Framed-IP-Address
raIp = new RadiusAttribute( 8 );
raIp.setIntValue( login_ip );

// Session-Timeout = 900 (15 min)
raStm = new RadiusAttribute( 27 );
raStm.setIntValue( 900 );

// Ascend-Client-Primary-DNS (192.168.0.3 или 3232235523 в DEC)
//rvaDNS = new RadiusVendorAttribute( 529, 135 );
//rvaDNS.setIntValue( 0 );

// Cisco-AV-Pair, устанавливаем WCCP-редирект на интерфейс
rva = new RadiusVendorAttribute( 9, 1 );
rva.setStringValue( "lcp:interface-config=ip wccp web-cache redirect in" );

// Cisco-AV-Pair, Устанавливаем access-list 155 на интерфейс
rvaAcc = new RadiusVendorAttribute( 9, 1 );
rvaAcc.setStringValue( "ip:inacl=155" );

response.addAttribute( raStm );
response.addAttribute( raSt );
response.addAttribute( raFp );
response.addAttribute( raIp );
//response.addVendorAttribute( rvaDNS );
response.addVendorAttribute( rva );
response.addVendorAttribute( rvaAcc );
}

// Пишем в специальную табличку текущий код ошибки, кроме Password Error,
// для дальнейшего вывода на специальной информационной страничке.
if( errCode != 2 )
{
ps = con.prepareStatement( "SELECT ip FROM dialup_conn_error WHERE ip=?" );

ps.setInt( 1, login_ip );
rs = ps.executeQuery();

found = false;
while( rs.next() )
found = true;

if( found )
ps = con.prepareStatement( "UPDATE dialup_conn_error SET error_code=? WHERE ip=?" );
else
ps = con.prepareStatement( "INSERT INTO dialup_conn_error(error_code,ip) VALUES(?,?)" );

ps.setInt( 1, errCode );
ps.setInt( 2, login_ip );

ps.executeUpdate();
}
-----------------------------------------------------------------------


Соединяюсь... не пускает! Смотрю логи:

-----------------------------------------------------------------------
GENERATE_TIME: 22.05.09 19:25:57
EXECUTION_STOP_TIME: 22.05.09 19:25:57
PROCESS_TIME: 20

OUT:
ip was not found!


ERROR:


EXCEPTIONS:


WARNINGS:
-----------------------------------------------------------------------

Так... раз "ip was not found!" значит не пускает кусок:
// Если логину не присвоен IP-адрес, то даем AUTH_REJECT.
if( login_ip == 0 )
{
print("ip was not found!");
errCode = 2;
response = event.getResponse();
response.setPacketType( RadiusPacket.AUTHENTICATION_REJECT );
}

меняю его на:
if( login_ip == 0 )
{
print("ip was not found!");
// errCode = 2;
// response = event.getResponse();
// response.setPacketType( RadiusPacket.AUTHENTICATION_REJECT );
}

Соединяюсь... OK! И IP прекрасно соединению назначился! Значит IP у соединения есть? Почему же его тогда не видит скрипт?

Адреса назначаю на циске так:
int virtual-template 3
....
peer default ip address pool bitel-pool

Код модуля диалап у меня 1 - все верно.... В чем же дело?


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

Зарегистрирован: 16 апр 2009, 00:12
Сообщения: 62
Карма: 0
1. Тут речь идет о железно привязанном IP. Он берется из таблицы базы этим куском
Код:
// Ищем пользователя и IP, привязанный к нему в таблице
// "radius_pair_ip_x", где "x" код модуля Dialup.
ps = con.prepareStatement( "SELECT ip FROM radius_pair_ip_1 WHERE id=?" );

ps.setInt( 1, login.getId() );
rs = ps.executeQuery();

login_ip = 0;
while( rs.next() )
login_ip = rs.getInt( 1 );

2. Это задумано автором, как привязка к договору и событию "Радиус-аутентификация" и в предобработке работать не будет.
IP привязывается логину здесь.


Вложения:
IP.jpg
IP.jpg [ 31.53 КБ | Просмотров: 2697 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 25 май 2009, 15:43 
Спасибо! Теперь все ясно :)


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


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

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