"; $default_layer7shaper_msg .= "

Note:
"; $default_layer7shaper_msg .= "
You can add new layer7 protocol patterns by simply uploading the file here.
"; $default_layer7shaper_msg .= ""; read_layer7_config(); if($_GET['reset'] <> "") { mwexec("killall -9 pfctl php"); mwexec("killall -9 ipfw-classifyd"); //kill all ipfw-classifyd processes exit; } if ($_GET) { if ($_GET['container']) $name = trim($_GET['container']); if ($_GET['action']) $action = $_GET['action']; } if($_POST) { if ($_POST['container']) { $name = trim($_POST['container']); } } if ($name) { //Get the object from the 7rules list $container = $layer7_rules_list[$name]; } if ($_GET) { switch ($action) { case "add": $show_proto_form = true; $container = new layer7(); $output_form .= $container->build_form(); //constructs the graphical interface on the right side unset($container); break; case "show": $show_proto_form = true; if($container) { $output_form .= $container->build_form(); } else { $show_proto_form = false; $input_errors[] = "Layer7 Rules Container not found!"; } break; default: echo log_error("Get default"); $show_proto_form = false; $output_form .= "

" . $dn_default_shaper_msg . $default_layer7shaper_msg . "

"; break; } } //add a new l7rules container else if ($_POST) { $show_proto_form = true; unset($input_errors); if($_POST['submit']) { $l7r =& new layer7(); $_POST['divert_port'] = $l7r->gen_divert_port(); for($i=0; $_POST['protocol'][$i] <> ""; $i++) { $_POST['l7rules'][$i]['protocol'] = $_POST['protocol'][$i]; $_POST['l7rules'][$i]['structure'] = $_POST['structure'][$i]; $_POST['l7rules'][$i]['behaviour'] = $_POST['behaviour'][$i]; } $l7r->validate_input($_POST,&$input_errors); $l7r->ReadConfig($_POST['container'], $_POST); //Before writing the results, we need to test for repeated protocols $non_dupes = array(); $dupes = array(); for($j=0; $j<$i; $j++) { if(!$non_dupes[$_POST['protocol'][$j]]) $non_dupes[$_POST['protocol'][$j]] = true; else $dupes[] = $_POST['protocol'][$j]; } unset($non_dupes); if(sizeof($dupes) == 0 && !$input_errors) { $l7r->wconfig(); write_config(); mark_subsystem_dirty('shaper'); read_layer7_config(); } else { if(sizeof($dupes) > 0) { $dupe_error = "Found the following repeated protocol definitions: "; foreach($dupes as $dupe) $dupe_error .= "$dupe "; $input_errors[] .= $dupe_error; } } unset($dupes); unset($dupe_error); //Even if there are repeated protocols, we won't loose any previous values //The user will be able to solve the situation $output_form .= $l7r->build_form(); //Necessary to correctly build the proto form $container = $layer7_rules_list[$name]; if($input_errors) $container =& $l7r; } 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; clear_subsystem_dirty('shaper'); if($container) { $output_form .= $container->build_form(); } else { $show_proto_form = false; $output_form .= "

" . $dn_default_shaper_msg . $default_layer7shaper_msg . "

"; } } else if ($_POST['delete']) { $container->delete_l7c(); write_config(); mark_subsystem_dirty('shaper'); unset($container); header("Location: firewall_shaper_layer7.php"); exit; } else { $show_proto_form = false; } } else { $show_proto_form = false; $output_form .= "

" . $dn_default_shaper_msg . $default_layer7shaper_msg . "

"; } // Builds the left tree $tree = ""; $output = "
"; $output .= $output_form; include("head.inc"); ?>

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


Create new l7 rules group
Rule(s)
rsets as $l7rule) { ?>
Add one or more rules
Protocol
Structure
Behaviour
GetRStructure() == "queue"): ?> GetRStructure() == "limiter"): ?>