| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- <?php
- /* EPP Client class for PHP, Copyright 2005 CentralNic Ltd
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- /**
- * A simple client class for the Extensible Provisioning Protocol (EPP)
- * @package Net_EPP
- * @version 0.0.4
- * @author Gavin Brown <gavin.brown@nospam.centralnic.com>
- * @revision $Id: Client.php,v 1.13 2010/10/21 11:55:07 gavin Exp $
- */
- require_once('Protocol.php');
- $GLOBALS['Net_EPP_Client_Version'] = '0.0.4';
- /**
- * A simple client class for the Extensible Provisioning Protocol (EPP)
- * @package Net_EPP
- */
- class Net_EPP_Client {
- /**
- * @var resource the socket resource, once connected
- */
- var $socket;
- /**
- * Establishes a connect to the server
- * This method establishes the connection to the server. If the connection was
- * established, then this method will call getFrame() and return the EPP <greeting>
- * frame which is sent by the server upon connection. If connection fails, then
- * an exception with a message explaining the error will be thrown and handled
- * in the calling code.
- * @param string $host the hostname
- * @param integer $port the TCP port
- * @param integer $timeout the timeout in seconds
- * @param boolean $ssl whether to connect using SSL
- * @param resource $context a stream resource to use when setting up the socket connection
- * @throws Exception on connection errors
- * @return a string containing the server <greeting>
- */
- function connect($host, $port = 700, $timeout = 1, $ssl = true, $context = NULL) {
- $target = sprintf('%s://%s:%d', ($ssl === true ? 'ssl' : 'tcp'), $host, $port);
- if (is_resource($context)) {
- $result = stream_socket_client($target, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $context);
- } else {
- $result = stream_socket_client($target, $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT);
- }
- if ($result === False) {
- throw new Exception("Error connecting to $target: $errstr (code $errno)");
- }
- // Set our socket
- $this->socket = $result;
- // Set stream timeout
- if (!stream_set_timeout($this->socket, $timeout)) {
- throw new Exception("Failed to set timeout on socket: $errstr (code $errno)");
- }
- // Set blocking
- if (!stream_set_blocking($this->socket, 0)) {
- throw new Exception("Failed to set blocking on socket: $errstr (code $errno)");
- }
- return $this->getFrame();
- }
- /**
- * Get an EPP frame from the server.
- * This retrieves a frame from the server. Since the connection is blocking, this
- * method will wait until one becomes available. If the connection has been broken,
- * this method will return a string containing the XML from the server
- * @throws Exception on frame errors
- * @return a string containing the frame
- */
- function getFrame() {
- return Net_EPP_Protocol::getFrame($this->socket);
- }
- /**
- * Send an XML frame to the server.
- * This method sends an EPP frame to the server.
- * @param string the XML data to send
- * @throws Exception when it doesn't complete the write to the socket
- * @return boolean the result of the fwrite() operation
- */
- function sendFrame($xml) {
- return Net_EPP_Protocol::sendFrame($this->socket, $xml);
- }
- /**
- * a wrapper around sendFrame() and getFrame()
- * @param string $xml the frame to send to the server
- * @throws Exception when it doesn't complete the write to the socket
- * @return string the frame returned by the server, or an error object
- */
- function request($xml) {
- $res = $this->sendFrame($xml);
- return $this->getFrame();
- }
- /**
- * Close the connection.
- * This method closes the connection to the server. Note that the
- * EPP specification indicates that clients should send a <logout>
- * command before ending the session.
- * @return boolean the result of the fclose() operation
- */
- function disconnect() {
- return @fclose($this->socket);
- }
- /**
- * ping the connection to check that it's up
- * @return boolean
- */
- function ping() {
- return (!is_resource($this->socket) || feof($this->socket) ? false : true);
- }
- }
- ?>
|