diff --git a/src/www/firewall_nat_npt.php b/src/www/firewall_nat_npt.php index 2518ff3cc..832ab0797 100644 --- a/src/www/firewall_nat_npt.php +++ b/src/www/firewall_nat_npt.php @@ -1,169 +1,305 @@ . - All rights reserved. + Copyritgh (C) 2014 Deciso B.V. + Copyright (C) 2011 Seth Mos . + All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ require_once("guiconfig.inc"); require_once("filter.inc"); require_once("interfaces.inc"); -if (!is_array($config['nat']['npt'])) { - $config['nat']['npt'] = array(); +if (!isset($config['nat']['npt'])) { + $config['nat']['npt'] = array(); } $a_npt = &$config['nat']['npt']; -if ($_POST) { - - $pconfig = $_POST; - - if ($_POST['apply']) { - $retval = 0; - $retval |= filter_configure(); - $savemsg = get_std_save_message(); - - if ($retval == 0) { - clear_subsystem_dirty('natconf'); - clear_subsystem_dirty('filter'); - } - } +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $pconfig = $_POST; + if (isset($pconfig['id']) && isset($a_npt[$pconfig['id']])) { + // id found and valid + $id = $pconfig['id']; + } + if (isset($pconfig['apply'])) { + filter_configure(); + $savemsg = get_std_save_message(); + clear_subsystem_dirty('natconf'); + clear_subsystem_dirty('filter'); + } elseif (isset($pconfig['act']) && $pconfig['act'] == 'del' && isset($id)) { + // delete single record + unset($a_npt[$id]); + if (write_config()) { + mark_subsystem_dirty('natconf'); + } + header("Location: firewall_nat_npt.php"); + exit; + } elseif (isset($pconfig['act']) && $pconfig['act'] == 'del_x' && isset($pconfig['rule']) && count($pconfig['rule']) > 0) { + /* delete selected rules */ + foreach ($pconfig['rule'] as $rulei) { + if (isset($a_npt[$rulei])) { + unset($a_npt[$rulei]); + } + } + if (write_config()) { + mark_subsystem_dirty('natconf'); + } + header("Location: firewall_nat_npt.php"); + exit; + } elseif ( isset($pconfig['act']) && $pconfig['act'] == 'move') { + // move records + if (isset($pconfig['rule']) && count($pconfig['rule']) > 0) { + // if rule not set/found, move to end + if (!isset($id)) { + $id = count($a_npt); + } + $a_npt = legacy_move_config_list_items($a_npt, $id, $pconfig['rule']); + } + if (write_config()) { + mark_subsystem_dirty('natconf'); + } + header("Location: firewall_nat_npt.php"); + exit; + } elseif (isset($pconfig['act']) && $pconfig['act'] == 'toggle' && isset($id)) { + // toggle item + if(isset($a_npt[$id]['disabled'])) { + unset($a_npt[$id]['disabled']); + } else { + $a_npt[$id]['disabled'] = true; + } + if (write_config("Firewall: NAT: NPt, enable/disable NAT rule")) { + mark_subsystem_dirty('natconf'); + } + header("Location: firewall_nat_npt.php"); + exit; + } } -if ($_GET['act'] == "del") { - if ($a_npt[$_GET['id']]) { - unset($a_npt[$_GET['id']]); - if (write_config()) - mark_subsystem_dirty('natconf'); - header("Location: firewall_nat_npt.php"); - exit; - } -} + +legacy_html_escape_form_data($a_npt); $pgtitle = array(gettext("Firewall"),gettext("NAT"),gettext("NPt")); include("head.inc"); $main_buttons = array( - array('label'=>'Add rule', 'href'=>'firewall_nat_npt_edit.php'), + array('label'=>'Add rule', 'href'=>'firewall_nat_npt_edit.php'), ); ?> + + - - - -
-
-
- - - - " . gettext("You must apply the changes in order for them to take effect."));?>
- - -
- - - -
- -
- -
- - - - - - - - - - - - - - "; - - $i = 0; foreach ($a_npt as $natent): - - if (isset($natent['disabled'])) - $textss = ""; - else - $textss = ""; ?> - - - - - - - - - - -
- - - - - - - -   - - - " class="btn btn-default btn-xs">')" title="" alt="delete" class="btn btn-default btn-xs"> -
-
-
- -
-
-
-
-
- +
+
+
+ + + " . gettext("You must apply the changes in order for them to take effect."));?>
+ +
+ +
+
+ + +
+ + + + + + + + + + + + + + + + ondblclick="document.location='firewall_nat_npt_edit.php?id=';"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
   
+ + + "> + + + + + + + + + + + + + + + + + + " class="act_move btn btn-default btn-xs"> + + + " class="btn btn-default btn-xs"> + + + " data-toggle="tooltip" class="act_delete btn btn-default btn-xs"> + + + "> + + +
+ + + + + + " class="act_move btn btn-default btn-xs"> + + + + + "> + + " data-toggle="tooltip" class="act_delete btn btn-default btn-xs"> + + + + "> + + +
 
+
+
+
+
+
+
+