summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xclean.sh26
-rw-r--r--usr/local/www/interfaces_qinq_edit.php304
2 files changed, 116 insertions, 214 deletions
diff --git a/clean.sh b/clean.sh
index 540a94e..3f14115 100755
--- a/clean.sh
+++ b/clean.sh
@@ -1,15 +1,15 @@
#!/bin/sh
-sed -i -e 's/> </></g' $1 ;
-sed -i -e 's/ / /g' $1 ;
-sed -i -e 's/\s+$//g' $1 ;
-sed -i -e 's/ width="17" height="17" border="0"//g' $1 ;
-sed -i -e 's/<td [^>]+listhdrr[^>]+>/<th>/g' $1 ;
-sed -i -e 's/<body[^>]*>//g' $1 ;
-sed -i -e 's/<\(table\|td\|span\|div\)[^>]\+>/<\1>/g' $1 ;
-sed -i -e 's/<?php include("fbegin.inc"); ?>//g' $1 ;
-sed -i -e 's/<?php include("fend.inc"); ?>/<?php include("foot.inc"); ?>/g' $1 ;
-sed -i -e 's/<?php echo /<?=/g' $1 ;
-sed -i -e 's/;\s*?>/?>/g' $1 ;
-sed -i -e 's/<?\s*=\s*/<?=/g' $1 ;
-sed -i -e 's/ <> / != /g' $1 ; \ No newline at end of file
+sed -i '' 's/> </></g' $1 ;
+sed -i '' 's/ / /g' $1 ;
+sed -i '' 's/\s+$//g' $1 ;
+sed -i '' 's/ width="17" height="17" border="0"//g' $1 ;
+sed -i '' 's/<td [^>]+listhdrr[^>]+>/<th>/g' $1 ;
+sed -i '' 's/<body[^>]*>//g' $1 ;
+sed -i '' 's/<\(table\|td\|span\|div\)[^>]\+>/<\1>/g' $1 ;
+sed -i '' 's/<?php include("fbegin.inc"); ?>//g' $1 ;
+sed -i '' 's/<?php include("fend.inc"); ?>/<?php include("foot.inc"); ?>/g' $1 ;
+sed -i '' 's/<?php echo /<?=/g' $1 ;
+sed -i '' 's/;\s*?>/?>/g' $1 ;
+sed -i '' 's/<?\s*=\s*/<?=/g' $1 ;
+sed -i '' 's/ <> / != /g' $1 ;
diff --git a/usr/local/www/interfaces_qinq_edit.php b/usr/local/www/interfaces_qinq_edit.php
index 085ab8d..dd3ad7a 100644
--- a/usr/local/www/interfaces_qinq_edit.php
+++ b/usr/local/www/interfaces_qinq_edit.php
@@ -44,6 +44,8 @@ $shortcut_section = "interfaces";
require("guiconfig.inc");
+print('POST: '); print_r($_POST); print('<br />');
+
if (!is_array($config['qinqs']['qinqentry']))
$config['qinqs']['qinqentry'] = array();
@@ -53,8 +55,8 @@ $portlist = get_interface_list();
/* add LAGG interfaces */
if (is_array($config['laggs']['lagg']) && count($config['laggs']['lagg'])) {
- foreach ($config['laggs']['lagg'] as $lagg)
- $portlist[$lagg['laggif']] = $lagg;
+ foreach ($config['laggs']['lagg'] as $lagg)
+ $portlist[$lagg['laggif']] = $lagg;
}
if (count($portlist) < 1) {
@@ -64,6 +66,7 @@ if (count($portlist) < 1) {
if (is_numericint($_GET['id']))
$id = $_GET['id'];
+
if (isset($_POST['id']) && is_numericint($_POST['id']))
$id = $_POST['id'];
@@ -81,7 +84,6 @@ if (isset($id) && $a_qinqs[$id]) {
}
if ($_POST) {
-
unset($input_errors);
$pconfig = $_POST;
@@ -120,7 +122,7 @@ if ($_POST) {
$isfirst = 0;
/* item is a normal qinqentry type */
for($x=0; $x<9999; $x++) {
- if($_POST["members{$x}"] <> "") {
+ if($_POST["members{$x}"] != "") {
$member = explode("-", $_POST["members{$x}"]);
if (count($member) > 1) {
if (preg_match("/([^0-9])+/", $member[0], $match) ||
@@ -214,207 +216,107 @@ if ($_POST) {
}
}
-include("head.inc");
-
-?>
+function build_parent_list() {
+ global $portlist;
+
+ $list = array();
+
+ foreach ($portlist as $ifn => $ifinfo) {
+ if (is_jumbo_capable($ifn))
+ $list[$ifn] = $ifn . ' (' . $ifinfo['mac'] . ')';
+ }
+
+ return($list);
+}
-<body link="#0000CC" vlink="#0000CC" alink="#0000CC" onload="<?= $jsevents["body"]["onload"] ?>">
-<?php include("fbegin.inc"); ?>
+include("head.inc");
-<script type="text/javascript">
-//<![CDATA[
-// Global Variables
-var rowname = new Array(9999);
-var rowtype = new Array(9999);
-var newrow = new Array(9999);
-var rowsize = new Array(9999);
-for (i = 0; i < 9999; i++) {
- rowname[i] = 'members';
- rowtype[i] = 'select';
- newrow[i] = '';
- rowsize[i] = '30';
+require('classes/Form.class.php');
+
+$form = new Form(new Form_Button(
+ 'Submit',
+ gettext("Save")
+));
+
+$section = new Form_Section('Interface QinQ Edit');
+
+$section->addInput(new Form_Select(
+ 'filterdescriptions',
+ 'Parent interface',
+ $pconfig['if'],
+ build_parent_list()
+))->setHelp('Only QinQ capable interfaces will be shown.');
+
+$section->addInput(new Form_Input(
+ 'tag',
+ 'First level tag',
+ 'number',
+ $pconfig['tag'],
+ ['max' => '4094', 'min' => '1']
+))->setHelp('This is the first level VLAN tag. On top of this are stacked the member VLANs defined below.');
+
+$section->addInput(new Form_Checkbox(
+ 'autogroup',
+ 'Option(s)',
+ 'Adds interface to QinQ interface groups',
+ $pconfig['autogroup']
+))->setHelp('Allows rules to be written more easily');
+
+$section->addInput(new Form_Input(
+ 'descr',
+ 'Description',
+ 'text',
+ $pconfig['descr']
+))->setHelp('You may enter a description here for your reference (not parsed).');
+
+$section->addInput(new Form_StaticText(
+ 'Member(s)',
+ 'You can specify ranges in the inputs below. Enter a range (2-3) or individual numbers.' . '<br />' .
+ 'Click "Duplicate" as many times as needed to add new inputs'
+));
+
+$counter = 0;
+$members = $pconfig['members'];
+
+// DEBUG
+//$members = "666 55555";
+//$members = "";
+
+if ($members != "")
+ $item = explode(" ", $members);
+else
+ $item = array('');
+
+foreach($item as $ww) {
+ $member = $item[$counter];
+
+ $group = new Form_Group($counter == 0 ? 'Tag(s)':'');
+
+ $group->add(new Form_Input(
+ 'members',
+ null,
+ 'text',
+ $ww
+ ));
+
+$counter++;
+
+$group->enableDuplication();
+$section->add($group);
}
-var field_counter_js = 0;
-var loaded = 0;
-var is_streaming_progress_bar = 0;
-var temp_streaming_text = "";
-
-var addRowTo = (function() {
- return (function (tableId) {
- var d, tbody, tr, td, bgc, i, ii, j;
- d = document;
- tbody = d.getElementById(tableId).getElementsByTagName("tbody").item(0);
- tr = d.createElement("tr");
- for (i = 0; i < field_counter_js; i++) {
- td = d.createElement("td");
- td.innerHTML="<input type='hidden' value='" + totalrows +"' name='" + rowname[i] + "_row-" + totalrows + "' /><input size='" + rowsize[i] + "' class='formfld unknown' name='" + rowname[i] + totalrows + "' /> ";
- tr.appendChild(td);
- }
- td = d.createElement("td");
- td.rowSpan = "1";
-
- td.innerHTML = '<a onclick="removeRow(this);return false;" href="#"><img border="0" src="/themes/' + theme + '/images/icons/icon_x.gif" alt="remove" /><\/a>';
- tr.appendChild(td);
- tbody.appendChild(tr);
- totalrows++;
- });
-})();
-
-function removeRow(el) {
- var cel;
- while (el && el.nodeName.toLowerCase() != "tr")
- el = el.parentNode;
-
- if (el && el.parentNode) {
- cel = el.getElementsByTagName("td").item(0);
- el.parentNode.removeChild(el);
- }
+if (isset($id) && $a_qinqs[$id]) {
+ $section->addInput(new Form_Input(
+ 'id',
+ null,
+ 'hidden',
+ $id
+ ));
}
+
+$form->add($section);
- rowname[0] = <?=gettext("members");?>;
- rowtype[0] = "textbox";
- rowsize[0] = "30";
-
- rowname[2] = <?=gettext("detail");?>;
- rowtype[2] = "textbox";
- rowsize[2] = "50";
-//]]>
-</script>
-<input type='hidden' name='members_type' value='textbox' class="formfld unknown" />
-
-<?php if ($input_errors) print_input_errors($input_errors); ?>
-<div id="inputerrors"></div>
-
-<form action="interfaces_qinq_edit.php" method="post" name="iform" id="iform">
-<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="interfaces qinq edit">
- <tr>
- <td colspan="2" valign="top" class="listtopic"><?=gettext("Interface QinQ Edit");?></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("Parent interface");?></td>
- <td width="78%" class="vtable">
- <select name="if" id="if" class="formselect">
- <?php
- foreach ($portlist as $ifn => $ifinfo) {
- if (is_jumbo_capable($ifn)) {
- echo "<option value=\"{$ifn}\"";
- if ($ifn == $pconfig['if'])
- echo " selected=\"selected\"";
- echo ">";
- echo htmlspecialchars($ifn . " (" . $ifinfo['mac'] . ")");
- echo "</option>";
- }
- }
- ?>
- </select>
- <br />
- <span class="vexpl"><?=gettext("Only QinQ capable interfaces will be shown.");?></span></td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><?=gettext("First level tag");?></td>
- <td width="78%" class="vtable">
- <input name="tag" type="text" class="formfld unknown" id="tag" size="10" value="<?=htmlspecialchars($pconfig['tag']);?>" />
- <br />
- <span class="vexpl">
- <?=gettext("This is the first level VLAN tag. On top of this are stacked the member VLANs defined below.");?>
- </span>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Options");?></td>
- <td width="78%" class="vtable">
-<?php /* ?>
- <br />
- <input type="checkbox" value="yes" name="autoassign" id="autoassign" <?php if ($pconfig['autoassign']) echo "checked=\"checked\""; ?> />
- <span class="vexpl"> Auto assign interface so it can be configured with ip etc...</span>
- <br />
- <input type="checkbox" value="yes" name="autoenable" id="autoenable" <?php if ($pconfig['autoenable']) echo "checked=\"checked\""; ?> />
- <span class="vexpl"> Auto enable interface so it can be used on filter rules.</span>
- <br />
- <input type="checkbox" value="yes" name="autoadjustmtu" id="autoadjustmtu" <?php if ($pconfig['autoadjustmtu']) echo "checked=\"checked\""; ?> />
- <span class="vexpl"> Allows to keep clients mtu unchanged(1500). <br />NOTE: if you are using jumbo frames this option is not needed and may produce incorrect results!</span>
-<?php */ ?>
- <br />
- <input name="autogroup" type="checkbox" value="yes" id="autogroup" <?php if ($pconfig['autogroup']) echo "checked=\"checked\""; ?> />
- <span class="vexpl"><?=gettext("Adds interface to QinQ interface groups so you can write filter rules easily.");?></span>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncell"><?=gettext("Description");?></td>
- <td width="78%" class="vtable">
- <input name="descr" type="text" class="formfld unknown" id="descr" size="40" value="<?=htmlspecialchars($pconfig['descr']);?>" />
- <br />
- <span class="vexpl">
- <?=gettext("You may enter a description here for your reference (not parsed).");?>
- </span>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top" class="vncellreq"><div id="membersnetworkport"><?=gettext("Member (s)");?></div></td>
- <td width="78%" class="vtable">
- <span class="vexpl">
- <?=gettext("You can specify ranges in the input below. The format is pretty simple i.e 9-100 or 10.20...");?>
- </span>
- <br />
- <table id="maintable" summary="main table">
- <tbody>
- <tr>
- <td><div id="onecolumn"><?=gettext("Tag");?></div></td>
- </tr>
-
- <?php
- $counter = 0;
- $members = $pconfig['members'];
- if ($members <> "") {
- $item = explode(" ", $members);
- foreach($item as $ww) {
- $member = $item[$counter];
- ?>
- <tr>
- <td class="vtable">
- <input name="members<?php echo $counter; ?>" class="formselect" id="members<?php echo $counter; ?>" value="<?php echo $member;?>" />
- </td>
- <td>
- <a onclick="removeRow(this); return false;" href="#"><img border="0" src="/themes/<?echo $g['theme'];?>/images/icons/icon_x.gif" alt="remove" /></a>
- </td>
- </tr>
-<?php
- $counter++;
-
- } // end foreach
- } // end if
-?>
- </tbody>
- </table>
- <a onclick="javascript:addRowTo('maintable'); return false;" href="#">
- <img border="0" src="/themes/<?= $g['theme']; ?>/images/icons/icon_plus.gif" alt="" title="<?=gettext("add another entry");?>" />
- </a>
- </td>
- </tr>
- <tr>
- <td width="22%" valign="top">&nbsp;</td>
- <td width="78%">
- <input id="submit" name="submit" type="submit" class="formbtn" value="<?=gettext("Save");?>" />
- <a href="interfaces_qinq.php"><input id="cancelbutton" name="cancelbutton" type="button" class="formbtn" value="<?=gettext("Cancel");?>" /></a>
- <?php if (isset($id) && $a_qinqs[$id]): ?>
- <input name="id" type="hidden" value="<?=htmlspecialchars($id);?>" />
- <?php endif; ?>
- </td>
- </tr>
-</table>
-</form>
-
-<script type="text/javascript">
-//<![CDATA[
- field_counter_js = 1;
- rows = 1;
- totalrows = <?php echo $counter; ?>;
- loaded = <?php echo $counter; ?>;
-//]]>
-</script>
-
-<?php include("fend.inc"); ?>
-</body>
-</html>
+print($form);
+
+include("foot.inc");
OpenPOWER on IntegriCloud