From dcec8fd962cc8423e26e90751d3632ddd10cc0ff Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Fri, 14 Aug 2015 13:36:47 +0000 Subject: [PATCH] (legacy) refactor firewall_aliases.php --- src/www/firewall_aliases.php | 324 ++++++++++++++++++----------------- 1 file changed, 165 insertions(+), 159 deletions(-) diff --git a/src/www/firewall_aliases.php b/src/www/firewall_aliases.php index 57a653b1b..0d09a4fb0 100644 --- a/src/www/firewall_aliases.php +++ b/src/www/firewall_aliases.php @@ -31,82 +31,6 @@ require_once("guiconfig.inc"); require_once("filter.inc"); -if (!is_array($config['aliases'])) { - $config['aliases'] = array(); -} -if (!is_array($config['aliases']['alias'])) { - $config['aliases']['alias'] = array(); -} -$a_aliases = &$config['aliases']['alias']; - -$tab = ($_REQUEST['tab'] == "" ? "ip" : preg_replace("/\W/","",$_REQUEST['tab'])); - -if ($_POST) { - - if ($_POST['apply']) { - $retval = 0; - - /* reload all components that use aliases */ - $retval = filter_configure(); - - if(stristr($retval, "error") <> true) - $savemsg = get_std_save_message($retval); - else - $savemsg = $retval; - if ($retval == 0) - clear_subsystem_dirty('aliases'); - } -} - -if ($_GET['act'] == "del") { - if ($a_aliases[$_GET['id']]) { - /* make sure rule is not being referenced by any nat or filter rules */ - $is_alias_referenced = false; - $referenced_by = false; - $alias_name = $a_aliases[$_GET['id']]['name']; - // Firewall rules - find_alias_reference(array('filter', 'rule'), array('source', 'address'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('filter', 'rule'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('filter', 'rule'), array('source', 'port'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('filter', 'rule'), array('destination', 'port'), $alias_name, $is_alias_referenced, $referenced_by); - // NAT Rules - find_alias_reference(array('nat', 'rule'), array('source', 'address'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'rule'), array('source', 'port'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'rule'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'rule'), array('destination', 'port'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'rule'), array('target'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'rule'), array('local-port'), $alias_name, $is_alias_referenced, $referenced_by); - // NAT 1:1 Rules - //find_alias_reference(array('nat', 'onetoone'), array('external'), $alias_name, $is_alias_referenced, $referenced_by); - //find_alias_reference(array('nat', 'onetoone'), array('source', 'address'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'onetoone'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); - // NAT Outbound Rules - find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('source', 'network'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('sourceport'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('dstport'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('target'), $alias_name, $is_alias_referenced, $referenced_by); - // Alias in an alias - find_alias_reference(array('aliases', 'alias'), array('address'), $alias_name, $is_alias_referenced, $referenced_by); - // Load Balancer - find_alias_reference(array('load_balancer', 'lbpool'), array('port'), $alias_name, $is_alias_referenced, $referenced_by); - find_alias_reference(array('load_balancer', 'virtual_server'), array('port'), $alias_name, $is_alias_referenced, $referenced_by); - // Static routes - find_alias_reference(array('staticroutes', 'route'), array('network'), $alias_name, $is_alias_referenced, $referenced_by); - if($is_alias_referenced == true) { - $savemsg = sprintf(gettext("Cannot delete alias. Currently in use by %s"), $referenced_by); - } else { - unset($a_aliases[$_GET['id']]); - if (write_config()) { - filter_configure(); - mark_subsystem_dirty('aliases'); - } - header("Location: firewall_aliases.php?tab=" . $tab); - exit; - } - } -} - function find_alias_reference($section, $field, $origname, &$is_alias_referenced, &$referenced_by) { global $config; if(!$origname || $is_alias_referenced) @@ -142,61 +66,151 @@ function find_alias_reference($section, $field, $origname, &$is_alias_referenced } } -$pgtitle = array(gettext("Firewall"),gettext("Aliases")); + +if (!isset($config['aliases'])) { + $config['aliases'] = array(); +} +if (!isset($config['aliases']['alias'])) { + $config['aliases']['alias'] = array(); +} +$a_aliases = &$config['aliases']['alias']; + +// determine selected tab +$selected_tab = htmlspecialchars(($_REQUEST['tab'] == "" ? "ip" : preg_replace("/\W/","",$_REQUEST['tab']))); + +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + if (isset($_POST['apply'])) { + /* reload all components that use aliases */ + $retval = filter_configure(); + + if(stristr($retval, "error") <> true) + $savemsg = get_std_save_message($retval); + else + $savemsg = $retval; + if ($retval == 0) + clear_subsystem_dirty('aliases'); + } elseif (isset($_POST['act']) && $_POST['act'] == "del") { + if (isset($_POST['id']) && isset($a_aliases[$_POST['id']])) { + // perform validation + /* make sure rule is not being referenced by any nat or filter rules */ + $is_alias_referenced = false; + $referenced_by = false; + $alias_name = $a_aliases[$_POST['id']]['name']; + // Firewall rules + find_alias_reference(array('filter', 'rule'), array('source', 'address'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('filter', 'rule'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('filter', 'rule'), array('source', 'port'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('filter', 'rule'), array('destination', 'port'), $alias_name, $is_alias_referenced, $referenced_by); + // NAT Rules + find_alias_reference(array('nat', 'rule'), array('source', 'address'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'rule'), array('source', 'port'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'rule'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'rule'), array('destination', 'port'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'rule'), array('target'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'rule'), array('local-port'), $alias_name, $is_alias_referenced, $referenced_by); + // NAT 1:1 Rules + //find_alias_reference(array('nat', 'onetoone'), array('external'), $alias_name, $is_alias_referenced, $referenced_by); + //find_alias_reference(array('nat', 'onetoone'), array('source', 'address'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'onetoone'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); + // NAT Outbound Rules + find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('source', 'network'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('sourceport'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('destination', 'address'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('dstport'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('nat', 'advancedoutbound', 'rule'), array('target'), $alias_name, $is_alias_referenced, $referenced_by); + // Alias in an alias + find_alias_reference(array('aliases', 'alias'), array('address'), $alias_name, $is_alias_referenced, $referenced_by); + // Load Balancer + find_alias_reference(array('load_balancer', 'lbpool'), array('port'), $alias_name, $is_alias_referenced, $referenced_by); + find_alias_reference(array('load_balancer', 'virtual_server'), array('port'), $alias_name, $is_alias_referenced, $referenced_by); + // Static routes + find_alias_reference(array('staticroutes', 'route'), array('network'), $alias_name, $is_alias_referenced, $referenced_by); + if($is_alias_referenced) { + $savemsg = sprintf(gettext("Cannot delete alias. Currently in use by %s"), $referenced_by); + } else { + unset($a_aliases[$_POST['id']]); + if (write_config()) { + filter_configure(); + mark_subsystem_dirty('aliases'); + } + header("Location: firewall_aliases.php?tab=" . $selected_tab); + exit; + } + } + } +} + + +$pgtitle = array(gettext("Firewall"), gettext("Aliases")); $shortcut_section = "aliases"; - -include("head.inc"); - $main_buttons = array( - array('href'=>'firewall_aliases_edit.php?tab='.$tab, 'label'=>gettext("Add a new alias")), + array('href'=>'firewall_aliases_edit.php?tab='.$selected_tab, 'label'=>gettext("Add a new alias")), array('href'=>'firewall_aliases_import.php', 'label'=>gettext("Bulk import aliases from list")), - ); + +include("head.inc"); ?> - + -
- - -

- " . gettext("You must apply the changes in order for them to take effect."));?> - - -

- - - + +" . gettext("You must apply the changes in order for them to take effect."));?> + +
+ - - -
-
- - -
- +?> +
+ + +
+
- - - - + + + + - $alias){ - unset ($show_alias); - switch ($tab){ + $show_alias = false; + switch ($selected_tab){ case "all": $show_alias= true; break; @@ -215,63 +229,55 @@ $main_buttons = array( $show_alias= true; break; } - if ($show_alias) { + if ($show_alias ){ ?> - - - - - -
 
+ - "; - } else { - if(is_array($alias["aliasurl"])) { - $aliasurls = implode(", ", array_slice($alias["aliasurl"], 0, 10)); - echo $aliasurls; - if(count($aliasurls) > 10) { - echo "...
"; - } - echo "
\n"; - } - $tmpaddr = explode(" ", $alias['address']); - $addresses = implode(", ", array_slice($tmpaddr, 0, 10)); - echo $addresses; - if(count($tmpaddr) > 10) { - echo "..."; - } + 5) { + $alias_values .= "..."; + } + } else { + $alias_values = implode(", ", array_slice(explode(" ", $alias['address']), 0, 5)); + if(count(explode(" ", $alias['address'])) > 5) { + $alias_values .= "..."; + } } - ?> +?> +
+ -   + + - - - - -
- "> - - ')"> - -
+
+ " class="btn btn-default btn-xs"> + " class="act_delete btn btn-default btn-xs">
-
-
-


+?> + +
+ +
+
+ +
- -
-
+ +
+
- +