find_queue($pipe, $qname); } else { $addnewpipe = true; } } $dontshow = false; $newqueue = false; $output_form = ""; if ($_GET) { switch ($action) { case "delete": if ($queue) { if (is_array($config['filter']['rule'])) { foreach ($config['filter']['rule'] as $rule) { if ($rule['dnpipe'] == $queue->GetQname() || $rule['pdnpipe'] == $queue->GetQname()) { $input_errors[] = gettext("This pipe/queue is referenced in filter rules, please remove references from there before deleting."); } } } if (!$input_errors) { $queue->delete_queue(); if (write_config()) { mark_subsystem_dirty('shaper'); } header("Location: firewall_shaper_vinterface.php"); exit; } $sform= $queue->build_form(); } else { $input_errors[] = sprintf(gettext("No queue with name %s was found!"), $qname); $output_form .= $dn_default_shaper_msg; $dontshow = true; } break; case "resetall": foreach ($dummynet_pipe_list as $dn) { $dn->delete_queue(); } unset($dummynet_pipe_list); $dummynet_pipe_list = array(); unset($config['dnshaper']['queue']); unset($queue); unset($pipe); $can_add = false; $can_enable = false; $dontshow = true; foreach ($config['filter']['rule'] as $key => $rule) { if (isset($rule['dnpipe'])) { unset($config['filter']['rule'][$key]['dnpipe']); } if (isset($rule['pdnpipe'])) { unset($config['filter']['rule'][$key]['pdnpipe']); } } if (write_config()) { $retval = 0; $retval = filter_configure(); if (stristr($retval, "error") != true) { $savemsg = get_std_save_message($retval); $class = 'success'; } else { $savemsg = $retval; $class = 'danger'; } } else { $savemsg = gettext("Unable to write config.xml (Access Denied?)."); $class = 'danger'; } $dfltmsg = true; break; case "add": if ($dnpipe) { $q = new dnqueue_class(); $q->SetPipe($pipe); } else if ($addnewpipe) { $q = new dnpipe_class(); $q->SetQname($pipe); } else { $input_errors[] = gettext("Could not create new queue/discipline!"); } if ($q) { $sform = $q->build_form(); if ($dnpipe) { $sform->addGlobal(new Form_Input( 'parentqueue', null, 'hidden', $pipe )); } $newjavascript = $q->build_javascript(); unset($q); $newqueue = true; } break; case "show": if ($queue) { $sform = $queue->build_form(); } else { $input_errors[] = gettext("Queue not found!"); } break; case "enable": if ($queue) { $queue->SetEnabled("on"); $sform = $queue->build_form(); $queue->wconfig(); if (write_config()) { mark_subsystem_dirty('shaper'); } } else { $input_errors[] = gettext("Queue not found!"); } break; case "disable": if ($queue) { $queue->SetEnabled(""); $sform = $queue->build_form(); $queue->wconfig(); if (write_config()) { mark_subsystem_dirty('shaper'); } } else { $input_errors[] = gettext("Queue not found!"); } break; default: $dfltmsg = true; $dontshow = true; break; } } if ($_POST) { unset($input_errors); if ($addnewpipe) { if (!empty($dummynet_pipe_list[$qname])) { $input_errors[] = gettext("A child queue cannot be named the same as a parent limiter."); } else { $dnpipe =& new dnpipe_class(); $dnpipe->ReadConfig($_POST); $dnpipe->validate_input($_POST, $input_errors); if (!$input_errors) { $number = dnpipe_find_nextnumber(); $dnpipe->SetNumber($number); unset($tmppath); $tmppath[] = $dnpipe->GetQname(); $dnpipe->SetLink($tmppath); $dnpipe->wconfig(); if (write_config()) { mark_subsystem_dirty('shaper'); } $can_enable = true; $can_add = true; } read_dummynet_config(); $sform = $dnpipe->build_form(); $newjavascript = $dnpipe->build_javascript(); } } else if ($parentqueue) { /* Add a new queue */ if (!empty($dummynet_pipe_list[$qname])) { $input_errors[] = gettext("A child queue cannot be named the same as a parent limiter."); } else if ($dnpipe) { $tmppath =& $dnpipe->GetLink(); array_push($tmppath, $qname); $tmp =& $dnpipe->add_queue($pipe, $_POST, $tmppath, $input_errors); if (!$input_errors) { array_pop($tmppath); $tmp->wconfig(); if (write_config()) { $can_enable = true; $can_add = false; mark_subsystem_dirty('shaper'); } } read_dummynet_config(); $sform = $tmp->build_form(); } else { $input_errors[] = gettext("Could not add new queue."); } } else if ($_POST['apply']) { write_config(); $retval = 0; $retval = filter_configure(); if (stristr($retval, "error") != true) { $savemsg = get_std_save_message($retval); $class = 'success'; } else { $savemsg = $retval; $class = 'danger'; } /* XXX: TODO Make dummynet pretty graphs */ // enable_rrd_graphing(); clear_subsystem_dirty('shaper'); if ($queue) { $sform = $queue->build_form(); $dontshow = false; } else { $output_form .= $dn_default_shaper_message; $dontshow = true; } } else if ($queue) { $queue->validate_input($_POST, $input_errors); if (!$input_errors) { $queue->update_dn_data($_POST); $queue->wconfig(); if (write_config()) { mark_subsystem_dirty('shaper'); } $dontshow = false; } read_dummynet_config(); $sform = $queue->build_form(); } else { $dfltmsg = true; $dontshow = true; } } if (!$_POST && !$_GET) { $dfltmsg = true; $dontshow = true; } if ($queue) { if ($queue->GetEnabled()) { $can_enable = true; } else { $can_enable = false; } if ($queue->CanHaveChildren()) { $can_add = true; } else { $can_add = false; } } $tree = ""; $output = ""; $output .= $output_form; include("head.inc"); ?> build_javascript(); } else { echo $newjavascript; } if ($input_errors) { print_input_errors($input_errors); } if ($savemsg) { print_info_box($savemsg, $class); } if (is_subsystem_dirty('shaper')) { print_apply_box(gettext("The traffic shaper configuration has been changed.") . "
" . gettext("The changes must be applied for them to take effect.")); } $tab_array = array(); $tab_array[] = array(gettext("By Interface"), false, "firewall_shaper.php"); $tab_array[] = array(gettext("By Queue"), false, "firewall_shaper_queues.php"); $tab_array[] = array(gettext("Limiters"), true, "firewall_shaper_vinterface.php"); $tab_array[] = array(gettext("Wizards"), false, "firewall_shaper_wizards.php"); display_top_tabs($tab_array); ?>
GetQname() . '&action=add'; } else { $url = 'firewall_shaper_vinterface.php?pipe='. $pipe . '&action=add'; } $sform->addGlobal(new Form_Button( 'add', 'Add new Queue', $url, 'fa-plus' ))->addClass('btn-success'); } if ($action != "add") { if ($queue) { $url = 'firewall_shaper_vinterface.php?pipe='. $pipe . '&queue=' . $queue->GetQname() . '&action=delete'; } else { $url = 'firewall_shaper_vinterface.php?pipe='. $pipe . '&action=delete'; } $sform->addGlobal(new Form_Button( 'delete', ($queue && ($qname != $pipe)) ? 'Delete this queue':'Delete Limiter', $url, 'fa-trash' ))->addClass('btn-danger'); } } // Print the form if ($sform) { $sform->setAction("firewall_shaper_vinterface.php"); print($sform); } } ?>