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

перенести в inet скриптом
http://forum.bitel.ru/viewtopic.php?f=44&t=10036
Страница 1 из 1

Автор:  optimous [ 22 дек 2014, 20:24 ]
Заголовок сообщения:  перенести в inet скриптом

Добрый день, коллеги.

Цитата:
Сервер: вер. 6.0 сборка 1793 от 17.09.2014 01:45:13
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_45

dialup вер. 6.0 сборка 406 от 12.09.2014 18:24:32
inet вер. 6.0 сборка 1453 от 07.10.2014 13:36:54


Задумали перенести все логины с Dialup'a в сервисы Inet'a простеньким скриптом пхп , который через базу все делает.
Последовательность действий скрипта такая:
- выбираем контракт, у которого статус "активный" и есть подключенный модуль dialup
- добавляем ему модуль Inet
- выбираем нужные для сервиса в договоре параметры из dialup'a
- заносим в таблицу inet_serv_10 эти данные:
Код:
  INSERT INTO inet_serv_10 (id,parentID,contractID,typeID,deviceID,interfaceID,vlan,identifier,macAddress,ipResourceID,
                    ipResourceSubscriptionID,addressFrom,addressTo,login,password,dateFrom,dateTo,contractObjectID,status,
                    sessionCountLimit,deviceState,accessCode,config,deviceOptions,comment,title)
                    VALUES (NULL,0," . $cid . ",1,6,-1,-1,'" . $ident . "',UNHEX(NULL),0,0,UNHEX(NULL),UNHEX(NULL),'" . $login . "','
                    " . $pass . "'," . $dateFrom . ",NULL,0,0,1,1,0,NULL,'','','PPPoE')


В "типах сервиса" этот сервис имеет тип адреса : "динамический или статический адрес".
Так вот, если использовать для выдаваемых IP-адресов динамику, регистрация под этим договором происходит нормально. А если пытаться в новоиспеченном сервисе добавить статические адреса, то ругается, мол "подходящий IP ресурс не найден".
Если удалить этот сервис, и добавить его ручками с такими же данными, как и скриптом, то статику IP добавляет нормально.
Подозреваю, что через "морду" при создании сервиса, что-то куда-то дополнительно прописывается, но вот куда - не найду концов.

Ресурсы IP прописаны для динамики в каждом NASe:
Код:
radius.realm.default.ipCategories=1


Для статики прописаны в родительской папке для NASов:
Код:
ip.resource.categoryId=6



Никто не знает, куда надо рыть?

Автор:  vkulakov [ 22 дек 2014, 20:52 ]
Заголовок сообщения:  Re: перенести в inet скриптом

Предлагаю заводить сервисы не через базу, а через web-сервисы: http://forum.bitel.ru/viewtopic.php?f=1&t=9951&start=60#p83732

Через базу со статическим адресом куча заморочек.

Автор:  vkulakov [ 22 дек 2014, 21:30 ]
Заголовок сообщения:  Re: перенести в inet скриптом

Вот пример php, который в цикле заводит сервисы. Адрес следующего сервиса на 4 больше адреса предыдущего (у меня подсети).
Код:
<?php
    $login = 'user';
    $password = 'pass';

    $client = new SoapClient(
        'http://1.2.3.4:8080/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/27/InetServService?wsdl',
        array(
            'login' => $login,
            'password' => $password
        )
    );
    $client->__setLocation('http://1.2.3.4:8080/bgbilling/executer/ru.bitel.bgbilling.modules.inet.api/27/InetServService');

    // Вывод всех доступных методов, их параметров и возвращаемых значений в сервисе.
    var_dump($client->__getFunctions());

    echo "\n--- inetServGet ---\n";
    $params = array(
        'inetServId' => 1
    );
    $serv = $client->inetServGet($params)->return;
    print_r($serv);
    echo "AddrFrom: ".bin2hex($serv->addrFrom)."\n";
    echo "AddrTo:   ".bin2hex($serv->addrTo)."\n";
    var_dump(hexdec(bin2hex($serv->addrFrom)) + 4);

    for($i = 1; $i <= 2; $i++) {
        echo "\n--- New service ".$i." ---\n";
        $serv->id = '0';
        $serv->addrFrom = pack("H*", dechex(3107617792 + 4*$i));
        $serv->addrTo = pack("H*", dechex(3107617792 + 4*($i + 1) - 1));
        $serv->identifierList = array(
            'identifier' => $i.".2999"
        );
        echo "AddrFrom: ".bin2hex($serv->addrFrom)."\n";
        echo "AddrTo:   ".bin2hex($serv->addrTo)."\n";

        echo "\n--- InetServUpdate ---\n";
        $params = array(
            'inetServ' => $serv,
            'generateLogin' => true,
            'generatePassword' => true,
            'saWaitTimeout' => 0
        );
        $result = $client->inetServUpdate($params);
        print_r($result);
    }
?>

Здесь 3107617792 - это IP-адрес, который преобразован в long.

Автор:  stark [ 23 дек 2014, 12:42 ]
Заголовок сообщения:  Re: перенести в inet скриптом

можно еще глобальным скриптом..

Ну или как вариант можно попробовать добавить сервисы вашим скриптом, потом перегрузить access/accopning..Не уверен что будет работать, но возможно это поможет. Проблема в том что надо бросить событие для activemq. Я не знаю можно ли это сделать из php. Вот тут что-то про это есть.

Автор:  optimous [ 25 дек 2014, 23:35 ]
Заголовок сообщения:  Re: перенести в inet скриптом

stark писал(а):
можно еще глобальным скриптом..

Ну или как вариант можно попробовать добавить сервисы вашим скриптом, потом перегрузить access/accopning..Не уверен что будет работать, но возможно это поможет. Проблема в том что надо бросить событие для activemq. Я не знаю можно ли это сделать из php. Вот тут что-то про это есть.


Не, не помогло... Эх, оставалось сделать маленький шажок, а теперь надо все переделывать, ладно буду пробовать...

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