Ejemplo n.º 1
0
def read_ip_ranges(filename, local_file=True, ip_only=False, conditions=None):
    """
    Returns the list of IP prefixes from an ip-ranges file

    :param filename:
    :param local_file:
    :param conditions:
    :param ip_only:
    :return:
    """
    if not conditions:
        conditions = []

    targets = []
    data = load_data(filename, local_file=local_file)
    if 'source' in data:
        # Filtered IP ranges
        conditions = data['conditions']
        local_file = data['local_file'] if 'local_file' in data else False
        data = load_data(data['source'],
                         local_file=local_file,
                         key_name='prefixes')
    else:
        # Plain IP ranges
        data = data['prefixes']
    for d in data:
        condition_passed = True
        for condition in conditions:
            if type(condition) != list or len(condition) < 3:
                continue
            condition_passed = pass_condition(d[condition[0]], condition[1],
                                              condition[2])
            if not condition_passed:
                break
        if condition_passed:
            targets.append(d)
    if ip_only:
        ips = []
        for t in targets:
            ips.append(t['ip_prefix'])
        return ips
    else:
        return targets
Ejemplo n.º 2
0
 def test_pass_condition_exception(self):
     pass_condition(True, 'unknownTest', True)
Ejemplo n.º 3
0
 def test_pass_condition(self):
     assert (pass_condition(1, 'lessOrEqual', 2))
     assert (pass_condition(2, 'moreThan', 1))
     assert (pass_condition(2, 'moreOrEqual', 2))
     assert (pass_condition(None, 'null', 1))
     assert (not pass_condition(None, 'notNull', 1))
     assert (pass_condition(True, 'true', 1))
     assert (pass_condition('test', 'lengthLessThan', 6))
     assert (pass_condition('longtest', 'lengthMoreThan', 3))
     assert (pass_condition('test', 'lengthEqual', 4))
     assert (pass_condition('test with key', 'withoutKey', 'not'))
     assert (pass_condition(True, 'containString', True))
     assert (pass_condition(False, 'notContainString', True))
     assert (pass_condition([1, 2, 3], 'containAtLeastOneDifferentFrom',
                            [1]))
     assert (pass_condition('test', 'notMatch', 'a'))
     assert (pass_condition('Thu Sep 24 10:36:28 BRST 2003', 'priorToDate',
                            'Thu Sep 25 10:36:28 BRST 2003'))
     assert (pass_condition('Thu Sep 24 10:36:28 BRST 2019', 'olderThan',
                            [5, 'days']))
     assert (pass_condition('Thu Sep 24 10:36:28 BRST 3019', 'newerThan',
                            [5, 'days']))
     assert (pass_condition(['aws'], 'isCrossAccount', 'iam'))
     assert (pass_condition(['aws'], 'isSameAccount', 'aws'))