"engine_{$eng_id}", "bind_to" => "", "personality" => "IDS", "request-body-limit" => "4096", "response-body-limit" => "4096", "double-decode-path" => "no", "double-decode-query" => "no" ); // See if this is initial entry and set to "default" if true if ($eng_id < 1) { $def['name'] = "default"; $def['bind_to'] = "all"; } $pconfig = $def; } else { $pconfig = $a_nat[$eng_id]; // Check for any empty values and set sensible defaults if (empty($pconfig['personality'])) $pconfig['personality'] = "IDS"; } if ($_POST['Cancel']) { header("Location: /suricata/suricata_app_parsers.php?id={$id}"); exit; } // Check for returned "selected alias" if action is import if ($_GET['act'] == "import") { if ($_GET['varname'] == "bind_to" && !empty($_GET['varvalue'])) $pconfig[$_GET['varname']] = $_GET['varvalue']; } if ($_POST['Submit']) { /* Grab all the POST values and save in new temp array */ $engine = array(); if ($_POST['policy_name']) { $engine['name'] = trim($_POST['policy_name']); } else { $engine['name'] = "default"; } if ($_POST['policy_bind_to']) { if (is_alias($_POST['policy_bind_to'])) $engine['bind_to'] = $_POST['policy_bind_to']; elseif (strtolower(trim($_POST['policy_bind_to'])) == "all") $engine['bind_to'] = "all"; else $input_errors[] = gettext("You must provide a valid Alias or the reserved keyword 'all' for the 'Bind-To IP Address' value."); } else { $input_errors[] = gettext("The 'Bind-To IP Address' value cannot be blank. Provide a valid Alias or the reserved keyword 'all'."); } if ($_POST['personality']) { $engine['personality'] = $_POST['personality']; } else { $engine['personality'] = "IDS"; } if (is_numeric($_POST['req_body_limit']) && $_POST['req_body_limit'] >= 0) $engine['request-body-limit'] = $_POST['req_body_limit']; else $input_errors[] = gettext("The value for 'Request Body Limit' must be all numbers and greater than or equal to zero."); if (is_numeric($_POST['resp_body_limit']) && $_POST['resp_body_limit'] >= 0) $engine['response-body-limit'] = $_POST['resp_body_limit']; else $input_errors[] = gettext("The value for 'Response Body Limit' must be all numbers and greater than or equal to zero."); if ($_POST['enable_double_decode_path']) { $engine['double-decode-path'] = 'yes'; }else{ $engine['double-decode-path'] = 'no'; } if ($_POST['enable_double_decode_query']) { $engine['double-decode-query'] = 'yes'; }else{ $engine['double-decode-query'] = 'no'; } /* Can only have one "all" Bind_To address */ if ($engine['bind_to'] == "all" && $engine['name'] <> "default") { $input_errors[] = gettext("Only one default HTTP Server Policy Engine can be bound to all addresses."); $pconfig = $engine; } /* if no errors, write new entry to conf */ if (!$input_errors) { if (isset($eng_id) && $a_nat[$eng_id]) { $a_nat[$eng_id] = $engine; } else $a_nat[] = $engine; /* Reorder the engine array to ensure the */ /* 'bind_to=all' entry is at the bottom */ /* if it contains more than one entry. */ if (count($a_nat) > 1) { $i = -1; foreach ($a_nat as $f => $v) { if ($v['bind_to'] == "all") { $i = $f; break; } } /* Only relocate the entry if we */ /* found it, and it's not already */ /* at the end. */ if ($i > -1 && ($i < (count($a_nat) - 1))) { $tmp = $a_nat[$i]; unset($a_nat[$i]); $a_nat[] = $tmp; } } /* Now write the new engine array to conf */ write_config(); header("Location: /suricata/suricata_app_parsers.php?id={$id}"); exit; } } $if_friendly = suricata_get_friendly_interface($config['installedpackages']['suricata']['rule'][$id]['interface']); $pgtitle = gettext("Suricata: Interface {$if_friendly} HTTP Server Policy Engine"); include_once("head.inc"); ?>