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.pm49
1 files changed, 49 insertions, 0 deletions
diff --git a/perl-install/ftp.pm b/perl-install/ftp.pm
new file mode 100644
index 000000000..e6c27e68c
--- /dev/null
+++ b/perl-install/ftp.pm
@@ -0,0 +1,49 @@
+package ftp;
+
+use Net::FTP;
+
+use install_any;
+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|
+ ://
+ (?: ([^:]*) # login
+ (?: :([^@]*))? # password
+ @)?
+ ([^/]*) # 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";
+}
+
+my $ftp = Net::FTP->new($host, %options) or die;
+$ftp->login($ENV{LOGIN}, $ENV{PASSWORD}) or die;
+$ftp->binary;
+
+my $retr;
+
+1;
+
+
+sub getFile($) {
+ $retr->close if $retr;
+ $retr = $ftp->retr($ENV{PREFIX} . "/" . install_any::relGetFile($_[0]));
+}