Re: [PHP] Re: Connecting to an epp server

2008-04-11 Thread Paul van Brouwershaven

epp-example from dns.be:

?php

//
function mod ($a, $b)
{
  return $a % $b;
}
//
class EppSocket {
  var $fp = null;

  function EppSocket()
  {
  }

  function connect($addr, $port, $timeout)
  {
$this-fp = fsockopen ($addr, $port , $errno, $errstr, $timeout);
return 0;
  }

  function readInteger()
  {
$buf = fread($this-fp, 4);
if (strlen($buf)  4)
{
  echo failed to read 4 bytes \n;
  exit;
}
$b0 = ord($buf[0]);
$b1 = ord($buf[1]);
$b2 = ord($buf[2]);
$b3 = ord($buf[3]);
$value = $b3 + 256* ($b2 + 256* ($b1 + 256* $b0));
echo integer read from socket: $value \n;
return $value;
  }

  function readString ($bytes)
  {
echo waiting for $bytes bytes\n;
$left = $bytes;
$data = '';
while ( !feof($this-fp) ) {
  $chunk = fread($this-fp, $left);
  $data .= $chunk;
  $left = $left - strlen($chunk);
  if ($left == 0)
break;
}
return $data;
  }

  function readEppString()
  {
$len = $this-readInteger();
$len = $len - 4;
return $this-readString ($len);
  }

  function close()
  {
fclose ($this-fp);
  }


// this will fail for values bigger than 0x7FFF (since PHP sucks at math)
// on Windows:  PHP thinks that 0xFFFE modulo 256 = 256 !?!
// on Linux  :  PHP thinks that 0xFFFE modulo 256 = -2  !?!

  function writeInteger ($value)
  {
$b3 = mod ($value, 256);
$value = ($value - $b3)/256;
$b2 = mod ($value, 256);
$value = ($value - $b2)/256;
$b1 = mod ($value, 256);
$value = ($value - $b1)/256;
$b0 = mod ($value, 256);
echo $value split up in bytes : $b0 $b1 $b2 $b3 \n;
fwrite ($this-fp, chr($b0), 1);
fwrite ($this-fp, chr($b1), 1);
fwrite ($this-fp, chr($b2), 1);
fwrite ($this-fp, chr($b3), 1);
  }

  function writeEppString ($message)
  {
$len = strlen ($message);
echo len: $len \n;
$len = $len + 4;
echo total message length: $len bytes \n;
$this-writeInteger ($len);
echo writing message itself \n;
$written = fwrite ($this-fp, $message);
echo bytes written: $written \n;
  }

}

//=
{
  $socket = new EppSocket();

  $server = ssl://epp.example.org;  // replace with hostname of your 
registry's epp server
  $port = 33123;
  $timeout = 30;

  $ok = $socket-connect ($server, $port, $timeout);

  if ( $ok != 0)
  {
echo failed to connect to $server, check server name !!;
exit;
  }
  echo ok, connected to $server at port $port\n;

  $greeting = $socket-readEppString();
  echo =\n;
  echo $greeting ;
  echo =\n;

  $hello = ?xml version=\1.0\ encoding=\UTF-8\?epp 
xmlns=\urn:ietf:params:xml:ns:epp-1.0\ hello//epp;

  $socket-writeEppString ($hello);
  echo waiting for reply \n;

  $response = $socket-readEppString();
  echo =\n;
  echo $response ;
  echo =\n;

  $garbage = ?xml version=\1.0\ encoding=\UTF-8\?epp 
xmlns=\urn:ietf:params:xml:ns:epp-1.0\ garbage//epp;

  $socket-writeEppString ($garbage);
  $response = $socket-readEppString();
  echo =\n;
  echo $response ;
  echo =\n;

  $socket-close();
}
?



Alan Willsher schreef:

What is 4 bytes ?

On Thu, Apr 10, 2008 at 3:35 PM, Paul van Brouwershaven 
[EMAIL PROTECTED] wrote:


don't forget to send the 4 bytes!

Alan Willsher schreef:

 Hi im trying to connect to Nominets EPP server

Details can be found here
http://www.nominet.org.uk/registrars/systems/epp/

Im trying to send a login request the example can be found here
http://www.nominet.org.uk/registrars/systems/epp/login/

My script seems to connect ok, but im recieving no response when I try
to
send the login xml details.


?
$fp = @fsockopen('ssl://testbed-epp.nominet.org.uk', 700, $errno,
$errstr,
100);
echo (.$errno. .$errstr.);
if(!$fp) {
echo Not Connected!;
}

