diff --git a/src/apps.json b/src/apps.json
index 975530295..89c663eef 100755
--- a/src/apps.json
+++ b/src/apps.json
@@ -2218,23 +2218,6 @@
"icon": "ESERV-10.png",
"website": "http://www.violasystems.com"
},
- "Etherpad": {
- "cats": [
- 24
- ],
- "headers": {
- "Server": "^Etherpad"
- },
- "env": [
- "^pad(?:editbar|impexp)$"
- ],
- "script": [
- "/ep_etherpad-lite/"
- ],
- "icon": "etherpad.png",
- "implies": "Node.js",
- "website": "https://etherpad.org"
- },
"EWS-NIC4": {
"cats": [
22
@@ -2282,15 +2265,6 @@
},
"website": "http://eleanor-cms.ru"
},
- "Elm": {
- "cats": [
- 27,
- 12
- ],
- "env": "^Elm$",
- "icon": "Elm.png",
- "website": "http://elm-lang.org"
- },
"Eloqua": {
"cats": [
32
@@ -2368,6 +2342,23 @@
"icon": "Erlang.png",
"website": "http://www.erlang.org"
},
+ "Etherpad": {
+ "cats": [
+ 24
+ ],
+ "env": [
+ "^pad(?:editbar|impexp)$"
+ ],
+ "headers": {
+ "Server": "^Etherpad"
+ },
+ "icon": "etherpad.png",
+ "implies": "Node.js",
+ "script": [
+ "/ep_etherpad-lite/"
+ ],
+ "website": "https://etherpad.org"
+ },
"Exagon Concept": {
"cats": [
1
@@ -2867,6 +2858,13 @@
"icon": "Glyphicons.png",
"website": "http://glyphicons.com"
},
+ "Go": {
+ "cats": [
+ 27
+ ],
+ "icon": "Go.svg",
+ "website": "https://golang.org"
+ },
"GoAhead": {
"cats": [
22
@@ -4534,6 +4532,9 @@
],
"icon": "MODX.png",
"implies": "PHP",
+ "meta": {
+ "generator": "MODX[^\\d.]*([\\d.]+)?\\;version:\\1"
+ },
"website": "http://modx.com"
},
"MadAdsMedia": {
@@ -4704,8 +4705,7 @@
"implies": [
"MongoDB",
"Express",
- "AngularJS",
- "Node.js"
+ "AngularJS"
],
"website": "http://mean.io"
},
@@ -5280,7 +5280,7 @@
"cats": [
18
],
- "env": "Nette",
+ "env": "^Nette$",
"headers": {
"Set-Cookie": "nette-browser=",
"X-Powered-By": "Nette Framework"
@@ -6768,10 +6768,7 @@
"X-Powered-By": "^Sails$"
},
"icon": "Sails.js.svg",
- "implies": [
- "Node.js",
- "Express"
- ],
+ "implies": "Express",
"website": "http://sailsjs.org"
},
"Sarka-SPIP": {
@@ -7804,6 +7801,18 @@
"script": "tracker.js",
"website": "http://trackjs.com"
},
+ "Translucide": {
+ "cats": [
+ 1
+ ],
+ "implies": [
+ "PHP",
+ "jQuery"
+ ],
+ "icon": "translucide.svg",
+ "script": "lucide\\.init\\.js",
+ "website": "http://www.translucide.net"
+ },
"Tumblr": {
"cats": [
11
diff --git a/src/drivers/bookmarklet/driver.js b/src/drivers/bookmarklet/driver.js
index 5c5f0f368..a2e93a30e 100644
--- a/src/drivers/bookmarklet/driver.js
+++ b/src/drivers/bookmarklet/driver.js
@@ -9,7 +9,7 @@
var
w = wappalyzer,
- debug = true
+ debug = true,
d = window.document,
container = d.getElementById('wappalyzer-container'),
domain = window.top.location.host,
diff --git a/src/drivers/chrome/_locales/fr/messages.json b/src/drivers/chrome/_locales/fr/messages.json
index 52fabcef7..122d43020 100644
--- a/src/drivers/chrome/_locales/fr/messages.json
+++ b/src/drivers/chrome/_locales/fr/messages.json
@@ -1,14 +1,14 @@
{
- "github": { "message": "Forker Wappalyzer sur GitHub!" },
- "noAppsDetected": { "message": "Pas d'applications détectées." },
+ "github": { "message": "Forker Wappalyzer sur GitHub !" },
+ "noAppsDetected": { "message": "Aucune application détectée." },
"nothingToDo": { "message": "Rien à faire ici." },
- "optionTracking": { "message": "Envoyer anonymement des rapports sur les applications détectées à wappalyzer.com pour la recherche" },
- "optionUpgradeMessage": { "message": "M'afficher les mises à jour" },
+ "optionTracking": { "message": "Envoyer anonymement des rapports sur les applications détectées à wappalyzer.com pour recherche" },
+ "optionUpgradeMessage": { "message": "M'informer des mises à jour" },
"options": { "message": "Options de Wappalyzer" },
- "optionsSave": { "message": "Sauver les options" },
- "optionsSaved": { "message": "Sauvé" },
+ "optionsSave": { "message": "Sauvegarder les options" },
+ "optionsSaved": { "message": "Sauvegardé" },
"twitter": { "message": "Suivre Wappalyzer sur Twitter" },
- "website": { "message": "Aller à wappalyzer.com" },
+ "website": { "message": "Aller sur wappalyzer.com" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum" },
"categoryName3": { "message": "Gestionnaire de base de données" },
diff --git a/src/drivers/chrome/js/i18n.js b/src/drivers/chrome/js/i18n.js
index f8207e6e1..2f11efbc5 100644
--- a/src/drivers/chrome/js/i18n.js
+++ b/src/drivers/chrome/js/i18n.js
@@ -1,9 +1,8 @@
document.addEventListener('DOMContentLoaded', function() {
var
i, value,
- d = document
- nodes = d.getElementsByTagName('*')
- ;
+ d = document,
+ nodes = d.getElementsByTagName('*');
for ( i = 0; i < nodes.length; i ++ ) {
if ( attr = nodes[i].dataset.i18n ) {
diff --git a/src/drivers/chrome/js/inject.js b/src/drivers/chrome/js/inject.js
index fd734182e..2a8856596 100644
--- a/src/drivers/chrome/js/inject.js
+++ b/src/drivers/chrome/js/inject.js
@@ -1,6 +1,7 @@
(function() {
try {
- var i, environmentVars, e = document.createEvent('Events');
+ var i, environmentVars,
+ e = document.createEvent('Events');
e.initEvent('wappalyzerEvent', true, false);
diff --git a/src/drivers/chrome/js/popup.js b/src/drivers/chrome/js/popup.js
index a2657b67b..e3afa610a 100644
--- a/src/drivers/chrome/js/popup.js
+++ b/src/drivers/chrome/js/popup.js
@@ -37,7 +37,7 @@ document.addEventListener('DOMContentLoaded', function() {
confidence = response.tabCache.appsDetected[appName].confidenceTotal;
version = response.tabCache.appsDetected[appName].version;
- html =
+ var html =
'
' +
'
' +
'' +
diff --git a/src/drivers/firefox/data/js/panel.js b/src/drivers/firefox/data/js/panel.js
index 60f97d102..8fbfc9d3d 100644
--- a/src/drivers/firefox/data/js/panel.js
+++ b/src/drivers/firefox/data/js/panel.js
@@ -1,7 +1,7 @@
(function() {
self.port.on('displayApps', function(message) {
var
- div, a, img, label, name, slugify,
+ div, a, img, label, name, slugify, confidence, version,
d = document,
detectedApps = d.getElementById('detected-apps'),
empty = d.getElementById('empty');
@@ -52,8 +52,8 @@
label.appendChild(name);
label.appendChild(d.createTextNode(( version ? ' ' + version : '' ) + ( confidence < 100 ? ' (' + confidence + '% sure)' : '')));
- a.appendChild(img)
- a.appendChild(label)
+ a.appendChild(img);
+ a.appendChild(label);
div.appendChild(a);
diff --git a/src/drivers/firefox/data/js/tab.js b/src/drivers/firefox/data/js/tab.js
index c4bd3c65b..eafd3c507 100644
--- a/src/drivers/firefox/data/js/tab.js
+++ b/src/drivers/firefox/data/js/tab.js
@@ -4,8 +4,8 @@
try {
if ( document && document.contentType === 'text/html' ) {
var
- html = new XMLSerializer().serializeToString(document)
- env = [];
+ html = new XMLSerializer().serializeToString(document),
+ env = []; // TODO: Remove, `env` not used in this scope?
self.port.emit('log', html);
diff --git a/src/drivers/phantomjs/driver.js b/src/drivers/phantomjs/driver.js
index 922e3cb05..3c409d279 100644
--- a/src/drivers/phantomjs/driver.js
+++ b/src/drivers/phantomjs/driver.js
@@ -5,8 +5,8 @@
scriptDir,
scriptPath = require('fs').absolute(require('system').args[0]),
resourceTimeout = 9000,
- args = [],
- debug = false; // Output debug messages
+ args = [], // TODO: Not used, maybe should be `arg`
+ debug = false, // Output debug messages
quiet = false; // Don't output errors
try {
diff --git a/src/drivers/webextension/css/options.css b/src/drivers/webextension/css/options.css
index bd6096f5f..a5398318c 100644
--- a/src/drivers/webextension/css/options.css
+++ b/src/drivers/webextension/css/options.css
@@ -84,7 +84,7 @@ a:active {
#about {
border-top: 1px solid #dbdbdb;
margin-top: 2.5rem;
- padding: 1.5rem 0 1.5rem 0;
+ padding: 1.5rem 0 0 0;
}
#about img {
diff --git a/src/drivers/webextension/css/popup.css b/src/drivers/webextension/css/popup.css
index 6c91d5888..b95650b77 100644
--- a/src/drivers/webextension/css/popup.css
+++ b/src/drivers/webextension/css/popup.css
@@ -75,22 +75,3 @@ img {
font-style: italic;
text-align: center;
}
-
-#footer {
- border-top: 1px solid #ccc;
- margin-top: 17px;
- overflow: hidden;
- padding-top: 11px;
-}
-
-#footer a {
- text-decoration: none;
-}
-
-#footer a:hover {
- border-bottom: 1px solid #dbdbdb;
-}
-
-#options {
- float: right;
-}
diff --git a/src/drivers/webextension/js/driver.js b/src/drivers/webextension/js/driver.js
index 77a9b71cd..9519d680d 100644
--- a/src/drivers/webextension/js/driver.js
+++ b/src/drivers/webextension/js/driver.js
@@ -64,52 +64,10 @@
localStorage['version'] = version;
} catch(e) { }
- function newMsg(message, sender, sendResponse) {
- var
- hostname,
- a = document.createElement('a');
-
- if ( typeof message.id != 'undefined' ) {
- w.log('message: ' + message.id);
-
- switch ( message.id ) {
- case 'log':
- w.log(message.message);
-
- break;
- case 'analyze':
- tab = sender.tab;
-
- a.href = tab.url.replace(/#.*$/, '');
-
- hostname = a.hostname;
-
- if ( headersCache[a.href] !== undefined ) {
- message.subject.headers = headersCache[a.href];
- }
-
- w.analyze(hostname, a.href, message.subject);
-
- break;
- case 'ad_log':
- w.adCache.push(message.subject);
-
- break;
- case 'get_apps':
- sendResponse({
- tabCache: tabCache[message.tab.id],
- apps: w.apps,
- categories: w.categories
- });
-
- break;
- }
- }
- }
- if (typeof chrome === "undefined") {
- browser.runtime.onMessage.addListener(newMsg);
+ if ( typeof chrome === 'undefined' ) {
+ browser.runtime.onMessage.addListener(w.driver.onMessage);
} else {
- chrome.runtime.onMessage.addListener(newMsg);
+ chrome.runtime.onMessage.addListener(w.driver.onMessage);
}
browser.tabs.query({}).then(function(tabs) {
@@ -168,6 +126,49 @@
}
},
+ onMessage: function(message, sender, sendResponse) {
+ var
+ hostname,
+ a = document.createElement('a');
+
+ if ( typeof message.id != 'undefined' ) {
+ w.log('message: ' + message.id);
+
+ switch ( message.id ) {
+ case 'log':
+ w.log(message.message);
+
+ break;
+ case 'analyze':
+ tab = sender.tab;
+
+ a.href = tab.url.replace(/#.*$/, '');
+
+ hostname = a.hostname;
+
+ if ( headersCache[a.href] !== undefined ) {
+ message.subject.headers = headersCache[a.href];
+ }
+
+ w.analyze(hostname, a.href, message.subject);
+
+ break;
+ case 'ad_log':
+ w.adCache.push(message.subject);
+
+ break;
+ case 'get_apps':
+ sendResponse({
+ tabCache: tabCache[message.tab.id],
+ apps: w.apps,
+ categories: w.categories
+ });
+
+ break;
+ }
+ }
+ },
+
goToURL: function(args) {
var url = args.url + ( typeof args.medium === 'undefined' ? '' : '?pk_campaign=chrome&pk_kwd=' + args.medium);
diff --git a/src/drivers/webextension/js/popup.js b/src/drivers/webextension/js/popup.js
index 4293aed21..14e6fb162 100644
--- a/src/drivers/webextension/js/popup.js
+++ b/src/drivers/webextension/js/popup.js
@@ -10,11 +10,6 @@ document.addEventListener('DOMContentLoaded', function() {
popup = {
init: function() {
-
- d.getElementById('options').addEventListener('click', function() {
- window.open(browser.extension.getURL('options.html'));
- });
-
browser.tabs.query({ active: true }).then(function(tabs) {
if ( tabs[0].url.match(/https?:\/\//) ) {
detectedApps.innerHTML = '' + browser.i18n.getMessage('noAppsDetected') + '
';
diff --git a/src/drivers/webextension/popup.html b/src/drivers/webextension/popup.html
index 35c1ea3e5..1548d426e 100644
--- a/src/drivers/webextension/popup.html
+++ b/src/drivers/webextension/popup.html
@@ -13,9 +13,5 @@
-
-