nlopess         Sun Nov 19 18:38:11 2006 UTC

  Modified files:              
    /php-src/ext/ftp/tests      001.phpt 002.phpt 003.phpt cert.pem 
                                server.inc skipif.inc 
  Log:
  MFB
  
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/001.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/ftp/tests/001.phpt
diff -u /dev/null php-src/ext/ftp/tests/001.phpt:1.2
--- /dev/null   Sun Nov 19 18:38:11 2006
+++ php-src/ext/ftp/tests/001.phpt      Sun Nov 19 18:38:11 2006
@@ -0,0 +1,36 @@
+--TEST--
+FTP login
+--SKIPIF--
+<?php
+require 'skipif.inc';
+?>
+--FILE--
+<?php
+require 'server.inc';
+
+$ftp = ftp_connect('127.0.0.1', $port);
+if (!$ftp) die("Couldn't connect to the server");
+
+var_dump(ftp_login($ftp, 'user', 'pass'));
+var_dump(ftp_raw($ftp, 'HELP'));
+var_dump(ftp_raw($ftp, 'HELP HELP'));
+
+var_dump(ftp_close($ftp));
+?>
+--EXPECT--
+bool(true)
+array(4) {
+  [0]=>
+  string(55) "214-There is help available for the following commands:"
+  [1]=>
+  string(5) " USER"
+  [2]=>
+  string(5) " HELP"
+  [3]=>
+  string(15) "214 end of list"
+}
+array(1) {
+  [0]=>
+  string(39) "214 Syntax: HELP [<SP> <string>] <CRLF>"
+}
+bool(true)
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/002.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/ftp/tests/002.phpt
diff -u /dev/null php-src/ext/ftp/tests/002.phpt:1.2
--- /dev/null   Sun Nov 19 18:38:11 2006
+++ php-src/ext/ftp/tests/002.phpt      Sun Nov 19 18:38:11 2006
@@ -0,0 +1,38 @@
+--TEST--
+FTP login (SSL)
+--SKIPIF--
+<?php
+$ssl = 1;
+require 'skipif.inc';
+?>
+--FILE--
+<?php
+$ssl = 1;
+require 'server.inc';
+
+$ftp = ftp_ssl_connect('127.0.0.1', $port);
+if (!$ftp) die("Couldn't connect to the server");
+
+var_dump(ftp_login($ftp, 'user', 'pass'));
+var_dump(ftp_raw($ftp, 'HELP'));
+var_dump(ftp_raw($ftp, 'HELP HELP'));
+
+var_dump(ftp_close($ftp));
+?>
+--EXPECT--
+bool(true)
+array(4) {
+  [0]=>
+  string(55) "214-There is help available for the following commands:"
+  [1]=>
+  string(5) " USER"
+  [2]=>
+  string(5) " HELP"
+  [3]=>
+  string(15) "214 end of list"
+}
+array(1) {
+  [0]=>
+  string(39) "214 Syntax: HELP [<SP> <string>] <CRLF>"
+}
+bool(true)
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/003.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/ftp/tests/003.phpt
diff -u /dev/null php-src/ext/ftp/tests/003.phpt:1.2
--- /dev/null   Sun Nov 19 18:38:11 2006
+++ php-src/ext/ftp/tests/003.phpt      Sun Nov 19 18:38:11 2006
@@ -0,0 +1,43 @@
+--TEST--
+FTP cwd
+--SKIPIF--
+<?php
+require 'skipif.inc';
+?>
+--FILE--
+<?php
+require 'server.inc';
+
+$ftp = ftp_connect('127.0.0.1', $port);
+if (!$ftp) die("Couldn't connect to the server");
+
+var_dump(ftp_login($ftp, 'user', 'pass'));
+
+var_dump(ftp_pwd($ftp));
+
+var_dump(ftp_chdir($ftp, 'mydir'));
+var_dump(ftp_pwd($ftp));
+
+var_dump(ftp_chdir($ftp, '/xpto/mydir'));
+var_dump(ftp_pwd($ftp));
+
+var_dump(ftp_cdup($ftp));
+var_dump(ftp_pwd($ftp));
+
+var_dump(ftp_chdir($ftp, '..'));
+var_dump(ftp_pwd($ftp));
+
+var_dump(ftp_close($ftp));
+?>
+--EXPECT--
+bool(true)
+string(1) "/"
+bool(true)
+string(6) "/mydir"
+bool(true)
+string(11) "/xpto/mydir"
+bool(true)
+string(5) "/xpto"
+bool(true)
+string(1) "/"
+bool(true)
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/cert.pem?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/ftp/tests/cert.pem
diff -u /dev/null php-src/ext/ftp/tests/cert.pem:1.2
--- /dev/null   Sun Nov 19 18:38:11 2006
+++ php-src/ext/ftp/tests/cert.pem      Sun Nov 19 18:38:11 2006
@@ -0,0 +1,48 @@
+-----BEGIN CERTIFICATE REQUEST-----
+MIIBmzCCAQQCAQAwWzELMAkGA1UEBhMCUFQxCzAJBgNVBAgTAkx4MQswCQYDVQQH
+EwJMeDEcMBoGA1UEChMTQSBtaW5oYSBlbXByZXNhLCBTQTEUMBIGA1UECxMLUEhQ
+IFFBIFRlYW0wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM9mfEOSYwXf58ch
+4NyO1QOU1XMfquz8OVpvMUITABLAevZpeQn6vZPHNyXHFQC0QC8scydK1rAYd2U+
+9K2aPub6ioMjYyjPpAE07l9EAAPUEBlqqsziB/wT8QjWkByyJEkYu+o0Wyjokhfn
+BMPvm52wLWUx9nvUeNDCftnKg1wxAgMBAAGgADANBgkqhkiG9w0BAQQFAAOBgQDD
+s1FeqPxnF2bWj8/dG8MyPaRfOAMVz1UsCZUciXIVG5LSIvR2qnMC3iEYt3s13sEq
+z8VJlNHa8nniE+VFNv093yIu+PlWXMEvb5y5EFqP2AYq3RAT+SJsSxGqIdzPZiKY
+INaktLCZmQ/E1v7/4hFzVRq9ydJI82DVS1nv282Whw==
+-----END CERTIFICATE REQUEST-----
+-----BEGIN CERTIFICATE-----
+MIIC4zCCAkygAwIBAgIBADANBgkqhkiG9w0BAQQFADBbMQswCQYDVQQGEwJQVDEL
+MAkGA1UECBMCTHgxCzAJBgNVBAcTAkx4MRwwGgYDVQQKExNBIG1pbmhhIGVtcHJl
+c2EsIFNBMRQwEgYDVQQLEwtQSFAgUUEgVGVhbTAeFw0wNjExMTkxODIzNTNaFw0w
+NzExMTkxODIzNTNaMFsxCzAJBgNVBAYTAlBUMQswCQYDVQQIEwJMeDELMAkGA1UE
+BxMCTHgxHDAaBgNVBAoTE0EgbWluaGEgZW1wcmVzYSwgU0ExFDASBgNVBAsTC1BI
+UCBRQSBUZWFtMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDPZnxDkmMF3+fH
+IeDcjtUDlNVzH6rs/DlabzFCEwASwHr2aXkJ+r2TxzclxxUAtEAvLHMnStawGHdl
+PvStmj7m+oqDI2Moz6QBNO5fRAAD1BAZaqrM4gf8E/EI1pAcsiRJGLvqNFso6JIX
+5wTD75udsC1lMfZ71HjQwn7ZyoNcMQIDAQABo4G2MIGzMB0GA1UdDgQWBBTIga5L
+q+Ub1SWXgNZRYCpq3c8Z+jCBgwYDVR0jBHwweoAUyIGuS6vlG9Ull4DWUWAqat3P
+GfqhX6RdMFsxCzAJBgNVBAYTAlBUMQswCQYDVQQIEwJMeDELMAkGA1UEBxMCTHgx
+HDAaBgNVBAoTE0EgbWluaGEgZW1wcmVzYSwgU0ExFDASBgNVBAsTC1BIUCBRQSBU
+ZWFtggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAe6AA8aC3KDI8
+smd+7XWjaTSp1Q0uMkEZ2PEBzif2I1aPPqw1CQykJ1iDdC/8PJ1yEIezloP2XQoZ
+NjTaCO+uubay03ncoPTZvDUwExN9BYFAYgc2z3tLMHYbA7kM2sIbKys7ZQegLibr
+TSKYQOBeYA/FB9GHECJGU3zBRvYi+Og=
+-----END CERTIFICATE-----
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,928762DB6DE222AD
+
+oOxNUBX0wrqmRqb3IEZMogc1bnVm6JoW6YFjGfHNcIz0jS7UPDhUFDR26y0dYujL
+LEgxOcYo8ItvGcXSRbs+3W7lISbosgkB0DOaKx5jVmOGwUVRergUUSY8rbf93FtP
+27CEvAfsU6do5HmlJ34mYZW1k+onCznlJXJkupQ5jmiily3GwEdr/5mMIVOmXQ6p
+xWkxHySDKyVbR0v4JY3SJLRBuhgofYNG5155PiqZ7KwYY4Aw60eVgINsvJCF9/8b
+kEj+lecHbBdAf7N82320Ga+F+VeFnUl0gWFjoIF9UFCO80+7ZvIGdGlyPkr4zMvt
+TsC1snJQdHg+IlT3sGayYrQANpTG6GPYhn3KEvK5aqq+bPEe5lija0gw34jbPCo+
+TjHR76lToxzubGZODyyF/rjl5KwUbqTCNuv1PX1jTx7n7sCbu+KHpqXMhTHLKtby
++Wh7WAfsVrbIW+P85/mkfhPbPZ2621f9cyStdFGgWU4dHdD00HIGOgAJvUSbC2Au
+oVUoKf2818t1s9aA4ptog04sNi+Ixu+z+3yYNLZj51j4ZX3KuXxLIiQvlvFQ8LQi
+RHGQk3u2W3iNtDKKUQjMPaB2FlVtC7FmtHBCpRmos6ld240DDyucqMdIDTMaqV0+
+sL4X+LIeBM/hP/IquRTuQBHBmgjkN4845ihTUJOanyKx605ANq/roHzXrbIxhR5p
+pcJLCBMLMWgdOCJMZRavSq04iXeNfP6Mk/joVpHS62Ljdfc94BBLfsOKOErA20Nq
+lfvbZqy2tI5IIDoq05S8FU0DYNqq/hyrv9Udo8IAo+WkBOABm0x/WA==
+-----END RSA PRIVATE KEY-----
+ 
\ No newline at end of file
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/server.inc?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/ftp/tests/server.inc
diff -u /dev/null php-src/ext/ftp/tests/server.inc:1.2
--- /dev/null   Sun Nov 19 18:38:11 2006
+++ php-src/ext/ftp/tests/server.inc    Sun Nov 19 18:38:11 2006
@@ -0,0 +1,160 @@
+<?php
+
+$socket = null;
+$errno = 0;
+$context = stream_context_create(array('ssl' => array('local_cert' => 
dirname(__FILE__).'/cert.pem', 'passphrase' => 'pass')));
+
+for ($i=0; $i<10 && !$socket; ++$i) {
+       $port = rand(50000, 65535);
+       $socket = stream_socket_server("tcp://127.0.0.1:$port", $errno, 
$errstr, STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context);
+}
+
+if (!$socket) {
+       die("could not start/bind the ftp server\n");
+}
+
+$pid = pcntl_fork();
+
+if ($pid) {
+
+function dump_and_exit($buf)
+{
+       var_dump($buf);
+       fclose($GLOBALS['s']);
+       exit;
+}
+
+function anonymous()
+{
+       return $GLOBALS['user'] === 'anonymous';
+}
+
+/* quick&dirty realpath() like function */
+function change_dir($dir)
+{
+       global $cwd;
+
+       if ($dir[0] == '/') {
+               $cwd = $dir;
+               return;
+       }
+
+       $cwd = "$cwd/$dir";
+
+       do {
+               $old = $cwd;
+               $cwd = preg_replace('@/?[^/]+/\.\.@', '', $cwd);
+       } while ($old != $cwd);
+
+       $cwd = strtr($cwd, array('//' => '/'));
+       if (!$cwd) $cwd = '/';
+}
+
+
+$s = stream_socket_accept($socket);
+if (!$s) die("Error accepting a new connection\n");
+
+fputs($s, "220----- PHP FTP server 0.3 -----\r\n220 Service ready\r\n");
+$buf = fread($s, 2048);
+
+if (!empty($ssl)) {
+       if ($buf !== "AUTH TLS\r\n") {
+               fputs($s, "500 Syntax error, command unrecognized.\r\n");
+               dump_and_exit($buf);
+       }
+
+       fputs($s, "234 auth type accepted\r\n");
+
+       if (!stream_socket_enable_crypto($s, true, 
STREAM_CRYPTO_METHOD_SSLv23_SERVER)) {
+               die("SSLv23 handshake failed.\n");
+       }
+
+       if (!preg_match('/^PBSZ \d+\r\n$/', $buf = fread($s, 2048))) {
+               fputs($s, "501 bogus data\r\n");
+               dump_and_exit($buf);
+       }
+
+       fputs($s, "200 OK\r\n");
+       $buf = fread($s, 2048);
+
+       if ($buf !== "PROT P\r\n") {
+               fputs($s, "504 Wrong protection.\r\n");
+               dump_and_exit($buf);
+       }
+
+       fputs($s, "200 OK\r\n");
+
+       $buf = fread($s, 2048);
+}
+
+if (!preg_match('/^USER (\w+)\r\n$/', $buf, $m)) {
+       fputs($s, "500 Syntax error, command unrecognized.\r\n");
+       dump_and_exit($buf);
+}
+$user = $m[1];
+if ($user !== 'user' && $user !== 'anonymous') {
+       fputs($s, "530 Not logged in.\r\n");
+       fclose($s);
+       exit;
+}
+
+if (anonymous()) {
+       fputs($s, "230 Anonymous user logged in\r\n");
+
+} else {
+       fputs($s, "331 User name ok, need password\r\n");
+
+       if (!preg_match('/^PASS (\w+)\r\n$/', $buf = fread($s, 100), $m)) {
+               fputs($s, "500 Syntax error, command unrecognized.\r\n");
+               dump_and_exit($buf);
+       }
+
+       $pass = $m[1];
+       if ($pass === 'pass') {
+               fputs($s, "230 User logged in\r\n");
+       } else {
+               fputs($s, "530 Not logged in.\r\n");
+               fclose($s);
+               exit;
+       }
+}
+
+$cwd = '/';
+
+while($buf = fread($s, 4098)) {
+
+       if ($buf === "HELP\r\n") {
+               fputs($s, "214-There is help available for the following 
commands:\r\n");
+               fputs($s, " USER\r\n");
+               fputs($s, " HELP\r\n");
+               fputs($s, "214 end of list\r\n");
+
+       } elseif ($buf === "HELP HELP\r\n") {
+               fputs($s, "214 Syntax: HELP [<SP> <string>] <CRLF>\r\n");
+
+       } elseif ($buf === "PWD\r\n") {
+               fputs($s, "257 \"$cwd\" is current directory.\r\n");
+
+       } elseif ($buf === "CDUP\r\n") {
+               change_dir('..');
+               fputs($s, "250 CDUP command successful.\r\n");
+
+       } elseif ($buf === "QUIT\r\n") {
+               break;
+
+       } elseif (preg_match("~^CWD ([A-Za-z./]+)\r\n$~", $buf, $m)) {
+               change_dir($m[1]);
+               fputs($s, "250 CWD command successful.\r\n");
+
+       } else {
+               fputs($s, "500 Syntax error, command unrecognized.\r\n");
+               dump_and_exit($buf);
+       }
+}
+
+fclose($s);
+exit;
+}
+
+fclose($socket);
+?>
http://cvs.php.net/viewvc.cgi/php-src/ext/ftp/tests/skipif.inc?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/ftp/tests/skipif.inc
diff -u /dev/null php-src/ext/ftp/tests/skipif.inc:1.2
--- /dev/null   Sun Nov 19 18:38:11 2006
+++ php-src/ext/ftp/tests/skipif.inc    Sun Nov 19 18:38:11 2006
@@ -0,0 +1,5 @@
+<?php
+if (!extension_loaded('ftp')) die('skip ftp extension not loaded');
+if (!function_exists('pcntl_fork')) die('skip fork not available');
+if (!empty($ssl) && !extension_loaded('openssl')) die('skip openssl extension 
not loaded');
+?>

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

Reply via email to