Fix localisation, patterns and error handling when saving options

main
Elbert Alias 4 years ago
parent eb2dfc714a
commit fd58b18a95

@ -3957,7 +3957,7 @@
"cats": [ "cats": [
24 24
], ],
"html": "/<!--\\s*\\*\\s*FreeTextBox v\\d+ \\(([.\\d]+)(?:(?:\\.|\\n)+?<!--\\s*\\*\\s*License Type: (Distribution|Professional)License)?/i\\;version:\\1 \\2", "html": "<!-- \\* FreeTextBox v\\d \\((\\d+\\.\\d+\\.\\d+)\\;version:\\1",
"icon": "FreeTextBox.png", "icon": "FreeTextBox.png",
"implies": "Microsoft ASP.NET", "implies": "Microsoft ASP.NET",
"js": { "js": {
@ -4250,7 +4250,7 @@
], ],
"icon": "GitBook.png", "icon": "GitBook.png",
"meta": { "meta": {
"generator": "GitBook(?:\\.([\\d.]+))?\\;version:\\1" "generator": "GitBook ([\\d.]+)?\\;version:\\1"
}, },
"url": "^https?://[^/]+\\.gitbook\\.com/", "url": "^https?://[^/]+\\.gitbook\\.com/",
"website": "https://www.gitbook.com" "website": "https://www.gitbook.com"
@ -5542,7 +5542,7 @@
18 18
], ],
"headers": { "headers": {
"X-Powered-By": "Servlet(?:\\.([\\d.]+))?\\;version:\\1" "X-Powered-By": "Servlet(?:\\/([\\d.]+))?\\;version:\\1"
}, },
"icon": "Java.png", "icon": "Java.png",
"implies": "Java", "implies": "Java",
@ -12450,7 +12450,7 @@
], ],
"headers": { "headers": {
"Server": "Winstone Servlet (?:Container|Engine) v?([\\d.]+)?\\;version:\\1", "Server": "Winstone Servlet (?:Container|Engine) v?([\\d.]+)?\\;version:\\1",
"X-Powered-By": "Winstone(?:\\.([\\d.]+))?\\;version:\\1" "X-Powered-By": "Winstone(?:\\/([\\d.]+))?\\;version:\\1"
}, },
"website": "http://winstone.sourceforge.net" "website": "http://winstone.sourceforge.net"
}, },
@ -13076,7 +13076,6 @@
"cookies": { "cookies": {
"ZM_TEST": "true" "ZM_TEST": "true"
}, },
"html": "<script>(?:\\.|\\n)*\"refresh\":\\{\"version\":\"([\\w\\.]+)\\s\\;version:\\1",
"icon": "Zimbra.png", "icon": "Zimbra.png",
"implies": "Java", "implies": "Java",
"website": "https://www.zimbra.com/" "website": "https://www.zimbra.com/"
@ -14693,4 +14692,4 @@
"priority": 7 "priority": 7
} }
} }
} }

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com", "homepage": "https://www.wappalyzer.com",
"version": "6.0.13", "version": "6.0.15",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {

@ -1,5 +1,4 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">

@ -515,30 +515,28 @@ const Driver = {
] ]
if ( if (
/((local|dev(elopment)?|stag(e|ing)?|test(ing)?|demo(shop)?|admin|google|cache)\.|\/admin|\.local)/.test( !/((local|dev(elopment)?|stag(e|ing)?|test(ing)?|demo(shop)?|admin|google|cache)\.|\/admin|\.local)/.test(
hostname hostname
) || ) &&
hits < 3 hits >= 3
) { ) {
return hostnames[url] = hostnames[url] || {
} applications: resolve(detections).reduce(
(technologies, { name, confidence, version }) => {
hostnames[url] = hostnames[url] || { if (confidence === 100) {
applications: resolve(detections).reduce( technologies[name] = {
(technologies, { name, confidence, version }) => { version,
if (confidence === 100) { hits
technologies[name] = { }
version,
hits
} }
return technologies return technologies
} },
}, {}
{} ),
), meta: {
meta: { language
language }
} }
} }

