Fix localisation, patterns and error handling when saving options

main
Elbert Alias 5 years ago
parent eb2dfc714a
commit fd58b18a95

@ -3957,7 +3957,7 @@
"cats": [
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",
"implies": "Microsoft ASP.NET",
"js": {
@ -4250,7 +4250,7 @@
],
"icon": "GitBook.png",
"meta": {
"generator": "GitBook(?:\\.([\\d.]+))?\\;version:\\1"
"generator": "GitBook ([\\d.]+)?\\;version:\\1"
},
"url": "^https?://[^/]+\\.gitbook\\.com/",
"website": "https://www.gitbook.com"
@ -5542,7 +5542,7 @@
18
],
"headers": {
"X-Powered-By": "Servlet(?:\\.([\\d.]+))?\\;version:\\1"
"X-Powered-By": "Servlet(?:\\/([\\d.]+))?\\;version:\\1"
},
"icon": "Java.png",
"implies": "Java",
@ -12450,7 +12450,7 @@
],
"headers": {
"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"
},
@ -13076,7 +13076,6 @@
"cookies": {
"ZM_TEST": "true"
},
"html": "<script>(?:\\.|\\n)*\"refresh\":\\{\"version\":\"([\\w\\.]+)\\s\\;version:\\1",
"icon": "Zimbra.png",
"implies": "Java",
"website": "https://www.zimbra.com/"
@ -14693,4 +14692,4 @@
"priority": 7
}
}
}
}

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

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

@ -515,30 +515,28 @@ const Driver = {
]
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
) ||
hits < 3
) &&
hits >= 3
) {
return
}
hostnames[url] = hostnames[url] || {
applications: resolve(detections).reduce(
(technologies, { name, confidence, version }) => {
if (confidence === 100) {
technologies[name] = {
version,
hits
hostnames[url] = hostnames[url] || {
applications: resolve(detections).reduce(
(technologies, { name, confidence, version }) => {
if (confidence === 100) {
technologies[name] = {
version,
hits
}
}
return technologies
}
},
{}
),
meta: {
language
},
{}
),
meta: {
language
}
}
}

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

@ -44,11 +44,12 @@ const Utils = {
if (option[name] !== undefined) {
return option[name]
}
return defaultValue
} 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
})
} 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",
"homepage_url": "https://www.wappalyzer.com",
"description": "Identify web technologies",
"version": "6.0.13",
"version": "6.0.15",
"default_locale": "en",
"manifest_version": 2,
"icons": {

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