BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
СообщениеДобавлено: 13 сен 2010, 14:35 
Не в сети

Зарегистрирован: 17 окт 2008, 00:19
Сообщения: 22
Карма: 0
3 вопроса техподдержке, и людям которые писали свои шлюзы..

Вопрос 1.
Используем реализацию стандартного шлюза DHCP совместно с дочерним манадом
из viewtopic.php?f=7&t=4080&start=30
В логах выдает следующее смотрите ниже… ругается на setEncoding ( "UTF-8" )
Если не использовать скрипт - то подобной проблемы не наблюдается, но дочерние узлы не опрашиваются скрипт на ДХЦП


09-13/03:00:02 DEBUG [pool-40-thread-2] SwitchGateWorker - parentSync Manad-BGDHCP
09-13/03:00:02 DEBUG [pool-40-thread-2] SwitchGateWorker - 61 gate: 127.0.0.1:4566
09-13/03:00:02 DEBUG [pool-40-thread-2] SwitchGateWorker - 62 childgate: 10.90.1.33:161
09-13/03:00:02 ERROR [pool-40-thread-2] SwitchGateWorker - Eval error2: Error in method invocation: Cannot access method setEncoding( java.lang.String ) in 'interface org.apache.xml.serializer.XSLOutputAttributes' :java.lang.IllegalAccessException: Class bsh.Reflect can not access a member of class org.apache.xml.serializer.XSLOutputAttributes with modifiers "public abstract"
Error in method invocation: Cannot access method setEncoding( java.lang.String ) in 'interface org.apache.xml.serializer.XSLOutputAttributes' :java.lang.IllegalAccessException: Class bsh.Reflect can not access a member of class org.apache.xml.serializer.XSLOutputAttributes with modifiers "public abstract" : at Line: 76 : in file: inline evaluation of: ``import java.io.BufferedReader; import java.io.InputStreamReader; import java.n . . . '' : stream .setEncoding ( "UTF-8" )

at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.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$ScripterParent.invokeMethod(GateWorker.java:318)
at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:246)
at bitel.billing.server.ipn.GateWorker.doParentSync(GateWorker.java:171)
at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:84)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
09-13/03:00:02 ERROR [pool-40-thread-2] SwitchGateWorker - Gate unaccesible - 10.90.1.33
09-13/03:00:02 ERROR [pool-40-thread-2] SwitchGateWorker - -------------------------
09-13/03:00:02 ERROR [pool-40-thread-2] SwitchGateWorker - error: Error in method invocation: Cannot access method setEncoding( java.lang.String ) in 'interface org.apache.xml.serializer.XSLOutputAttributes' :java.lang.IllegalAccessException: Class bsh.Reflect can not access a member of class org.apache.xml.serializer.XSLOutputAttributes with modifiers "public abstract" : at Line: 76 : in file: inline evaluation of: ``import java.io.BufferedReader; import java.io.InputStreamReader; import java.n . . . '' : stream .setEncoding ( "UTF-8" )

java.lang.RuntimeException: Error in method invocation: Cannot access method setEncoding( java.lang.String ) in 'interface org.apache.xml.serializer.XSLOutputAttributes' :java.lang.IllegalAccessException: Class bsh.Reflect can not access a member of class org.apache.xml.serializer.XSLOutputAttributes with modifiers "public abstract" : at Line: 76 : in file: inline evaluation of: ``import java.io.BufferedReader; import java.io.InputStreamReader; import java.n . . . '' : stream .setEncoding ( "UTF-8" )

at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:259)
at bitel.billing.server.ipn.GateWorker.doParentSync(GateWorker.java:171)
at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:84)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: Error in method invocation: Cannot access method setEncoding( java.lang.String ) in 'interface org.apache.xml.serializer.XSLOutputAttributes' :java.lang.IllegalAccessException: Class bsh.Reflect can not access a member of class org.apache.xml.serializer.XSLOutputAttributes with modifiers "public abstract" : at Line: 76 : in file: inline evaluation of: ``import java.io.BufferedReader; import java.io.InputStreamReader; import java.n . . . '' : stream .setEncoding ( "UTF-8" )

