BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 19 ] 
Автор Сообщение
 Заголовок сообщения: ipn + Cisco шлюз
СообщениеДобавлено: 28 июл 2009, 20:03 
Не в сети

Зарегистрирован: 22 июл 2009, 15:36
Сообщения: 308
Откуда: старый оскол
Карма: 5
подскажите последовательность настройки скриптового шлюза cisco

как описано взамен стандартного , тоесть как я понял все остальное делается по документации из http://www.bgbilling.ru/v4.6/doc/ch05s11s09.html

вот сам скрипт
http://wiki.bgbilling.ru/index.php/%D0% ... %BE_telnet


создаю тип шлюза


конфигурация
user_rule.editor.class=bitel.billing.module.services.ipn.editor.CiscoContractRuleEditor
gate_manager.class=bitel.billing.server.ipn.CiscoGateWorker
use.script=1


комманды

[DEFAULT]
<LOOP>
permit ip host {A} any
</LOOP>
[/DEFAULT]


правило
пустое правило

в скрипт закинул скрипт




далее создаю шлюз
конфигурация

login=userbill
acl.10.name=test
acl.10.from.pos=1000
acl.10.to.pos=100000
timeout=100

ip xx.xx.xx.xx порт 23
ключевое слово указал пароль для юзера





на cisco создан пользователь userbill priv 15 и aaa exec default
и создан access-list extendet test

изменил user и password promt на login/password

подцепляю в договоре ,, выбираю шлюз пишет не доступен

и потом подвисает , ждет наверное ответа ,

указал timeout=100 висит все равно падлец


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 29 июл 2009, 18:53 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
зайдите из консоли по telnet, зайдите а режим конифгурации , набириате какую-нибудь команду, выйдите из него , выйдите из шлюза . И полную распечатку всего этого сюда давайте


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 21 сен 2012, 16:47 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
Приветствую.

Та же задача работать с шлюзом по telnet.

Настройки аналогичные.
Ошибка в договоре - Шлюз недоступен.

Из server.log:

09-21/14:38:38 INFO [Thread-21] CiscoGateWorker - Running script
09-21/14:38:38 INFO [Thread-21] LoggingPrintStream - before connect
09-21/14:38:38 INFO [Thread-21] LoggingPrintStream - after connect
09-21/14:38:38 INFO [Thread-21] LoggingPrintStream - bill
Password:
09-21/14:38:39 ERROR [Thread-21] CiscoGateWorker - Eval error2: Attempt to resolve method: parseIntString() on undefined variable or class name: Utils
Attempt to resolve method: parseIntString() on undefined variable or class name: Utils : at Line: 237 : in file: inline evaluation of: ``import java.util.HashMap; import java.util.HashSet; import java.util.Map; import . . . '' : Utils .parseIntString ( m .group ( 1 ) )

at bsh.UtilEvalError.toEvalError(UtilEvalError.java:85)
at bsh.UtilEvalError.toEvalError(UtilEvalError.java:90)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:99)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHAssignment.eval(BSHAssignment.java:77)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHIfStatement.eval(BSHIfStatement.java:48)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHWhileStatement.eval(BSHWhileStatement.java:72)
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:186)
at bsh.Name.invokeLocalMethod(Name.java:917)
at bsh.Name.invokeMethod(Name.java:804)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
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:86)
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:302)
at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:258)
at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:129)
at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:91)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - java.lang.RuntimeException: Attempt to resolve method: parseIntString() on undefined variable or class name: Utils : at Line: 237 : in file: inline evaluation of: ``import java.util.HashMap; import java.util.HashSet; import java.util.Map; import . . . '' : Utils .parseIntString ( m .group ( 1 ) )

09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:272)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:129)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:91)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - Caused by: Attempt to resolve method: parseIntString() on undefined variable or class name: Utils : at Line: 237 : in file: inline evaluation of: ``import java.util.HashMap; import java.util.HashSet; import java.util.Map; import . . . '' : Utils .parseIntString ( m .group ( 1 ) )

