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 @@
- -
diff --git a/src/icons/Go.svg b/src/icons/Go.svg new file mode 100644 index 000000000..8b0b1af64 --- /dev/null +++ b/src/icons/Go.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/cloudcart.svg b/src/icons/cloudcart.svg index a97253618..9d608655b 100644 --- a/src/icons/cloudcart.svg +++ b/src/icons/cloudcart.svg @@ -1 +1,24 @@ - \ No newline at end of file + + + + + + + + + + + + + + diff --git a/src/icons/translucide.svg b/src/icons/translucide.svg new file mode 100644 index 000000000..1cadcf7ac --- /dev/null +++ b/src/icons/translucide.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +