import logging import socket import requests import json from ipaddress import ip_address from os.path import join as join_path from . import logger # TODO: Should be removed as soon as migration # mechanism is finalized inside ucloud def get_ipv4_address(): # If host is connected to internet # Return IPv4 address of machine # Otherwise, return 127.0.0.1 with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s: try: s.connect(("8.8.8.8", 80)) except socket.timeout: address = "127.0.0.1" except Exception as e: logger.exception(e) address = "127.0.0.1" else: address = s.getsockname()[0] return address def get_ipv6_address(): try: r = requests.get("https://api6.ipify.org?format=json") content = json.loads(r.content.decode("utf-8")) ip = ip_address(content["ip"]).exploded except Exception as e: logger.exception(e) else: return ip