54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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
 |