09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.UtilEvalError.toEvalError(UtilEvalError.java:85)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.UtilEvalError.toEvalError(UtilEvalError.java:90)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:99)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHAssignment.eval(BSHAssignment.java:77)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHIfStatement.eval(BSHIfStatement.java:48)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHWhileStatement.eval(BSHWhileStatement.java:72)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:186)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.Name.invokeLocalMethod(Name.java:917)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.Name.invokeMethod(Name.java:804)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHTryStatement.eval(BSHTryStatement.java:86)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:161)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:302)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:258)
09-21/14:38:39 ERROR [Thread-21] LoggingPrintStream - ... 2 more
09-21/14:38:39 ERROR [Thread-21] CiscoGateWorker - Gate unaccesible - 172.16.222.1
09-21/14:38:39 ERROR [Thread-21] CiscoGateWorker - -------------------------
09-21/14:38:39 ERROR [Thread-21] CiscoGateWorker - error: Attempt to resolve method: parseIntString() on undefined variable or class name: Utils : at Line: 237 : in file: inline evaluation of: ``import java.util.HashMap; import java.util.HashSet; import java.util.Map; import . . . '' : Utils .parseIntString ( m .group ( 1 ) )

java.lang.RuntimeException: Attempt to resolve method: parseIntString() on undefined variable or class name: Utils : at Line: 237 : in file: inline evaluation of: ``import java.util.HashMap; import java.util.HashSet; import java.util.Map; import . . . '' : Utils .parseIntString ( m .group ( 1 ) )

at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:272)
at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:129)
at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:91)
Caused by: Attempt to resolve method: parseIntString() on undefined variable or class name: Utils : at Line: 237 : in file: inline evaluation of: ``import java.util.HashMap; import java.util.HashSet; import java.util.Map; import . . . '' : Utils .parseIntString ( m .group ( 1 ) )

at bsh.UtilEvalError.toEvalError(UtilEvalError.java:85)
at bsh.UtilEvalError.toEvalError(UtilEvalError.java:90)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:99)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
at bsh.BSHAssignment.eval(BSHAssignment.java:77)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHIfStatement.eval(BSHIfStatement.java:48)
at bsh.BSHBlock.evalBlock(BSHBlock.java:131)
at bsh.BSHBlock.eval(BSHBlock.java:81)
at bsh.BSHBlock.eval(BSHBlock.java:47)
at bsh.BSHWhileStatement.eval(BSHWhileStatement.java:72)
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:186)
at bsh.Name.invokeLocalMethod(Name.java:917)
at bsh.Name.invokeMethod(Name.java:804)
at bsh.BSHMethodInvocation.eval(BSHMethodInvocation.java:75)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:102)
at bsh.BSHPrimaryExpression.eval(BSHPrimaryExpression.java:47)
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:86)
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:302)
at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:258)
... 2 more

