summaryrefslogtreecommitdiffstats
path: root/usr/local
diff options
context:
space:
mode:
Diffstat (limited to 'usr/local')
-rwxr-xr-xusr/local/www/interfaces_groups.php11
-rwxr-xr-xusr/local/www/interfaces_groups_edit.php28
2 files changed, 31 insertions, 8 deletions
diff --git a/usr/local/www/interfaces_groups.php b/usr/local/www/interfaces_groups.php
index 09d0b99..3cffab7 100755
--- a/usr/local/www/interfaces_groups.php
+++ b/usr/local/www/interfaces_groups.php
@@ -43,9 +43,14 @@ $a_ifgroups = &$config['ifgroups']['ifgroupentry'];
if ($_GET['act'] == "del") {
if ($a_ifgroups[$_GET['id']]) {
+ $members = explode(" ", $a_ifgroups[$_GET[$id]]);
+ foreach ($members as $ifs) {
+ $realif = get_real_interface($ifs);
+ if ($realif)
+ mwexec("/sbin/ifconfig {$realif} -group " . $a_ifgroups[$_GET[$id]]['ifname']);
+ }
unset($a_ifgroups[$_GET['id']]);
write_config();
- touch($d_ifgroupsdirty_path);
header("Location: interfaces_groups.php");
exit;
}
@@ -93,7 +98,7 @@ include("head.inc");
</td>
<td class="listr" ondblclick="document.location='interfaces_groups_edit.php?id=<?=$i;?>';">
<?php
- $members_arr = array_slice(explode(" ", $ifgroupentry['members']), 0, 10);
+ $members_arr = explode(" ", $ifgroupentry['members']);
$iflist = get_configured_interface_with_descr();
foreach ($members_arr as $memb)
$memberses_arr[] = $iflist[$memb] ? $iflist[$memb] : $memb;
@@ -113,7 +118,7 @@ include("head.inc");
<table border="0" cellspacing="0" cellpadding="1">
<tr>
<td valign="middle"><a href="interfaces_groups_edit.php?id=<?=$i;?>"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_e.gif" width="17" height="17" border="0" title="edit group"></a></td>
- <td><a href="interfaces_ifgroups.php?act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this group? All elements that still use it will become invalid (e.g. filter rules)!')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="delete ifgroupentry"></a></td>
+ <td><a href="interfaces_groups.php?act=del&id=<?=$i;?>" onclick="return confirm('Do you really want to delete this group? All elements that still use it will become invalid (e.g. filter rules)!')"><img src="/themes/<?= $g['theme']; ?>/images/icons/icon_x.gif" width="17" height="17" border="0" title="delete ifgroupentry"></a></td>
</tr>
</table>
</td>
diff --git a/usr/local/www/interfaces_groups_edit.php b/usr/local/www/interfaces_groups_edit.php
index 1044bed..6875885 100755
--- a/usr/local/www/interfaces_groups_edit.php
+++ b/usr/local/www/interfaces_groups_edit.php
@@ -59,9 +59,13 @@ if ($_POST) {
unset($input_errors);
$pconfig = $_POST;
- foreach ($a_ifgroups as $groupentry)
- if ($groupentry['ifname'] == $_POST['ifname'])
- $input_errors[] = "Group name already exists!";
+ if (empty($id)) {
+ foreach ($a_ifgroups as $groupentry)
+ if ($groupentry['ifname'] == $_POST['ifname'])
+ $input_errors[] = "Group name already exists!";
+ }
+ if (preg_match("/([^a-zA-Z])+/", $_POST['ifname'], $match))
+ $input_errors[] = "Only characters in a-z A-Z are allowed as interface name.";
$ifgroupentry = array();
$ifgroupentry['ifname'] = $_POST['ifname'];
@@ -81,13 +85,25 @@ if ($_POST) {
$ifgroupentry['members'] = $members;
$ifgroupentry['descr'] = mb_convert_encoding($_POST['descr'],"HTML-ENTITIES","auto");
- if (isset($id) && $a_ifgroups[$id])
+ 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']);
+ }
+ }
$a_ifgroups[$id] = $ifgroupentry;
- else
+ } else
$a_ifgroups[] = $ifgroupentry;
write_config();
+ interface_group_setup($ifgroupentry);
+
header("Location: interfaces_groups.php");
exit;
} else {
@@ -186,6 +202,8 @@ function removeRow(el) {
<td valign="top" class="vncellreq">Interface</td>
<td class="vtable">
<input class="formfld unknown" name="ifname" id="ifname" value="<?=$pconfig['ifname'];?>" />
+ <br />
+ No numbers or spaces are allowed. Only characters in a-zA-Z
</td>
</tr>
<tr>
OpenPOWER on IntegriCloud