def METHOD_NAME():
    entries = dict()
    file = open(HOME + '/smuxi-web/logs/access.log', 'r')
    parts = [
        r'(?P<host>\S+)',                   # host %h
        r'\S+',                             # indent %l (unused)
        r'(?P<user>\S+)',                   # user %u
        r'\[(?P<time>.+)\]',                # time %t
        r'"(?P<request>.+)"',               # request "%r"
        r'(?P<status>[0-9]+)',              # status %>s
        r'(?P<size>\S+)',                   # size %b (careful, can be '-')
        r'"(?P<referer>.*)"',               # referer "%{Referer}i"
        r'"(?P<agent>(Smuxi|smuxi).*)"',    # user agent "%{User-agent}i"
    ]
    pattern = re.compile(r'\s+'.join(parts)+r'\s*\Z')
    agent_p = re.compile(r'((?P<programV2>\S+\s+\-\s+\S+)|(?P<program>\S+))\s*(?P<version>[\S+]+/?)?\s*'+
                        r'\((?P<vendor>.+)\)\s+\-\s+running on\s+(?P<os>\S+)\s+?(?P<dist>\S+)?')
    for line in file:
        log_m = pattern.match(line)
        try:
            res = log_m.groupdict()
            agent_m = agent_p.match(res["agent"])
            agent_res = agent_m.groupdict()
            if res["host"] in IPS: continue
            if res["user"] == "-":
                res["user"] = None
            res["status"] = int(res["status"])
            if res["size"] == "-":
                res["size"] = 0
            else:
                res["size"] = int(res["size"])
            if res["referer"] == "-":
                res["referer"] = None
            try:
                PTR = socket.gethostbyaddr(res["host"])[0]
            except socket.herror:
                PTR = "Unknown"
            res["PTR"] = PTR
            country = giV4.country_code_by_addr(res["host"])
            if country is None:
                country = giV6.country_code_by_addr_v6(res["host"])
                if country is None:
                    country = "Unknown"
            if agent_res["os"] == "GNU/Linux" and "(" in agent_res["dist"] : agent_res["os"] = "Linux " + agent_res["dist"][1]
            if agent_res["program"] == None: agent_res["program"] = agent_res["programV2"]
            if ":" in agent_res["vendor"]: agent_res["vendor"] = agent_res["vendor"].split(':')[1]
            elif "/" in agent_res["vendor"]:
                commithash = agent_res["vendor"].split("/")[-1]
                try:
                    agent_res["vendor"] = subprocess.check_output(["git", "describe", "%s"%commithash], stderr=subprocess.STDOUT).strip("\n")
                except subprocess.CalledProcessError:
                    agent_res["vendor"] = "Unknown (%s)"%commithash
            elif len(agent_res["vendor"].split(' ')) == 2: 
                if (len(agent_res["vendor"].split(' ')[1]) < 3): agent_res["vendor"] = agent_res["version"]
                else: agent_res["vendor"] = agent_res["vendor"].split(' ')[1]
            elif len(agent_res["vendor"].split(' ')) == 3: agent_res["vendor"] = agent_res["vendor"].split(' ')[2]
            else: agent_res["vendor"] = agent_res["version"]           
            res["os"] = agent_res["os"]
            res["vendor"] =  agent_res["vendor"]
            res["program"] = agent_res["program"]
            res["version"] = agent_res["version"]
            res["country"] = country
            res["agent"] = res["agent"].split(" ")
            if len(res["agent"]) == 8:
                res["agent"][7] = res["agent"][6]
            if res["os"] == None:
                res["os"] = ""
            if res["vendor"] == None:
                res["vendor"] = ""
            if res["program"] == None:
                res["program"] = ""
            if res["version"] == None:
                res["version"] = ""
            if res["country"] == None:
                res["country"] = ""
            if res["agent"] == None:
                res["agent"] = ""
            entries[res["host"]] = res
        except AttributeError:
            pass
    return entries