diff --git a/libs/tools.py b/libs/tools.py index 6bfec8c..bee29d8 100644 --- a/libs/tools.py +++ b/libs/tools.py @@ -1,6 +1,9 @@ -from bundlewrap.exceptions import NoSuchGroup, NoSuchNode from ipaddress import ip_address, IPv4Address +from bundlewrap.exceptions import NoSuchGroup, NoSuchNode +from bundlewrap.utils.text import bold, red +from bundlewrap.utils.ui import io + def resolve_identifier(repo, identifier): """ Try to resolve an identifier (group or node). Return a set of ip @@ -13,9 +16,20 @@ def resolve_identifier(repo, identifier): nodes = repo.nodes_in_group(identifier) except NoSuchGroup: try: - return {ip_address(identifier)} - except: - return set() + ip = ip_address(identifier) + + if isinstance(ip, IPv4Address): + return {'ipv4': {ip}, 'ipv6': set()} + else: + return {'ipv4': set(), 'ipv6': {ip}} + except Exception as e: + io.stderr('{x} {t} Exception while resolving "{i}": {e}'.format( + x=red('✘'), + t=bold('libs.tools.resolve_identifier'), + i=identifier, + e=str(e), + )) + return {'ipv4': set(), 'ipv6': set()} found_ips = set() for node in nodes: