diff options
-rw-r--r-- | perl-install/install/NEWS | 3 | ||||
-rw-r--r-- | perl-install/install/http.pm | 19 | ||||
-rw-r--r-- | perl-install/install/media.pm | 2 |
3 files changed, 22 insertions, 2 deletions
diff --git a/perl-install/install/NEWS b/perl-install/install/NEWS index 8a428c2e0..afa95f705 100644 --- a/perl-install/install/NEWS +++ b/perl-install/install/NEWS @@ -1,3 +1,6 @@ +- auto_install: + o allow "automatic=met:http,ser:server,dir:/pub/dir + kickstart=/pub/auto_inst.cfg" to get http://server/pub/auto_inst.cfg (#31474) - add /etc/mke2fs.conf in order to format ext3fs with 4k blocks (#27377) - diskdrake o fix 1.9TB displayed as 1TB diff --git a/perl-install/install/http.pm b/perl-install/install/http.pm index 75d026d0d..bf59c273b 100644 --- a/perl-install/install/http.pm +++ b/perl-install/install/http.pm @@ -14,6 +14,23 @@ sub getFile { my ($_size, $fh) = get_file_and_size($url) or return; $fh; } + +sub parse_url { + my ($url) = @_; + $url =~ m,^(?:http|ftp)://([^/:]+)(?::(\d+))?(/\S*)?$,; +} + +sub get_file_and_size_ { + my ($f, $url) = @_; + + if ($f =~ m!^/!) { + my ($host, $port, $_path) = parse_url($url); + get_file_and_size("http://$host" . ($port ? ":$port" : '') . $f); + } else { + get_file_and_size("$url/$f"); + } +} + sub get_file_and_size { local ($^W) = 0; @@ -21,7 +38,7 @@ sub get_file_and_size { $sock->close if $sock; # can be used for ftp urls (with http proxy) - my ($host, $port, $path) = $url =~ m,^(?:http|ftp)://([^/:]+)(?::(\d+))?(/\S*)?$,; + my ($host, $port, $path) = parse_url($url); defined $host or return undef; my $use_http_proxy = $ENV{PROXY} && $ENV{PROXYPORT}; diff --git a/perl-install/install/media.pm b/perl-install/install/media.pm index 8944cff34..4468c7d53 100644 --- a/perl-install/install/media.pm +++ b/perl-install/install/media.pm @@ -368,7 +368,7 @@ sub get_file_and_size { install::ftp::get_file_and_size($f, $phys_m->{url}); } elsif ($phys_m->{method} eq "http") { require install::http; - install::http::get_file_and_size("$phys_m->{url}/$f"); + install::http::get_file_and_size_($f, $phys_m->{url}); } elsif ($f =~ m!^/!) { open_file_and_size($f); } elsif ($postinstall_rpms && -e "$postinstall_rpms/$f") { |