Интеграция с панелью ISPConfig

Запрос улучшений, интеграции с различными системами и т.д.
Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-19 13:54:58

Я Вам в третий раз повторяю, что Ваш код:

Код: Выделить всё

        $Response = Trim($Response['Body']);
        #-----------------------------------------------------------------------------
        $XML = String_XML_Parse($Response);
        if(Is_Exception($XML))
                return new gException('WRONG_SERVER_ANSWER',$Response,$XML);
        #-----------------------------------------------------------------------------
        $XML = $XML->ToArray('elem');

Мне в массив отдает только последний item

Код: Выделить всё

Array
(
    [SOAP-ENV:Envelope] => Array
        (
            [SOAP-ENV:Body] => Array
                (
                    [ns1:client_get_by_usernameResponse] => Array
                        (
                            [return] => Array
                                (
                                    [item] => Array
                                        (
                                            [key] => ssh_rsa
                                            [value] =>
                                        )

                                )

                        )

                )

        )

)

что не понятного? велосипед получился со сломанными спицами в колесе. поэтому поставлю свое колесо.

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-19 13:59:28

код

Код: Выделить всё

<?php
#-------------------------------------------------------------------------------
/** @author Alex Keda, for www.host-food.ru */
/******************************************************************************/
/******************************************************************************/
$__args_list = Array('Params');
/******************************************************************************/
Eval(COMP_INIT);
/******************************************************************************/
/******************************************************************************/

$Body = '<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="/remote/index.php" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:client_get_by_usernameResponse><return xsi:type="ns2:Map"><item><key xsi:type="xsd:string">userid</key><value xsi:type="xsd:string">36</value></item><item><key xsi:type="xsd:string">sys_userid</key><value xsi:type="xsd:string">1</value></item><item><key xsi:type="xsd:string">sys_groupid</key><value xsi:type="xsd:string">1</value></item><item><key xsi:type="xsd:string">sys_perm_user</key><value xsi:type="xsd:string">riud</value></item><item><key xsi:type="xsd:string">sys_perm_group</key><value xsi:type="xsd:string">riud</value></item><item><key xsi:type="xsd:string">sys_perm_other</key><value xsi:type="xsd:string"></value></item><item><key xsi:type="xsd:string">username</key><value xsi:type="xsd:string">tester</value></item><item><key xsi:type="xsd:string">passwort</key><value xsi:type="xsd:string">бла-бла-бла</value></item><item><key xsi:type="xsd:string">modules</key><value xsi:type="xsd:string">dashboard,mail,sites,dns,tools,help</value></item><item><key xsi:type="xsd:string">startmodule</key><value xsi:type="xsd:string">dashboard</value></item><item><key xsi:type="xsd:string">app_theme</key><value xsi:type="xsd:string">default</value></item><item><key xsi:type="xsd:string">typ</key><value xsi:type="xsd:string">user</value></item><item><key xsi:type="xsd:string">active</key><value xsi:type="xsd:string">1</value></item><item><key xsi:type="xsd:string">language</key><value xsi:type="xsd:string">ru</value></item><item><key xsi:type="xsd:string">groups</key><value xsi:type="xsd:string">36</value></item><item><key xsi:type="xsd:string">default_group</key><value xsi:type="xsd:string">36</value></item><item><key xsi:type="xsd:string">client_id</key><value xsi:type="xsd:string">35</value></item><item><key xsi:type="xsd:string">id_rsa</key><value xsi:type="xsd:string"></value></item><item><key xsi:type="xsd:string">ssh_rsa</key><value xsi:type="xsd:string"></value></item></return></ns1:client_get_by_usernameResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>';

$Response = Trim($Body);
#-----------------------------------------------------------------------------
$XML = String_XML_Parse($Response);
if(Is_Exception($XML))
        return new gException('WRONG_SERVER_ANSWER',$Response,$XML);
