BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 46 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: 27 авг 2009, 16:16 
Не в сети

Зарегистрирован: 17 апр 2009, 15:21
Сообщения: 68
Карма: 0
stark писал(а):
tee писал(а):

одна проблемка номер влан должен вводится вручную, а он берется из списка по порядку.


Редактировать vlan можно в 5.0 . кстатит ее night- build-ы уже доступны : ftp://bgbilling.ru/pub/bgbilling/5.0/

а пока можете использовать параметр договора в качестве vlan


А 5.0 насколько готов, можно уже в продакшен ?
с небольшими нагрузками


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

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


Подакшен пока рано , это просто сборка текущего состояния . Пока можно только тестировать


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 16 окт 2009, 18:44 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Доброго времени суток.
Подскажите пожалуйста, как дернуть "Родительский шлюз"? Есть отдельный метод для этого?


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

Зарегистрирован: 08 ноя 2007, 01:05
Сообщения: 8343
Откуда: Уфа
Карма: 238
mikos писал(а):
Доброго времени суток.
Подскажите пожалуйста, как дернуть "Родительский шлюз"? Есть отдельный метод для этого?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 окт 2009, 14:44 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
А что будет, если у шлюза несколько потомком (скажем 10), и дергаю я один из них, а остальных скриптом ручками. Что будет в таком случае будет с родительским шлюзом? Он один раз дернется или каждый раз, когда я буду очередного потомка скриптом обходить?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 окт 2009, 16:56 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
В дополнение к предыдущему вопросу, посоветуйте пожалуйста, как лучше сгрупприровать комутаторы по группам?
Сначала предполагал к родителю добавлять папки и по ним все дочерние комутаторы распихивать, но оказалось, что дочерние шлюзы не любят папки и идет ругань, т.к. родителем является не шлюз, а папка.


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

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


каждый раз


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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 окт 2009, 14:04 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
Шлюзы использую из Wiki (Dlink и Cisco2)
Код:
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
import bitel.billing.common.IPUtils;
import bitel.billing.common.module.ipn.IPNContractStatus;
import bitel.billing.server.ipn.UserStatus;
import bitel.billing.server.ipn.bean.ManadUtils;
import bitel.billing.server.ipn.bean.VlanManager;
import bitel.billing.server.ipn.dlink.UserPortStatus;
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;
 
