Modified the FTP server to use the new 'sockfilt' program to do all the socket

level stuff. The FTP server communicates with sockfilt using perl's open2().
This enables easier IPv6 support and hopefully FTP-SSL support in the future.
Added four test cases for FTP-ipv6.
This commit is contained in:
Daniel Stenberg 2005-04-18 06:57:44 +00:00
parent 6063dff8d0
commit 14424f7058
14 changed files with 1315 additions and 151 deletions

View file

@ -34,7 +34,7 @@ EXTRA_DIST = test1 test108 test117 test127 test20 test27 test34 test46 \
test199 test225 test226 test227 test230 test231 test232 test228 \
test229 test233 test234 test235 test236 test520 test237 test238 \
test239 test243 test245 test246 test247 test248 test249 test250 \
test251
test251 test252 test253 test254 test255
# The following tests have been removed from the dist since they no longer
# work. We need to fix the test suite's FTPS server first, then bring them

View file

@ -26,8 +26,8 @@ ftp://%HOSTIP:%FTPPORT/a/path/103 -P -
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^LPRT.*[\n]//
s/^EPRT.*[\n]//
s/^LPRT.*/LPRT/
s/^EPRT.*/EPRT/
s/^(PORT 127,0,0,1,)([0-9,]+)/$1/
</strippart>
<protocol>
@ -36,6 +36,8 @@ PASS curl_by_daniel@haxx.se
PWD
CWD a
CWD path
EPRT
LPRT
PORT 127,0,0,1,
TYPE I
SIZE 103

57
tests/data/test252 Normal file
View file

@ -0,0 +1,57 @@
<info>
<keywords>
FTP-ipv6
EPSV
</keywords>
</info>
#
# Server-side
<reply>
<data>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</data>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
ftp-ipv6
</server>
<name>
FTP IPv6 dir list PASV
</name>
<command>
-g "ftp://%HOST6IP:%FTP6PORT/"
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
filter off really nothing
</strip>
<protocol>
USER anonymous
PASS curl_by_daniel@haxx.se
PWD
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>

57
tests/data/test253 Normal file
View file

@ -0,0 +1,57 @@
<info>
<keywords>
FTP-ipv6
EPRT
</keywords>
</info>
#
# Server-side
<reply>
<data>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</data>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
ftp-ipv6
</server>
<name>
FTP IPv6 dir list with EPRT
</name>
<command>
-g "ftp://%HOST6IP:%FTP6PORT/" -P -
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(EPRT \|2\|::1\|)(.*)/$1/
</strippart>
<protocol>
USER anonymous
PASS curl_by_daniel@haxx.se
PWD
EPRT |2|::1|
TYPE A
LIST
QUIT
</protocol>
</verify>

58
tests/data/test254 Normal file
View file

@ -0,0 +1,58 @@
<info>
<keywords>
FTP-ipv6
EPSV
--disable-epsv
</keywords>
</info>
#
# Server-side
<reply>
<data>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</data>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
ftp-ipv6
</server>
<name>
FTP IPv6 dir list PASV and --disable-epsv
</name>
<command>
-g "ftp://%HOST6IP:%FTP6PORT/" --disable-epsv
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strip>
filter off really nothing
</strip>
<protocol>
USER anonymous
PASS curl_by_daniel@haxx.se
PWD
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>

58
tests/data/test255 Normal file
View file

@ -0,0 +1,58 @@
<info>
<keywords>
FTP-ipv6
EPRT
--disable-eprt
</keywords>
</info>
#
# Server-side
<reply>
<data>
total 20
drwxr-xr-x 8 98 98 512 Oct 22 13:06 .
drwxr-xr-x 8 98 98 512 Oct 22 13:06 ..
drwxr-xr-x 2 98 98 512 May 2 1996 .NeXT
-r--r--r-- 1 0 1 35 Jul 16 1996 README
lrwxrwxrwx 1 0 1 7 Dec 9 1999 bin -> usr/bin
dr-xr-xr-x 2 0 1 512 Oct 1 1997 dev
drwxrwxrwx 2 98 98 512 May 29 16:04 download.html
dr-xr-xr-x 2 0 1 512 Nov 30 1995 etc
drwxrwxrwx 2 98 1 512 Oct 30 14:33 pub
dr-xr-xr-x 5 0 1 512 Oct 1 1997 usr
</data>
</reply>
#
# Client-side
<client>
<features>
ipv6
</features>
<server>
ftp-ipv6
</server>
<name>
FTP IPv6 dir list with EPRT and --disable-eprt
</name>
<command>
-g "ftp://%HOST6IP:%FTP6PORT/" -P - --disable-eprt
</command>
</client>
#
# Verify data after the test has been "shot"
<verify>
<strippart>
s/^(EPRT \|2\|::1\|)(.*)/$1/
</strippart>
<protocol>
USER anonymous
PASS curl_by_daniel@haxx.se
PWD
EPRT |2|::1|
TYPE A
LIST
QUIT
</protocol>
</verify>