summaryrefslogtreecommitdiffstats
path: root/perl-install/ftp.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/ftp.pm')
-rw-r--r--perl-install/ftp.pm54
1 files changed, 29 insertions, 25 deletions
diff --git a/perl-install/ftp.pm b/perl-install/ftp.pm
index e6c27e68c..0879a8b72 100644
--- a/perl-install/ftp.pm
+++ b/perl-install/ftp.pm
@@ -7,14 +7,18 @@ use log;
# non-rentrant!!
-my %options = (Passive => 1);
-$options{Firewall} = $ENV{PROXY} if $ENV{PROXY};
-$options{Port} = $ENV{PROXYPORT} if $ENV{PROXYPORT};
-my @l;
-unless ($ENV{HOST}) {
- # must be in kickstart, using URLPREFIX to find out information
- ($ENV{LOGIN}, $ENV{PASSWORD}, $ENV{HOST}, $ENV{PREFIX}) = @l =
- $ENV{URLPREFIX} =~ m|
+1;
+
+
+sub new {
+ my %options = (Passive => 1);
+ $options{Firewall} = $ENV{PROXY} if $ENV{PROXY};
+ $options{Port} = $ENV{PROXYPORT} if $ENV{PROXYPORT};
+ my @l;
+ unless ($ENV{HOST}) {
+ # must be in kickstart, using URLPREFIX to find out information
+ ($ENV{LOGIN}, $ENV{PASSWORD}, $ENV{HOST}, $ENV{PREFIX}) = @l =
+ $ENV{URLPREFIX} =~ m|
://
(?: ([^:]*) # login
(?: :([^@]*))? # password
@@ -22,28 +26,28 @@ unless ($ENV{HOST}) {
([^/]*) # host
/?(.*) # prefix
|x;
-}
-unless ($ENV{LOGIN}) {
- $ENV{LOGIN} = 'anonymous';
- $ENV{PASSWORD} = 'mdkinst@test';
-}
-
-my $host = $ENV{HOST};
-if ($host !~ /^[.\d]+$/) {
- $host = join ".", unpack "C4", (gethostbyname $host)[4];
- print ">>>>> $host <<<<<<\n";
+ }
+ unless ($ENV{LOGIN}) {
+ $ENV{LOGIN} = 'anonymous';
+ $ENV{PASSWORD} = 'mdkinst@test';
+ }
+
+ my $host = $ENV{HOST};
+ if ($host !~ /^[.\d]+$/) {
+ $host = join ".", unpack "C4", (gethostbyname $host)[4];
+ }
+
+ my $ftp = Net::FTP->new($host, %options) or die;
+ $ftp->login($ENV{LOGIN}, $ENV{PASSWORD}) or die;
+ $ftp->binary;
+
+ $ftp;
}
-my $ftp = Net::FTP->new($host, %options) or die;
-$ftp->login($ENV{LOGIN}, $ENV{PASSWORD}) or die;
-$ftp->binary;
my $retr;
-
-1;
-
-
sub getFile($) {
+ $ftp ||= new();
$retr->close if $retr;
$retr = $ftp->retr($ENV{PREFIX} . "/" . install_any::relGetFile($_[0]));
}