"") { /* XXX: Huh, why are we killing php? */ mwexec("killall -9 pfctl php"); exit; } $pgtitle = array(gettext("Firewall"), gettext("Traffic Shaper")); $shortcut_section = "trafficshaper"; $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 = htmlspecialchars(trim($_GET['queue'])); } if ($_GET['interface']) { $interface = htmlspecialchars(trim($_GET['interface'])); } if ($_GET['action']) { $action = htmlspecialchars($_GET['action']); } } if ($_POST) { if ($_POST['name']) { $qname = htmlspecialchars(trim($_POST['name'])); } if ($_POST['interface']) { $interface = htmlspecialchars(trim($_POST['interface'])); } if ($_POST['parentqueue']) { $parentqueue = htmlspecialchars(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(); if (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 = ""; unset($config['shaper']['queue']); unset($queue); unset($altq); $can_add = false; $can_enable = false; $dontshow = true; foreach ($config['filter']['rule'] as $key => $rule) { if (isset($rule['wizard']) && $rule['wizard'] == "yes") { unset($config['filter']['rule'][$key]); } } if (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; } } else { $savemsg = gettext("Unable to write config.xml (Access Denied?)"); } $output_form = $default_shaper_message; break; case "add": /* XXX: Find better way because we shouldn't know about this */ if ($altq) { switch ($altq->GetScheduler()) { case "PRIQ": $q = new priq_queue(); break; case "FAIRQ": $q = new fairq_queue(); break; case "HFSC": $q = new hfsc_queue(); break; case "CBQ": $q = new cbq_queue(); break; default: /* XXX: Happens when sched == NONE?! */ $q = new altq_root_queue(); break; } } else if ($addnewaltq) { $q = new altq_root_queue(); } else { $input_errors[] = gettext("Could not create new queue/discipline!"); } if ($q) { $q->SetInterface($interface); $output_form .= $q->build_form(); $output_form .= ""; $newjavascript = $q->build_javascript(); unset($q); $newqueue = true; } break; case "show": if ($queue) { $output_form .= $queue->build_form(); } else { $input_errors[] = gettext("Queue not found!"); } break; case "enable": if ($queue) { $queue->SetEnabled("on"); $output_form .= $queue->build_form(); if (write_config()) { mark_subsystem_dirty('shaper'); } } else { $input_errors[] = gettext("Queue not found!"); } break; case "disable": if ($queue) { $queue->SetEnabled(""); $output_form .= $queue->build_form(); if (write_config()) { mark_subsystem_dirty('shaper'); } } else { $input_errors[] = gettext("Queue not found!"); } break; default: $output_form .= $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(); if (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; } if (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[] = gettext("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(); if (write_config()) { mark_subsystem_dirty('shaper'); } $dontshow = false; } read_altq_config(); $output_form .= $queue->build_form(); } else { $output_form .= $default_shaper_msg; $dontshow = true; } mwexec("killall qstats"); } 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 = ""; if (!$dontshow || $newqueue) { $output_form .= ""; $output_form .= "
" . gettext("Queue Actions") . "
"; $output_form .= "
"; $output_form .= ""; if ($can_add || $addnewaltq) { $output_form .= "GetQname(); } $output_form .= "&action=add\">"; $output_form .= ""; $output_form .= ""; } $output_form .= ""; $output_form .= ""; } else { $output_form .= " value=\"" . gettext("Disable shaper on interface") . "\" />"; } $output_form .= ""; $output_form .= "
"; $output_form .= ""; } else { $output_form .= ""; } $output = ""; $output .= $output_form; //$pgtitle = "Firewall: Shaper: By Interface View"; $closehead = false; include("head.inc"); ?> build_javascript(); } echo $newjavascript; include("fbegin.inc"); ?>

".gettext("You must apply the changes in order for them to take effect."));?>