#-----------------------------------------------------------------------------
$XML = $XML->ToArray('item');

Debug(print_r($XML,true));

$Array = $XML['SOAP-ENV:Envelope']['SOAP-ENV:Body']['ns1:client_get_by_usernameResponse']['return'];

foreach(Array_Keys($Array) as $Key)
        Debug(SPrintF('%s => %s',$Key,print_r($Array[$Key],true)));


выполняем, и получили

Код: Выделить всё

[12:57:37.74][63518] item000001 => Array
(
    [key] => userid
    [value] => 36
)

[12:57:37.74][63518] item000002 => Array
(
    [key] => sys_userid
    [value] => 1
)

[12:57:37.74][63518] item000003 => Array
(
    [key] => sys_groupid
    [value] => 1
)

[12:57:37.74][63518] item000004 => Array
(
    [key] => sys_perm_user
    [value] => riud
)

[12:57:37.74][63518] item000005 => Array
(
    [key] => sys_perm_group
    [value] => riud
)

[12:57:37.74][63518] item000006 => Array
(
    [key] => sys_perm_other
    [value] =>
)

[12:57:37.74][63518] item000007 => Array
(
    [key] => username
    [value] => tester
)

[12:57:37.75][63518] item000008 => Array
(
    [key] => passwort
    [value] => бла-бла-бла
)

[12:57:37.75][63518] item000009 => Array
(
    [key] => modules
    [value] => dashboard,mail,sites,dns,tools,help
)

[12:57:37.75][63518] item000010 => Array
(
    [key] => startmodule
    [value] => dashboard
)

[12:57:37.75][63518] item000011 => Array
(
    [key] => app_theme
    [value] => default
)

[12:57:37.75][63518] item000012 => Array
(
    [key] => typ
    [value] => user
)

[12:57:37.75][63518] item000013 => Array
(
    [key] => active
    [value] => 1
)

[12:57:37.75][63518] item000014 => Array
(
    [key] => language
    [value] => ru
)

[12:57:37.75][63518] item000015 => Array
(
    [key] => groups
    [value] => 36
)

[12:57:37.75][63518] item000016 => Array
(
    [key] => default_group
    [value] => 36
)

[12:57:37.75][63518] item000017 => Array
(
    [key] => client_id
    [value] => 35
)

[12:57:37.75][63518] item000018 => Array
(
    [key] => id_rsa
    [value] =>
)

[12:57:37.75][63518] item000019 => Array
(
    [key] => ssh_rsa
    [value] =>
)


Отправлено спустя 57 секунд:
разницу между elem и item в две первые буквы вы упорно не замечаете?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-19 14:09:04

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

Код: Выделить всё

$Response = Trim($Response['Body']);
и

Код: Выделить всё

$Response = Trim($Body);
Вот и весь костыль )))
А я сую данные сюда

Код: Выделить всё

$XML = String_XML_Parse($Response);


Отправлено спустя 3 минуты 48 секунд:
И всеравно мой код получается более производительным
alezhen писал(а):Источник цитаты $p = xml_parser_create();
xml_parse_into_struct($p, $Response, $vals);
xml_parser_free($p);
echo $vals[6][value];

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-19 14:22:10

ничё что я не запрашивал ответ с сервера? а просто задал значение переменной в виде вашей xml, что вы выложили как образец
Trim, он не к переменной, он к её содержимому применяется.
--
и что, что он производительный? я вам приводил примеры нечитаемого но производительного кода.
у самого такой иногда выходит.

офигительно производительне 10 строк, которые если раскатать в читаемый вид занимают пару-тройку страниц чистого кода.

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

Отправлено спустя 1 минуту 5 секунд:
alezhen писал(а):Источник цитаты А я сую данные сюда

вы кода-то так и не показали. поэтому чё вы там и куда суёте - вам видней =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-19 21:29:44

