Imported Upstream version 0.1
This commit is contained in:
66
t/lib/ProFTPD/TestSuite/ProxiedFTP.pm
Normal file
66
t/lib/ProFTPD/TestSuite/ProxiedFTP.pm
Normal file
@@ -0,0 +1,66 @@
|
||||
package ProFTPD::TestSuite::ProxiedFTP;
|
||||
|
||||
use strict;
|
||||
use vars qw(@ISA);
|
||||
|
||||
use Carp;
|
||||
use Net::FTP;
|
||||
|
||||
@ISA = qw(Net::FTP);
|
||||
|
||||
my $proxy_info = undef;
|
||||
|
||||
sub new {
|
||||
my $class = shift;
|
||||
my ($addr, $port, $proxy, $timeout) = @_;
|
||||
$timeout = 5 unless defined($timeout);
|
||||
my $debug = undef;
|
||||
|
||||
$proxy_info = $proxy;
|
||||
|
||||
if ($ENV{TEST_VERBOSE}) {
|
||||
$debug = 10;
|
||||
}
|
||||
|
||||
my $self = $class->SUPER::new($addr,
|
||||
Port => $port,
|
||||
Timeout => $timeout,
|
||||
Debug => $debug,
|
||||
);
|
||||
|
||||
unless ($self) {
|
||||
croak($@);
|
||||
}
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
# Override response() from Net::Cmd to trigger sending the PROXY command
|
||||
sub response {
|
||||
my $self = shift;
|
||||
|
||||
if (defined($proxy_info)) {
|
||||
if (ref($proxy_info)) {
|
||||
my ($proto, $src_addr, $dst_addr, $src_port, $dst_port) = @$proxy_info;
|
||||
$self->command("PROXY", $proto, $src_addr, $dst_addr, $src_port, $dst_port);
|
||||
|
||||
} else {
|
||||
$self->rawdatasend($proxy_info);
|
||||
}
|
||||
|
||||
$proxy_info = undef;
|
||||
}
|
||||
|
||||
$self->SUPER::response();
|
||||
}
|
||||
|
||||
sub login {
|
||||
my $self = shift;
|
||||
|
||||
unless ($self->SUPER::login(@_)) {
|
||||
croak("Failed to login: " . $self->code . " " . $self->message);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
1;
|
||||
Reference in New Issue
Block a user