"") { /* XXX: Huh, why are we killing php? */ mwexec("/usr/bin/killall -9 pfctl php"); exit; } $pgtitle = array("Firewall","Traffic Shaper", "Limiter"); read_dummynet_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['pipe']) $pipe = trim($_GET['pipe']); if ($_GET['action']) $action = $_GET['action']; } if ($_POST) { if ($_POST['name']) $qname = trim($_POST['name']); if ($_POST['pipe']) $pipe = trim($_POST['pipe']); else $pipe = trim($_POST['name']); if ($_POST['parentqueue']) $parentqueue = trim($_POST['parentqueue']); } if ($pipe) { $dnpipe = $dummynet_pipe_list[$pipe]; if ($dnpipe) { $queue =& $dnpipe->find_queue($pipe, $qname); } else $addnewpipe = 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_vinterface.php"); exit; 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']); } 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; $output_form = $dn_default_shaper_message; break; case "add": if ($dnpipe) { $q = new dnqueue_class(); $q->SetPipe($pipe); $output_form .= ""; } else if ($addnewpipe) { $q = new dnpipe_class(); $q->SetQname($pipe); } else $input_errors[] = "Could not create new queue/discipline!"; if ($q) { $output_form .= $q->build_form(); unset($q); $newqueue = true; } break; case "show": if ($queue) $output_form .= $queue->build_form(); else $input_errors[] = "Queue not found!"; break; case "enable": if ($queue) { $queue->SetEnabled("on"); $output_form .= $queue->build_form(); write_config(); mark_subsystem_dirty('shaper'); } else $input_errors[] = "Queue not found!"; break; case "disable": if ($queue) { $queue->SetEnabled(""); $output_form .= $queue->build_form(); write_config(); mark_subsystem_dirty('shaper'); } else $input_errors[] = "Queue not found!"; break; default: $output_form .= "
" . $dn_default_shaper_msg."
"; $dontshow = true; break; } } else if ($_POST) { unset($input_errors); if ($addnewpipe) { $dnpipe =& new dnpipe_class(); $dnpipe->ReadConfig($_POST); $dnpipe->validate_input($_POST, &$input_errors); if (!$input_errors) { unset($tmppath); $tmppath[] = $dnpipe->GetQname(); $dnpipe->SetLink(&$tmppath); $dnpipe->wconfig(); write_config(); mark_subsystem_dirty('shaper'); $can_enable = true; $can_add = true; } read_dummynet_config(); $output_form .= $dnpipe->build_form(); } else if ($parentqueue) { /* Add a new queue */ 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(); write_config(); $can_enable = true; $can_add = false; mark_subsystem_dirty('shaper'); $can_enable = true; } read_dummynet_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; /* XXX: TODO Make dummynet pretty graphs */ // enable_rrd_graphing(); clear_subsystem_dirty('shaper'); if ($queue) { $output_form .= $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(); write_config(); mark_subsystem_dirty('shaper'); $dontshow = false; } read_dummynet_config(); $output_form .= $queue->build_form(); } else { $output_form .= "" . $dn_default_shaper_msg."
"; $dontshow = true; } } else { $output_form .= "" . $dn_default_shaper_msg."
"; $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 = "