summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/proxy.pm132
1 files changed, 63 insertions, 69 deletions
diff --git a/perl-install/proxy.pm b/perl-install/proxy.pm
index 5f4252ae7..163d67f26 100644
--- a/perl-install/proxy.pm
+++ b/perl-install/proxy.pm
@@ -7,100 +7,94 @@ use common qw(:common :system :file);
use log;
use c;
-my $config_file = "/usr/lib/wgetrc";
sub main {
my ($prefix, $in, $install) = @_;
my $proxy_cfg = {};
+ my $config_file; = "$prefix/usr/lib/wgetrc";
# grab current config
- open F, $config_file;
- while (<F>)
- {
- if (/http_proxy = (http:.*):(.*)/)
- {
- $proxy_cfg->{http_url} = $1;
- $proxy_cfg->{http_port} = $2;
- }
- if (/ftp_proxy = (ftp:.*):(.*)/)
- {
- $proxy_cfg->{ftp_url} = $1;
- $proxy_cfg->{ftp_port} = $2;
- }
- /http_user = (.*)/ and $proxy_cfg->{login} = $1;
- /http_passwd = (.*)/ and $proxy_cfg->{passwd} = $1;
- /http_passwd = (.*)/ and $proxy_cfg->{passwd2} = $1;
+ foreach (cat_($config_file)) {
+ ($proxy_cfg->{http_url}, $proxy_cfg->{http_port}) = /http_proxy = (http:.*):(.*)/;
+ ($proxy_cfg->{ftp_url}, $proxy_cfg->{ftp_port}) = /ftp_proxy = (ftp:.*):(.*)/;
+ ($proxy_cfg->{login}) = /http_user = (.*)/;
+ ($proxy_cfg->{passwd}) = /http_passwd = (.*)/;
+ ($proxy_cfg->{passwd2}) = /http_passwd = (.*)/;
}
begin:
$::isWizard = 1;
$::Wizard_no_previous = 1;
$in->ask_okcancel(_("Proxy configuration"),
_("Welcome to the proxy configuration utility.\n\nHere, you'll be able to set up your http and ftp proxies\nwith or without login and password\n"
- ), 1) or quit_global($in, 0);
-
-
+ ), 1);
+
# http proxy
- step_http_proxy:
+ step_http_proxy:
undef $::Wizard_no_previous;
$in->ask_from_entries_refH(_("Proxy configuration"),
_("Please fill in the http proxy informations"),
- [
- { label => _("URL"), val => \$proxy_cfg->{http_url} },
- { label => _("port"), val => \$proxy_cfg->{http_port} }
- ]
- ) or goto begin;
- if ($proxy_cfg->{http_url} && $proxy_cfg->{http_url} !~ /^http:/)
- {
- $in->ask_warn('', _("Url should begin with 'http:'"));
- goto step_http_proxy;
- }
- if ($proxy_cfg->{http_port} && $proxy_cfg->{http_port} !~ /^\d+$/)
- {
- $in->ask_warn('', _("The port part should be numeric"));
- goto step_http_proxy;
- }
+ [ { label => _("URL"), val => \$proxy_cfg->{http_url} },
+ { label => _("port"), val => \$proxy_cfg->{http_port} }
+ ],
+ complete => sub {
+ if($proxy_cfg->{http_url} && $proxy_cfg->{http_url} !~ /^http:/) {
+ $in->ask_warn('', _("Url should begin with 'http:'"));
+ return (1,0);
+ }
+ if ($proxy_cfg->{http_port} && $proxy_cfg->{http_port} !~ /^\d+$/) {
+ $in->ask_warn('', _("The port part should be numeric"));
+ return (1,1);
+ }
+ 0;
+ }
+ ) or goto begin;
+
# ftp proxy
step_ftp_proxy:
$in->ask_from_entries_refH(_("Proxy configuration"),
_("Please fill in the ftp proxy informations"),
- [
- { label => _("URL"), val => \$proxy_cfg->{ftp_url} },
- { label => _("port"), val => \$proxy_cfg->{ftp_port} }
- ]
- ) or goto step_http_proxy;
- if ($proxy_cfg->{ftp_url} && $proxy_cfg->{ftp_url} !~ /^ftp:/)
- {
- $in->ask_warn('', _("Url should begin with 'ftp:'"));
- goto step_ftp_proxy;
- }
- if ($proxy_cfg->{ftp_port} && $proxy_cfg->{ftp_port} !~ /^\d+$/)
- {
- $in->ask_warn('', _("The port part should be numeric"));
- goto step_ftp_proxy;
- }
+ [ { label => _("URL"), val => \$proxy_cfg->{ftp_url} },
+ { label => _("port"), val => \$proxy_cfg->{ftp_port} }
+ ],
+ complete => sub {
+ if ($proxy_cfg->{ftp_url} && $proxy_cfg->{ftp_url} !~ /^ftp:/) {
+ $in->ask_warn('', _("Url should begin with 'ftp:'"));
+ return (1,0);
+ }
+ if ($proxy_cfg->{ftp_port} && $proxy_cfg->{ftp_port} !~ /^\d+$/) {
+ $in->ask_warn('', _("The port part should be numeric"));
+ return (1,1);
+ }
+ 0;
+ }
+ ) or goto step_http_proxy;
+
# proxy login/passwd
step_login:
$in->ask_from_entries_refH(_("Proxy configuration"),
_("Please enter proxy login and password, if any.\nLeave it blank if you don't want login/passwd"),
- [
- { label => _("login"), val => \$proxy_cfg->{login} },
- { label => _("password"), val => \$proxy_cfg->{passwd}, hidden => 1 },
- { label => _("re-type password"), val => \$proxy_cfg->{passwd2}, hidden => 1 }
- ]
- ) or goto step_ftp_proxy;
- if ($proxy_cfg->{passwd} ne $proxy_cfg->{passwd2})
- {
- $in->ask_warn('', _("The passwords don't match. Try again!"));
- goto step_login;
- }
+ [ { label => _("login"), val => \$proxy_cfg->{login} },
+ { label => _("password"), val => \$proxy_cfg->{passwd}, hidden => 1 },
+ { label => _("re-type password"), val => \$proxy_cfg->{passwd2}, hidden => 1 }
+ ],
+ complete => sub {
+ if ($proxy_cfg->{passwd} ne $proxy_cfg->{passwd2}) {
+ $in->ask_warn('', _("The passwords don't match. Try again!"));
+ return(1,1);
+ }
+ 0;
+ }
+ ) or goto step_ftp_proxy;
# save config
- substInFile { s/^http_proxy.*\n//; $_ .= "http_proxy = $proxy_cfg->{http_url}:$proxy_cfg->{http_port}\n" if eof } $config_file;
- substInFile { s/^ftp_proxy.*\n//; $_ .= "ftp_proxy = $proxy_cfg->{ftp_url}:$proxy_cfg->{ftp_port}\n" if eof } $config_file;
- if ($proxy_cfg->{login})
- {
- substInFile { s/^http_user.*\n//; $_ .= "http_user = $proxy_cfg->{login}\n" if eof } $config_file;
- substInFile { s/^http_passwd.*\n//; $_ .= "http_passwd = $proxy_cfg->{passwd}\n" if eof } $config_file;
- }
+ substInFile {
+ s/^(http|ftp)_proxy.*\n//;
+ eof and $_ .= "http_proxy = $proxy_cfg->{http_url}:$proxy_cfg->{http_port}
+ftp_proxy = $proxy_cfg->{ftp_url}:$proxy_cfg->{ftp_port}\n";
+ } $config_file;
+ $proxy_cfg->{login} and substInFile {
+ s/^http_(user|passwd).*\n//;
+ eof and $_ .= "http_user = $proxy_cfg->{login}
+http_passwd = $proxy_cfg->{passwd}\n" } $config_file;
log::l("[drakproxy] Installation complete, exiting\n");
}