--- loncom/configuration/Firewall.pm 2010/12/30 18:40:29 1.7 +++ loncom/configuration/Firewall.pm 2011/02/25 19:41:59 1.8 @@ -1,7 +1,7 @@ # The LearningOnline Network with CAPA # Firewall configuration to allow internal LON-CAPA communication between servers # -# $Id: Firewall.pm,v 1.7 2010/12/30 18:40:29 raeburn Exp $ +# $Id: Firewall.pm,v 1.8 2011/02/25 19:41:59 raeburn Exp $ # # The LearningOnline Network with CAPA # @@ -371,20 +371,26 @@ sub get_fw_chains { my ($iptables) = @_; my @fw_chains; my $suse_config = "/etc/sysconfig/SuSEfirewall2"; + my $ubuntu_config = "/etc/ufw/ufw.conf"; if (-e $suse_config) { push(@fw_chains,'input_ext'); } else { - if (!-e '/etc/sysconfig/iptables') { - if (!-e '/var/lib/iptables') { - print("Unable to find iptables file containing static definitions\n"); + my @posschains; + if (-e $ubuntu_config) { + @posschains = ('ufw-user-input','INPUT'); + } else { + @posschains = ('RH-Firewall-1-INPUT','INPUT'); + if (!-e '/etc/sysconfig/iptables') { + if (!-e '/var/lib/iptables') { + print("Unable to find iptables file containing static definitions\n"); + } + push(@fw_chains,'RH-Firewall-1-INPUT'); } - push(@fw_chains,'RH-Firewall-1-INPUT'); } if ($iptables eq '') { $iptables = &get_pathto_iptables(); } my %counts; - my @posschains = ('RH-Firewall-1-INPUT','INPUT'); if (open(PIPE,"$iptables -L -n |")) { while() { foreach my $chain (@posschains) { @@ -397,7 +403,9 @@ sub get_fw_chains { } foreach my $fw_chain (@posschains) { if ($counts{$fw_chain}) { - push(@fw_chains,$fw_chain); + unless(grep(/^\Q$fw_chain\E$/,@fw_chains)) { + push(@fw_chains,$fw_chain); + } } } }