aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/ManaTools/Module/Firewall.pm162
1 files changed, 33 insertions, 129 deletions
diff --git a/lib/ManaTools/Module/Firewall.pm b/lib/ManaTools/Module/Firewall.pm
index cc6a1b8..046841c 100644
--- a/lib/ManaTools/Module/Firewall.pm
+++ b/lib/ManaTools/Module/Firewall.pm
@@ -42,6 +42,8 @@ use MDK::Common::File qw(substInFile output_with_perm);
use List::Util qw(any);
use List::MoreUtils qw(uniq);
+use XML::Simple;
+
extends qw( ManaTools::Module );
has '+icon' => (
@@ -131,6 +133,12 @@ has 'aboutDialog' => (
builder => '_setupAboutDialog',
);
+has 'conf' => (
+ is => 'ro',
+ isa => 'Str',
+ default => sub { return $::prefix."/etc/manatools/manawall/spec.conf" },
+);
+
sub _setupAboutDialog {
my $self = shift();
return {
@@ -159,135 +167,7 @@ sub _SharedUGUIInitialize {
sub _initAllServers {
my $self = shift();
- my @all_servers = (
- {
- id => 'www',
- name => $self->loc->N("Web Server"),
- pkg => 'apache apache-mod_perl boa lighttpd thttpd',
- ports => '80/tcp 443/tcp',
- },
- {
- id => 'dns',
- name => $self->loc->N("Domain Name Server"),
- pkg => 'bind dnsmasq mydsn',
- ports => '53/tcp 53/udp',
- },
- {
- id => 'ssh',
- name => $self->loc->N("SSH server"),
- pkg => 'openssh-server',
- ports => '22/tcp',
- },
- {
- id => 'ftp',
- name => $self->loc->N("FTP server"),
- pkg => 'ftp-server-krb5 wu-ftpd proftpd pure-ftpd',
- ports => '20/tcp 21/tcp',
- },
- {
- id => 'dhcp',
- name => $self->loc->N("DHCP Server"),
- pkg => 'dhcp-server udhcpd',
- ports => '67/udp 68/udp',
- hide => 1,
- },
- {
- id => 'mail',
- name => $self->loc->N("Mail Server"),
- pkg => 'sendmail postfix qmail exim',
- ports => '25/tcp 465/tcp 587/tcp',
- },
- {
- id => 'popimap',
- name => $self->loc->N("POP and IMAP Server"),
- pkg => 'imap courier-imap-pop',
- ports => '109/tcp 110/tcp 143/tcp 993/tcp 995/tcp',
- },
- {
- id => 'telnet',
- name => $self->loc->N("Telnet server"),
- pkg => 'telnet-server-krb5',
- ports => '23/tcp',
- hide => 1,
- },
- {
- id => 'nfs',
- name => $self->loc->N("NFS Server"),
- pkg => 'nfs-utils nfs-utils-clients',
- ports => '111/tcp 111/udp 2049/tcp 2049/udp ' . network::nfs::list_nfs_ports(),
- hide => 1,
- prepare => sub { network::nfs::write_nfs_ports(network::nfs::read_nfs_ports()) },
- restart => 'nfs-common nfs-server',
- },
- {
- id => 'smbserver',
- name => $self->loc->N("Windows Files Sharing (CIFS Server)"),
- pkg => 'samba-server swat',
- ports => '137/udp 138/udp 139/tcp 445/tcp 901/tcp 389/tcp',
- hide => 0,
- },
- {
- id => 'bacula',
- name => $self->loc->N("Bacula backup"),
- pkg => 'bacula-fd bacula-sd bacula-dir-common',
- ports => '9101:9103/tcp',
- hide => 1,
- },
- {
- id => 'syslog',
- name => $self->loc->N("Syslog network logging"),
- pkg => 'rsyslog syslog-ng',
- ports => '514/udp',
- hide => 1,
- },
- {
- id => 'cups',
- name => $self->loc->N("CUPS server"),
- pkg => 'cups',
- ports => '631/tcp 631/udp',
- hide => 1,
- },
- {
- id => 'mysql',
- name => $self->loc->N("MySQL server"),
- pkg => 'mysql',
- ports => '3306/tcp 3306/udp',
- hide => 1,
- },
- {
- id => 'postgresql',
- name => $self->loc->N("PostgreSQL server"),
- pkg => 'postgresql8.2 postgresql8.3',
- ports => '5432/tcp 5432/udp',
- hide => 1,
- },
- {
- id => 'echo',
- name => $self->loc->N("Echo request (ping)"),
- ports => '8/icmp',
- force_default_selection => 0,
- },
- {
- id => 'zeroconf',
- name => $self->loc->N("Network services autodiscovery (zeroconf and slp)"),
- ports => '5353/udp 427/udp',
- pkg => 'avahi cups openslp',
- },
- {
- id => 'bittorrent',
- name => $self->loc->N("BitTorrent"),
- ports => '6881:6999/tcp 6881:6999/udp',
- hide => 1,
- pkg => 'bittorrent deluge ktorrent transmission vuze rtorrent ctorrent',
- },
- {
- id => 'wmds',
- name => $self->loc->N("Windows Mobile device synchronization"),
- pkg => 'synce-hal',
- ports => '990/tcp 999/tcp 5678/tcp 5679/udp 26675/tcp',
- hide => 1,
- },
- );
+ my @all_servers = @{$self->get_servers()};
return \@all_servers;
}
@@ -318,6 +198,30 @@ sub _initUnlisted {
#=============================================================
+sub get_servers {
+ my $self = shift();
+ my $fh = undef;
+ my @all_servers = ();
+ my $xml = XML::Simple->new();
+ my $data = $xml->XMLin($self->conf());
+ foreach my $server (keys %{$data->{server}})
+ {
+ push(@all_servers, {
+ id => $server,
+ name => $data->{server}->{$server}->{description},
+ pkg => $data->{server}->{$server}->{packages},
+ ports => $data->{server}->{$server}->{ports},
+ hide => (defined($data->{server}->{$server}->{hide}) ? 1 : 0),
+ default => (defined($data->{server}->{$server}->{default}) ? 1 : 0),
+ pos => (defined($data->{server}->{$server}->{pos}) ? $data->{server}->{$server}->{pos} : 0),
+ });
+ }
+ my @sorted = sort { ${a}->{pos} <=> ${b}->{pos} } @all_servers;
+ return \@sorted;
+}
+
+#=============================================================
+
sub check_ports_syntax {
my ($ports) = @_;
foreach (split ' ', $ports) {