protected void doSync()
{
   try
   {
      String host = gate.getHost();
      int port = gate.getPort();
 
 
      DefaultServerSetup gateSetup = new DefaultServerSetup( gate.getConfig(), "\r\n" );       
 
 
      String pswd = gate.getKeyword();
      String login = gateSetup.getStringValue( "login");
 
 
 
      StringBuffer result = new StringBuffer();
 
 
      if( log.isDebugEnabled() )
      {
          log.debug( gate.getId() + " gate: " + host + ":" + port  + " login: " + login + " pswd: " +       pswd );
      }
 
 
      TelnetSession session = new TelnetSession( host, port);
      session.setLoginPromptSequence( ":" );                  
 
      log.debug( "before connect" );
      session.connect();      
      log.debug( "after connect" );
 
      result.append( session.doCommand( login ) );
      log.debug( "after command" );
 
 
      session.setLoginPromptSequence( "#" );
      result.append( session.doCommand( pswd ) );
      log.debug( "before pswd" );
 
 
      log.debug( "execute commands" );
      doCommands( session, result, gateSetup);
 
 
 
      session.setLoginPromptSequence( "****" );
      result.append( session.doCommand( "logout" ) );
 
 
      log.info( "!!!!!!!!!!!!!!!!!!!!!!!!!!! Dlink!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
      log.info( result.toString() );
      log.info( "!!!!!!!!!!!!!!!!!!!!!!!!!!! Dlink!!!!!!!!!!!!!!!!!!!!!!!!!!!!" );
 
 
 
      log.debug( "ok" );
   } catch (Exception e)
   {
 
      throw new RuntimeException ( e );
   }
}
 
 
 
private void doCommands( TelnetSession session, StringBuffer result, DefaultServerSetup gateSetup)
throws IOException, OperationTimedoutException
{
 
   VlanManager manager = new VlanManager(mid, con);
 
    for( UserStatus status : statusList )
   {
 
      //берем vlan у родительской циски
      int vid = manager.getVlan( gate.getParentId(), status.contractId );
      if ( status.status == IPNContractStatus.STATUS_OPEN )
      {
         String[]  rules  = getOpenRules( status, vid );
         for ( String rule : rules )
         {
            result.append( session.doCommand( rule ) );   
         }
 
      }
      else
      {
         String[] rules = getCloseRules( status, vid );
         for ( String rule : rules )
         {
            result.append( session.doCommand( rule ) );   
         }
 
      }                              
   }     
 
 
}
 
 
 
private String[]  getOpenRules( UserStatus status, int vid )
{
   return getRules( status, "\\[OPEN\\]((.|\n)*)\\[/OPEN\\]", vid );
}
 
private String[]  getCloseRules( UserStatus status, int vid )
{
   return getRules( status, "\\[CLOSE\\]((.|\n)*)\\[/CLOSE\\]", vid );
}
 
 
 
getRules(  status, template, vid )
{
    // пользовательское правило, без типа - то все оставляем как есть
   rule = status.rule.getRuleText();
 
    //порты идут до #, а адреса идут после 
   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 );
   }
 
 
    pattern = Pattern.compile( template );
   m = pattern.matcher( rule );
   if (m.find())
   {
       rule = m.group( 1 );
   }      
 
   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 );      
}
 
getPorts( ports )
{
   portList = new ArrayList<String>();
   parts  = ports.split( ";" );
 
   for (String part : parts )
   {
      parts2  = part.split( ":" );
      if ( parts2.length <  2)
      {
         continue;
      }
      port = parts2 [1];
      portList.add( port );
   }
 
   ports_[] = new String [portList.size()];

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

   return ports_;
}


Вложения:
Picture 1.png
Picture 1.png [ 10.35 КБ | Просмотров: 7663 ]
Picture 3.png
Picture 3.png [ 37.06 КБ | Просмотров: 7665 ]


Последний раз редактировалось mikos 20 окт 2009, 14:10, всего редактировалось 2 раз(а).
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 окт 2009, 14:06 
Не в сети
Аватара пользователя

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
stark писал(а):
mikos писал(а):
А что будет, если у шлюза несколько потомком (скажем 10), и дергаю я один из них, а остальных скриптом ручками. Что будет в таком случае будет с родительским шлюзом? Он один раз дернется или каждый раз, когда я буду очередного потомка скриптом обходить?


каждый раз

Как посоветуете поступить, для раскидывания виланов по группе комутаторов?


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

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


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

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


каждый раз

Как посоветуете поступить, для раскидывания виланов по группе комутаторов?


я не совсем понял что вы хотите


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

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
stark писал(а):
mikos писал(а):
Как посоветуете поступить, для раскидывания виланов по группе комутаторов?


я не совсем понял что вы хотите


Есть центральный шлюз (Cisco2) на котором выдаются vlan на каждого.
Есть кольца комутаторов, которые подключены к этому комутатору.
Задача прописывать пользовательские Vlan на каждом комутаторе кольца (ввиду невозможности использовать VTP и иже сними).
Кольца, по сути, ни что иное как группа комутаторов, на которых должен быть прописан вилан абонента.
Идея в том, чтобы объединить комутаторы в группы с помощью папок и с помощью скрипта дергать всех участников группы. Но, это не совсем хорошая идея на сколько я понял, т.к. по сути при каждом переключении очередного члена группы, мы будем дергать родителя, что не есть хорошо.
Что можете посоветовать в такой ситуации?


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

