BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 22 фев 2017, 19:13 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
по скрипту из вики http://wiki.bitel.ru/index.php/%D0%9A%D ... D1%8B_inet
конвертирую логины, все ок. но хочу проставить стат ип в сервисе... не проставляет никак.
ставлю ip из категории 5. вручную проставляется этот ip на сервис, скриптом нет.
Код:
...
         serv = new InetServ();
         serv.setContractId( cid );
         serv.setComment( "Импортирован из VPN" );
         serv.setDateFrom( dateFrom );
         serv.setDateTo( dateTo );
         serv.setLogin( login );
         serv.setPassword( pswd );
         serv.setTypeId( INET_SERV_TYPE_VPN_ID );
         serv.setSessionCountLimit( sessionCount );
         //serv.setDeviceId( inetDeviceId );
         if (lip>0) {//Если есть стат ИП пытаемся проставить
            byte[] bip = Utils.convertLongToBytes(lip) ;
            serv.setIpResourceId(5) ;
            serv.setIpResourceSubscriptionId(5) ;
            serv.setAddressFrom(bip) ;
            serv.setAddressTo(bip) ;
         }
...
                        wsServ.inetServUpdate( serv, new ArrayList<InetServOption>(), false, false, 0 );


в логах ошибка
Код:
add  new service for cid 667115;login tsoraev1
Error while updating  service  for contract 667115;login=tsoraev1:Подходящий ip ресурс не найден


Как проставить?

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2017, 20:01 
Не в сети
Клиент

Зарегистрирован: 09 фев 2011, 15:28
Сообщения: 1092
Карма: 135
Ресурс и AddressTo не надо выставлять, достаточно только setAddressFrom

у меня строковые адреса были, сл. код нормально всё создавал
Код:
...
ipAddr = rs.getString(3);
byte[] ip = InetAddress.getByName(ipAddr).getAddress();
...
serv.setAddressFrom(ip);
wsInetServ.inetServUpdate(serv, new ArrayList<InetServOption>(), false, false, 0 );


Проверь еще после установки адреса в сервис вот такую команду, должна выводить ип в виде строки
Код:
print(InetAddress.getByAddress(serv.getAddressFrom()).getHostAddress());


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2017, 20:14 
Не в сети

Зарегистрирован: 20 окт 2016, 00:34
Сообщения: 82
Карма: 0
Вот как-то так для статиков заводил:
Код:
...
                List<Integer> ipResourceCategoryIds = wsServ.ipResourceCategoryIds( inetServ.getDeviceId(), inetServ.getInterfaceId(), inetServ.getTypeId() );
                List<IpResourceNet> rangeList = wsResource.freeIpResourceNetList( ipResourceCategoryIds, null, inetServ.getDateFrom(), inetServ.getDateTo(), 30, Integer.MAX_VALUE );
...

                byte[] b = new byte[4];
                // Получаем ip в b ....
...
                boolean freeIpFound = false;
                for( IpResourceNet range: rangeList ) {
                    if( freeIpFound ) {
                        continue;
                    }

                    if( range.inNet( b ) ) {
                        inetServ.setIpResourceId( range.getIpResourceId() );
                        print( " found free ip resource" );
                       
                        inetServ.setAddressFrom( range.getSubnet() );
                        inetServ.setAddressTo( range.getMaxIp() );
                       
                        freeIpFound = true;
                    }
                }
                if( !freeIpFound ) {
                    print( " ERROR! free ip from resource not found for " + ip );
                    return false;
                }
               
                int serviceId = wsServ.inetServUpdate( inetServ, new ArrayList<InetServOption>(), false, false, 0 );

...


для вас, если это статика с одним ip должна быть маска /32
Код:
                List<IpResourceNet> rangeList = wsResource.freeIpResourceNetList( ipResourceCategoryIds, null, inetServ.getDateFrom(), inetServ.getDateTo(), 32, Integer.MAX_VALUE );

_________________
Клиент: вер. 7.1.206 / 15.08.2019 22:37:24
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_181
Сервер: вер. 7.1.1144 / 15.08.2019 22:39:22
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_181


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2017, 20:25 
Не в сети

Зарегистрирован: 20 окт 2016, 00:34
Сообщения: 82
Карма: 0
Хотя мой вариант, возможно, может не подойти, зависит от того, что у вас в типе сервиса указано "в типе адреса".

_________________
Клиент: вер. 7.1.206 / 15.08.2019 22:37:24
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_181
Сервер: вер. 7.1.1144 / 15.08.2019 22:39:22
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_181


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 22 фев 2017, 20:27 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
barguzin2 писал(а):
Проверь еще после установки адреса в сервис вот такую команду, должна выводить ип в виде строки
Код:
print(InetAddress.getByAddress(serv.getAddressFrom()).getHostAddress());

Этот метод рабочий. Второй не пробовал.
Спасибо всем.

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


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

Зарегистрирован: 19 дек 2006, 21:04
Сообщения: 5970
Карма: 256
Добавлю:
serv.setIpResourceId(5) в данном месте не нужен и не сработает, т.к. сервер сам пытается найти для указанного IP и устройства подходящий IP-ресурс (прописанный на устройстве или его предке).
Utils.convertLongToBytes(lip) - скорее всего вернет 8 байт, а надо 4.


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

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


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

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


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

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