diff --git a/src/usr/local/www/firewall_aliases.php b/src/usr/local/www/firewall_aliases.php
index 83d1c3c3f4..89fe0e7b3c 100644
--- a/src/usr/local/www/firewall_aliases.php
+++ b/src/usr/local/www/firewall_aliases.php
@@ -189,7 +189,8 @@ $shortcut_section = "aliases";
include("head.inc");
if ($savemsg)
- print_info_box($savemsg);
+ print_info_box($savemsg, 'success');
+
if (is_subsystem_dirty('aliases'))
print_info_box_np(gettext("The alias list has been changed.") . "
" . gettext("You must apply the changes in order for them to take effect."));
diff --git a/src/usr/local/www/firewall_nat.php b/src/usr/local/www/firewall_nat.php
index df6bef5ee7..2545072a56 100644
--- a/src/usr/local/www/firewall_nat.php
+++ b/src/usr/local/www/firewall_nat.php
@@ -80,20 +80,22 @@ if (!is_array($config['nat']['rule'])) {
$a_nat = &$config['nat']['rule'];
/* update rule order, POST[rule] is an array of ordered IDs */
-if (is_array($_POST['rule']) && !empty($_POST['rule'])) {
- $a_nat_new = array();
+if($_POST['order-store']) {
+ if (is_array($_POST['rule']) && !empty($_POST['rule'])) {
+ $a_nat_new = array();
- // if a rule is not in POST[rule], it has been deleted by the user
- foreach ($_POST['rule'] as $id)
- $a_nat_new[] = $a_nat[$id];
+ // if a rule is not in POST[rule], it has been deleted by the user
+ foreach ($_POST['rule'] as $id)
+ $a_nat_new[] = $a_nat[$id];
- $a_nat = $a_nat_new;
+ $a_nat = $a_nat_new;
- if (write_config())
- mark_subsystem_dirty('filter');
+ if (write_config())
+ mark_subsystem_dirty('filter');
- header("Location: firewall_nat.php");
- exit;
+ header("Location: firewall_nat.php");
+ exit;
+ }
}
/* if a custom message has been passed along, lets process it */
@@ -102,7 +104,6 @@ if ($_GET['savemsg']) {
}
if ($_POST) {
-
$pconfig = $_POST;
if ($_POST['apply']) {
@@ -154,63 +155,17 @@ if (isset($_POST['del_x'])) {
mark_subsystem_dirty('filter');
}
+
unset($a_nat[$rulei]);
}
+
if (write_config()) {
mark_subsystem_dirty('natconf');
}
+
header("Location: firewall_nat.php");
exit;
}
-
-} else {
- /* yuck - IE won't send value attributes for image buttons, while Mozilla does - so we use .x/.y to find move button clicks instead... */
- unset($movebtn);
- foreach ($_POST as $pn => $pd) {
- if (preg_match("/move_(\d+)_x/", $pn, $matches)) {
- $movebtn = $matches[1];
- break;
- }
- }
- /* move selected rules before this rule */
- if (isset($movebtn) && is_array($_POST['rule']) && count($_POST['rule'])) {
- $a_nat_new = array();
-
- /* copy all rules < $movebtn and not selected */
- for ($i = 0; $i < $movebtn; $i++) {
- if (!in_array($i, $_POST['rule'])) {
- $a_nat_new[] = $a_nat[$i];
- }
- }
-
- /* copy all selected rules */
- for ($i = 0; $i < count($a_nat); $i++) {
- if ($i == $movebtn) {
- continue;
- }
- if (in_array($i, $_POST['rule'])) {
- $a_nat_new[] = $a_nat[$i];
- }
- }
-
- /* copy $movebtn rule */
- if ($movebtn < count($a_nat)) {
- $a_nat_new[] = $a_nat[$movebtn];
- }
-
- /* copy all rules > $movebtn and not selected */
- for ($i = $movebtn+1; $i < count($a_nat); $i++) {
- if (!in_array($i, $_POST['rule'])) {
- $a_nat_new[] = $a_nat[$i];
- }
- }
- $a_nat = $a_nat_new;
- if (write_config()) {
- mark_subsystem_dirty('natconf');
- }
- header("Location: firewall_nat.php");
- exit;
- }
}
$closehead = false;
@@ -301,7 +256,6 @@ foreach ($a_nat as $natent):
| =gettext("Interface"); ?> | =gettext("External IP"); ?> | @@ -245,7 +200,11 @@ display_top_tabs($tab_array); $iconfn = "pass"; } ?> -||
|---|---|---|---|
| + + | +" title="=gettext("click to toggle enabled/disabled status")?>"> @@ -263,7 +222,6 @@ display_top_tabs($tab_array); ?> |
-
=gettext('Add new mapping')?>
-
+ " />
+
@@ -320,6 +279,31 @@ print_info_box(gettext('Depending on the way your WAN connection is setup, you m
?>
+
+
\ No newline at end of file
diff --git a/src/usr/local/www/firewall_nat_out.php b/src/usr/local/www/firewall_nat_out.php
index df8f1564ca..2c8f22c234 100644
--- a/src/usr/local/www/firewall_nat_out.php
+++ b/src/usr/local/www/firewall_nat_out.php
@@ -85,21 +85,27 @@ if (!is_array($config['nat']['outbound']['rule'])) {
$a_out = &$config['nat']['outbound']['rule'];
-/* update rule order, POST[rule] is an array of ordered IDs */
-if (is_array($_POST['rule']) && !empty($_POST['rule'])) {
- $a_out_new = array();
+// update rule order, POST[rule] is an array of ordered IDs
+// All rule are 'checked' before posting
+if (isset($_POST['order-store'])) {
+ if(is_array($_POST['rule']) && !empty($_POST['rule'])) {
- // if a rule is not in POST[rule], it has been deleted by the user
- foreach ($_POST['rule'] as $id)
- $a_out_new[] = $a_out[$id];
+ $a_out_new = array();
- $a_out = $a_out_new;
+ // if a rule is not in POST[rule], it has been deleted by the user
+ foreach ($_POST['rule'] as $id) {
+ $a_out_new[] = $a_out[$id];
+ }
- if (write_config())
- mark_subsystem_dirty('filter');
+ $a_out = $a_out_new;
- header("Location: firewall_nat_out.php");
- exit;
+ if (write_config())
+ mark_subsystem_dirty('natconf');
+
+ header("Location: firewall_nat_out.php");
+ exit;
+
+ }
}
if (!isset($config['nat']['outbound']['mode']))
@@ -175,30 +181,41 @@ if (isset($_POST['save']) && $_POST['save'] == "Save") {
if (write_config()) {
mark_subsystem_dirty('natconf');
}
+
header("Location: firewall_nat_out.php");
exit;
}
+// Delete a single rule/map
if ($_GET['act'] == "del") {
+
if ($a_out[$_GET['id']]) {
unset($a_out[$_GET['id']]);
if (write_config()) {
mark_subsystem_dirty('natconf');
}
- header("Location: firewall_nat_out.php");
- exit;
+
+ header("Location: firewall_nat_out.php");
+ exit;
}
}
+// Delete multiple maps Only checked rules will be in the
+// POST
if (isset($_POST['del_x'])) {
/* delete selected rules */
+ print('Deleting rows '); + if (is_array($_POST['rule']) && count($_POST['rule'])) { foreach ($_POST['rule'] as $rulei) { + print('Deleting ' . $rulei . ' '); unset($a_out[$rulei]); } + if (write_config()) { mark_subsystem_dirty('natconf'); } + header("Location: firewall_nat_out.php"); exit; } @@ -213,109 +230,10 @@ if (isset($_POST['del_x'])) { if (write_config("Firewall: NAT: Outbound, enable/disable NAT rule")) { mark_subsystem_dirty('natconf'); } + header("Location: firewall_nat_out.php"); exit; } -} else { - /* yuck - IE won't send value attributes for image buttons, while Mozilla does - so we use .x/.y to find move button clicks instead... */ - unset($movebtn); - foreach ($_POST as $pn => $pd) { - if (preg_match("/move_(\d+)_x/", $pn, $matches)) { - $movebtn = $matches[1]; - break; - } - } - /* move selected rules before this rule */ - if (isset($movebtn) && is_array($_POST['rule']) && count($_POST['rule'])) { - $a_out_new = array(); - - /* copy all rules < $movebtn and not selected */ - for ($i = 0; $i < $movebtn; $i++) { - if (!in_array($i, $_POST['rule'])) { - $a_out_new[] = $a_out[$i]; - } - } - - /* copy all selected rules */ - for ($i = 0; $i < count($a_out); $i++) { - if ($i == $movebtn) { - continue; - } - if (in_array($i, $_POST['rule'])) { - $a_out_new[] = $a_out[$i]; - } - } - - /* copy $movebtn rule */ - if ($movebtn < count($a_out)) { - $a_out_new[] = $a_out[$movebtn]; - } - - /* copy all rules > $movebtn and not selected */ - for ($i = $movebtn+1; $i < count($a_out); $i++) { - if (!in_array($i, $_POST['rule'])) { - $a_out_new[] = $a_out[$i]; - } - } - if (count($a_out_new) > 0) { - $a_out = $a_out_new; - } - - if (write_config()) { - mark_subsystem_dirty('natconf'); - } - header("Location: firewall_nat_out.php"); - exit; - } -} - -function rule_popup($src, $srcport, $dst, $dstport) { - global $config, $g; - $aliases_array = array(); - if ($config['aliases']['alias'] <> "" and is_array($config['aliases']['alias'])) { - $descriptions = array (); - - foreach ($config['aliases']['alias'] as $alias_id => $alias_name) { - $loading_image=" " .gettext("loading...")."";
-
- switch ($alias_name['type']) {
- case "port":
- $width="250";
- break;
- case "urltable":
- $width="500";
- break;
- default:
- $width="350";
-
- break;
- }
- $span_begin = "";
- $span_end = "";
-
- if ($alias_name['name'] == $src) {
- $descriptions['src'] = $span_begin;
- $descriptions['src_end'] = $span_end;
- }
-
- if ($alias_name['name'] == $srcport) {
- $descriptions['srcport'] = $span_begin;
- $descriptions['srcport_end'] = $span_end;
- }
-
- if ($alias_name['name'] == $dst) {
- $descriptions['dst'] = $span_begin;
- $descriptions['dst_end'] = $span_end;
- }
-
- if ($alias_name['name'] == $dstport) {
- $descriptions['dstport'] = $span_begin;
- $descriptions['dstport_end'] = $span_end;
- }
- }
-
- return $descriptions;
- }
}
$pgtitle = array(gettext("Firewall"), gettext("NAT"), gettext("Outbound"));
@@ -404,6 +322,7 @@ print($form);
| |
| @@ -428,7 +347,7 @@ print($form); - "title="=gettext("Click to toggle enabled/disabled status")?>"> + " title="=gettext("Click to toggle enabled/disabled status")?>"> @@ -442,7 +361,6 @@ print($form); | - =htmlspecialchars(convert_friendly_interface_to_friendly_descr($natent['interface']))?> | @@ -594,9 +512,9 @@ print($form); =gettext("Description")?>
| =gettext("Proto");?> | =gettext("Source");?> | @@ -268,11 +293,12 @@ display_top_tabs($tab_array); 1, or WAN with an if count of 1. if (!isset($config['system']['webgui']['noantilockout']) && - (((count($config['interfaces']) > 1) && ($if == 'lan')) || - ((count($config['interfaces']) == 1) && ($if == 'wan')))): + (((count($config['interfaces']) > 1) && ($if == 'lan')) || + ((count($config['interfaces']) == 1) && ($if == 'wan')))): $alports = implode('||
|---|---|---|---|
| "> | * | * | @@ -290,6 +316,7 @@ display_top_tabs($tab_array);|
| "> | * | =gettext("RFC 1918 networks");?> | @@ -307,6 +334,7 @@ display_top_tabs($tab_array);|
| "> | * | =gettext("Reserved/not assigned by IANA");?> | @@ -325,19 +353,23 @@ display_top_tabs($tab_array);|
| + + | +"> - |