$gdescr) { if ($gdescr == $_POST['ifname'] || $gif == $_POST['ifname']) { $input_errors[] = "The specified group name is already used by an interface. Please choose another name."; } } if (isset($_POST['members'])) { $members = implode(" ", $_POST['members']); } else { $members = ""; } if (!$input_errors) { $ifgroupentry = array(); $ifgroupentry['members'] = $members; $ifgroupentry['descr'] = $_POST['descr']; // Edit group name if (isset($id) && $a_ifgroups[$id] && $_POST['ifname'] != $a_ifgroups[$id]['ifname']) { if (!empty($config['filter']) && is_array($config['filter']['rule'])) { foreach ($config['filter']['rule'] as $ridx => $rule) { if (isset($rule['floating'])) { $rule_ifs = explode(",", $rule['interface']); $rule_changed = false; foreach ($rule_ifs as $rule_if_id => $rule_if) { if ($rule_if == $a_ifgroups[$id]['ifname']) { $rule_ifs[$rule_if_id] = $_POST['ifname']; $rule_changed = true; } } if ($rule_changed) { $config['filter']['rule'][$ridx]['interface'] = implode(",", $rule_ifs); } } else { if ($rule['interface'] == $a_ifgroups[$id]['ifname']) { $config['filter']['rule'][$ridx]['interface'] = $_POST['ifname']; } } } } if (!empty($config['nat']) && is_array($config['nat']['rule'])) { foreach ($config['nat']['rule'] as $ridx => $rule) { if ($rule['interface'] == $a_ifgroups[$id]['ifname']) { $config['nat']['rule'][$ridx]['interface'] = $_POST['ifname']; } } } $omembers = explode(" ", $a_ifgroups[$id]['members']); if (count($omembers) > 0) { foreach ($omembers as $ifs) { $realif = get_real_interface($ifs); if ($realif) { mwexec("/sbin/ifconfig {$realif} -group " . $a_ifgroups[$id]['ifname']); } } } $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[$id] = $ifgroupentry; // Edit old group } else if (isset($id) && $a_ifgroups[$id]) { $omembers = explode(" ", $a_ifgroups[$id]['members']); $nmembers = explode(" ", $members); $delmembers = array_diff($omembers, $nmembers); if (count($delmembers) > 0) { foreach ($delmembers as $ifs) { $realif = get_real_interface($ifs); if ($realif) { mwexec("/sbin/ifconfig {$realif} -group " . $a_ifgroups[$id]['ifname']); } } } $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[$id] = $ifgroupentry; // Create new group } else { $ifgroupentry['ifname'] = $_POST['ifname']; $a_ifgroups[] = $ifgroupentry; } write_config(); interface_group_setup($ifgroupentry); header("Location: interfaces_groups.php"); exit; } else { $pconfig['descr'] = $_POST['descr']; $pconfig['members'] = $members; } } include("head.inc"); if ($input_errors) { print_input_errors($input_errors); } ?>
addInput(new Form_Input( 'ifname', 'Group Name', 'text', $pconfig['ifname'], ['placeholder' => 'Group Name'] ))->setWidth(6)->setHelp('No numbers or spaces are allowed. '. 'Only characters: a-zA-Z'); $section->addInput(new Form_Input( 'descr', 'Group Description', 'text', $pconfig['descr'], ['placeholder' => 'Group Description'] ))->setWidth(6)->setHelp('A group description may be entered '. 'here for administrative reference (not parsed).'); $section->addInput(new Form_Select( 'members', 'Group Members', explode(' ', $pconfig['members']), $interface_list, true ))->setWidth(6)->setHelp('NOTE: Rules for WAN type '. 'interfaces in groups do not contain the reply-to mechanism upon which '. 'Multi-WAN typically relies. '. 'More Information'); if (isset($id) && $a_ifgroups[$id]) { $form->addGlobal(new Form_Input( 'id', 'id', 'hidden', $id )); } $form->add($section); print $form; unset($interface_list); unset($interface_list_disabled); include("foot.inc"); ?>