at bsh.BSHMethodInvocation.eval(Unknown Source)
at bsh.BSHPrimaryExpression.eval(Unknown Source)
at bsh.BSHPrimaryExpression.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$ScripterParent.invokeMethod(GateWorker.java:318)
at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:246)
... 8 more
09-13/03:00:03 DEBUG [pool-2-thread-2] IPNTestGates - Now 1 gates..
09-13/03:00:03 DEBUG [pool-2-thread-2] IPNTestGates - working gate ids: 62
09-13/03:00:03 INFO [pool-2-thread-2] IPNTestGates - Gate: 10.90.1.33 : 161 [ MKR1_77_1
private ] - checking end..
09-13/03:00:04 DEBUG [pool-2-thread-2] IPNTestGates - Now 0 gates..
09-13/03:00:04 DEBUG [pool-2-thread-2] IPNTestGates - working gate ids:
09-13/03:00:04 INFO [pool-2-thread-2] IPNTestGates - Locked clients:
09-13/03:00:04 INFO [pool-2-thread-2] IPNTestGates -
09-13/03:00:04 INFO [pool-2-thread-2] IPNTestGates - Task finished time=2119



Вопрос 2.
Пробуем реализовать связь- создать свой шлюз типа делинка… но не получается сделать нормальную родительскую связь между родителем- DHCP сервером и потомком шлюзом-типа свичь… для предачи правильных параметров ип-порт в DHCP сервер…
Как реализовать связь родитель-потомок для скриптовых шлюзов?
У нас то и скрипт простой…
Конфигурация
user_rule.editor.class=bitel.billing.module.services.ipn.editor.EmptyContractRuleEditor
gate_manager.class=bitel.billing.server.ipn.SwitchGateWorker
snmp.version=2c
use.script=1

Само тело скрипта работает но оно не передает родителю номер порта…

import uk.co.westhawk.snmp.pdu.*;
import uk.co.westhawk.snmp.stack.*;
import ru.bitel.common.*;
import bitel.billing.server.util.*;
import bitel.billing.server.ipn.*;
import bitel.billing.common.module.ipn.*;
import ru.bitel.bgbilling.modules.ipn.server.bean.GatePortManager;

String PDU_PREFIX = "1.3.6.1.2.1.2.2.1.7";
int requestCount = 0;
SnmpContext context = null;

protected void doSync()
{
log.debug("doSync running ...");
String host = gate.getHost();
int port = gate.getPort();
int gid = gate.getId();

if( log.isDebugEnabled() )
{
log.debug( gid + " gate: " + host + ":" + port + " commutinty " + gate.getKeyword() );
}

try
{
String snmpVersion = gate.getGateType().getConfigOption( "snmp.version" );
if( Utils.isBlankString( snmpVersion ) )
{
snmpVersion = "1";
}

if( log.isDebugEnabled() )
{
log.debug( "use SNMP version: " + snmpVersion );
}

if( !snmpVersion.equals( "0" ) )
{
if ( snmpVersion.equals( "2" ) || snmpVersion.equals( "2c" ) )
{
context = new SnmpContextv2c( host, port );
}
else
{
context = new SnmpContext( host, port );
}

context.setCommunity( gate.getKeyword() );
SnmpUtils.setBufferSizes( context, 2, 2 );

OneSetPdu setPdu = new OneSetPdu( context );
setPdu.addObserver( this );

for( UserStatus status : statusList )
{
GatePortManager PortManager = new GatePortManager( con, mid );
Ports = PortManager.getGatePorts( status.contractId, gate.getId() );

Port=null;
for( Port : Ports )
{
//log.debug("cid="+ status.contractId+" port=" +String.valueOf(Port) );
}
//Обход пользовательских правил
//String ports = status.rule.getRuleText();
//StringTokenizer st = new StringTokenizer( ports, "," );

log.debug( "Checking contract "+status.contractId);

// while( st.hasMoreTokens() )
// {
//int ifNumber = Utils.parseIntString( st.nextToken().trim(), -1 );
//Берем порт из свойств шлюза в договоре
int ifNumber = Utils.parseIntString( String.valueOf(Port), -1 );
//log.debug( "ifNumber=" + ifNumber );
if( ifNumber >= 0 )
{
int value = 2;
if( status.status == IPNContractStatus.STATUS_OPEN )
{
value = 1;
log.debug("ifup port# " + ifNumber);
}
else
{
value = 2;
log.debug("ifdown port# " + ifNumber);
}

setPdu.addOid( PDU_PREFIX + "." + ifNumber, new AsnInteger( value ) );

if( log.isDebugEnabled() )
{
log.debug( "Add oid " + host + " " + PDU_PREFIX + "." + ifNumber + " i " + value );
}
}
//}
}

setPdu.send();
requestCount++;
waitResponse();
}

}
catch ( Exception e )
{
throw new RuntimeException ( e );
}
finally
{
if( context != null )
{
context.destroy();
}
}
}

