diff --git a/firewall/config.info b/firewall/config.info
index 1008ac3f0..93c6106df 100644
--- a/firewall/config.info
+++ b/firewall/config.info
@@ -1,4 +1,4 @@
-line0=Configurable options,11
+line0=Configurable global options,11
perpage=Number of rules to display per page,3,50
view_condition=Display condition in rules list?,1,1-Yes,0-No
view_comment=Display comment in rules list?,1,1-Yes,0-No
@@ -8,9 +8,11 @@ before_cmd=Command to run before changing rules,3,None
after_cmd=Command to run after changing rules,3,None
before_apply_cmd=Command to run before applying configuration,3,None
after_apply_cmd=Command to run after applying configuration,3,None
-line1=System configuration,11
force_init=Always start firewall from init script on Debian,1,1-Yes,0-No
-save_file=File to save/edit IPv4 rules,3,Use operating system or Webmin default
-save_file6=File to save/edit IPv6 rules,3,Use operating system or Webmin default
-direct=Directly edit firewall rules instead of save file?,1,1-Yes,0-No
filter_chain=Comma sepeated list of regexes to filter out chains not managed by firewall,0
+line2=IPv4 configuration,11
+save_file=File to save/edit IPv4 rules,3,Use operating system or Webmin default
+direct=Directly edit firewall IPv4 rules instead of save file?,1,1-Yes,0-No
+line3=IPv6 configuration,11
+save_file6=File to save/edit IPv6 rules,3,Use operating system or Webmin default
+direct6=Directly edit firewall IPv6 rules instead of save file?,1,1-Yes,0-No
diff --git a/firewall/config.info.de b/firewall/config.info.de
index f18b44caa..45e9886c4 100644
--- a/firewall/config.info.de
+++ b/firewall/config.info.de
@@ -1,4 +1,5 @@
-line0=Konfigurierbare Optionen,11
+line0=Konfigurierbare globale Optionen,11
+perpage=Anzahl der anzuzeigenden Regeln pro Seite,3,50
view_condition=Zeige Zustand in Regelliste?,1,1-Ja,0-Nein
view_comment=Zeige Kommentare in Regelliste an?,1,1-Ja,0-Nein
comment_mod=Speichere Kommentare als,1,0-# Kommentar in Datei speichern,1--- Kommentaroption
@@ -8,9 +9,11 @@ before_cmd=Befehle zum Ausführen vor Änderung der Regeln,3,Keiner
after_cmd=Befehle zum Ausführen nach Änderung der Regeln,3,Keiner
before_apply_cmd=Befehle zum Ausführen vor Anwenden der Konfiguration,3,Keiner
after_apply_cmd=Befehle zum Anwendung der Konfiguration,3,Keiner
-line1=System Konfiguration,11
-save_file=Datei zum Speichern/Bearbeiten der IPv4 Regeln,3,Verwendung des Betriebssystems oder Webmin Standard
-save_file6=Datei zum Speichern/Bearbeiten der IPv6 Regeln,3,Verwendung des Betriebssystems oder Webmin Standard
-direct=Direktes Bearbeiten der Firewall-Regeln anstatt von gespeicherter Datei?,1,1-Ja,0-Nein
filter_chain=Komma getrennte Liste von Regex zum Ausfiltern von Ketten die nicht von Firewall verwaltet werden,0
-
+line2=IPv4 Konfiguration,11
+save_file=Datei zum Speichern/Bearbeiten der IPv4 Regeln,3,Verwendung des Betriebssystems oder Webmin Standard
+direct=Bearbeite IPv4 Firewall-Regeln direkt anstatt in Datei?,1,1-Ja,0-Nein
+line3=IPv6 Konfiguration,11
+save_file6=File to save/edit IPv6 rules,3,Use operating system or Webmin default
+save_file6=Datei zum Speichern/Bearbeiten der IPv6 Regeln,3,Verwendung des Betriebssystems oder Webmin Standard
+direct6=Bearbeite IPv6 Firewall-Regeln direkt anstatt in Datei?,1,1-Ja,0-Nein
diff --git a/firewall/firewall-lib.pl b/firewall/firewall-lib.pl
index 208e07afa..13f16c38f 100755
--- a/firewall/firewall-lib.pl
+++ b/firewall/firewall-lib.pl
@@ -56,7 +56,7 @@ sub get_iptables_save
local (@rv, $table, %got);
local $lnum = 0;
-open(FILE, $_[0] || ($config{'direct'} ? "ip${ipvx}tables-save 2>/dev/null |"
+open(FILE, $_[0] || ($config{"direct${ipvx}"} ? "ip${ipvx}tables-save 2>/dev/null |"
: $ipvx_save));
local $cmt;
LINE:
@@ -64,7 +64,7 @@ while() {
local $read_comment;
s/\r|\n//g;
# regex to filter out chains not managed by firewall, i.e. fail2ban
- if ($config{'direct'} && $config{'filter_chain'}) {
+ if ($config{"direct${ipvx}"} && $config{'filter_chain'}) {
foreach $filter (split(',', $config{'filter_chain'})) {
# NOTE: keep ":chain ..." as reference to avoid error when rebuild active config
# -A|-I chain ... -j chain -> skip line if machtes filter_chain
@@ -154,7 +154,7 @@ return @rv;
sub save_table
{
local $lref;
-if ($config{'direct'}) {
+if ($config{"direct${ipvx}"}) {
# Read in the current iptables-save output
$lref = &read_file_lines("ip${ipvx}tables-save 2>/dev/null |", 1);
}
@@ -199,7 +199,7 @@ else {
# Append new table to file
push(@$lref, "# Generated by webmin", @lines, "# Completed");
}
-if ($config{'direct'}) {
+if ($config{"direct${ipvx}"}) {
# Pass new lines to iptables-restore
open(SAVE, "| ip${ipvx}tables-restore");
print SAVE map { $_."\n" } @$lref;
@@ -497,14 +497,14 @@ return if (!$config{'servers'}); # no servers defined
return if (!$_[0] && $config{'cluster_mode'}); # only push out when applying
local $s;
local $ltemp;
-if ($config{'direct'}) {
+if ($config{"direct${ipvx}"}) {
# Dump current configuration
$ltemp = &transname();
system("ip${ipvx}tables-save >$ltemp 2>/dev/null");
}
foreach $s (&list_cluster_servers()) {
&remote_foreign_require($s, "firewall", $ipvx_lib);
- if ($config{'direct'}) {
+ if ($config{"direct${ipvx}"}) {
# Directly activate on remote server!
local $rtemp = &remote_write($s, $ltemp);
unlink($ltemp);
diff --git a/firewall/index.cgi b/firewall/index.cgi
index 0ca448c90..c86381986 100755
--- a/firewall/index.cgi
+++ b/firewall/index.cgi
@@ -1,4 +1,4 @@
-#!/usr/local/bin/perl
+#!/usr/bin/perl
# index.cgi
# Display current iptables firewall configuration from save file
# unified for IPV4 and IPV6
@@ -46,7 +46,7 @@ if ($?) {
}
# Check if the distro supports iptables
-if (!$config{'direct'} && defined(&check_iptables) &&
+if (!$config{"direct${ipvx}"} && defined(&check_iptables) &&
($err = &check_iptables())) {
print "$err
\n";
&ui_print_footer("/", $text{'index'});
@@ -54,7 +54,7 @@ if (!$config{'direct'} && defined(&check_iptables) &&
}
# Check if firewall is being started at boot
-if (!$config{'direct'} && &foreign_check("init")) {
+if (!$config{"direct${ipvx}"} && &foreign_check("init")) {
$init_support++;
if (defined(&started_at_boot)) {
$atboot = &started_at_boot();
@@ -71,8 +71,7 @@ if (!$config{'direct'} && &foreign_check("init")) {
# Display warnings about active external firewalls!
&external_firewall_message(\@livetables);
-if (!$config{'direct'} &&
- (!-s $ipvx_save || $in{'reset'}) && $access{'setup'}) {
+if (!$config{"direct${ipvx}"} && $in{'reset'} && $access{'setup'}) {
@tables = @livetables;
foreach $t (@tables) {
$rules++ if (@{$t->{'rules'}});
@@ -129,7 +128,7 @@ if (!$config{'direct'} &&
else {
$form = 0;
@tables = &get_iptables_save();
- if (!$config{'direct'}) {
+ if (!$config{"direct${ipvx}"}) {
# Verify that all known tables exist, and if not add them to the
# save file
foreach $t (@tables) {
@@ -150,7 +149,7 @@ else {
}
# Check if the current config is valid
- if (!$config{'direct'}) {
+ if (!$config{"direct${ipvx}"}) {
my $err = &validate_iptables_config();
if ($err) {
print "",&text('index_evalid',
@@ -466,7 +465,7 @@ else {
print &ui_hr();
print &ui_buttons_start();
- if (!$config{'direct'}) {
+ if (!$config{"direct${ipvx}"}) {
# Buttons to apply and reset the config
if (&foreign_check("servers")) {
@servers = &list_cluster_servers();
@@ -544,7 +543,7 @@ sub external_firewall_message
$fwname.='fail2ban ';
}
# warning about not using direct
- if($fwname && !$config{'direct'}) {
+ if($fwname && !$config{"direct${ipvx}"}) {
print "",
&text('index_filter_nodirect', $fwconfig),
"\n";