forum.bitel.ru
http://forum.bitel.ru/

Ошибка в api telnet
http://forum.bitel.ru/viewtopic.php?f=7&t=3475
Страница 1 из 1

Автор:  madmax [ 25 янв 2010, 15:49 ]
Заголовок сообщения:  Ошибка в api telnet

После обновления от 21,01 не работает скрипт по шлюзам версия 5,0
Вот скрипт
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
{
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();

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 );
}

В логах ошибка
01-25/15:00:02 ERROR [Thread-15] CiscoVlanGateWorker - Gate unaccesible - 10.1.1.11
01-25/15:00:02 ERROR [Thread-15] CiscoVlanGateWorker - -------------------------
01-25/15:00:02 ERROR [Thread-15] CiscoVlanGateWorker - error: TargetError : at Line: 88 : in file: inline evaluation of: ``import java.io.IOException; import java.util.ArrayList; import java.util.HashMap . .
Target exception: java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out
java.lang.RuntimeException: TargetError : at Line: 88 : in file: inline evaluation of: ``import java.io.IOException; import java.util.ArrayList; import java.util.HashMap . . . '' : throw new RuntimeException
Target exception: java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out
at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:231)
at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:107)
at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:85)
Caused by: TargetError : at Line: 88 : in file: inline evaluation of: ``import java.io.IOException; import java.util.ArrayList; import java.util.HashMap . . . '' : throw new RuntimeException ( e ) ;
Target exception: java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out
at bsh.BSHThrowStatement.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BSHTryStatement.eval(Unknown Source)
at bsh.BSHBlock.evalBlock(Unknown Source)
at bsh.BSHBlock.eval(Unknown Source)
at bsh.BshMethod.invokeImpl(Unknown Source)
at bsh.BshMethod.invoke(Unknown Source)
at bsh.BshMethod.invoke(Unknown Source)
at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:257)
at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:218)
... 2 more

Мы заремили //RuntimeException ( e ) ;, ошибок не появляется но и в шлюз ничего не добавляется.

Скажите что изменилось в api?

Автор:  madmax [ 25 янв 2010, 16:04 ]
Заголовок сообщения:  Re: Ошибка в api telnet

Убралит проверку try и в логах появляется ошибка
ead-40] CiscoVlanGateWorker - -------------------------
ead-40] CiscoVlanGateWorker - error: Method Invocation session.connect : at Line: 60 : in file: inline evaluation of: ``import java.io.IOException; import java.util.ArrayList; import java.util.HashMap . . .

c
t.SocketTimeoutException: Read timed out

n: Method Invocation session.connect : at Line: 60 : in file: inline evaluation of: ``import java.io.IOException; import java.util.ArrayList; import java.util.HashMap . . . '' : session .connect ( )

c
t.SocketTimeoutException: Read timed out

server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:231)
server.ipn.GateWorker.runSync(GateWorker.java:107)
server.ipn.GateWorker.run(GateWorker.java:85)
ion session.connect : at Line: 60 : in file: inline evaluation of: ``import java.io.IOException; import java.util.ArrayList; import java.util.HashMap . . . '' : session .connect ( )

Автор:  stark [ 25 янв 2010, 16:06 ]
Заголовок сообщения:  Re: Ошибка в api telnet

можете дать доступ к железке ?

Автор:  madmax [ 25 янв 2010, 17:10 ]
Заголовок сообщения:  Re: Ошибка в api telnet

к какой железке? к билингу или циске

Автор:  madmax [ 25 янв 2010, 18:05 ]
Заголовок сообщения:  Re: Ошибка в api telnet

Если к циске - то там ничего нового, заходишь по telnet и далше как всегда

Автор:  stark [ 25 янв 2010, 18:27 ]
Заголовок сообщения:  Re: Ошибка в api telnet

к циске .. ну можно биллингу , тогда получим и к циске .. я тестировал на циске - там работало , нужен доступ к вашей

Автор:  stark [ 25 янв 2010, 18:30 ]
Заголовок сообщения:  Re: Ошибка в api telnet

лучше к биллингу доступ

Автор:  madmax [ 25 янв 2010, 20:38 ]
Заголовок сообщения:  Re: Ошибка в api telnet

Обновились на сегоднешнюю версию от 25 числа и все работает.
Странно не дообновился что ли.

Автор:  stark [ 26 янв 2010, 12:25 ]
Заголовок сообщения:  Re: Ошибка в api telnet

madmax писал(а):
Обновились на сегоднешнюю версию от 25 числа и все работает.
Странно не дообновился что ли.

ясно ..21-го числа было выложено нескольк обновлений, это вы похоже не успели поставить

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/