Зарегистрирован: 23 мар 2009, 23:16
Сообщения: 780
Откуда: St.Petersburg
Карма: 0
stark писал(а):
ваша ошибка в парметрах запроса никак не связана с иерархией . запустите клиента в режиме debug и покажите какой запрос послыается при добавлении этого шлюза

Просто если убрать папку, то все работает. А у папки как раз вилан видится как -1 при выборе шлюзов.
По логу вот такая котовася.

Код:
http://10.3.0.1:8080/bgbilling/executer?id=875&module=ipn&action=GetContractRule&mid=1&BGBillingSecret=SU0b8zLGDgatPtl7yCjqEIFx&
[ length = 162 ] xml = <?xml version="1.0" encoding="windows-1251"?>
<data secret="9074DEB047D5530D99BF521836838ABD" status="ok"><rule rtid="2"><row text="10.99.1.2:1#;"/></rule></data>
http://10.3.0.1:8080/bgbilling/executer?module=ipn&gateId=9&action=GetVlan&mid=1&BGBillingSecret=fMZDtVolYbVrE00ubhM9410r&cid=609&
[ length = 129 ] xml = <?xml version="1.0" encoding="windows-1251"?>
<data secret="DA3244A302E084EA83692BE254484D3D" status="ok"><vlan vid="-1"/></data>
http://10.3.0.1:8080/bgbilling/executer?module=ipn&action=AddressContractInfo&mid=1&date=20.10.2009&BGBillingSecret=EaJLVR1CkuW01jm4Zk7hoE8A&cid=609&
[ length = 349 ] xml = <?xml version="1.0" encoding="windows-1251"?>
<data secret="259C882096EC4C8536FD3DB06218EE8E" status="ok"><table><data><row address_range="10.99.1.2 - 10.99.1.2" comment="" f0="443" f1="10.99.1.2 - 10.99.1.2" f2="[CORE: ANY; GW-NAT: ANY]" f3="07.10.2009-" f4="" id="443" ifaces="[CORE: ANY; GW-NAT: ANY]" period="07.10.2009-"/></data></table></data>
http://10.3.0.1:8080/bgbilling/executer?module=ipn&gid=9&address_list=%3B&action=CiscoVlanGenerateRule&mid=1&rtid=2&BGBillingSecret=USNyLQ2ZXLHtt5zyw4Co98CI&gtid=0&cid=609&
[ length = 144 ] xml = <?xml version="1.0" encoding="windows-1251"?>
<data secret="6B5AA3334C4D36EF2D50319F43935515" status="error">Ошибка в параметрах запроса!</data>
http://10.3.0.1:8080/bgbilling/executer?module=ipn&address_list=10.99.1.2%3A1%23%3B%0A&gid=6&action=CiscoSSHSwitchGenerateRule&mid=1&rtid=2&BGBillingSecret=KKoakl142enlPdnDrX5CDG1H&gtid=2&cid=609&
[ length = 534 ] xml = <?xml version="1.0" encoding="windows-1251"?>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 дек 2010, 11:26 
Не в сети

Зарегистрирован: 09 июн 2010, 08:32
Сообщения: 38
Карма: 0
Как получить последнюю дату изменения шлюза?
Из доки не понял.
Дайте кусочек кода пожалуйста?
Ниже мой кусок который показыват текущее состояние шлюза, на дате ошибка выходит.
К чему класс IPNContractStatusLogRecord прицепить? Я конечно могу SQL запросом вытащить дату, но это как то не красиво.

Код:
public void main( setup, con, conSlave )
{

modset = new ModuleSetup(con, 1);
IPNContractStatusManager ipnstm= new IPNContractStatusManager(con, 1, modset);
print (ipnstm.getContractStatus(12));
print (new IPNContractStatusLogRecord.getDate()) ;

}


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

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


Если выходит ошибка, то нужно текст ошибки выкладывать, чтобы помогли


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

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


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

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


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

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