BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: [BGB5.1] Не работает с ZyXEL
СообщениеДобавлено: 02 дек 2010, 14:17 
Не в сети

Зарегистрирован: 17 июн 2008, 09:44
Сообщения: 25
Карма: 0
После обновления с 4.6 до версии 5.1, биллинг перестал открывать\закрывать шлюзы. Если руками коннектится с сервера до свитча ,то всё нормально работает. Если пытаться через биллинг, то долго думает и выдает в server.log такое:

Код:
TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*;  import java.util.regex.*;  import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ;

Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed

        at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53)
        at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
        at bsh.BSHBlock.eval(BSHBlock.java:81)
        at bsh.BSHBlock.eval(BSHBlock.java:47)
        at bsh.BSHTryStatement.eval(BSHTryStatement.java:166)
        at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
        at bsh.BSHBlock.eval(BSHBlock.java:81)
        at bsh.BshMethod.invokeImpl(BshMethod.java:362)
        at bsh.BshMethod.invoke(BshMethod.java:258)
        at bsh.BshMethod.invoke(BshMethod.java:161)
        at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:325)
        at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:268)
        at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:139)
        at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:101)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - java.lang.RuntimeException: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*;  import java.util.regex.*;  import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ;

Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed

12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:282)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:139)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:101)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - Caused by: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*;  import java.util.regex.*;  import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ;

Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed

12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BSHBlock.eval(BSHBlock.java:81)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BSHBlock.eval(BSHBlock.java:47)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BSHTryStatement.eval(BSHTryStatement.java:166)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BSHBlock.eval(BSHBlock.java:81)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BshMethod.invokeImpl(BshMethod.java:362)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BshMethod.invoke(BshMethod.java:258)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bsh.BshMethod.invoke(BshMethod.java:161)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:325)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:268)
12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream -   ... 2 more
12-02/16:23:09 ERROR [Thread-29] CiscoSSHSwitchGateWorker - Gate unaccesible - 172.18.5.167
12-02/16:23:09 ERROR [Thread-29] CiscoSSHSwitchGateWorker - -------------------------
12-02/16:23:09 ERROR [Thread-29] CiscoSSHSwitchGateWorker - error: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*;  import java.util.regex.*;  import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ;

Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed

java.lang.RuntimeException: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*;  import java.util.regex.*;  import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ;

Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed

        at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:282)
        at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:139)
        at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:101)
Caused by: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*;  import java.util.regex.*;  import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ;

Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed

        at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53)
        at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
        at bsh.BSHBlock.eval(BSHBlock.java:81)
        at bsh.BSHBlock.eval(BSHBlock.java:47)
        at bsh.BSHTryStatement.eval(BSHTryStatement.java:166)
        at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
        at bsh.BSHBlock.eval(BSHBlock.java:81)
        at bsh.BshMethod.invokeImpl(BshMethod.java:362)
        at bsh.BshMethod.invoke(BshMethod.java:258)
        at bsh.BshMethod.invoke(BshMethod.java:161)
        at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:325)
        at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:268)
        ... 2 more



Что может быть? куда копать?

Версии
Клиент: вер. 5.1 сборка 431 от 30.11.2010 13:57:29
os:Windows 7; java:Sun Microsystems Inc., v.1.6.0_20
Сервер: вер. 5.1 сборка 543 от 30.11.2010 13:57:20
os:Linux; java:Sun Microsystems Inc., v.1.6.0_22

ipn вер. 5.1 сборка 213 от 29.11.2010 19:07:45


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [BGB5.1] Не работает с ZyXEL
СообщениеДобавлено: 03 дек 2010, 15:00 
Не в сети
Разработчик
Аватара пользователя

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Шлюз скриптовый? Выложите скрипт...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [BGB5.1] Не работает с ZyXEL
СообщениеДобавлено: 07 дек 2010, 11:21 
Не в сети

Зарегистрирован: 17 июн 2008, 09:44
Сообщения: 25
Карма: 0
Код:
import java.util.*;
import java.util.regex.*;
import java.util.regex.Pattern.*;

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.ssh.SSHSession;
import bitel.billing.server.ipn.UserStatus;
import ru.bitel.bgbilling.common.DefaultSetup;
import bitel.billing.server.ipn.bean.GateType;
import bitel.billing.server.ipn.bean.LoopPattern;
import bitel.billing.server.ipn.bean.RuleType;
import bitel.billing.server.ipn.bean.UserGateRuleManager;

