Skip to content

Commit

Permalink
Modified the FTP server to use the new 'sockfilt' program to do all t…
Browse files Browse the repository at this point in the history
…he 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.
  • Loading branch information
bagder committed Apr 18, 2005
1 parent 6063dff commit 14424f7
Show file tree
Hide file tree
Showing 14 changed files with 1,315 additions and 151 deletions.
3 changes: 2 additions & 1 deletion tests/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ PDFPAGES = testcurl.pdf runtests.pdf

EXTRA_DIST = ftpserver.pl httpserver.pl httpsserver.pl runtests.pl \
ftpsserver.pl getpart.pm FILEFORMAT README stunnel.pem memanalyze.pl \
testcurl.pl valgrind.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES)
testcurl.pl valgrind.pm testcurl.1 runtests.1 $(HTMLPAGES) $(PDFPAGES) \
ftp.pm

SUBDIRS = data server libtest

Expand Down
2 changes: 1 addition & 1 deletion tests/data/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions tests/data/test103
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -36,6 +36,8 @@ PASS [email protected]
PWD
CWD a
CWD path
EPRT
LPRT
PORT 127,0,0,1,
TYPE I
SIZE 103
Expand Down
57 changes: 57 additions & 0 deletions tests/data/test252
Original file line number Diff line number Diff line change
@@ -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 [email protected]
PWD
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
57 changes: 57 additions & 0 deletions tests/data/test253
Original file line number Diff line number Diff line change
@@ -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 [email protected]
PWD
EPRT |2|::1|
TYPE A
LIST
QUIT
</protocol>
</verify>
58 changes: 58 additions & 0 deletions tests/data/test254
Original file line number Diff line number Diff line change
@@ -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 [email protected]
PWD
EPSV
TYPE A
LIST
QUIT
</protocol>
</verify>
58 changes: 58 additions & 0 deletions tests/data/test255
Original file line number Diff line number Diff line change
@@ -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 [email protected]
PWD
EPRT |2|::1|
TYPE A
LIST
QUIT
</protocol>
</verify>
17 changes: 17 additions & 0 deletions tests/ftp.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# make sure no leftovers are still running
sub ftpkillslaves {
for $ext (("", "ipv6")) {
for $id (("", "2")) {
for $base (('filt', 'data')) {
my $f = ".sock$base$id$ext.pid";
my $pid = checkserver($f);
if($pid > 0) {
kill (9, $pid); # die!
}
unlink($f);
}
}
}
}

1;
Loading

0 comments on commit 14424f7

Please sign in to comment.