/* protected void parentSync()
{
log.debug("doParentSync running ...");
}*/

protected void waitResponse()
throws InterruptedException
{
while( requestCount != 0 )
{
Thread.sleep( 100 );
}
}

public void update( Observable o, Object arg )
{
requestCount--;

if( arg instanceof AgentException )
{
log.error( arg );
gateErrors.append(
"Ошибка шлюза " + gate.getHost() +
" : " + ((AgentException)arg).getMessage() );

//interrupt();
}

}

public boolean isWorking()
{
return isAlive() || requestCount != 0;
}

Вопрос 3
Не могли бы вы скинуть исподники IPN модуля- в принципе мы уже разобрались- «декомпилили» что нам нужно исправить-дополнить нужное в шлюзе типа делинк но нам нужно заново собрать-скомпилить… ну и комментарии в исходнике хотелось бы почитать


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 сен 2010, 16:29 
Не в сети
Разработчик

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

Вопрос 1.
Используем реализацию стандартного шлюза DHCP совместно с дочерним манадом
из viewtopic.php?f=7&t=4080&start=30
В логах выдает следующее смотрите ниже… ругается на setEncoding ( "UTF-8" )



Это проблема библиотеки bsh.jar, уже сталкивались . Возьмите библиотеку bsh.jar из сборки 5.1 и замените ей ту, которая лежит в в вашей папке lib на сервере . Просто в старых версиях не стали обновлять , так как проявляется это не у всех


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 сен 2010, 16:34 
Не в сети
Разработчик

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

Вопрос 2.
Пробуем реализовать связь- создать свой шлюз типа делинка… но не получается сделать нормальную родительскую связь между родителем- DHCP сервером и потомком шлюзом-типа свичь… для предачи правильных параметров ип-порт в DHCP сервер…
Как реализовать связь родитель-потомок для скриптовых шлюзов?
У нас то и скрипт простой…
Конфигурация
user_rule.editor.class=bitel.billing.module.services.ipn.editor.EmptyContractRuleEditor
gate_manager.class=bitel.billing.server.ipn.SwitchGateWorker
snmp.version=2c
use.script=1



Попробуйте оставить ваш скрипт и gate_manager.class=bitel.billing.server.ipn.SwitchGateWorker. Возможно, сразу не будет работать, нужно будет повозится , отладить


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 сен 2010, 16:36 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
Zoro писал(а):
Вопрос 3
Не могли бы вы скинуть исподники IPN модуля- в принципе мы уже разобрались- «декомпилили» что нам нужно исправить-дополнить нужное в шлюзе типа делинк но нам нужно заново собрать-скомпилить… ну и комментарии в исходнике хотелось бы почитать


Для клиентов по дополнительному соглашению мы предоставляем часть исходников


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

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


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

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


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

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