# Copyright (C) 2020-2024 Soleta Networks # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the # Free Software Foundation; either version 3 of the License, or # (at your option) any later version. import json import ipaddress import re def scope_lookup(scope_id, scope_type, d): if scope_id == d.get('id') and scope_type == d.get('type'): return d for scope in d['scope']: lookup = scope_lookup(scope_id, scope_type, scope) if lookup is not None: return lookup return None def ips_in_scope(scope): if scope is None: return [] if 'ip' in scope: return [scope['ip']] ips = [] for child in scope['scope']: ips += ips_in_scope(child) return ips def print_json(text): payload = json.loads(text) print(json.dumps(payload, sort_keys=True, indent=2)) def check_address(addr): try: ip = ipaddress.ip_address(addr) return True except: return False def check_mac_address(addr): if re.match("[a-f0-9]{2}(:[a-f0-9]{2}){5}$", addr.lower()): return True else: print(addr.lower()) return False