diff options
Diffstat (limited to 'perl-install/network/drakfirewall.pm')
-rw-r--r-- | perl-install/network/drakfirewall.pm | 71 |
1 files changed, 33 insertions, 38 deletions
diff --git a/perl-install/network/drakfirewall.pm b/perl-install/network/drakfirewall.pm index 428c855c2..8951ecd44 100644 --- a/perl-install/network/drakfirewall.pm +++ b/perl-install/network/drakfirewall.pm @@ -1,7 +1,7 @@ package network::drakfirewall; # $Id$ -use strict; use diagnostics; +use strict; use network::shorewall; use common; @@ -9,49 +9,43 @@ use common; my @all_servers = ( { - name => N_("Web Server"), + name => N("Web Server"), pkg => 'apache apache-mod_perl boa', ports => '80/tcp 443/tcp', }, { - name => N_("Domain Name Server"), + name => N("Domain Name Server"), pkg => 'bind', ports => '53/tcp 53/udp', }, { - name => N_("SSH server"), + name => "SSH", pkg => 'openssh-server', ports => '22/tcp', }, { - name => N_("FTP server"), + name => "FTP", pkg => 'ftp-server-krb5 wu-ftpd proftpd pure-ftpd', ports => '20/tcp 21/tcp', }, { - name => N_("Mail Server"), + name => N("Mail Server"), pkg => 'sendmail postfix qmail', ports => '25/tcp', }, { - name => N_("POP and IMAP Server"), + name => N("POP and IMAP Server"), pkg => 'imap courier-imap-pop', ports => '109/tcp 110/tcp 143/tcp', }, { - name => N_("Telnet server"), + name => "Telnet", pkg => 'telnet-server-krb5', ports => '23/tcp', hide => 1, }, { - name => N_("Samba server"), - pkg => 'samba-server', - ports => '137/tcp 137/udp 138/tcp 138/udp 139/tcp 139/udp ', - hide => 1, - }, - { - name => N_("CUPS server"), + name => "CUPS", pkg => 'cups', ports => '631/tcp 631/udp', hide => 1, @@ -60,9 +54,10 @@ my @all_servers = sub port2server { my ($port) = @_; - find { - any { $port eq $_ } split(' ', $_->{ports}); - } @all_servers; + foreach (@all_servers) { + return $_ if grep { $port eq $_ } split ' ', $_->{ports}; + } + undef; } sub check_ports_syntax { @@ -100,43 +95,41 @@ sub default_from_pkgs { my @pkgs = $in->do_pkgs->are_installed(map { split ' ', $_->{pkg} } @all_servers); [ grep { my $s = $_; - any { member($_, @pkgs) } (split ' ', $s->{pkg}); + grep { member($_, @pkgs) } split ' ', $s->{pkg}; } @all_servers ]; } sub get_ports { - my ($in, $_ports) = @_; - my $shorewall = network::shorewall::read($in, 'silent') or return; + my ($_ports) = @_; + my $shorewall = network::shorewall::read() or return; \$shorewall->{ports}; } sub set_ports { - my ($in, $disabled, $ports) = @_; - my $shorewall = network::shorewall::read($in, 'not_silent') || network::shorewall::default_interfaces($in) or die \N("No network card"); - if (!$disabled || -x "$::prefix/sbin/shorewall") { - $in->do_pkgs->ensure_is_installed('shorewall', '/sbin/shorewall', $::isInstall) or return; - - $shorewall->{disabled} = $disabled; - $shorewall->{ports} = $$ports; - network::shorewall::write($shorewall); - } + my ($disabled, $ports) = @_; + + my $shorewall = network::shorewall::read() || network::shorewall::default_interfaces() or die N("No network card"); + $shorewall->{disabled} = $disabled; + $shorewall->{ports} = $$ports; + + network::shorewall::write($shorewall); } sub get_conf { - my ($in, $disabled, $o_ports) = @_; - + my ($in, $disabled, $ports) = @_; + my $possible_servers = default_from_pkgs($in); $_->{hide} = 0 foreach @$possible_servers; - if ($o_ports) { - $disabled, from_ports($o_ports); - } elsif (my $shorewall = network::shorewall::read($in, 'silent')) { + if ($ports) { + $disabled, from_ports($ports); + } elsif (my $shorewall = network::shorewall::read()) { $shorewall->{disabled}, from_ports(\$shorewall->{ports}); } else { $in->ask_okcancel('', N("drakfirewall configurator This configures a personal firewall for this Mandrake Linux machine. -For a powerful and dedicated firewall solution, please look to the +For a powerful dedicated firewall solution, please look to the specialized MandrakeSecurity Firewall distribution."), 1) or return; $in->ask_okcancel('', N("drakfirewall configurator @@ -172,7 +165,7 @@ where port is between 1 and 65535.", $invalid_port)); } }, [ { text => N("Everything (no firewall)"), val => \$disabled, type => 'bool' }, - (map { { text => translate($_->{name}), val => \$_->{on}, type => 'bool', disabled => sub { $disabled } } } @l), + (map { { text => $_->{name}, val => \$_->{on}, type => 'bool', disabled => sub { $disabled } } } @l), { label => N("Other ports"), val => \$unlisted, advanced => 1, disabled => sub { $disabled } } ]) or return; @@ -184,7 +177,9 @@ sub main { ($disabled, my $servers, my $unlisted) = get_conf($in, $disabled) or return; + $in->do_pkgs->ensure_is_installed('shorewall', '/sbin/shorewall', $::isInstall) or return; + ($disabled, my $ports) = choose($in, $disabled, $servers, $unlisted) or return; - set_ports($in, $disabled, $ports); + set_ports($disabled, $ports); } |