Firewall: Diagnostics: States Dump - refactor to MVC.

o a rudimentary column sort
This commit is contained in:
Ad Schellevis 2021-06-22 11:19:39 +02:00
parent 763d553e42
commit caed6e2504
3 changed files with 18 additions and 2 deletions

View File

@ -167,6 +167,7 @@ class FirewallController extends ApiControllerBase
]);
$searchPhrase = '';
$ruleId = '';
$sortBy = '';
$itemsPerPage = $this->request->getPost('rowCount', 'int', 9999);
$currentPage = $this->request->getPost('current', 'int', 1);
@ -177,9 +178,13 @@ class FirewallController extends ApiControllerBase
if ($this->request->getPost('searchPhrase', 'string', '') != '') {
$searchPhrase = $filter->sanitize($this->request->getPost('searchPhrase'), 'query');
}
if ($this->request->has('sort') && is_array($this->request->getPost("sort"))) {
$tmp = array_keys($this->request->getPost("sort"));
$sortBy = $tmp[0] . " ". $this->request->getPost("sort")[$tmp[0]] ;
}
$response = (new Backend())->configdpRun('filter list states', [$searchPhrase, $itemsPerPage,
($currentPage - 1) * $itemsPerPage, $ruleId]);
($currentPage - 1) * $itemsPerPage, $ruleId, $sortBy]);
$response = json_decode($response, true);
if ($response != null) {
foreach ($response['details'] as &$row) {

View File

@ -40,11 +40,22 @@ if __name__ == '__main__':
parser.add_argument('--label', help='label / rule id', default='')
parser.add_argument('--limit', help='limit number of results', default='')
parser.add_argument('--offset', help='offset results', default='')
parser.add_argument('--sort_by', help='sort by (field asc|desc)', default='')
inputargs = parser.parse_args()
result = {
'details': query_states(rule_label=inputargs.label, filter_str=inputargs.filter)
}
# sort results
if inputargs.sort_by.strip() != '':
sort_key = inputargs.sort_by.split()[0]
sort_desc = inputargs.sort_by.split()[-1] == 'desc'
result['details'] = sorted(
result['details'],
key=lambda k: str(k[sort_key]).lower() if sort_key in k else '',
reverse=sort_desc
)
result['total_entries'] = len(result['details'])
# apply offset and limit
if inputargs.offset.isdigit():

View File

@ -37,7 +37,7 @@ message:request content of pf %s table
[list.states]
command:/usr/local/opnsense/scripts/filter/list_states.py
parameters: --filter=%s --limit=%s --offset=%s --label=%s
parameters: --filter=%s --limit=%s --offset=%s --label=%s --sort_by=%s
type:script_output
message:request pf states