From 94c0f816186a6becfe59207ff58cf2fa6286593b Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 4 Jan 2016 18:40:18 +0100 Subject: [PATCH] (legacy) refactor interfaces_qinq_edit.php --- src/www/interfaces_qinq_edit.php | 583 +++++++++++-------------------- 1 file changed, 201 insertions(+), 382 deletions(-) diff --git a/src/www/interfaces_qinq_edit.php b/src/www/interfaces_qinq_edit.php index 7d81e6b74..41996881e 100644 --- a/src/www/interfaces_qinq_edit.php +++ b/src/www/interfaces_qinq_edit.php @@ -1,412 +1,231 @@ 0) || (count($addmembers) > 0)) { + // XXX needs improvement + $fd = fopen('/tmp/netgraphcmd', 'w'); + foreach ($delmembers as $tag) { + fwrite($fd, "shutdown {$qinqentry['vlanif']}h{$tag}:\n"); + fwrite($fd, "msg {$qinqentry['vlanif']}qinq: delfilter \\\"{$qinqentry['vlanif']}{$tag}\\\"\n"); + } - unset($input_errors); - $pconfig = $_POST; + foreach ($addmembers as $member) { + $qinq = array(); + $qinq['if'] = $qinqentry['vlanif']; + $qinq['tag'] = $member; + $macaddr = get_interface_mac($qinqentry['vlanif']); + interface_qinq2_configure($qinq, $fd, $macaddr); + } - if (empty($_POST['tag'])) - $input_errors[] = gettext("First level tag cannot be empty."); - if (isset($id) && $a_qinqs[$id]['tag'] != $_POST['tag']) - $input_errors[] = gettext("You are editing an existing entry and modifying the first level tag is not allowed."); - if (isset($id) && $a_qinqs[$id]['if'] != $_POST['if']) - $input_errors[] = gettext("You are editing an existing entry and modifying the interface is not allowed."); - if (!isset($id)) { - foreach ($a_qinqs as $qinqentry) - if ($qinqentry['tag'] == $_POST['tag'] && $qinqentry['if'] == $_POST['if']) - $input_errors[] = gettext("QinQ level already exists for this interface, edit it!"); - if (is_array($config['vlans']['vlan'])) { - foreach ($config['vlans']['vlan'] as $vlan) - if ($vlan['tag'] == $_POST['tag'] && $vlan['if'] == $_POST['if']) - $input_errors[] = gettext("A normal VLAN exists with this tag please remove it to use this tag for QinQ first level."); - } - } + fclose($fd); + mwexec('/usr/sbin/ngctl -f /tmp/netgraphcmd'); + } + $a_qinqs[$id] = $qinqentry; + } else { + interface_qinq_configure($qinqentry); + $a_qinqs[] = $qinqentry; + } - $qinqentry = array(); - $qinqentry['if'] = $_POST['if']; - $qinqentry['tag'] = $_POST['tag']; -/* - if ($_POST['autoassign'] == "yes") { - $qinqentry['autoassign'] = true; - if ($_POST['autoenable'] == "yes") - $qinqentry['autoenable'] = true; - if ($_POST['autoadjust'] == "yes") - $qinqentry['autoadjustmtu'] = true; -*/ - if ($_POST['autogroup'] == "yes") - $qinqentry['autogroup'] = true; - - $members = ""; - $isfirst = 0; - /* item is a normal qinqentry type */ - for($x=0; $x<9999; $x++) { - if($_POST["members{$x}"] <> "") { - $member = explode("-", $_POST["members{$x}"]); - if (count($member) > 1) { - if (preg_match("/([^0-9])+/", $member[0], $match) || - preg_match("/([^0-9])+/", $member[1], $match)) - $input_errors[] = gettext("Tags can contain only numbers or a range in format #-#."); - - for ($i = $member[0]; $i <= $member[1]; $i++) { - if ($isfirst > 0) - $members .= " "; - $members .= $i; - $isfirst++; - } - } else { - if (preg_match("/([^0-9 ])+/", $_POST["members{$x}"], $match)) - $input_errors[] = gettext("Tags can contain only numbers or a range in format #-#."); - - if ($isfirst > 0) - $members .= " "; - $members .= $_POST["members{$x}"]; - $isfirst++; - } - } - } - - if (!$input_errors) { - $qinqentry['members'] = $members; - $qinqentry['descr'] = $_POST['descr']; - $qinqentry['vlanif'] = "{$_POST['if']}_{$_POST['tag']}"; - $nmembers = explode(" ", $members); - - if (isset($id) && $a_qinqs[$id]) { - $omembers = explode(" ", $a_qinqs[$id]['members']); - $delmembers = array_diff($omembers, $nmembers); - $addmembers = array_diff($nmembers, $omembers); - - if ((count($delmembers) > 0) || (count($addmembers) > 0)) { - $fd = fopen('/tmp/netgraphcmd', 'w'); - foreach ($delmembers as $tag) { - fwrite($fd, "shutdown {$qinqentry['vlanif']}h{$tag}:\n"); - fwrite($fd, "msg {$qinqentry['vlanif']}qinq: delfilter \\\"{$qinqentry['vlanif']}{$tag}\\\"\n"); - } - - foreach ($addmembers as $member) { - $qinq = array(); - $qinq['if'] = $qinqentry['vlanif']; - $qinq['tag'] = $member; - $macaddr = get_interface_mac($qinqentry['vlanif']); - interface_qinq2_configure($qinq, $fd, $macaddr); - } - - fclose($fd); - mwexec('/usr/sbin/ngctl -f /tmp/netgraphcmd'); - } - $a_qinqs[$id] = $qinqentry; - } else { - interface_qinq_configure($qinqentry); - $a_qinqs[] = $qinqentry; - } - if ($_POST['autogroup'] == "yes") { - if (!is_array($config['ifgroups']['ifgroupentry'])) - $config['ifgroups']['ifgroupentry'] = array(); - foreach ($config['ifgroups']['ifgroupentry'] as $gid => $group) { - if ($group['ifname'] == "QinQ") { - $found = true; - break; - } - } - $additions = ""; - foreach($nmembers as $qtag) - $additions .= "{$qinqentry['vlanif']}_{$qtag} "; - $additions .= "{$qinqentry['vlanif']}"; - if ($found == true) - $config['ifgroups']['ifgroupentry'][$gid]['members'] .= " {$additions}"; - else { - $gentry = array(); - $gentry['ifname'] = "QinQ"; - $gentry['members'] = "{$additions}"; - $gentry['descr'] = gettext("QinQ VLANs group"); - $config['ifgroups']['ifgroupentry'][] = $gentry; - } - } - - write_config(); - - header("Location: interfaces_qinq.php"); - exit; - } else { - $pconfig['descr'] = $_POST['descr']; - $pconfig['tag'] = $_POST['tag']; - $pconfig['members'] = $members; - } + write_config(); + header("Location: interfaces_qinq.php"); + exit; + } } include("head.inc"); - ?> - - - - - -
-
-
- - 0) print_input_errors($input_errors); ?> -
- - -
- -
- -
-

-
- -
- -
- - - - - - - - - - - - - - - - - - - - - - - - - -
- -
-
- -
- - - -
- /> - -
- -
- - - -
- - - -
- - - - - - - "") { - $item = explode(" ", $members); - foreach($item as $ww) { - $member = $item[$counter]; - ?> - - - - - - -
- - - -
- " class="btn btn-default btn-xs"/> - -
  - " /> - " /> - - - -
-
-
-
-
-
-
-
- - - - +
+
+
+ 0) print_input_errors($input_errors); ?> +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +   +
+ + +
+ + +
+ + +
+ +
  + " /> + " onclick="window.location.href=''" /> + + + +
+
+
+
+
+
+
+