summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorErmal <eri@pfsense.org>2011-02-09 21:40:00 +0000
committerErmal <eri@pfsense.org>2011-02-09 21:41:10 +0000
commit1cbe86f032a6dc1480c5b62d1d9a641a29105bac (patch)
treedd8caaf968d05c6fa5e5e2dd6b38378f0a1fe241
parentdabcf28c6af506268941d2612d738815247e9fb8 (diff)
downloadpfsense-1cbe86f032a6dc1480c5b62d1d9a641a29105bac.zip
pfsense-1cbe86f032a6dc1480c5b62d1d9a641a29105bac.tar.gz
Fixes #1207. Allow renaming a limiter. Also prevent a limiter to be deleted if it is referenced in filter rules.
-rw-r--r--etc/inc/shaper.inc24
-rw-r--r--usr/local/www/firewall_shaper_vinterface.php27
2 files changed, 41 insertions, 10 deletions
diff --git a/etc/inc/shaper.inc b/etc/inc/shaper.inc
index 85bae2b..6734f80 100644
--- a/etc/inc/shaper.inc
+++ b/etc/inc/shaper.inc
@@ -2877,7 +2877,13 @@ class dnpipe_class extends dummynet_class {
}
function ReadConfig(&$q) {
- $this->SetQname($q['name']);
+ if (!empty($q['name']) && !empty($q['newname']) && $q['name'] != $q['newname']) {
+ $this->SetQname($q['newname']);
+ } else if (!empty($q['newname'])) {
+ $this->SetQname($q['newname']);
+ } else {
+ $this->SetQname($q['name']);
+ }
$this->SetNumber($q['number']);
if (isset($q['bandwidth']) && $q['bandwidth'] <> "") {
$this->SetBandwidth($q['bandwidth']);
@@ -2983,7 +2989,9 @@ class dnpipe_class extends dummynet_class {
$form .= "</td></tr>";
$form .= "<tr><td valign=\"center\" class=\"vncellreq\"><br><span class=\"vexpl\">Name</span></td>";
$form .= "<td class=\"vncellreq\">";
- $form .= "<input type=\"text\" id=\"name\" name=\"name\" value=\"";
+ $form .= "<input type=\"text\" id=\"newname\" name=\"newname\" value=\"";
+ $form .= $this->GetQname()."\">";
+ $form .= "<input type=\"hidden\" id=\"name\" name=\"name\" value=\"";
$form .= $this->GetQname()."\">";
$form .= "</td></tr>";
$form .= "<tr><td valign=\"center\" class=\"vncellreq\">Bandwidth";
@@ -3164,7 +3172,13 @@ class dnqueue_class extends dummynet_class {
}
function ReadConfig(&$q) {
- $this->SetQname($q['name']);
+ if (!empty($q['name']) && !empty($q['newname']) && $q['name'] != $q['newname']) {
+ $this->SetQname($q['newname']);
+ } else if (!empty($q['newname'])) {
+ $this->SetQname($q['newname']);
+ } else {
+ $this->SetQname($q['name']);
+ }
$this->SetNumber($q['number']);
if (isset($q['qlimit']) && $q['qlimit'] <> "")
$this->SetQlimit($q['qlimit']);
@@ -3236,7 +3250,9 @@ class dnqueue_class extends dummynet_class {
$form .= "</td></tr>";
$form .= "<tr><td valign=\"center\" class=\"vncellreq\"><br><span class=\"vexpl\">Name</span></td>";
$form .= "<td class=\"vncellreq\">";
- $form .= "<input type=\"text\" id=\"name\" name=\"name\" value=\"";
+ $form .= "<input type=\"text\" id=\"newname\" name=\"newname\" value=\"";
+ $form .= $this->GetQname()."\">";
+ $form .= "<input type=\"hidden\" id=\"name\" name=\"name\" value=\"";
$form .= $this->GetQname()."\">";
$form .= "</td></tr>";
$form .= "<tr><td valign=\"center\" class=\"vncellreq\">Mask</td>";
diff --git a/usr/local/www/firewall_shaper_vinterface.php b/usr/local/www/firewall_shaper_vinterface.php
index 865f048..5222771 100644
--- a/usr/local/www/firewall_shaper_vinterface.php
+++ b/usr/local/www/firewall_shaper_vinterface.php
@@ -71,10 +71,12 @@ if ($_GET) {
if ($_POST) {
if ($_POST['name'])
$qname = htmlspecialchars(trim($_POST['name']));
+ else if ($_POST['newname'])
+ $qname = htmlspecialchars(trim($_POST['name']));
if ($_POST['pipe'])
$pipe = htmlspecialchars(trim($_POST['pipe']));
else
- $pipe = htmlspecialchars(trim($_POST['name']));
+ $pipe = htmlspecialchars(trim($qname));
if ($_POST['parentqueue'])
$parentqueue = htmlspecialchars(trim($_POST['parentqueue']));
}
@@ -94,12 +96,25 @@ if ($_GET) {
switch ($action) {
case "delete":
if ($queue) {
- $queue->delete_queue();
- write_config();
- mark_subsystem_dirty('shaper');
+ if (is_array($config['filter']['rule'])) {
+ foreach ($config['filter']['rule'] as $rule) {
+ if ($rule['dnpipe'] == $queue->GetNumber() || $rule['pdnpipe'] == $queue->GetNumber())
+ $input_errors[] = gettext("This pipe/queue is referenced in filter rules, please remove references from there before deleteing.");
+ }
+ }
+ if (!$input_errors) {
+ $queue->delete_queue();
+ write_config();
+ mark_subsystem_dirty('shaper');
+ header("Location: firewall_shaper_vinterface.php");
+ exit;
+ }
+ $output_form .= $queue->build_form();
+ } else {
+ $input_errors[] = gettext("No queue with name {$qname} was found!");
+ $output_form .= "<p class=\"pgtitle\">" . $dn_default_shaper_msg."</p>";
+ $dontshow = true;
}
- header("Location: firewall_shaper_vinterface.php");
- exit;
break;
case "resetall":
foreach ($dummynet_pipe_list as $dn)
OpenPOWER on IntegriCloud