Самое интересное, что приведенный мной код отказывается работать в системе. Хотя на тестовом сервере работает на ура. Наверное конфликт со встроенными функциями. Буду использовать встроенные.

В споре рождается истина. Прошу без обид.

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-19 22:25:04

я уже давно ни на кого не обижаюсь.
чай не дитя ж какое...
--
кстати, такими вот феньками не увлекайтесь
alezhen писал(а):Источник цитаты

Код: Выделить всё

echo $vals[6][value];

если сервер по внутренним причинам решит поменять параметры местами - что будет? =)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-20 17:27:25

Уважаемый Alex! :) А Вы являетесь разработчиком?

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-20 20:33:39

да. последним......

Отправлено спустя 1 минуту 54 секунды:
можно же зайти в репозиторий и посмотреть
там список всех кто принимает участие, что делает...

ссылка вверху страницы
Убей их всех! Бог потом рассортирует...

Аватара пользователя
alezhen
Сообщения: 119
Зарегистрирован: 2015-02-16 12:22:03
Откуда: Россия
Благодарил (а): 5 раз
Поблагодарили: 1 раз
Контактная информация:

Интеграция с панелью ISPConfig

Сообщение alezhen » 2015-02-20 21:27:42

Тогда хочу все-таки предложить Вам добавить в таблицу заказа поле ответа от сервера. Неважно, будет ли оно появляться в интерфейсе. Главное, что-бы после запроса на другой сервер ответ можно было сохранить в заказе и потом использовать при интеграции с другим сервером. Я думаю это будет актуально при многих интеграциях Вашего биллинга с другими серверами.
В частности для себя наблюдаю в этом большое облегчение в том, что при каждом запросе не нужно городить огород с запросом ИД по имени пользователя. Лишняя нагрузка на оба сервера и на сеть.

Аватара пользователя
Alex Keda
Сообщения: 2907
Зарегистрирован: 2009-10-07 14:30:54
Откуда: USSR
Поблагодарили: 20 раз

Интеграция с панелью ISPConfig

Сообщение Alex Keda » 2015-02-21 0:15:52

какие-то проблемы с написанием внутренней функции в библиотеке, и дёргании её при необходимости?
всё ту же многострадальную либу посмотрите, там в конце есть примеры внутренних функций.
они наружу и не вылазят, внутри либы тока используются
--
в таблице заказа и так много полей.
последние пару лет подумываю плавненько избавляться от таблиц заказов услуг, и собирать всё в Orders
а всякие поля специфические в json и в поле Params убирать ...

руки тока никак не дойдут...
=====
какая-то стрёмная панель-то... и функции ей внутренние не канают, и поле ей отдельное подавай...

храните в Params таблицы Orders.
вот тока никаких гарантий что я не стандартизую его.
сейчас - там банально мусор, кто что не лень хранит там...

лучше написать внутреннюю функцию. надёжней.
хотя бы потому что после какогонить сбоя вы в базе на сервере хостинга поковыряеетсь и идентификатор сменится.
что будет - рассказать? =)

Отправлено спустя 2 минуты 22 секунды:
alezhen писал(а):Источник цитаты В частности для себя наблюдаю в этом большое облегчение в том, что при каждом запросе не нужно городить огород с запросом ИД по имени пользователя. Лишняя нагрузка на оба сервера и на сеть.

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

--
не занимайтесь ерундой, банальный опрос сервера с вытягиванием нагрузки или www доменов отыграет эту съэкономленную мелочь стократно...

Отправлено спустя 1 час 49 минут 42 секунды:
а вообще, подумалось мне - хранить этот идентификатор в биллинге - в принципе плохая идея.
он отношения к биллингу не имеет никакого.
и на втором сервере, будут тако же идентификатор но для другого логина.
это внутренняя цифирка панели управления вполне конкретным сервером.

которую, к тому же, можно легко найти по логину.
Убей их всех! Бог потом рассортирует...


Вернуться в «Запрос улучшений»

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

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