BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 16 май 2024, 22:32

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




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 09 фев 2010, 12:52 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
madmax писал(а):
А что делиться опытом. Создаешь Типы правил, привязываешь их в тариф и все, далее задача проверки шлюзов проверяет тип правила и меняет его на действующий.

да.. только проверку нужно реализовать в скриптовом шлюзе


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 09 фев 2010, 13:17 
Не в сети

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
Так ни надо никакой проверки. Вот скрипт при катором стоит в договоре шлюза пользовательский тип, и хоть тресни при проверки шлюза он меняет тип правила с тарифного плана, не смотря на то что на договоре в шлюзе стоит Пользовательский тип т.е. нет никакого типа.
Что только не делали, проверка шлюза берет параметры с тарифа и ставит их на шлюз
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.StringTokenizer;

import bitel.billing.common.module.ipn.IPNContractStatus;
import bitel.billing.server.ipn.GateWorker;
import bitel.billing.server.ipn.UserStatus;
import bitel.billing.server.ipn.bean.ManadUtils;
import bitel.billing.server.ipn.bean.VlanManager;
import bitel.billing.server.util.DefaultServerSetup;
import bitel.billing.server.util.Utils;
//import bitel.billing.server.util.telnet.OperationTimedoutException;
import bitel.billing.server.util.telnet.TelnetSession;
import ru.bitel.bgbilling.common.DefaultSetup;
import bitel.billing.common.IPUtils;
import bitel.billing.server.ipn.bean.GateType;
import bitel.billing.server.ipn.bean.RuleType;
import bitel.billing.server.ipn.bean.VlanManager;
import bitel.billing.server.util.Utils;
//import bitel.billing.server.util.telnet.OperationTimedoutException;
import bitel.billing.server.util.telnet.TelnetSession;



protected void doSync()
{
try
{
// log.info( "start of cisco........................................................");
host = gate.getHost();
port = gate.getPort();


DefaultServerSetup gateSetup = new DefaultServerSetup( gate.getConfig(), "\r\n" );

pswdLogin = gate.getKeyword();
login = gateSetup.getStringValue( "login");
pswdCfg = gateSetup.getStringValue( "cfg.pswd");
timeout = gateSetup.getIntValue( "timeout", 0 );


result = new StringBuffer();


//if( log.isDebugEnabled() )
//{
// log.debug( gate.getId() + " gate: " + host + ":" + port + " pswdLogin: " + pswdLogin + " pswdCfg: " + pswdCfg );
//}



session = new TelnetSession( host, port);
session.setTimeout( timeout );
session.setLoginPromptSequence( ":" );
session.connect();

result.append( session.doCommand( login ) );

session.setLoginPromptSequence( "#" );
result.append( session.doCommand( pswdLogin ) );


result.append( session.doCommand( "terminal length 0" ) );
result.append( session.doCommand( "terminal width 0" ) );


result.append( session.doCommand( "configure terminal" ) );

log.debug( "execute commands" );
doCommands( session, result);

result.append( session.doCommand( "exit" ) );
session.doCommandAsync( "exit" );

//log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
//log.info( result );
//log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");

//log.debug( "ok" );
} catch (Exception e)
{

throw new RuntimeException ( e );
}

//log.info( "end of cisco........................................................");
}

protected void add()
{

}


//private void doCommands( TelnetSession session, StringBuffer result) throws IOException, OperationTimedoutException
private void doCommands( TelnetSession session, StringBuffer result) throws IOException
{
for( UserStatus status : statusList )
{
VlanManager manager = new VlanManager(status.mid, con);
gateId = gate.getId();
//log.info("gateId=" + gateId);
vid = manager.getVlan( gateId, status.contractId );
//log.info("vid=" + vid);

//TODO - подумать что сделать справилами на добавление

rules = null;
if (status.status == IPNContractStatus.STATUS_OPEN)
{

rules = getOpenRules( status, vid );

}
else if (status.status == IPNContractStatus.STATUS_REMOVED)
{
rules = getRemoveRules( status, vid );
}
//if closed and etc
else
{
rules = getCloseRules( status, vid );

}

if (vid > 0)
{
for ( String rule : rules )
{
result.append( session.doCommand( rule ) );
}
}

}

}

getOpenRules( status, vid )
{
return getRules( status, "\\[OPEN\\](.*)\\[/OPEN\\]", vid );
}

getCloseRules( status, vid )
{
return getRules( status, "\\[CLOSE\\](.*)\\[/CLOSE\\]", vid );
}

getRemoveRules( UserStatus status, int vid )
{
return getRules( status, "\\[REMOVE\\](.*)\\[/REMOVE\\]", vid );
}

getRules( status, template, vid )
{
// пользовательское правило, без типа - то все оставляем как есть
rule = status.rule.getRuleText();
//log.info("rule=" + rule);

//типизированное правило
if( status.ruleType != null )

{
rule = generateRule( rule, status.gateType, status.ruleType, vid );
}

//log.info("rule=" + rule);



pattern = Pattern.compile( template, Pattern.DOTALL );
m = pattern.matcher( rule );
if (m.find())
{
rule = m.group( 1 );
}

rule.replaceAll( "\r", "" );


parts = rule.split( "\n" );

result = new ArrayList();
for ( String part : parts )
{
if ( !Utils.isEmptyString( part ))
{
result.add( part );
}
}

return result;
}