else {
echo Connected!\r\n;

$xml = '?xml version=1.0 encoding=UTF-8?
 epp xmlns=urn:ietf:params:xml:ns:epp-1.0
  xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
  xsi:schemaLocation=urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd
   command
 login
   clIDEXAMPLE-TAG/clID
   pwfoo-BAR2/pw
   options
 version1.0/version
 langen/lang
   /options
   svcs
  objURIhttp://www.nominet.org.uk/epp/xml/nom-account-1.0
/objURI
  objURIhttp://www.nominet.org.uk/epp/xml/nom-domain-1.0
/objURI
  objURIhttp://www.nominet.org.uk/epp/xml/nom-contact-1.0
/objURI
  objURIhttp://www.nominet.org.uk/epp/xml/nom-ns-1.0/objURI
   /svcs
 /login
 clTRIDABC-12345/clTRID
   /command
 /epp';

fputs($fp, $xml, strlen($xml));

   while (!feof($fp)) {
 $response .= fgets($fp, 128);
   }
   echo $response;

   fclose($fp);

}
?



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: 

[PHP] Re: Connecting to an epp server

2008-04-10 Thread Paul van Brouwershaven

don't forget to send the 4 bytes!

Alan Willsher schreef:

Hi im trying to connect to Nominets EPP server

Details can be found here http://www.nominet.org.uk/registrars/systems/epp/

Im trying to send a login request the example can be found here
http://www.nominet.org.uk/registrars/systems/epp/login/

My script seems to connect ok, but im recieving no response when I try to
send the login xml details.


?
$fp = @fsockopen('ssl://testbed-epp.nominet.org.uk', 700, $errno, $errstr,
100);
echo (.$errno. .$errstr.);
if(!$fp) {
echo Not Connected!;
}

else {
echo Connected!\r\n;

$xml = '?xml version=1.0 encoding=UTF-8?
  epp xmlns=urn:ietf:params:xml:ns:epp-1.0
   xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
   xsi:schemaLocation=urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd
command
  login
clIDEXAMPLE-TAG/clID
pwfoo-BAR2/pw
options
  version1.0/version
  langen/lang
/options
svcs
   objURIhttp://www.nominet.org.uk/epp/xml/nom-account-1.0
/objURI
   objURIhttp://www.nominet.org.uk/epp/xml/nom-domain-1.0/objURI
   objURIhttp://www.nominet.org.uk/epp/xml/nom-contact-1.0
/objURI
   objURIhttp://www.nominet.org.uk/epp/xml/nom-ns-1.0/objURI
/svcs
  /login
  clTRIDABC-12345/clTRID
/command
  /epp';

fputs($fp, $xml, strlen($xml));

while (!feof($fp)) {
  $response .= fgets($fp, 128);
}
echo $response;

fclose($fp);

}
?



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Re: Connecting to an epp server

2008-04-10 Thread Alan Willsher
What is 4 bytes ?

On Thu, Apr 10, 2008 at 3:35 PM, Paul van Brouwershaven 
[EMAIL PROTECTED] wrote:

 don't forget to send the 4 bytes!

 Alan Willsher schreef:

  Hi im trying to connect to Nominets EPP server
 
  Details can be found here
  http://www.nominet.org.uk/registrars/systems/epp/
 
  Im trying to send a login request the example can be found here
  http://www.nominet.org.uk/registrars/systems/epp/login/
 
  My script seems to connect ok, but im recieving no response when I try
  to
  send the login xml details.
 
 
  ?
  $fp = @fsockopen('ssl://testbed-epp.nominet.org.uk', 700, $errno,
  $errstr,
  100);
  echo (.$errno. .$errstr.);
  if(!$fp) {
  echo Not Connected!;
  }
 
  else {
  echo Connected!\r\n;
 
  $xml = '?xml version=1.0 encoding=UTF-8?
   epp xmlns=urn:ietf:params:xml:ns:epp-1.0
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
xsi:schemaLocation=urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd
 command
   login
 clIDEXAMPLE-TAG/clID
 pwfoo-BAR2/pw
 options
   version1.0/version
   langen/lang
 /options
 svcs
objURIhttp://www.nominet.org.uk/epp/xml/nom-account-1.0
  /objURI
objURIhttp://www.nominet.org.uk/epp/xml/nom-domain-1.0
  /objURI
objURIhttp://www.nominet.org.uk/epp/xml/nom-contact-1.0
  /objURI
objURIhttp://www.nominet.org.uk/epp/xml/nom-ns-1.0/objURI
 /svcs
   /login
   clTRIDABC-12345/clTRID
 /command
   /epp';
 
  fputs($fp, $xml, strlen($xml));
 
 while (!feof($fp)) {
   $response .= fgets($fp, 128);
 }
 echo $response;
 
 fclose($fp);
 
  }
  ?
 
 
 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php