diff options
author | Rafael Garcia-Suarez <rgarciasuarez@mandriva.org> | 2005-04-26 15:45:54 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@mandriva.org> | 2005-04-26 15:45:54 +0000 |
commit | de7acdb4096997634ed3e459bc1e909f59b9c0ce (patch) | |
tree | 1ef5233e0626618ab6d48fc7e8af1bd63e0fe4e6 /urpm/download.pm | |
parent | aa5b090a1c105963889a73afe8fc303b5b544f01 (diff) | |
download | urpmi-de7acdb4096997634ed3e459bc1e909f59b9c0ce.tar urpmi-de7acdb4096997634ed3e459bc1e909f59b9c0ce.tar.gz urpmi-de7acdb4096997634ed3e459bc1e909f59b9c0ce.tar.bz2 urpmi-de7acdb4096997634ed3e459bc1e909f59b9c0ce.tar.xz urpmi-de7acdb4096997634ed3e459bc1e909f59b9c0ce.zip |
Allow to ask user for proxy credentials
Diffstat (limited to 'urpm/download.pm')
-rw-r--r-- | urpm/download.pm | 29 |
1 files changed, 25 insertions, 4 deletions
diff --git a/urpm/download.pm b/urpm/download.pm index 61d533e5..aa037caf 100644 --- a/urpm/download.pm +++ b/urpm/download.pm @@ -42,6 +42,10 @@ sub load_proxy_config () { $proxy_config->{$1 || ''}{pwd} = $3 if defined $3; next; } + if (/^(?:(.*):\s*)?proxy_user_ask/) { + $proxy_config->{$1 || ''}{ask} = 1; + next; + } } close $f; } @@ -50,7 +54,6 @@ sub load_proxy_config () { sub dump_proxy_config () { return 0 unless defined $proxy_config; #- hasn't been read yet open my $f, '>', $PROXY_CFG or return 0; - print $f "# generated " . (scalar localtime) . "\n"; foreach ('', sort grep { !/^(|cmd_line)$/ } keys %$proxy_config) { my $m = $_ eq '' ? '' : "$_:"; my $p = $proxy_config->{$_}; @@ -58,6 +61,10 @@ sub dump_proxy_config () { defined $p->{$_} && $p->{$_} ne '' and print $f "$m$_=$p->{$_}\n"; } + if ($p->{ask}) { + print $f "${m}proxy_user_ask\n"; + next; + } defined $p->{user} && $p->{user} ne '' and print $f "${m}proxy_user=$p->{user}:$p->{pwd}\n"; } @@ -77,7 +84,7 @@ sub remove_proxy_media { sub get_proxy (;$) { my ($o_media) = @_; $o_media ||= ''; load_proxy_config(); - return $proxy_config->{cmd_line} + my $p = $proxy_config->{cmd_line} || $proxy_config->{$o_media} || $proxy_config->{''} || { @@ -86,10 +93,24 @@ sub get_proxy (;$) { user => undef, pwd => undef, }; + if ($p->{ask} && ($p->{http_proxy} || $p->{ftp_proxy}) && !$p->{user}) { + our $PROMPT_PROXY; + unless (defined $PROMPT_PROXY) { + require urpm::prompt; + $PROMPT_PROXY = new urpm::prompt( + N("Please enter your credentials for acceding proxy\n"), + [ N("User name:"), N("Password:") ], + undef, + [ 0, 1 ], + ); + } + ($p->{user}, $p->{pwd}) = $PROMPT_PROXY->prompt; + } + $p; } #- copies the settings for proxies from the command line to media named $media -#- and writes the proxy.cfg file (used for new media) +#- and writes the proxy.cfg file (used when adding new media) sub copy_cmd_line_proxy { my ($media) = @_; return unless $media; @@ -118,7 +139,7 @@ sub set_proxy_config { } #- set up the environment for proxy usage for the appropriate tool. -#- returns an array of command-line arguments. +#- returns an array of command-line arguments for wget or curl. sub set_proxy { my ($proxy) = @_; my @res; |