"") { /* XXX: Huh, why are we killing php? */ mwexec("killall -9 pfctl php"); exit; } $pgtitle = array("Firewall","Traffic Shaper"); $shaperIFlist = get_configured_interface_with_descr(); read_altq_config(); /* * The whole logic in these code maybe can be specified. * If you find a better way contact me :). */ if ($_GET) { if ($_GET['queue']) $qname = trim($_GET['queue']); if ($_GET['interface']) $interface = trim($_GET['interface']); if ($_GET['action']) $action = $_GET['action']; } if ($_POST) { if ($_POST['name']) $qname = trim($_POST['name']); if ($_POST['interface']) $interface = trim($_POST['interface']); if ($_POST['parentqueue']) $parentqueue = trim($_POST['parentqueue']); } if ($interface) { $altq = $altq_list_queues[$interface]; if ($altq) { $queue =& $altq->find_queue($interface, $qname); } else $addnewaltq = true; } $dontshow = false; $newqueue = false; $output_form = ""; if ($_GET) { switch ($action) { case "delete": if ($queue) { $queue->delete_queue(); write_config(); mark_subsystem_dirty('shaper'); } header("Location: firewall_shaper.php"); exit; break; case "resetall": foreach ($altq_list_queues as $altq) $altq->delete_all(); unset($altq_list_queues); $altq_list_queues = array(); $tree = "
" . $default_shaper_msg."
"; $dontshow = true; break; } } else if ($_POST) { unset($input_errors); if ($addnewaltq) { $altq =& new altq_root_queue(); $altq->SetInterface($interface); switch ($altq->GetBwscale()) { case "Mb": $factor = 1000 * 1000; brak; case "Kb": $factor = 1000; break; case "b": $factor = 1; break; case "Gb": $factor = 1000 * 1000 * 1000; break; case "%": /* We don't use it for root_XXX queues. */ default: /* XXX assume Kb by default. */ $factor = 1000; break; } $altq->SetAvailableBandwidth($altq->GetBandwidth() * $factor); $altq->ReadConfig($_POST); $altq->validate_input($_POST, &$input_errors); if (!$input_errors) { unset($tmppath); $tmppath[] = $altq->GetInterface(); $altq->SetLink(&$tmppath); $altq->wconfig(); write_config(); mark_subsystem_dirty('shaper'); $can_enable = true; $can_add = true; } read_altq_config(); $output_form .= $altq->build_form(); } else if ($parentqueue) { /* Add a new queue */ $qtmp =& $altq->find_queue($interface, $parentqueue); if ($qtmp) { $tmppath =& $qtmp->GetLink(); array_push($tmppath, $qname); $tmp =& $qtmp->add_queue($interface, $_POST, $tmppath, &$input_errors); if (!$input_errors) { array_pop($tmppath); $tmp->wconfig(); $can_enable = true; if ($tmp->CanHaveChildren() && $can_enable) { if ($tmp->GetDefault() <> "") $can_add = false; else $can_add = true; } else $can_add = false; write_config(); mark_subsystem_dirty('shaper'); $can_enable = true; if ($altq->GetScheduler() != "PRIQ") /* XXX */ if ($tmp->GetDefault() <> "") $can_add = false; else $can_add = true; } read_altq_config(); $output_form .= $tmp->build_form(); } else $input_errors[] = "Could not add new queue."; } else if ($_POST['apply']) { write_config(); $retval = 0; $retval = filter_configure(); $savemsg = get_std_save_message($retval); if (stristr($retval, "error") <> true) $savemsg = get_std_save_message($retval); else $savemsg = $retval; /* reset rrd queues */ system("rm -f /var/db/rrd/*queuedrops.rrd"); system("rm -f /var/db/rrd/*queues.rrd"); enable_rrd_graphing(); clear_subsystem_dirty('shaper'); if ($queue) { $output_form .= $queue->build_form(); $dontshow = false; } else { $output_form .= $default_shaper_message; $dontshow = true; } } else if ($queue) { $queue->validate_input($_POST, &$input_errors); if (!$input_errors) { $queue->update_altq_queue_data($_POST); $queue->wconfig(); write_config(); mark_subsystem_dirty('shaper'); $dontshow = false; } read_altq_config(); $output_form .= $queue->build_form(); } else { $output_form .= "" . $default_shaper_msg."
"; $dontshow = true; } } else { $output_form .= "" . $default_shaper_msg."
"; $dontshow = true; } if ($queue) { if ($queue->GetEnabled()) $can_enable = true; else $can_enable = false; if ($queue->CanHaveChildren() && $can_enable) { if ($altq->GetQname() <> $queue->GetQname() && $queue->GetDefault() <> "") $can_add = false; else $can_add = true; } else $can_add = false; } $tree = "