From f3fc37b56c5fabfc7decb66e0b464cb34c403ea4 Mon Sep 17 00:00:00 2001 From: Daniel Zdziebko Date: Sun, 2 Apr 2017 07:50:27 +0200 Subject: [PATCH 01/17] Polish language for Wappalyzer --- .../webextension/_locales/pl/messages.json | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/drivers/webextension/_locales/pl/messages.json diff --git a/src/drivers/webextension/_locales/pl/messages.json b/src/drivers/webextension/_locales/pl/messages.json new file mode 100644 index 000000000..4e15a95c4 --- /dev/null +++ b/src/drivers/webextension/_locales/pl/messages.json @@ -0,0 +1,61 @@ +{ + "github": { "message": "Fork Wappalyzer on GitHub!" }, + "twitter": { "message": "Follow Wappalyzer on Twitter" }, + "website": { "message": "Przejdź do wappalyzer.com" }, + "options": { "message": "Opcje" }, + "optionsSave": { "message": "Zapisz opcje" }, + "optionsSaved": { "message": "Zapisano" }, + "optionUpgradeMessage": { "message": "Powiadamiaj mnie o aktualizacjach" }, + "optionTracking": { "message": "Przesyłaj anonimowe statystyki aplikacji wykrytych przez Wappalyzer do twórców" }, + "nothingToDo": { "message": "Nic tu nie ma." }, + "noAppsDetected": { "message": "Nie wykryto żadnych aplikacji." }, + "categoryName1": { "message": "CMS" }, + "categoryName2": { "message": "Forum" }, + "categoryName3": { "message": "Menedżer baz danych" }, + "categoryName4": { "message": "Narzędzia dokumentacji" }, + "categoryName5": { "message": "Widżet" }, + "categoryName10": { "message": "Statystyki" }, + "categoryName11": { "message": "Blog" }, + "categoryName12": { "message": "Framework JavaScript" }, + "categoryName13": { "message": "Issue Tracker" }, + "categoryName14": { "message": "Odtwarzacz wideo" }, + "categoryName15": { "message": "System komentarzy" }, + "categoryName16": { "message": "Captcha" }, + "categoryName17": { "message": "Skrypt czcionek" }, + "categoryName18": { "message": "Framework webowy" }, + "categoryName19": { "message": "Różne" }, + "categoryName20": { "message": "Edytor" }, + "categoryName21": { "message": "LMS" }, + "categoryName22": { "message": "Serwer internetowy" }, + "categoryName23": { "message": "Narzędzia cache" }, + "categoryName24": { "message": "Rich Text Editor" }, + "categoryName25": { "message": "JavaScript Graphics" }, + "categoryName26": { "message": "Framework mobilny" }, + "categoryName27": { "message": "Język programowania" }, + "categoryName28": { "message": "System operacyjny" }, + "categoryName29": { "message": "Silnik wyszukiwarki" }, + "categoryName30": { "message": "Web Mail" }, + "categoryName31": { "message": "CDN" }, + "categoryName32": { "message": "Automatyzacja marketingu" }, + "categoryName33": { "message": "Web Server Extension" }, + "categoryName34": { "message": "Baza danych" }, + "categoryName35": { "message": "Mapy" }, + "categoryName36": { "message": "Sieć reklamowa" }, + "categoryName37": { "message": "Network Service" }, + "categoryName38": { "message": "Media Server" }, + "categoryName39": { "message": "Webcam" }, + "categoryName40": { "message": "Drukarka" }, + "categoryName41": { "message": "Procesor płatności" }, + "categoryName42": { "message": "Tag Manager" }, + "categoryName43": { "message": "Paywall" }, + "categoryName44": { "message": "Build/CI System" }, + "categoryName45": { "message": "SCADA System" }, + "categoryName46": { "message": "Remote Access" }, + "categoryName47": { "message": "Development Tool" }, + "categoryName48": { "message": "Network Storage" }, + "categoryName49": { "message": "Feed Readers" }, + "categoryName50": { "message": "Document Management Systems" }, + "categoryName51": { "message": "Landing Page Builder" }, + "categoryName52": { "message": "Czat na żywo" }, + "categoryName53": { "message": "CRM" } +} From 662d5a34eac800bc29104d8c11a86c7c0b46c1a9 Mon Sep 17 00:00:00 2001 From: Daniel Zdziebko Date: Sun, 2 Apr 2017 08:05:15 +0200 Subject: [PATCH 02/17] Update messages.json --- .../webextension/_locales/pl/messages.json | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/drivers/webextension/_locales/pl/messages.json b/src/drivers/webextension/_locales/pl/messages.json index 4e15a95c4..84fe6cc73 100644 --- a/src/drivers/webextension/_locales/pl/messages.json +++ b/src/drivers/webextension/_locales/pl/messages.json @@ -1,6 +1,6 @@ { "github": { "message": "Fork Wappalyzer on GitHub!" }, - "twitter": { "message": "Follow Wappalyzer on Twitter" }, + "twitter": { "message": "Obserwuj Wappalyzer na Twitterze" }, "website": { "message": "Przejdź do wappalyzer.com" }, "options": { "message": "Opcje" }, "optionsSave": { "message": "Zapisz opcje" }, @@ -17,7 +17,7 @@ "categoryName10": { "message": "Statystyki" }, "categoryName11": { "message": "Blog" }, "categoryName12": { "message": "Framework JavaScript" }, - "categoryName13": { "message": "Issue Tracker" }, + "categoryName13": { "message": "Lista problemów" }, "categoryName14": { "message": "Odtwarzacz wideo" }, "categoryName15": { "message": "System komentarzy" }, "categoryName16": { "message": "Captcha" }, @@ -29,33 +29,33 @@ "categoryName22": { "message": "Serwer internetowy" }, "categoryName23": { "message": "Narzędzia cache" }, "categoryName24": { "message": "Rich Text Editor" }, - "categoryName25": { "message": "JavaScript Graphics" }, + "categoryName25": { "message": "Grafika JavaScript" }, "categoryName26": { "message": "Framework mobilny" }, "categoryName27": { "message": "Język programowania" }, "categoryName28": { "message": "System operacyjny" }, "categoryName29": { "message": "Silnik wyszukiwarki" }, - "categoryName30": { "message": "Web Mail" }, + "categoryName30": { "message": "Poczta internetowa" }, "categoryName31": { "message": "CDN" }, "categoryName32": { "message": "Automatyzacja marketingu" }, - "categoryName33": { "message": "Web Server Extension" }, + "categoryName33": { "message": "Rozszerzenie serwera WWW" }, "categoryName34": { "message": "Baza danych" }, "categoryName35": { "message": "Mapy" }, "categoryName36": { "message": "Sieć reklamowa" }, - "categoryName37": { "message": "Network Service" }, - "categoryName38": { "message": "Media Server" }, - "categoryName39": { "message": "Webcam" }, + "categoryName37": { "message": "Usługa sieciowa" }, + "categoryName38": { "message": "Serwer mediów" }, + "categoryName39": { "message": "Kamera internetowa" }, "categoryName40": { "message": "Drukarka" }, "categoryName41": { "message": "Procesor płatności" }, - "categoryName42": { "message": "Tag Manager" }, - "categoryName43": { "message": "Paywall" }, - "categoryName44": { "message": "Build/CI System" }, - "categoryName45": { "message": "SCADA System" }, - "categoryName46": { "message": "Remote Access" }, - "categoryName47": { "message": "Development Tool" }, - "categoryName48": { "message": "Network Storage" }, - "categoryName49": { "message": "Feed Readers" }, - "categoryName50": { "message": "Document Management Systems" }, - "categoryName51": { "message": "Landing Page Builder" }, + "categoryName42": { "message": "Menedżer tagów" }, + "categoryName43": { "message": "Menedżer płatności" }, + "categoryName44": { "message": "System Build/CI" }, + "categoryName45": { "message": "System SCADA" }, + "categoryName46": { "message": "Dostęp zdalny" }, + "categoryName47": { "message": "Narzędzia deweloperskie" }, + "categoryName48": { "message": "Magazyn sieciowy" }, + "categoryName49": { "message": "Czytnik" }, + "categoryName50": { "message": "Systemy zarządzania dokumentami" }, + "categoryName51": { "message": "Konstruktory stron" }, "categoryName52": { "message": "Czat na żywo" }, "categoryName53": { "message": "CRM" } } From 42000f2429c3acf2bd995a92cd2527a95b0515cd Mon Sep 17 00:00:00 2001 From: Abd ar-Rahman Hamidi Date: Sun, 2 Apr 2017 16:44:54 +0500 Subject: [PATCH 03/17] Fix not answering any response if no apps detected --- src/drivers/phantomjs/driver.js | 39 +++++++++++++++------------------ 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/drivers/phantomjs/driver.js b/src/drivers/phantomjs/driver.js index a99f2612d..83851390d 100644 --- a/src/drivers/phantomjs/driver.js +++ b/src/drivers/phantomjs/driver.js @@ -73,31 +73,28 @@ displayApps: function() { var app, cats, - apps = [], - count = wappalyzer.detected[url] ? Object.keys(wappalyzer.detected[url]).length : 0; + apps = []; wappalyzer.log('driver.displayApps'); - if ( count ) { - for ( app in wappalyzer.detected[url] ) { - cats = []; - - wappalyzer.apps[app].cats.forEach(function(cat) { - cats.push(wappalyzer.categories[cat].name); - }); - - apps.push({ - name: app, - confidence: wappalyzer.detected[url][app].confidenceTotal.toString(), - version: wappalyzer.detected[url][app].version, - icon: wappalyzer.apps[app].icon, - website: wappalyzer.apps[app].website, - categories: cats - }); - } - - wappalyzer.driver.sendResponse(apps); + for ( app in wappalyzer.detected[url] ) { + cats = []; + + wappalyzer.apps[app].cats.forEach(function(cat) { + cats.push(wappalyzer.categories[cat].name); + }); + + apps.push({ + name: app, + confidence: wappalyzer.detected[url][app].confidenceTotal.toString(), + version: wappalyzer.detected[url][app].version, + icon: wappalyzer.apps[app].icon, + website: wappalyzer.apps[app].website, + categories: cats + }); } + + wappalyzer.driver.sendResponse(apps); }, /** From 842293daf61eab5b099cbe09a020adb7320c6a5a Mon Sep 17 00:00:00 2001 From: Thomas Schoffelen Date: Sun, 2 Apr 2017 15:46:15 +0200 Subject: [PATCH 04/17] Added Scholica icon --- src/icons/Scholica.svg | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/icons/Scholica.svg diff --git a/src/icons/Scholica.svg b/src/icons/Scholica.svg new file mode 100644 index 000000000..b35216915 --- /dev/null +++ b/src/icons/Scholica.svg @@ -0,0 +1,24 @@ + + + + logo-green-icon + Created with Sketch. + + + + + + + + + \ No newline at end of file From effc63ace198fd05b91fd4df0000113c5440673f Mon Sep 17 00:00:00 2001 From: Thomas Schoffelen Date: Sun, 2 Apr 2017 15:56:49 +0200 Subject: [PATCH 05/17] Update apps.json --- src/apps.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/apps.json b/src/apps.json index 105484c2a..9c0ccd9b6 100755 --- a/src/apps.json +++ b/src/apps.json @@ -6953,6 +6953,16 @@ ], "website": "http://schneider-electric.com" }, + "Scholica": { + "cats": [ + "21" + ], + "headers": { + "X-Scholica-Version": "" + }, + "icon": "Scholica.png", + "website": "http://scholica.com" + }, "Scientific Linux": { "cats": [ "28" From 71ca792a375cfbb0e15bcfd8243afd1a492ed436 Mon Sep 17 00:00:00 2001 From: Thomas Schoffelen Date: Sun, 2 Apr 2017 16:06:01 +0200 Subject: [PATCH 06/17] Update apps.json --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 9c0ccd9b6..e1c58c928 100755 --- a/src/apps.json +++ b/src/apps.json @@ -6960,7 +6960,7 @@ "headers": { "X-Scholica-Version": "" }, - "icon": "Scholica.png", + "icon": "Scholica.svg", "website": "http://scholica.com" }, "Scientific Linux": { From 6ecc78cc3d183c5023970a163bc83f25b2c5c07a Mon Sep 17 00:00:00 2001 From: Peter Dave Hello Date: Wed, 5 Apr 2017 00:23:20 +0800 Subject: [PATCH 07/17] Update Dockerfile - curl is builtin in phusion/baseimage, so there is no need to install it before nodesource - nodesource script will do apt-get update, so there is no need to do it manually - change security.ubuntu.com to use mirror site since it's very slow - separate apt package dependencies into different line so they can be easily traced by git - apt-get update cache clean up show be in the same layer of Docker image, or it'll not really work --- docker/Dockerfile | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index ec435c0bd..c4e7806c0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -8,11 +8,19 @@ ENV WAPPALYZER_ROOT /home/wappalyzer/synced ENV WAPPALYZER_NODE_PATH /home/wappalyzer/node # Install packages +RUN sed -i 's/^deb-src\ /\#deb-src\ /g' /etc/apt/sources.list RUN sed -i 's/archive\.ubuntu\.com/au.archive.ubuntu.com/g' /etc/apt/sources.list -RUN apt-get update && apt-get install -y sudo curl -RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - -RUN apt-get install -y nodejs bzip2 zip libfreetype6 libfontconfig rsync -RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* +RUN sed -i 's/security\.ubuntu\.com/au.archive.ubuntu.com/g' /etc/apt/sources.list +RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - && \ + apt-get install -y \ + nodejs \ + bzip2 \ + zip \ + libfreetype6 \ + libfontconfig \ + rsync && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # Add user From 27185f59faa4accbcfd017f4da346a09a89ae852 Mon Sep 17 00:00:00 2001 From: strwei <24722645@qq.com> Date: Thu, 6 Apr 2017 14:38:52 +0800 Subject: [PATCH 08/17] update homeland update homeland --- src/apps.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/apps.json b/src/apps.json index 105484c2a..ab9ce1d1b 100755 --- a/src/apps.json +++ b/src/apps.json @@ -5443,6 +5443,18 @@ "script": "^/nodebb\\.min\\.js\\?", "website": "https://nodebb.org" }, + "Homeland": { + "cats": [ + "1", + "2" + ], + "headers": { + "Set-Cookie:": "^homeland$" + }, + "icon": "Homeland.png", + "implies": "Ruby on Rails", + "website": "https://gethomeland.com" + }, "OWL Carousel": { "cats": [ "5", From 9a15cecf15682f0b233285b972bf57f4cc7b9512 Mon Sep 17 00:00:00 2001 From: strwei <24722645@qq.com> Date: Thu, 6 Apr 2017 14:45:01 +0800 Subject: [PATCH 09/17] upload homeland icon upload homeland icon --- src/icons/Homeland.png | Bin 0 -> 19700 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/icons/Homeland.png diff --git a/src/icons/Homeland.png b/src/icons/Homeland.png new file mode 100644 index 0000000000000000000000000000000000000000..a269934c4dba63a1cca807535b5f18438300a762 GIT binary patch literal 19700 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 aJmYkoQP$Hf%s>0jEr!2gs{a;4i25HJ@=X^2 literal 0 HcmV?d00001 From 2c5f1fef8c97afab26ec711434588bdba95af91f Mon Sep 17 00:00:00 2001 From: strwei <24722645@qq.com> Date: Thu, 6 Apr 2017 18:22:29 +0800 Subject: [PATCH 10/17] Update apps.json --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index ab9ce1d1b..a6e85a2f6 100755 --- a/src/apps.json +++ b/src/apps.json @@ -5449,7 +5449,7 @@ "2" ], "headers": { - "Set-Cookie:": "^homeland$" + "Set-Cookie:": "_homeland_" }, "icon": "Homeland.png", "implies": "Ruby on Rails", From 4d31e0d8de58db917ee52f0eab006821c2f0e893 Mon Sep 17 00:00:00 2001 From: strwei <24722645@qq.com> Date: Thu, 6 Apr 2017 19:02:32 +0800 Subject: [PATCH 11/17] Update apps.json --- src/apps.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/apps.json b/src/apps.json index a6e85a2f6..856e1fc53 100755 --- a/src/apps.json +++ b/src/apps.json @@ -9,6 +9,15 @@ "url": "/shop/catalog/browse\\?sessid=", "website": "http://1and1.com" }, + "Typecho": { + "cats": [ + "11" + ], + "icon": "typecho.svg", + "implies": "PHP", + "url": "/admin/login\\.php?referer=http%3A%2F%2F", + "website": "http://typecho.org/" + }, "1C-Bitrix": { "cats": [ "1" From 377b7c6c4ca502a333917e061e6e230014e4833d Mon Sep 17 00:00:00 2001 From: strwei <24722645@qq.com> Date: Thu, 6 Apr 2017 19:09:34 +0800 Subject: [PATCH 12/17] adjust position adjust position add typecho --- src/apps.json | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) diff --git a/src/apps.json b/src/apps.json index 856e1fc53..f774120fc 100755 --- a/src/apps.json +++ b/src/apps.json @@ -9,15 +9,7 @@ "url": "/shop/catalog/browse\\?sessid=", "website": "http://1and1.com" }, - "Typecho": { - "cats": [ - "11" - ], - "icon": "typecho.svg", - "implies": "PHP", - "url": "/admin/login\\.php?referer=http%3A%2F%2F", - "website": "http://typecho.org/" - }, + "1C-Bitrix": { "cats": [ "1" @@ -3196,6 +3188,18 @@ }, "website": "http://www.greenvalley.nl/Public/Producten/Content_Management/CMS" }, + "Homeland": { + "cats": [ + "1", + "2" + ], + "headers": { + "Set-Cookie:": "_homeland_" + }, + "icon": "Homeland.png", + "implies": "Ruby on Rails", + "website": "https://gethomeland.com" + }, "HERE": { "cats": [ "35" @@ -5452,18 +5456,7 @@ "script": "^/nodebb\\.min\\.js\\?", "website": "https://nodebb.org" }, - "Homeland": { - "cats": [ - "1", - "2" - ], - "headers": { - "Set-Cookie:": "_homeland_" - }, - "icon": "Homeland.png", - "implies": "Ruby on Rails", - "website": "https://gethomeland.com" - }, + "OWL Carousel": { "cats": [ "5", @@ -7764,6 +7757,15 @@ "url": "/typo3/", "website": "http://www.typo3.org" }, + "Typecho": { + "cats": [ + "11" + ], + "icon": "typecho.svg", + "implies": "PHP", + "url": "/admin/login\\.php?referer=http%3A%2F%2F", + "website": "http://typecho.org/" + }, "Taiga": { "cats": [ "13" From 1bc003918f25c92961e1bf1ee604821ea7c3294b Mon Sep 17 00:00:00 2001 From: strwei <24722645@qq.com> Date: Thu, 6 Apr 2017 19:11:12 +0800 Subject: [PATCH 13/17] Add files via upload --- src/icons/typecho.svg | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 src/icons/typecho.svg diff --git a/src/icons/typecho.svg b/src/icons/typecho.svg new file mode 100644 index 000000000..b447bb51b --- /dev/null +++ b/src/icons/typecho.svg @@ -0,0 +1,10 @@ + + + typecho-logo + Created with Sketch (http://www.bohemiancoding.com/sketch) + + + + + + \ No newline at end of file From 0eeb02d1a28be9a4c248d51ad44dff040478eb19 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Thu, 6 Apr 2017 16:02:15 +0200 Subject: [PATCH 14/17] Improve a bit the detection of prestashop This can be tested on [this](https://www.kaviari.fr/fr/) website. --- src/apps.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 04b2f0408..10eb96e31 100755 --- a/src/apps.json +++ b/src/apps.json @@ -6110,6 +6110,10 @@ "meta": { "generator": "PrestaShop" }, + "headers": { + "Set-Cookie": "^PrestaShop", + "Powered-By": "^Prestashop$" + }, "website": "http://www.prestashop.com" }, "Project Wonderful": { @@ -10162,4 +10166,4 @@ "priority": "9" } } -} \ No newline at end of file +} From f4ea7b9bf071e3da96d498a1b1e6bf7d1a0d191f Mon Sep 17 00:00:00 2001 From: jvoisin Date: Thu, 6 Apr 2017 16:43:59 +0200 Subject: [PATCH 15/17] Lower false-positives ford3js This should close #1505 --- src/apps.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index 04b2f0408..458d2e617 100755 --- a/src/apps.json +++ b/src/apps.json @@ -1696,7 +1696,7 @@ ], "env": "^d3$", "icon": "D3.png", - "script": "d3(?:\\. v\\d+)?(?:\\.min)?\\.js", + "script": "/d3(?:\\. v\\d+)?(?:\\.min)?\\.js", "website": "http://d3js.org" }, "DHTMLX": { @@ -10162,4 +10162,4 @@ "priority": "9" } } -} \ No newline at end of file +} From ce5cad6c6bb22a127251ff2a5a5085330057d279 Mon Sep 17 00:00:00 2001 From: AlexByte Date: Wed, 5 Apr 2017 15:29:19 +0300 Subject: [PATCH 16/17] Fix false positive script detection of Reveal.js --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index e36664ac0..46270f1f1 100755 --- a/src/apps.json +++ b/src/apps.json @@ -6474,7 +6474,7 @@ ], "env": "^Reveal$", "icon": "Reveal.js.png", - "script": "reveal(?:\\.min)?\\.js", + "script": "(?:^|/)reveal(?:\\.min)?\\.js", "website": "http://lab.hakim.se/reveal-js" }, "Revel": { From 1d588e5bdc759319135aecc47c77d98e33cc1024 Mon Sep 17 00:00:00 2001 From: Ward Oosterlijnck Date: Fri, 7 Apr 2017 12:02:30 +1000 Subject: [PATCH 17/17] Add Netlify --- src/apps.json | 11 +++++++++++ src/icons/Netlify.svg | 9 +++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/icons/Netlify.svg diff --git a/src/apps.json b/src/apps.json index 105484c2a..ffeb66a88 100755 --- a/src/apps.json +++ b/src/apps.json @@ -5360,6 +5360,17 @@ "icon": "Nepso.png", "website": "http://nepso.com" }, + "Netlify": { + "cats": [ + "22", + "31" + ], + "headers": { + "Server": "Netlify" + }, + "icon": "Netlify.svg", + "website": "https://www.netlify.com/" + }, "Netmonitor": { "cats": [ "10" diff --git a/src/icons/Netlify.svg b/src/icons/Netlify.svg new file mode 100644 index 000000000..370591793 --- /dev/null +++ b/src/icons/Netlify.svg @@ -0,0 +1,9 @@ + + + + + + + + +