summaryrefslogtreecommitdiffstats
path: root/perl-install/network/drakfirewall.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/network/drakfirewall.pm')
-rw-r--r--perl-install/network/drakfirewall.pm71
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);
}