diff --git a/daemon/network_aliases.json b/daemon/network_aliases.json new file mode 100644 index 00000000..b8c64989 --- /dev/null +++ b/daemon/network_aliases.json @@ -0,0 +1,22 @@ +{ + "LAN": [ + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + "127.0.0.0/8", + "::1", + "fc00::/7" + ], + "MULTICAST": [ + "224.0.0.0/4", + "ff00::/8" + ], + "TEST_RANGE": [ + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + "127.0.0.0/8", + "::1", + "fc00::/7" + ] +} diff --git a/ui/opensnitch/network_aliases.json b/ui/opensnitch/network_aliases.json new file mode 100644 index 00000000..b8c64989 --- /dev/null +++ b/ui/opensnitch/network_aliases.json @@ -0,0 +1,22 @@ +{ + "LAN": [ + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + "127.0.0.0/8", + "::1", + "fc00::/7" + ], + "MULTICAST": [ + "224.0.0.0/4", + "ff00::/8" + ], + "TEST_RANGE": [ + "10.0.0.0/8", + "172.16.0.0/12", + "192.168.0.0/16", + "127.0.0.0/8", + "::1", + "fc00::/7" + ] +} diff --git a/ui/opensnitch/network_aliases.py b/ui/opensnitch/network_aliases.py new file mode 100644 index 00000000..e9f22dd7 --- /dev/null +++ b/ui/opensnitch/network_aliases.py @@ -0,0 +1,49 @@ +import json +import ipaddress +import os + +class NetworkAliases: + ALIASES = {} + + @staticmethod + def load_aliases(): + # Define the path to the network_aliases.json file + script_dir = os.path.dirname(os.path.abspath(__file__)) + filename = os.path.join(script_dir, 'network_aliases.json') + + # Check if the file exists before attempting to load it + if not os.path.exists(filename): + raise FileNotFoundError(f"The file '{filename}' does not exist.") + + # Load the JSON file + with open(filename, 'r') as f: + NetworkAliases.ALIASES = json.load(f) + print(f"Loaded network aliases from {filename}") # Confirmation message + + @staticmethod + def get_alias(ip): + try: + ip_obj = ipaddress.ip_address(ip) + for alias, networks in NetworkAliases.ALIASES.items(): + for network in networks: + net_obj = ipaddress.ip_network(network) + if ip_obj in net_obj: + return alias + except ValueError: + pass + return None + + @staticmethod + def get_networks_for_alias(alias): + return NetworkAliases.ALIASES.get(alias, []) + + @staticmethod + def get_alias_all(): + # Return a list of all alias names + return list(NetworkAliases.ALIASES.keys()) + +# Load aliases at startup +try: + NetworkAliases.load_aliases() +except FileNotFoundError as e: + print(e)