From 1cbe86f032a6dc1480c5b62d1d9a641a29105bac Mon Sep 17 00:00:00 2001 From: Ermal Date: Wed, 9 Feb 2011 21:40:00 +0000 Subject: Fixes #1207. Allow renaming a limiter. Also prevent a limiter to be deleted if it is referenced in filter rules. --- etc/inc/shaper.inc | 24 ++++++++++++++++++++---- usr/local/www/firewall_shaper_vinterface.php | 27 +++++++++++++++++++++------ 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 .= ""; $form .= "
Name"; $form .= ""; - $form .= "GetQname()."\">"; + $form .= "GetQname()."\">"; $form .= ""; $form .= "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 .= ""; $form .= "
Name"; $form .= ""; - $form .= "GetQname()."\">"; + $form .= "GetQname()."\">"; $form .= ""; $form .= "Mask"; 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 .= "

" . $dn_default_shaper_msg."

"; + $dontshow = true; } - header("Location: firewall_shaper_vinterface.php"); - exit; break; case "resetall": foreach ($dummynet_pipe_list as $dn) -- cgit v1.1