import logging import socket import requests import json from ipaddress import ip_address from os.path import join as join_path def create_package_loggers(packages, base_path, mode="a"): loggers = {} for pkg in packages: logger = logging.getLogger(pkg) logger_handler = logging.FileHandler( join_path(base_path, "{}.txt".format(pkg)), mode=mode ) logger.setLevel(logging.DEBUG) logger_handler.setFormatter(logging.Formatter(fmt="%(asctime)s: %(levelname)s - %(message)s", datefmt="%d-%b-%y %H:%M:%S")) logger.addHandler(logger_handler) loggers[pkg] = 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: logging.getLogger().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: logging.exception(e) else: return ip