mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-19 19:15:22 +00:00
IDPS: replace classtype + action for extended filter in rules tab.
This commit is contained in:
parent
ecfd53ac2f
commit
eb10976aa7
@ -104,10 +104,13 @@ class SettingsController extends ApiMutableModelControllerBase
|
||||
$searchPhrase = '';
|
||||
}
|
||||
|
||||
// add filter for classtype
|
||||
if ($this->request->getPost("classtype", "string", '') != "") {
|
||||
$searchTag = $filter->sanitize($this->request->getPost('classtype'), "query");
|
||||
$searchPhrase .= " classtype/" . $searchTag . ' ';
|
||||
// add metadata filters
|
||||
foreach ($_POST as $key => $value) {
|
||||
$key = $filter->sanitize($key, "string");
|
||||
$value = $filter->sanitize($value, "string");
|
||||
if (!in_array($key, ['current', 'rowCount', 'sort', 'searchPhrase', 'action'])) {
|
||||
$searchPhrase .= " {$key}/{$value} ";
|
||||
}
|
||||
}
|
||||
|
||||
// add filter for action
|
||||
|
||||
@ -62,27 +62,31 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
/**
|
||||
* list all known classtypes and add to selection box
|
||||
*/
|
||||
function updateRuleClassTypes() {
|
||||
function updateRuleMetadata() {
|
||||
ajaxGet("/api/ids/settings/listRuleMetadata", {}, function(data, status) {
|
||||
if (status == "success") {
|
||||
$('#ruleclass').html('<option value="">ALL</option>');
|
||||
$.each(data['classtype'], function(key, value) {
|
||||
$('#ruleclass').append($("<option></option>").attr("value",value).text(value));
|
||||
$('#rulemetadata').empty();
|
||||
$.each(Object.assign({}, {'action': ['drop', 'alert']}, data), function(key, values) {
|
||||
let $optgroup = $("<optgroup/>");
|
||||
$optgroup.prop('label', key);
|
||||
for (let i=0; i < values.length ; ++i) {
|
||||
$optgroup.append(
|
||||
$("<option>").val(values[i]).text(values[i].substr(0, 50))
|
||||
.data('property', key)
|
||||
.data('value', values[i])
|
||||
.data('content', "<span class='badge'>"+key+"\\"+values[i].substr(0, 50)+"</span>")
|
||||
);
|
||||
}
|
||||
$('#rulemetadata').append($optgroup);
|
||||
});
|
||||
$('.selectpicker').selectpicker('refresh');
|
||||
// link on change event
|
||||
$('#ruleclass').on('change', function(){
|
||||
$('#rulemetadata').on('change', function(){
|
||||
$('#grid-installedrules').bootgrid('reload');
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* link on change event for alert "action" selectionbox
|
||||
*/
|
||||
$('#ruleaction').on('change', function(){
|
||||
$('#grid-installedrules').bootgrid('reload');
|
||||
});
|
||||
|
||||
/**
|
||||
* update list of available alert logs
|
||||
@ -111,14 +115,14 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
* Add classtype / action to rule filter
|
||||
*/
|
||||
function addRuleFilters(request) {
|
||||
var selected =$('#ruleclass').find("option:selected").val();
|
||||
if ( selected != "") {
|
||||
request['classtype'] = selected;
|
||||
}
|
||||
var selected =$('#ruleaction').find("option:selected").val();
|
||||
if ( selected != "") {
|
||||
request['action'] = selected;
|
||||
}
|
||||
$('#rulemetadata').find("option:selected").each(function(){
|
||||
let filter_name = $(this).data('property');
|
||||
if (request[filter_name] === undefined) {
|
||||
request[filter_name] = $(this).data('value');
|
||||
} else {
|
||||
request[filter_name] += "," + $(this).data('value');
|
||||
}
|
||||
});
|
||||
return request;
|
||||
}
|
||||
|
||||
@ -315,7 +319,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
// delay refresh for a bit
|
||||
setTimeout(updateRuleClassTypes, 500);
|
||||
setTimeout(updateRuleMetadata, 500);
|
||||
|
||||
/**
|
||||
* grid installed rules
|
||||
@ -783,14 +787,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
<div class="bootgrid-header container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 actionBar">
|
||||
<b>{{ lang._('Classtype') }} </b>
|
||||
<select id="ruleclass" class="selectpicker" data-width="200px"></select>
|
||||
|
||||
<b>{{ lang._('Action') }} </b>
|
||||
<select id="ruleaction" class="selectpicker" data-width="100px">
|
||||
<option value="">{{ lang._('All') }}</option>
|
||||
<option value="drop">{{ lang._('Drop') }}</option>
|
||||
<option value="alert">{{ lang._('Alert') }}</option>
|
||||
<select id="rulemetadata" title="{{ lang._('Filters') }}" class="selectpicker" multiple=multiple data-live-search="true" data-size="10" data-width="100%">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user