def METHOD_NAME(service, proto='https', timeout='10', interface=None):
    """ find ip address using external services defined in checkip_service_list
        :param proto: protocol
        :param timeout: timeout in seconds
        :param interface: bind to interface
        :return: str
    """
    if service.startswith('web_'):
        # configuration name, strip web_ part
        service = service[4:]
    if service in checkip_service_list:
        params = ['/usr/local/bin/curl', '-m', timeout]
        if interface is not None:
            params.append("--interface")
            params.append(interface)
        params.append(checkip_service_list[service] % proto)
        return extract_address(subprocess.run(params, capture_output=True, text=True).stdout)
    elif service in ['if', 'if6'] and interface is not None:
        # return first non private IPv[4|6] interface address
        ifcfg = subprocess.run(['/sbin/ifconfig', interface], capture_output=True, text=True).stdout
        for line in ifcfg.split('\n'):
            if line.startswith('\tinet'):
                parts = line.split()
                if (parts[0] == 'inet' and service == 'if') or (parts[0] == 'inet6' and service == 'if6'):
                    try:
                        address = ipaddress.ip_address(parts[1])
                        if address.is_global:
                            return str(address)
                    except ValueError:
                        continue
    else:
        return ""