generateRule( addresses, gateType, ruleType, int vid )
{
ruleText = ManadUtils.getRule( gateType, ruleType );
replacements = new HashMap ();
if ( vid > 0)
{
replacements.put( "\\{VID\\}", String.valueOf( vid ) );
}
return ManadUtils.generateRule( ruleText, addresses, replacements, ruleType );
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 09 фев 2010, 13:18 
Не в сети

Зарегистрирован: 16 ноя 2007, 16:11
Сообщения: 829
Карма: 49
Если шлюз закрыть/открыть новое правило применится? В 4.6?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 09 фев 2010, 13:29 
Не в сети

Зарегистрирован: 19 дек 2008, 17:46
Сообщения: 749
Карма: 10
Версия 5.0. При закрытом не тестили - но как видно применяется. а при открытом точно применяется.
Вот например у договора висит тариф и шлюз с любым правилом (пользовательским или выбраным не важно). Заходим в тариф договора ставим параметр "Период" и на него вешаем любое правило и после проверки шлюза оно отрабатывает, даже не передергивая шлюз.
вещь конечко хорошая но она гадина трогает пользоватеьское правило и перетирает все пользователькие настройки и заменяет все выбраным типом.
Короче что-то разработчики недокрутили.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 16 мар 2010, 17:56 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Из тарифа код типа правила получили, а есть возможность в API, установить этот тип в договоре в конфигурации шлюза? Функция RuleTypeManager.updateType(RuleType type) не прокатила.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 16 мар 2010, 18:09 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrustik писал(а):
Из тарифа код типа правила получили, а есть возможность в API, установить этот тип в договоре в конфигурации шлюза? Функция RuleTypeManager.updateType(RuleType type) не прокатила.

UserGateRuleManager.updateUserGateRule


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 17 мар 2010, 12:33 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
В доке написано updateUserGateRule(java.lang.String id, UserGateRule ugr), что это за id
Написал
Код:
UserGateRuleManager = new UserGateRuleManager(con,status.mid);
UserGateRuleManager.updateUserGateRule((status.rule.getID()).toString(),status.rule);

Но ничего не меняется.
status.rule.getRuleTypeId(); выдает новый(правильный) тип правила, но сохранить его не получается; Или же самому лезть в sql.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 17 мар 2010, 13:09 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrustik писал(а):
В доке написано updateUserGateRule(java.lang.String id, UserGateRule ugr), что это за id
Написал
Код:
UserGateRuleManager = new UserGateRuleManager(con,status.mid);
UserGateRuleManager.updateUserGateRule((status.rule.getID()).toString(),status.rule);

Но ничего не меняется.
status.rule.getRuleTypeId(); выдает новый(правильный) тип правила, но сохранить его не получается; Или же самому лезть в sql.


UserGateRule - это отдельная сущность .. связь договора с типом правила
чтобы получить

UserGateRuleManager.getUserGateRules( int cid ) - получить список всех шлюзов договора . Потом пробежаться по этому списку (у вас наверное всего один элемент в нем ) и для каждого UserGateRule нужно вызвать setRuleTypeId. и сохранить( UserGateRuleManager.updateUserGateRule) .. id - это getId у этих обектов UserGateRule


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 17 мар 2010, 17:30 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Спасибо, все получилось нужно было поставить status.rule.setRuleTypeId(Integer.parseInt(rule_id));
rule_id - новый тип правила
общий код сохранения
Код:
status.rule.setRuleTypeId(Integer.parseInt(rule_id));
UserGateRuleManager = new UserGateRuleManager(con,status.mid);
UserGateRuleManager.updateUserGateRule((status.rule.getID()).toString(),status.rule);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 18 мар 2010, 13:25 
Не в сети

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 18 мар 2010, 15:48 
Не в сети
Разработчик

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

что значит значит загрузка ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 19 мар 2010, 10:12 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Входящий трафик клиента с 1 числа и по текущую дату, время. Я понимаю, что данные будут не совсем актуальны, но каждый час будут реально корректироваться, после обработки логов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 19 мар 2010, 13:30 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mrustik писал(а):
Входящий трафик клиента с 1 числа и по текущую дату, время. Я понимаю, что данные будут не совсем актуальны, но каждый час будут реально корректироваться, после обработки логов.


таблица ipn_contract_data_{mid}_yyyyMM


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 19 мар 2010, 19:54 
Не в сети

Зарегистрирован: 12 фев 2008, 16:11
Сообщения: 485
Карма: 12
Оттуда и выбираю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 20 сен 2010, 10:45 
Не в сети

Зарегистрирован: 06 май 2009, 05:25
Сообщения: 102
Откуда: г. Амурск
Карма: 10
Сервер: 5.1, сборка 449.
IPN сборка 195.

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

****
//цикл по всем договорам на этом шлюзе
for( UserStatus status : statusList )
{
speed = 1000;
if ( status.ruleType != null ) {
speed = 500;
}
//Далее имею speed = 1000 независимо от тарифа.

Что не то делаю?
Тариф в аттаче.


Вложения:
tarif.jpg
tarif.jpg [ 14.17 КБ | Просмотров: 8116 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип правила IPN (BGBS)
СообщениеДобавлено: 20 сен 2010, 14:05 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Yagoda писал(а):
Сервер: 5.1, сборка 449.
IPN сборка 195.

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

****
//цикл по всем договорам на этом шлюзе
for( UserStatus status : statusList )
{
speed = 1000;
if ( status.ruleType != null ) {
speed = 500;
}
//Далее имею speed = 1000 независимо от тарифа.

Что не то делаю?
Тариф в аттаче.


не понятно что хотите получить и в чем у вас проблема .. И вообще создавайте уж отдельную тему , хватит в эту все подряд писать


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2

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


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

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


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

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