diff options
Diffstat (limited to 'src/usr/local/www')
-rw-r--r-- | src/usr/local/www/services_igmpproxy_edit.php | 145 |
1 files changed, 57 insertions, 88 deletions
diff --git a/src/usr/local/www/services_igmpproxy_edit.php b/src/usr/local/www/services_igmpproxy_edit.php index 9135a0b..d417af8 100644 --- a/src/usr/local/www/services_igmpproxy_edit.php +++ b/src/usr/local/www/services_igmpproxy_edit.php @@ -93,27 +93,6 @@ if (isset($id) && $a_igmpproxy[$id]) { $pconfig['descr'] = html_entity_decode($a_igmpproxy[$id]['descr']); } -// Add a row to the network table -if($_GET['act'] && $_GET['act'] == 'addrow') - $pconfig['address'] .= '/32'; - -// Remove a row from the network table -if($_GET['act'] && $_GET['act'] == 'delrow') { - $row = $_GET['row']; - - $addresses = explode(" ", $pconfig['address']); - - $pconfig['address'] = ""; - - $idx = 0; - foreach($addresses as $address) { - if($idx != $row) - $pconfig['address'] .= ($idx > 0 ? ' ':null) . $address; - - $idx++; - } -} - if ($_POST) { unset($input_errors); $pconfig = $_POST; @@ -123,6 +102,7 @@ if ($_POST) { if (isset($id) && $id == $pid) { continue; } + if ($proxyentry['type'] == "upstream" && $proxyentry['ifname'] != $_POST['interface']) { $input_errors[] = gettext("Only one 'upstream' interface can be configured."); } @@ -135,16 +115,19 @@ if ($_POST) { $igmpentry['type'] = $_POST['type']; $address = ""; $isfirst = 0; + /* item is a normal igmpentry type */ - for ($x = 0; $x < 4999; $x++) { - if ($_POST["address{$x}"] <> "") { - if ($isfirst > 0) { - $address .= " "; - } - $address .= $_POST["address{$x}"]; - $address .= "/" . $_POST["address_subnet{$x}"]; - $isfirst++; + $x = 0; + while($_POST["address{$x}"]) { + + if ($isfirst > 0) { + $address .= " "; } + + $address .= $_POST["address{$x}"]; + $address .= "/" . $_POST["address_subnet{$x}"]; + $isfirst++; + $x++; } if (!$input_errors) { @@ -177,7 +160,7 @@ if ($input_errors) require_once('classes/Form.class.php'); -// These two inputs appear inthe original file. Don't know what they are for +// These two inputs appear in the original file. Don't know what they are for // but they are here just in case. $h1 = new Form_Input( @@ -248,65 +231,51 @@ if (isset($id) && $a_igmpproxy[$id]){ $counter = 0; $address = $pconfig['address']; -if ($address != "") { - $item = explode(" ", $address); - $rows = count($item) -1; - foreach($item as $ww) { - $address = $item[$counter]; - $address_subnet = ""; - $item2 = explode("/", $address); - foreach($item2 as $current) { - if($item2[1] != "") { - $address = $item2[0]; - $address_subnet = $item2[1]; - } +//if ($address == "") { +// $address = "/"; +//} + +$item = explode(" ", $address); +$rows = count($item) -1; + +foreach($item as $ww) { + $address = $item[$counter]; + $address_subnet = ""; + $item2 = explode("/", $address); + + foreach($item2 as $current) { + if($item2[1] != "") { + $address = $item2[0]; + $address_subnet = $item2[1]; } - $item4 = $item3[$counter]; - $tracker = $counter; - - $group = new Form_group($tracker == 0? 'Network':null); - - $group->add(new Form_Input( - 'address' . $tracker, - null, - 'text', - $address, - ['placeholder' => 'Address'] - ))->sethelp($tracker == $rows ? 'Network':null); - - $group->add(new Form_Select( - 'ifname', - 'Interface', - $address_subnet, - array_combine(range(32, 1, -1), range(32, 1, -1)) - ))->sethelp($tracker == $rows ? 'CIDR':null);; - - $btndel = new Form_Button ( - 'removerow', - 'Remove', - 'services_igmpproxy_edit.php?act=delrow&row=' . $tracker - ); - - $btndel->removeClass('btn-primary')->addClass('btn-danger btn-sm'); - $group->add($btndel); - - $counter++; - $section->add($group); - } // end foreach -} // end if - -$btnadd = new Form_Button ( - 'addrow', - 'Add Network', - 'services_igmpproxy_edit.php?act=addrow' - ); - -$btnadd->removeClass('btn-primary')->addClass('btn-success btn-sm'); - -$section->addInput(new Form_StaticText( - null, - $btnadd . ' (Save after each Add or Delete)' -)); + } + + $item4 = $item3[$counter]; + $tracker = $counter; + + $group = new Form_group($tracker == 0? 'Networks':null); + $group->addClass("repeatable"); + + $group->add(new Form_IpAddress( + 'address' . $tracker, + null, + $address, + ['placeholder' => 'Address'] + ))->sethelp($tracker == $rows ? 'Network/CIDR':null)->addMask('address_subnet' . $tracker, $address_subnet)->setWidth(4)->setPattern('[0-9, a-z, A-Z and .'); + + $group->add(new Form_Button( + 'deleterow' . $counter, + 'Delete' + ))->removeClass('btn-primary')->addClass('btn-warning'); + + $counter++; + $section->add($group); +} // end foreach + +$section->addInput(new Form_Button( + 'addrow', + 'Add network' +))->removeClass('btn-primary')->addClass('btn-success addbtn'); $form->add($section); |