За последние 24 часа нас посетил 18151 программист и 1662 робота. Сейчас ищут 1718 программистов ...

PHP + XML -> EPP

Тема в разделе "Решения, алгоритмы", создана пользователем leray, 17 июн 2011.

  1. leray

    leray Активный пользователь

    С нами с:
    17 июн 2011
    Сообщения:
    1
    Симпатии:
    0
    Пишу клиент для работы с EPP сервером.

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


    К серверу подключаюсь:

    PHP:
    1.         $context = stream_context_create();
    2.         $result = stream_context_set_option($context, 'ssl', 'local_cert', $this->path.$this->cert_file);
    3.         $result = stream_context_set_option($context, 'ssl', 'passphrase', '');
    4.         $result = stream_context_set_option($context, 'ssl', 'verify_peer',false);
    5.         $result = stream_context_set_option($context, 'ssl', 'verify_host',false);
    6.        
    7.         $this->socket=stream_socket_client("ssl://".$this->host.":".$this->port,$errno,$errstr, 60, STREAM_CLIENT_CONNECT, $context);
    Получаю приветствие от сервера

    Далее, к примеру, пробую авторизоваться, xml взят из примеров в описании EPP

    XML:

    HTML:
    1. <?xml version="1.0" encoding="utf-8" standalone="no"?>
    2. <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="[url]http://www.w3.org/2001/XMLSchema-instance[/url]" xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
    3.     <command>
    4.         <login>
    5.             <clID>%username%</clID>
    6.             <pw>%password%</pw>
    7.             <options>
    8.                 <version>1.0</version>
    9.                 <lang>en</lang>
    10.             </options>
    11.             <svcs>
    12.                 <objURI>[url]http://www.nic.cz/xml/epp/contact-1.6</objURI>[/url]
    13.                 <objURI>[url]http://www.nic.cz/xml/epp/nsset-1.2</objURI>[/url]
    14.                 <objURI>[url]http://www.nic.cz/xml/epp/domain-1.4</objURI>[/url]
    15.                 <objURI>[url]http://www.nic.cz/xml/epp/keyset-1.3</objURI>[/url]
    16.                 <svcExtension>
    17.                     <extURI>[url]http://www.nic.cz/xml/epp/enumval-1.2</extURI>[/url]
    18.                 </svcExtension>
    19.             </svcs>
    20.         </login>
    21.         <clTRID>wgyn001#10-02-08at13:58:06</clTRID>
    22.     </command>
    23. </epp>

    функции передачи комманды на сервер:

    PHP:
    1.  
    2.     private function sendEppCmd($xml) {
    3.         if(is_null($this->socket))  return false;
    4.  
    5.         $len = $this->strBytes($xml);
    6.         $value = $len + 4;
    7.  
    8.         $b3 = $value % 256;
    9.         $value = ($value - $b3)/256;
    10.         $b2 = $value % 256;
    11.         $value = ($value - $b2)/256;
    12.         $b1 = $value % 256;
    13.         $value = ($value - $b1)/256;
    14.         $b0 = $value % 256;
    15.  
    16.     //header
    17.         if(!@fwrite($this->socket, chr($b0).chr($b1).chr($b2).chr($b3), 4)){
    18.             $this->last_error="Unable to write header while sending command";
    19.             return false;
    20.         }
    21.  
    22.     //cmd body
    23.         if(!@fwrite($this->socket, $xml)){
    24.              $this->last_error="Unable to write body while sending command";
    25.             return false;
    26.         }
    27.  
    28.         return true;
    29.     }
    длина пакета 790 байт
    первые 4 байта - общая длина пакета, далее тело пакета
    длина тела = 786 байт


    И получаю тоже самое приветствие


    В чём может быть загвоздка??