protected void doSync()
{
log.info("start of SSH_SWITCH........................................................");
host = gate.getHost();
port = gate.getPort();
String macAddr = "";
String ipAddr = "";
String swPort = "";

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

// берем IPoE vlan в настройках шлюза zyxel
int IPoE_vid = gateSetup.getIntValue( "IPoE_vlan", 4000 );
// берем PPPoE vlan в настройках шлюза zyxel. Пока не используем, но может пригодиться...
int PPPoE_vid = gateSetup.getIntValue( "PPPoE_vlan", 4000 );

login = gateSetup.getStringValue( "login", "admin" );
timeout = gateSetup.getIntValue( "timeout", 4000 );

pswd = gate.getKeyword();

if( log.isDebugEnabled() )
{
log.info( " gate: " + host + ":" + port + " login: " + login + " pswd: " + pswd );
}

session = null;
result = new StringBuffer();

try
{
log.info("Connect to: "+host+":"+port+" as "+login+"/"+pswd);
session = new SSHSession( host, port, login, pswd );
session.setTimeout( timeout );
session.connect();

result.append( session.command( "configure" ) );

//VlanManager manager = new VlanManager(mid, con);

log.info( "running commands");

for( UserStatus status : statusList )
{
// берем vlan из "Ресурсы vlan" в редактировании шлюза у юзера
// в свою очередь номер влана там появляется из параметра шлюза range
// в соответствии с порядковым номером в строке:
// range=10;11;12;13;14;15 порт N2 будет иметь vlan 11
// int Mgt_vid = manager.getVlan( gate.getId(), status.contractId );
int Mgt_vid = PPPoE_vid;

// берем MAC в настройках шлюза у юзера
UserGateRuleManager ugrm = new UserGateRuleManager(con, mid);
List userRules = ugrm.getUserGateRules(status.contractId);
String rule_text = userRules.get(0).getRuleText();
log.info("rule_text: " + rule_text);
// Pattern p = Pattern.compile("(\\d+.\\d+.\\d+.\\d+):(\\d+):?(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)?");
Pattern p = Pattern.compile("(\\d+.\\d+.\\d+.\\d+):(\\d+)");
Matcher m = p.matcher(rule_text);
if(m.find())
{
ipAddr = m.group(1);
swPort = m.group(2);
log.info( "ipAddr=" + ipAddr + "; swPort=" + swPort );
}

log.info( "IPoE_vid=" + IPoE_vid + "; PPPoE_vid=" + PPPoE_vid + " Mgt_vid=" + Mgt_vid );
if ( ipAddr == "" || swPort == "" ) {
log.info("Error: no link - IP address or Port number not defined");
} else {
if ( status.status == IPNContractStatus.STATUS_OPEN ) {
rules = getOpenRules2( status, Mgt_vid, IPoE_vid, macAddr, ipAddr, swPort );
for ( String rule : rules ) {
result.append( session.command( rule ) );
}
} else {
rules = getCloseRules2( status, Mgt_vid, IPoE_vid, macAddr, ipAddr, swPort );
for ( String rule : rules ) {
result.append( session.command( rule ) );
}
}
}
}
result.append( session.command( "exit" ) );
}
catch ( Exception e )
{
// log.error("", e );
log.info(e.getMessage());

throw new RuntimeException ( e );
}
finally
{
if( session != null )
{
session.disconnect();
}

log.info( "end of SSH_SWITCH........................................................");
}
}

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

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

getOpenRules2( UserStatus status, int PPPoE_vid, int IPoE_vid, macAddr, ipAddr, swPort )
{
return getRules2( status, "\\[OPEN\\](.*)\\[/OPEN\\].*", PPPoE_vid, IPoE_vid, macAddr, ipAddr, swPort );
}

getCloseRules2( UserStatus status, int PPPoE_vid, int IPoE_vid, macAddr, ipAddr, swPort )
{
return getRules2( status, "\\[CLOSE\\](.*)\\[/CLOSE\\]", PPPoE_vid, IPoE_vid, macAddr, ipAddr, swPort );
}

getRules( status, template, vid )
{
// пользовательское правило, без типа - то все оставляем как есть

rule = status.rule.getRuleText();

//порты идут до #, а адреса идут после

String [] parts = rule.split( "#" );
portsStr = "";
addresesStr = "";

if ( parts.length > 0 )
{
portsStr = parts[0];
}

if ( parts.length > 1 )
{
addresesStr = parts[1];
}

//типизированное правило
if( status.ruleType != null )
{
rule = generateRule( addresesStr, portsStr, vid, status.gateType, status.ruleType );
}

// здесь 32 - это флаг DOTALL, т.е. в точку . включается все, в том числе и \n
pattern = Pattern.compile( template, 32 );
m = pattern.matcher( rule );
if (m.find())
{
rule = m.group( 1 );
} else {
log.info("regexp not match");
}

rule.replaceAll( "\r", "" );
parts = rule.split( "\n" );

return parts;
}

