Remove detection from awstats dataset for browser

This commit is contained in:
Gregory Soutade
2023-03-23 21:16:54 +01:00
parent 44c76007cd
commit cad3467c25
105 changed files with 65 additions and 64 deletions

View File

@@ -50,6 +50,18 @@ Statistics deletion :
None
"""
browser_icons = {
'Android':'android',
'Android browser (PDA/Phone browser)':'android',
'iPhone':'pdaphone',
'IPhone (PDA/Phone browser)':'pdaphone',
'Edge':'edge',
'Chrome':'chrome',
'Safari':'safari',
'Firefox':'firefox',
'Mozilla':'mozilla',
}
class IWLADisplayBrowsers(IPlugin):
def __init__(self, iwla):
super(IWLADisplayBrowsers, self).__init__(iwla)
@@ -60,7 +72,6 @@ class IWLADisplayBrowsers(IPlugin):
self.icon_path = self.iwla.getConfValue('icon_path', '/')
self.max_browsers = self.iwla.getConfValue('max_browsers_displayed', 0)
self.create_browsers = self.iwla.getConfValue('create_browsers_page', True)
self.icon_names = {v:k for (k, v) in awstats_data.browsers_hashid.items()}
return True
@@ -81,15 +92,12 @@ class IWLADisplayBrowsers(IPlugin):
total_browsers = [0]*3
new_list = self.max_browsers and browsers[:self.max_browsers] or browsers
for (browser, entrance) in new_list:
if browser != 'unknown':
try:
name = awstats_data.browsers_icons[self.icon_names[browser]]
icon = '<img alt="%s icon" src="/%s/browser/%s.png"/>' % (name, self.icon_path, name)
except:
icon = '<img alt="Unknown browser icon" src="/%s/browser/unknown.png"/>' % (self.icon_path)
if browser in browser_icons.keys():
name = browser_icons[browser]
icon = f'<img alt="{browser} icon" src="/{self.icon_path}/browser/{name}.png"/>'
else:
icon = '<img alt="Unknown browser icon" src="/%s/browser/unknown.png"/>' % (self.icon_path)
browser = 'Unknown'
icon = f'<img alt="Unknown browser icon" src="/{self.icon_path}/browser/unknown.png"/>'
browser = self.iwla._(browser)
table.appendRow([icon, browser, entrance])
total_browsers[2] += entrance
if self.max_browsers:
@@ -114,15 +122,12 @@ class IWLADisplayBrowsers(IPlugin):
table = display.createBlock(DisplayHTMLBlockTable, title, ['', self.iwla._(u'Browser'), self.iwla._(u'Entrance')])
table.setColsCSSClass(['', '', 'iwla_hit'])
for (browser, entrance) in browsers[:10]:
if browser != 'unknown':
try:
name = awstats_data.browsers_icons[self.icon_names[browser]]
icon = '<img alt="%s icon" src="/%s/browser/%s.png"/>' % (name, self.icon_path, name)
except:
icon = '<img alt="Unknown browser icon" src="/%s/browser/unknown.png"/>' % (self.icon_path)
if browser in browser_icons.keys():
name = browser_icons[browser]
icon = f'<img alt="{browser} icon" src="/{self.icon_path}/browser/{name}.png"/>'
else:
icon = '<img alt="Unknown browser icon" src="/%s/browser/unknown.png"/>' % (self.icon_path)
browser = self.iwla._(u'Unknown')
icon = f'<img alt="Unknown browser icon" src="/{self.icon_path}/browser/unknown.png"/>'
browser = self.iwla._(browser)
table.appendRow([icon, browser, entrance])
total_browsers[2] -= entrance
if total_browsers[2]:

View File

@@ -55,21 +55,35 @@ Statistics deletion :
None
"""
browser_order = ['android', 'iphone', 'xbox', 'edge', 'chrome', 'safari', 'firefox', 'curl', 'wget', 'w3m']
browser_hashid = {
'android':'Android',
'iphone':'iPhone',
'edge':'Edg',
'chrome':'Chrom',
'safari':'Safari',
'firefox':'Firefox',
'xbox':'Xbox',
'curl':'curl',
'wget':'Wget',
'w3m':'w3m'
}
browser_name = {
'android':'Android',
'iphone':'iPhone',
'edge':'Edge',
'chrome':'Chrome',
'safari':'Safari',
'firefox':'Firefox',
'xbox':'Xbox',
'curl':'Curl',
'wget':'Wget',
'w3m':'w3m'
}
class IWLAPostAnalysisBrowsers(IPlugin):
def __init__(self, iwla):
super(IWLAPostAnalysisBrowsers, self).__init__(iwla)
self.API_VERSION = 1
def load(self):
self.browsers = []
for hashid in awstats_data.browsers:
hashid_re = re.compile(r'.*%s.*' % (hashid), re.IGNORECASE)
if hashid in awstats_data.browsers_hashid.keys():
self.browsers.append((hashid_re, awstats_data.browsers_hashid[hashid]))
return True
def hook(self):
stats = self.iwla.getValidVisitors()
@@ -85,19 +99,19 @@ class IWLAPostAnalysisBrowsers(IPlugin):
user_agent = r['http_user_agent']
if not user_agent: continue
browser_name = 'unknown'
for (hashid_re, browser) in self.browsers:
if hashid_re.match(user_agent):
browser_name = browser
name = 'Unknown'
for browser in browser_order:
if browser_hashid[browser] in user_agent:
name = browser_name[browser]
break
super_hit['browser'] = browser_name
super_hit['browser'] = name
break
else:
browser_name = super_hit['browser']
name = super_hit['browser']
if not browser_name in browsers_stats.keys():
browsers_stats[browser_name] = 1
if not name in browsers_stats.keys():
browsers_stats[name] = 1
else:
browsers_stats[browser_name] += 1
browsers_stats[name] += 1
month_stats['browsers'] = browsers_stats