Хелп.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 21 сен 2012, 17:09 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Код:
Attempt to resolve method: parseIntString() on undefined variable or class name: Utils

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 24 сен 2012, 13:19 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
Спасибо, эту ошибку я тоже заметил. Ссылается на строку с этим кодом: rule = Utils.parseIntString( m.group( 1 ) );
Но у меня была надежда, что скрипт из Вики будет работать и я подружу циску и биллинг без больших проблем.
Теперь у меня предчувствие, что придётся учить язык и разбираться с кодом. Блин, время.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 24 сен 2012, 13:28 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Помоему оно. Работает в 5.2
Единственное поменял log.debug на log.info чтобы можно было смотреть что посылается на циску в режиме info (в дебаге уж слишком много всего сыпалось)
Код:
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import bitel.billing.common.module.ipn.CiscoRuleOptions;
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.AclOptions;
import bitel.billing.server.ipn.bean.ManadUtils;
import bitel.billing.server.util.DefaultServerSetup;
import ru.bitel.common.Utils;
import bitel.billing.server.util.telnet.TelnetSession;
 
    doSync()
    {
        host = gate.getHost();
        port = gate.getPort();
        gid = gate.getId();
 
        gateSetup = new DefaultServerSetup( gate.getConfig(), "\r\n" );       
 
        login = gateSetup.getStringValue( "login", "root" );
        pswd = gate.getKeyword();
 
        if( log.isInfoEnabled() )
        {
            log.info( gid + " gate: " + host + ":" + port + " login: " + login + " pswd: " + pswd );
        }
 
        //SSHSession session = null;
        session = null;
 
 
        try
        {
 
           session = new TelnetSession( host, port );
 
            session.setLoginPromptSequence( ":" );
           System.out.println( "before connect" );       
            session.connect();
           System.out.println( "after connect" );          
            session.doCommand( login );
            session.setLoginPromptSequence( "#" );
            session.doCommand( pswd );
 
            session.doCommand( "terminal length 0" );
 
            result = new StringBuffer();
 
 
            list = ( session.doCommand( "show access-list" ) );
            result.append( list );
 
            if( log.isInfoEnabled() )
            {
                log.info( gid +" AccessList taking.." );
                log.info( result );
            }
 
            // код ACL - стуктура с описанием
            aclMap = AclOptions.getAclMapById( gateSetup );
 
            // имя ACL - стуктура с описанием
           aclByNameMap = new HashMap();
            for( AclOptions option : aclMap.values() )
            {
                aclByNameMap.put( option.name, option );
            }           
 
            result.append( session.doCommand( "configure terminal" ) );
 
            //  проход по ACL списку с отметкой какие договора открыты           
            markOpenFromRules( list, aclByNameMap );           
 
            // подготовка списка корректирующих команд
            buildCommandsLists( aclMap );
 
 
            for( AclOptions options : aclMap.values() )
            {
                if( options.commands.size() > 0 )
                {
                    //  TODO: extended или нет - надо смотреть в конфиге
                   result.append( session.doCommand( "ip access-list extended " + options.name ) );
 
                    if( log.isInfoEnabled() )
                    {
                        log.info( gid + " ACL " + options.name  );
                    }
 
                    for( String command : options.commands )
                    {
                        if( log.isInfoEnabled() )
                        {
                            log.info( gid + " " + command  );
                        }
                        result.append( session.doCommand( command ) );
                    }                     
                }
            }
 
            //выход из configure
            result.append( session.doCommand( "exit" ) );
           session.doCommandAsync( "exit" );   
 
 
            if (log.isInfoEnabled())
            {
               log.info( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
               log.info( result.toString() );
               log.info( "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
            }
 
            // пауза пока считает команду exit
            Thread.sleep( 100 );
        }
        catch ( Exception e )
        {
           throw new RuntimeException ( e );
        }
        finally
        {
            if( session != null )
            {
                session.disconnect();
            }
        }
    }
 
    buildCommandsLists( aclMap )
    {
        for( status : statusList )
        {
            ruleOptions = CiscoRuleOptions.extractParams( status.rule.getRuleText() );
            options = aclMap.get( ruleOptions.aclId );
 
            // флаг того то правило есть на шлюзе
            flag = false;
 
            // правило для этого договора есть на шлюзе
            if ( options.openRulesFrom.containsKey( ruleOptions.fromPos ) )
            {
                //  если правило есть а юзер заблокирован - удаляем правило
                if ( status.status > 0 )
                {
                    if( options != null )
                    {
                        rules = options.openRulesFrom.get( ruleOptions.fromPos );
 
                        if( rules != null )
                        {
                            for( int rule : rules )
                            {
                                options.commands.add( "no " + rule );
                            }                               
                        }
                    }                   
                }                       
 
                flag = true;
                options.openRulesFrom.remove( ruleOptions.fromPos );
            }
 
            // правила нет, а юзер открыт - добавляем правило
            if ( !flag &&
                status.status == IPNContractStatus.STATUS_OPEN )
            {
                rule = CiscoRuleOptions.clearFromParams( status.rule.getRuleText() );
 
                acl = aclMap.get( ruleOptions.aclId );
                if( acl != null )
                {
                    //  типизированное правило
                    if( status.ruleType != null )
                    {                                            
                       String ruleText = ManadUtils.getRule( status.gateType, status.ruleType );
                        rule = ManadUtils.generateRule( ruleText, rule, null, status.ruleType  );
                     //ipPattern = Pattern.compile( "access list\\s+([\\w\\-]+)" );
                    }               
 
                    int rulePos = ruleOptions.fromPos;
 
                    StringTokenizer st = new StringTokenizer( rule, "\r\n" );
                    while( st.hasMoreTokens() )
                    {
                        String line = st.nextToken().trim();
                        acl.commands.add( (rulePos++) + " " + line );
                    }
                }
            }           
        }
    }
 
    markOpenFromRules( String result, aclByNameMap )
    {
        gid = gate.getId();
       line = null;           
        currentAclOptions = null;       
 
        st = new StringTokenizer( result, "\r\n" );
 
       accessPattern = Pattern.compile( "access list\\s+([\\w\\-]+)" );
        rulePattern = Pattern.compile( "^(\\d+)\\s+((permit)|(deny))" );
 
        while( st.hasMoreTokens() )
        {
            line = st.nextToken().trim();
 
            m = accessPattern.matcher( line );
            if( m.find() )
            {
                currentAcl = m.group( 1 );
                currentAclOptions = aclByNameMap.get( currentAcl );
 
                if( log.isInfoEnabled() )
                {
                    log.info( gid + " ACL " + currentAcl + " not in billing control.." );
                }
 
                continue;
            }
 
            if( currentAclOptions == null )
            {
                continue;
            }
 
            m = rulePattern.matcher( line );
            if( m.find() )
            {
                rule = Utils.parseInt( m.group( 1 ) );
                if( rule < currentAclOptions.fromPos ||
                    rule > currentAclOptions.toPos )
                {
                    if( log.isInfoEnabled() )
                    {
                        log.info( gid + " Skip rule " + line );
                    }
                }
                else
                {
                    ruleFrom =
                        ((rule - currentAclOptions.fromPos) / currentAclOptions.onContact) * currentAclOptions.onContact
                        + currentAclOptions.fromPos;
                    rules = currentAclOptions.openRulesFrom.get( ruleFrom );
                    if( rules == null )
                    {
                        rules = new HashSet();
                        currentAclOptions.openRulesFrom.put( ruleFrom, rules );                       
                    }
 
                    rules.add( rule );
 
                    if( log.isInfoEnabled() )
                    {
                        log.info( gid + " Contact open from rule: " + ruleFrom );
                    }
                }
            }
        }
    }

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 24 сен 2012, 16:21 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
Спасибо.
Скрипт почти заработал. По телнету логинится на ура. Только в ACL адреса юзеров не добавляются.
В логах
09-24/14:19:27 INFO [Thread-35] CiscoGateWorker - 1 ACL bill not in billing control..
09-24/14:19:27 INFO [Thread-35] CiscoGateWorker - 1 Skip rule 10 permit ip any 192.168.0.0 0.0.255.255
09-24/14:19:27 INFO [Thread-35] CiscoGateWorker - 1 Skip rule 20 permit ip any 172.16.0.0 0.0.255.255
09-24/14:19:27 INFO [Thread-35] CiscoGateWorker - 1 Skip rule 30 permit ip any 10.0.0.0 0.255.255.255
09-24/14:19:27 INFO [Thread-35] CiscoGateWorker - 1 Skip rule 2147483647 deny ip any any

В настройках шлюза acl.1.name=bill


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 24 сен 2012, 16:23 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
мейби прав нету для пользователя под которым логинитесь

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 24 сен 2012, 16:28 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
Есть.

С хоста биллинга:

[root@localhost log]# telnet 172.16.222.1
Trying 172.16.222.1...
Connected to 172.16.222.1.
Escape character is '^]'.


User Access Verification

Username: bill
Password:

Cat4507R_PRM_1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Cat4507R_PRM_1(config)#ip access-list extended bill
Cat4507R_PRM_1(config-ext-nacl)#500 permit ip host 1.1.1.1 any
Cat4507R_PRM_1(config-ext-nacl)#no 500 permit ip host 1.1.1.1 any
Cat4507R_PRM_1(config-ext-nacl)#^Z
Cat4507R_PRM_1#sh access-lists bill
Extended IP access list bill
10 permit ip any 192.168.0.0 0.0.255.255
20 permit ip any 172.16.0.0 0.0.255.255
30 permit ip any 10.0.0.0 0.255.255.255
2147483647 deny ip any any


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 26 сен 2012, 16:24 
Не в сети
Разработчик

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
а какой номер стоит в шлюзе в договоре ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 28 сен 2012, 18:11 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
Заработало.

Если Ip-адреса добавлять в договор как сети, то не работает. Если как диапазоны - работает.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 03 окт 2012, 14:15 
Не в сети
Разработчик

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

Если Ip-адреса добавлять в договор как сети, то не работает. Если как диапазоны - работает.

возможно дело в том, что для сетей нужно другие макросы писать в командах типа шлюза.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 09 окт 2012, 12:52 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
По ограничению скорости на циске как я понимаю готовых решений нет. В вики и на форуме только микротик и линукс.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 07 фев 2013, 16:21 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
Кусок скрипта рабочий. Скорость режется при проверке шлюза. Class-map ессно уже существует.

for ( UserStatus status : statusList )
{
cid = status.contractId;
// Скорость из типа правила, применённого на шлюзе
String speed = status.ruleType.getData();
// Имя юзера для Class-map из коментария договора
contract = new ContractManager(con);
Contract ct = contract.getContractByID(cid);
user = ct.getComment();

var speed_int = Integer.parseInt(speed);
var burst = speed_int * 3 / 16;

session.doCommandAsync( "policy-map rate-limit" );
Thread.sleep( 100 );
//Если скорость 0 (по трафику), удаляем юзера из политики
if ( speed.equals("0") ) {
session.doCommandAsync( "no class " + user );
Thread.sleep( 100 );

} else {

session.doCommandAsync( "class " + user );
Thread.sleep( 100 );
session.doCommandAsync( "police " + speed + " " + burst + " conform-action transmit exceed-action drop" );
Thread.sleep( 100 );
}
session.doCommandAsync( "exit" );
Thread.sleep( 100 );
session.doCommandAsync( "exit" );
Thread.sleep( 100 );
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 15 фев 2013, 22:33 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
и сколь юзеров и какой поток таким образом полисим ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 15 фев 2013, 22:40 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
А вообще на цыске удобно создавать динамические ACL, там не надо следить на seq number и шлюз реализуется путем подключения к цыске по телнет/ссх и подачи для каждого адреса всего одной команды включения или отключения (access-template или clear access-template соответственно).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 18 фев 2013, 11:08 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
barguzin2 писал(а):
и сколь юзеров и какой поток таким образом полисим ?


Не больше 80. Все юрики и у каждого от одного ip до двух сеток /24.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 16 мар 2013, 02:45 
Не в сети
Клиент

Зарегистрирован: 27 авг 2009, 13:51
Сообщения: 82
Откуда: Bishkek
Карма: 0
А можно вас попросить конфиг циски? И что за циска?
У нас проблема именно с конфой циски, какой выбрать
метод. Спасибо заранее.

_________________
Клиент: вер. 5.2
Сервер: вер. 5.2


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ipn + Cisco шлюз
СообщениеДобавлено: 18 мар 2013, 11:13 
Не в сети

Зарегистрирован: 28 авг 2012, 19:24
Сообщения: 87
Карма: 0
Catalyst 4507

Cat4507R_PRM_1#sh access-lists bill
Extended IP access list bill
10 permit ip any 192.168.0.0 0.0.255.255 (18749813 matches)
20 permit ip any 172.16.0.0 0.0.255.255 (18779334 matches)
30 permit ip any 10.0.0.0 0.255.255.255 (145826 matches)
1000 permit ip host 192.168.30.30 any (134177325 matches)
1001 permit ip host 192.168.30.31 any
1002 permit ip host 192.168.30.32 any (5991618 matches)
...
2147483645 deny ip any any (4568122 matches)

Cat4507R_PRM_1#sh policy-map rate-limit
Policy Map rate-limit
Class Primer1
police 3000000 bps 562500 byte conform-action transmit exceed-action drop
Class Primer2
police 3000000 bps 562500 byte conform-action transmit exceed-action drop

Cat4507R_PRM_1#sh class-map Primer1
Class Map match-any Primer1 (id 2)

Match access-group 120 #Ага, именованные ACL не применяются

Cat4507R_PRM_1#sh run int vlan 223
Building configuration...

Current configuration : 184 bytes
!
interface Vlan223
ip address 172.16.200.1 255.255.255.248
ip access-group bill out
service-policy input rate-limit
service-policy output rate-limit
end


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

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


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

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


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

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