getRules2( status, template, int PPPoE_vid, int IPoE_vid, macAddr, ipAddr, swPort )
{
// пользовательское правило, без типа - то все оставляем как есть

rule = status.rule.getRuleText();

//порты идут до #, а адреса идут после

String [] parts = rule.split( "#" );
portsStr = "";
addresesStr = "";

if ( parts.length > 0 )
{
portsStr = parts[0];
}

if ( parts.length > 1 )
{
addresesStr = parts[1];
}

//типизированное правило
if( status.ruleType != null )
{
rule = generateRule2( addresesStr, portsStr, PPPoE_vid, IPoE_vid, status.gateType, status.ruleType, macAddr, ipAddr, swPort );
}

// здесь 32 - это флаг DOTALL, т.е. в точку . включается все, в том числе и \n
pattern = Pattern.compile( template, 32 );
m = pattern.matcher( rule );
if (m.find())
{
rule = m.group( 1 );
} else {
log.info("regexp not match");
}

log.info("result: "+rule);
rule.replaceAll( "\r", "" );
parts = rule.split( "\n" );

return parts;
}

generateRule( addreses, ports, vid, gateType, ruleType )
{
ports_ = getPorts( ports );
ruleText = ManadUtils.getRule( gateType, ruleType );

replacements = new HashMap();

if ( vid > 0)
{
replacements.put( "\\{VID\\}", String.valueOf( vid ) );
}

loops = ManadUtils.getAddresLoops( addreses );

//адреса
p = new LoopPattern();
p.setLoopPatern( "LOOP_PORT" );
p.setReplace( "\\{PORT\\}" );
p.setObjects( ports_ );
loops.add( p );

return ManadUtils.generateRule( ruleText, replacements, ruleType, loops );
}

generateRule2( addreses, ports, int PPPoE_vid, int IPoE_vid, gateType, ruleType, macAddr, ipAddr, swPort )
{
ports_ = getPorts( ports );
ruleText = ManadUtils.getRule( gateType, ruleType );

replacements = new HashMap();

if ( PPPoE_vid > 0) {
replacements.put( "\\{PPPOE_VID\\}", String.valueOf( PPPoE_vid ) );
}

if ( IPoE_vid > 0) {
replacements.put( "\\{IPOE_VID\\}", String.valueOf( IPoE_vid ) );
}

// if ( macAddr == "" || ipAddr == "" || swPort == "" ) {
if ( ipAddr == "" || swPort == "" ) {
replacements.put( "!.*ip source binding.*", "" );
} else {
if ( macAddr != "" ) { replacements.put( "\\{MAC_ADDR\\}", macAddr );}
if ( ipAddr != "" ) { replacements.put( "\\{IP_ADDR\\}", ipAddr ); }
if ( swPort != "" ) { replacements.put( "\\{SW_PORT\\}", swPort ); }
// replacements.put( "!ip source binding", "ip source binding" );
// replacements.put( "!no ip source binding", "no ip source binding" );
replacements.put( "!.*ip source binding.*", "" );
}

loops = ManadUtils.getAddresLoops( addreses );

//адреса
p = new LoopPattern();
p.setLoopPatern( "LOOP_PORT" );
p.setReplace( "\\{PORT\\}" );
p.setObjects( ports_ );
loops.add( p );

return ManadUtils.generateRule( ruleText, replacements, ruleType, loops );
}

getPorts( ports )
{
portList = new ArrayList();
parts = ports.split( ";" );

for (String part : parts )
{
parts2 = part.split( ":" );
if ( parts2.length < 2)
{
continue;
}
port = parts2 [1];
portList.add( port );
}

String [] ports_ = new String [portList.size()];
for (int i = 0; i < ports_.length; i++)
{
ports_[i] = portList.get( i );
}
return ports_;
}


Как я понял, он затыкается на отсылании комманды свитчу.

Сначала затупляет на
Код:
result.append( session.command( "configure" ) );

Если её закомментить, то затупляет уже на
Код:
result.append( session.command( rule ) );


Кажется дело в SSH клиенте сервера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [BGB5.1] Не работает с ZyXEL
СообщениеДобавлено: 29 дек 2010, 12:59 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
уберите обработку ошибок
Код:
try
{
.....
}
catch ( Exception e )
{
// log.error("", e );
log.info(e.getMessage());

throw new RuntimeException ( e );
}

И снова покажите ошибку из лога .


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [BGB5.1] Не работает с ZyXEL
СообщениеДобавлено: 29 дек 2010, 13:09 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Еще обновитесь , там было исправлено несколь ошибок я ядре , связанныз с telnet/ssh.

залогинтесь на шлюз из консоли , наберете configure, потом какую-нибудь команду и покажите тут содержимое консоли


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

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


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

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


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

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