From ca7c0ffa62704ae084f532b848fab8b05005ca6c Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Wed, 24 Jun 2015 15:56:43 +0200 Subject: [PATCH] (ids) move parameter parsing to function --- src/opnsense/scripts/suricata/getRuleJSON.py | 11 +---- src/opnsense/scripts/suricata/lib/params.py | 50 ++++++++++++++++++++ 2 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 src/opnsense/scripts/suricata/lib/params.py diff --git a/src/opnsense/scripts/suricata/getRuleJSON.py b/src/opnsense/scripts/suricata/getRuleJSON.py index 39eb484f9..490b895a9 100755 --- a/src/opnsense/scripts/suricata/getRuleJSON.py +++ b/src/opnsense/scripts/suricata/getRuleJSON.py @@ -34,8 +34,8 @@ parameters: list of parameters used """ import ujson -import sys from lib.rulecache import RuleCache +from lib.params import updateParams # Because rule parsing isn't very useful when the rule definitions didn't change we create a single json file @@ -47,14 +47,7 @@ if __name__ == '__main__': # load parameters, ignore validation here the search method only processes valid input parameters = {'limit':'0','offset':'0','sort_by':'', 'filter':''} - cmd=None - for arg in sys.argv[1:]: - if cmd is None: - cmd=arg[1:] - else: - if cmd in parameters: - parameters[cmd] = arg.strip() - cmd=None + updateParams(parameters) # dump output result=rc.search(**parameters) diff --git a/src/opnsense/scripts/suricata/lib/params.py b/src/opnsense/scripts/suricata/lib/params.py new file mode 100644 index 000000000..89c597f5e --- /dev/null +++ b/src/opnsense/scripts/suricata/lib/params.py @@ -0,0 +1,50 @@ +""" + Copyright (c) 2015 Ad Schellevis + + part of OPNsense (https://www.opnsense.org/) + + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + + -------------------------------------------------------------------------------------- +""" +import sys + +def updateParams(parameters): + """ update predefined parameters with given list from shell (as switches) + for example /a valA /b valB + converts to + {'a':'valA','b':'valB'} + (assuming parameters contains both a and b) + :param parameters: parameter dictionary + :return: + """ + cmd=None + for arg in sys.argv[1:]: + if cmd is None: + cmd=arg[1:] + else: + if cmd in parameters and arg.strip() != '': + parameters[cmd] = arg.strip() + cmd=None +