@ -120,81 +120,87 @@ const Popup = {
document.querySelector('.empty').remove() document.querySelector('.empty').remove()
} }
Popup.categorise(detections).forEach( const categorised = Popup.categorise(detections)
({ id, name, slug: categorySlug, technologies }) => {
const categoryNode = Popup.templates.category.cloneNode(true)
const link = categoryNode.querySelector('.category__link') categorised.forEach(({ id, name, slug: categorySlug, technologies }) => {
const categoryNode = Popup.templates.category.cloneNode(true)
link.href = `https://www.wappalyzer.com/technologies/${categorySlug}` const link = categoryNode.querySelector('.category__link')
link.textContent = name
const pins = categoryNode.querySelectorAll('.category__pin') link.href = `https://www.wappalyzer.com/technologies/${categorySlug}`
link.dataset.i18n = `categoryName${id}`
if (pinnedCategory === id) { const pins = categoryNode.querySelectorAll('.category__pin')
pins.forEach((pin) => pin.classList.add('category__pin--active'))
}
pins.forEach((pin) => if (pinnedCategory === id) {
pin.addEventListener('click', async () => { pins.forEach((pin) => pin.classList.add('category__pin--active'))
const pinnedCategory = await getOption('pinnedCategory') }
Array.from( pins.forEach((pin) =>
document.querySelectorAll('.category__pin--active') pin.addEventListener('click', async () => {
).forEach((pin) => pin.classList.remove('category__pin--active')) const pinnedCategory = await getOption('pinnedCategory')
if (pinnedCategory === id) { Array.from(
await setOption('pinnedCategory', null) document.querySelectorAll('.category__pin--active')
} else { ).forEach((pin) => pin.classList.remove('category__pin--active'))
await setOption('pinnedCategory', id)
pins.forEach((pin) => pin.classList.add('category__pin--active')) if (pinnedCategory === id) {
} await setOption('pinnedCategory', null)
}) } else {
) await setOption('pinnedCategory', id)
technologies pins.forEach((pin) => pin.classList.add('category__pin--active'))
.filter(({ confidence }) => confidence >= 50) }
.forEach(({ name, slug, confidence, version, icon, website }) => { })
const technologyNode = Popup.templates.technology.cloneNode(true) )
const image = technologyNode.querySelector('.technology__icon') technologies
.filter(({ confidence }) => confidence >= 50)
.forEach(({ name, slug, confidence, version, icon, website }) => {
const technologyNode = Popup.templates.technology.cloneNode(true)
image.src = `../images/icons/${icon}` const image = technologyNode.querySelector('.technology__icon')
const link = technologyNode.querySelector('.technology__link') image.src = `../images/icons/${icon}`
link.href = `https://www.wappalyzer.com/technologies/${categorySlug}/${slug}` const link = technologyNode.querySelector('.technology__link')
link.textContent = name
const confidenceNode = technologyNode.querySelector( link.href = `https://www.wappalyzer.com/technologies/${categorySlug}/${slug}`
'.technology__confidence' link.textContent = name
)
if (confidence < 100) { const confidenceNode = technologyNode.querySelector(
confidenceNode.textContent = `${confidence}% sure` '.technology__confidence'
} else { )
confidenceNode.remove()
}
const versionNode = technologyNode.querySelector( if (confidence < 100) {
'.technology__version' confidenceNode.textContent = `${confidence}% sure`
) } else {
confidenceNode.remove()
}
if (version) { const versionNode = technologyNode.querySelector(
versionNode.textContent = version '.technology__version'
} else { )
versionNode.remove()
}
categoryNode if (version) {
.querySelector('.technologies') versionNode.textContent = version
.appendChild(technologyNode) } else {
}) versionNode.remove()
}
document.querySelector('.detections').appendChild(categoryNode) categoryNode
} .querySelector('.technologies')
) .appendChild(technologyNode)
})
document.querySelector('.detections').appendChild(categoryNode)
})
if (categorised.length === 1) {
document
.querySelector('.detections')
.appendChild(Popup.templates.category.cloneNode(true))
}
Array.from(document.querySelectorAll('a')).forEach((a) => Array.from(document.querySelectorAll('a')).forEach((a) =>
a.addEventListener('click', (event) => { a.addEventListener('click', (event) => {

@ -44,11 +44,12 @@ const Utils = {
if (option[name] !== undefined) { if (option[name] !== undefined) {
return option[name] return option[name]
} }
return defaultValue
} catch (error) { } catch (error) {
throw new Error(error.message || error.toString()) // eslint-disable-next-line no-console
console.error('wappalyzer | utils |', error)
} }
return defaultValue
}, },
/** /**
@ -62,7 +63,8 @@ const Utils = {
[name]: value [name]: value
}) })
} catch (error) { } catch (error) {
throw new Error(error.message || error.toString()) // eslint-disable-next-line no-console
console.error('wappalyzer | utils |', error)
} }
}, },

@ -4,7 +4,7 @@
"author": "Wappalyzer", "author": "Wappalyzer",
"homepage_url": "https://www.wappalyzer.com", "homepage_url": "https://www.wappalyzer.com",
"description": "Identify web technologies", "description": "Identify web technologies",
"version": "6.0.13", "version": "6.0.15",
"default_locale": "en", "default_locale": "en",
"manifest_version": 2, "manifest_version": 2,
"icons": { "icons": {

@ -13,7 +13,7 @@
"software" "software"
], ],
"homepage": "https://www.wappalyzer.com", "homepage": "https://www.wappalyzer.com",
"version": "6.0.13", "version": "6.0.15",
"author": "Wappalyzer", "author": "Wappalyzer",
"license": "MIT", "license": "MIT",
"repository": { "repository": {

Loading…
Cancel
Save