diff --git a/.gitignore b/.gitignore
index 4cb371265..af6546711 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,8 @@ build/*
drivers/npm/node_modules
drivers/npm/npm-debug.log
+src/icons/converted/*
+
package.json
node_modules/
npm-debug.log
diff --git a/bin/wappalyzer-build b/bin/wappalyzer-build
index 0d48405a1..cb1389954 100755
--- a/bin/wappalyzer-build
+++ b/bin/wappalyzer-build
@@ -30,6 +30,24 @@ echo "Compressing SVG icons..."
node $WAPPALYZER_NODE_PATH/node_modules/svgo/bin/svgo -q -f $WAPPALYZER_ROOT/src/icons $WAPPALYZER_ROOT/src/icons
+echo "Converting SVG icons to PNG..."
+
+OIFS="$IFS"
+IFS=$'\n'
+
+for svg in $(find $WAPPALYZER_ROOT/src/icons -type f -name "*.svg")
+do
+ echo " Converting $(basename "$svg")..."
+
+ dest="$WAPPALYZER_ROOT/src/icons/converted/$(basename "$svg").png"
+
+ if [[ ! -f "$dest" ]]; then
+ svg2png "$svg" --width=32 --height=32 --output "$dest" || true
+ fi
+done
+
+IFS="$OIFS"
+
wappalyzer links
# Npm Module
diff --git a/bin/wappalyzer-links b/bin/wappalyzer-links
index 2afbfada0..1d033d908 100755
--- a/bin/wappalyzer-links
+++ b/bin/wappalyzer-links
@@ -36,9 +36,12 @@ ln -f $path/utils/*.js $path/drivers/firefox/data/js
ln -f $path/wappalyzer.js $path/drivers/chrome/js
ln -f $path/apps.json $path/drivers/chrome
ln -f $path/icons/*.png $path/drivers/chrome/images/icons
-ln -f $path/icons/*.svg $path/drivers/chrome/images/icons
ln -f $path/utils/*.js $path/drivers/chrome/js
+if [ compgen -G "$path/icons/converted/*.png" > /dev/null ]; then
+ ln -f $path/icons/converted/*.png $path/drivers/chrome/images/icons/converted
+fi
+
ln -f $path/wappalyzer.js $path/drivers/bookmarklet/js
ln -f $path/icons/*.png $path/drivers/bookmarklet/images/icons
ln -f $path/icons/*.svg $path/drivers/bookmarklet/images/icons
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 625b6bf14..d8c6fd4a4 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -8,8 +8,8 @@ ENV WAPPALYZER_ROOT /home/wappalyzer/synced
ENV WAPPALYZER_NODE_PATH /home/wappalyzer/node
# Install packages
-RUN apt-get update && apt-get install -y curl zip libfreetype6 libfontconfig
-RUN curl -sL https://deb.nodesource.com/setup_4.x | bash -
+RUN apt-get update && apt-get install -y sudo curl bzip2 zip libfreetype6 libfontconfig
+RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
@@ -27,21 +27,23 @@ RUN echo "cd \$WAPPALYZER_ROOT" >> .bashrc
RUN echo "wappalyzer" >> .bashrc
+# PhantomJS
+# RUN su wappalyzer -c "\
+# mkdir phantomjs && \
+# curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xvjC phantomjs && \
+# ln -s /home/wappalyzer/phantomjs/phantomjs-*-linux-x86_64/bin/phantomjs /usr/bin/phantomjs"
+
+
# Node JS
RUN su wappalyzer -c "mkdir $WAPPALYZER_NODE_PATH"
ADD node/package.json $WAPPALYZER_NODE_PATH/package.json
+RUN npm i -g npm svg2png --prefix=/usr/local
+RUN ln -s -f /usr/local/bin/npm /usr/bin/npm
RUN su wappalyzer -c "cd $WAPPALYZER_NODE_PATH && npm i"
-# PhantomJS
-RUN su wappalyzer -c "\
- mkdir phantomjs && \
- curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2 | tar xvjC phantomjs && \
- ln -s /home/wappalyzer/phantomjs/phantomjs-*-linux-x86_64/bin/phantomjs bin/phantomjs"
-
-
# SSH
RUN rm -f /etc/service/sshd/down
RUN su wappalyzer -c "mkdir .ssh && chmod 700 .ssh"
diff --git a/docker/node/package.json b/docker/node/package.json
index b75954434..0bf01f87d 100644
--- a/docker/node/package.json
+++ b/docker/node/package.json
@@ -18,6 +18,7 @@
"jsonlint": "*",
"jpm": "*",
"imagemin-cli": "*",
+ "phantomjs-prebuilt": "*",
"svgo": "*"
},
"engines": {
diff --git a/src/apps.json b/src/apps.json
index 3093be1bd..f4ad3a9b2 100755
--- a/src/apps.json
+++ b/src/apps.json
@@ -1,68 +1,5 @@
{
- "apps": {
- "Strato": {
- "cats": [
- 6
- ],
- "html": "",
- "website": "shop.strato.com",
- "icon": "strato.png"
- },
- "Modified": {
- "cats": [
- 6
- ],
- "meta": {
- "generator": "\\(c\\) by modified eCommerce Shopsoftware ------ http://www.modified-shop.org"
- },
- "icon": "modified.png",
- "website": "www.modified-shop.org/"
- },
- "Mietshop": {
- "cats": [
- 6
- ],
- "meta": {
- "generator": "Mietshop"
- },
- "html": "",
- "website": "www.epages.com/",
- "icon": "epages.png"
- },
- "AfterBuy": {
- "cats": [
- 6
- ],
- "html": [
- "This OnlineStore is brought to you by ViA-Online GmbH Afterbuy. Information and contribution at https://www.afterbuy.de"
- ],
- "icon": "after-buy.png",
- "script": "shop-static\\.afterbuy\\.de",
- "website": "www.afterbuy.de"
- },
- "Xonic": {
- "cats": [
- 6
- ],
- "html": ["Powered by xonic-solutions Shopsoftware"],
- "meta": {
- "keywords": "xonic-solutions"
- },
- "script": "core/jslib/jquery\\.xonic\\.js\\.php",
- "website": "www.xonic-solutions.de",
- "icon": "xonic.png"
- },
+ "apps": {
"1C-Bitrix": {
"cats": [
1
@@ -128,28 +65,6 @@
"icon": "3ware.png",
"website": "www.3ware.com"
},
- "a-blog cms": {
- "cats": [
- 1
- ],
- "icon": "a-blog cms.png",
- "implies": "PHP",
- "meta": {
- "generator": "a-blog cms"
- },
- "website": "www.a-blogcms.jp"
- },
- "anchorCache": {
- "cats": [
- 23
- ],
- "meta": {
- "generator": "anchorCache"
- },
- "icon": "anchorCache.png",
- "implies": "PHP",
- "website": "www.anchorcache.eu"
- },
"AMPcms": {
"cats": [
1
@@ -276,6 +191,15 @@
"script": "addthis\\.com/js/",
"website": "www.addthis.com"
},
+ "AddToAny": {
+ "cats": [
+ 5
+ ],
+ "env": "^a2apage_init$",
+ "icon": "AddToAny.png",
+ "script": "addtoany\\.com/menu/page\\.js",
+ "website": "www.addtoany.com"
+ },
"Adobe ColdFusion": {
"cats": [
18
@@ -378,6 +302,17 @@
],
"website": "blogengine.ru"
},
+ "AfterBuy": {
+ "cats": [
+ 6
+ ],
+ "html": [
+ "
This OnlineStore is brought to you by ViA-Online GmbH Afterbuy. Information and contribution at https://www.afterbuy.de"
+ ],
+ "icon": "after-buy.png",
+ "script": "shop-static\\.afterbuy\\.de",
+ "website": "www.afterbuy.de"
+ },
"Airee": {
"cats": [
31
@@ -477,6 +412,21 @@
},
"website": "anchorcms.com"
},
+ "Angular Material": {
+ "cats": [
+ 18
+ ],
+ "env": "^angular$",
+ "icon": "Angular.svg",
+ "implies": [
+ "AngularJS"
+ ],
+ "script": [
+ "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular-material(?:\\.min)?\\.js\\;version:\\1",
+ "angular-material.*\\.js"
+ ],
+ "website": "material.angularjs.org"
+ },
"AngularJS": {
"cats": [
12
@@ -490,21 +440,6 @@
],
"website": "angularjs.org"
},
- "Angular Material": {
- "cats": [
- 18
- ],
- "env": "^angular$",
- "icon": "Angular.svg",
- "implies": [
- "AngularJS"
- ],
- "script": [
- "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular-material(?:\\.min)?\\.js\\;version:\\1",
- "angular-material.*\\.js"
- ],
- "website": "material.angularjs.org"
- },
"Apache": {
"cats": [
22
@@ -587,7 +522,7 @@
"excludes": "OpenCart",
"headers": {
"Arastta": "(.*)\\;version:\\1",
- "X-Arastta": "\\;version:1.2.1+"
+ "X-Arastta": ""
},
"html": "Powered by ]*href=\"https?://(?:www\\.)?arastta\\.org[^>]+>Arastta",
"icon": "Arastta.png",
@@ -630,6 +565,17 @@
],
"website": "jfrog.com/open-source/#os-arti"
},
+ "ArvanCloud": {
+ "cats": [
+ 31
+ ],
+ "env": "^ArvanCloud$",
+ "headers": {
+ "AR-PoweredBy": "Arvan Cloud \\(arvancloud.com\\)"
+ },
+ "icon": "ArvanCloud.png",
+ "website": "www.ArvanCloud.com"
+ },
"AsciiDoc": {
"cats": [
1,
@@ -643,6 +589,22 @@
},
"website": "www.methods.co.nz/asciidoc"
},
+ "Asymptix PHP Framework": {
+ "cats": [
+ 18
+ ],
+ "headers": {
+ "X-Powered-By": "Asymptix PHP Framework(?:.*)"
+ },
+ "html": [
+ "Powered by Asymptix PHP Framework"
+ ],
+ "icon": "Asymptix PHP Framework.png",
+ "implies": [
+ "PHP"
+ ],
+ "website": "github.com/Asymptix/Framework"
+ },
"Atlassian Bitbucket": {
"cats": [
47
@@ -716,6 +678,14 @@
"script": "^https?://edge\\.avangate\\.net/",
"website": "avangate.com"
},
+ "BEM": {
+ "cats": [
+ 12
+ ],
+ "html": "<[^>]+data-bem",
+ "icon": "BEM.png",
+ "website": "en.bem.info"
+ },
"BIGACE": {
"cats": [
1
@@ -775,14 +745,6 @@
"implies": "Python",
"website": "docs.python.org/2/library/basehttpserver.html"
},
- "BEM": {
- "cats": [
- 12
- ],
- "html": "<[^>]+data-bem",
- "icon": "BEM.png",
- "website": "www.en.bem.info"
- },
"BigDump": {
"cats": [
3
@@ -801,7 +763,7 @@
],
"env": "^compareProducts$",
"html": "]+cdn\\d+\\.bigcommerce\\.com/v",
- "icon": "Bigcommerce.png",
+ "icon": "Bigcommerce.svg",
"script": "cdn\\d+\\.bigcommerce\\.com/v",
"url": "mybigcommerce\\.com",
"website": "www.bigcommerce.com"
@@ -1002,16 +964,6 @@
"icon": "C++.png",
"website": "isocpp.org"
},
- "Caddy": {
- "cats": [
- 22
- ],
- "headers": {
- "Server": "^Caddy$"
- },
- "icon": "caddy.svg",
- "website": "caddyserver.com"
- },
"CFML": {
"cats": [
27
@@ -1099,6 +1051,16 @@
"icon": "CacheFly.png",
"website": "www.cachefly.com"
},
+ "Caddy": {
+ "cats": [
+ 22
+ ],
+ "headers": {
+ "Server": "^Caddy$"
+ },
+ "icon": "caddy.svg",
+ "website": "caddyserver.com"
+ },
"CakePHP": {
"cats": [
18
@@ -2052,6 +2014,17 @@
"implies": "ELOG",
"website": "midas.psi.ch/elog"
},
+ "EPages": {
+ "cats": [
+ 6
+ ],
+ "headers": {
+ "X-Powered-By": "epages 6"
+ },
+ "html": "",
+ "icon": "epages.png",
+ "website": "www.epages.com/"
+ },
"EPiServer": {
"cats": [
1
@@ -2942,6 +2915,17 @@
"icon": "default.png",
"website": "???"
},
+ "HTTP/2": {
+ "cats": [
+ 19
+ ],
+ "excludes": "SPDY",
+ "headers": {
+ "X-Firefox-Spdy": "h2"
+ },
+ "icon": "default.png",
+ "website": "http2.github.io"
+ },
"Hammer.js": {
"cats": [
12
@@ -3040,7 +3024,7 @@
"cats": [
1
],
- "html": " <[^>]+/binaries/(?:[^/]+/)*content/gallery/",
+ "html": "<[^>]+/binaries/(?:[^/]+/)*content/gallery/",
"icon": "Hippo.png",
"website": "onehippo.org"
},
@@ -3069,17 +3053,6 @@
},
"website": "hotarucms.org"
},
- "HTTP/2": {
- "cats": [
- 19
- ],
- "headers": {
- "X-Firefox-Spdy": "h2"
- },
- "icon": "default.png",
- "excludes": "SPDY",
- "website": "http2.github.io"
- },
"HubSpot": {
"cats": [
32
@@ -3089,6 +3062,17 @@
"icon": "HubSpot.png",
"website": "hubspot.com"
},
+ "Hugo": {
+ "cats": [
+ 1,
+ 11
+ ],
+ "icon": "Hugo.png",
+ "meta": {
+ "generator": "Hugo ([\\d.]+)?\\;version:\\1"
+ },
+ "website": "gohugo.io"
+ },
"Hybris": {
"cats": [
6
@@ -3101,17 +3085,6 @@
"implies": "Java",
"website": "hybris.com"
},
- "Hugo": {
- "cats": [
- 1,
- 11
- ],
- "icon": "Hugo.png",
- "meta": {
- "generator": "Hugo ([\\d.]+)?\\;version:\\1"
- },
- "website": "gohugo.io"
- },
"IBM Coremetrics": {
"cats": [
10
@@ -3185,15 +3158,6 @@
"script": "^https?://(?:[^/]+\\.)?i(?:oam|v)wbox\\.de/",
"website": "infonline.de"
},
- "Ink": {
- "cats": [
- 18
- ],
- "html": "]*href=\"[^\"]+ink(?:\\.min)?\\.css",
- "icon": "Ink.png",
- "script": "ink.*\\.js",
- "website": "ink.sapo.pt"
- },
"IPB": {
"cats": [
2
@@ -3296,6 +3260,15 @@
"icon": "default.png",
"website": "indyproject.org"
},
+ "Ink": {
+ "cats": [
+ 18
+ ],
+ "html": "]*href=\"[^\"]+ink(?:\\.min)?\\.css",
+ "icon": "Ink.png",
+ "script": "ink.*\\.js",
+ "website": "ink.sapo.pt"
+ },
"InstantCMS": {
"cats": [
1
@@ -3885,6 +3858,27 @@
"script": "lightbox.*\\.js",
"website": "lokeshdhakar.com/projects/lightbox2/"
},
+ "Lightspeed eCom": {
+ "cats": [
+ 6
+ ],
+ "html": "",
+ "icon": "Lightspeed.svg",
+ "script": "http://assets.webshopapp.com",
+ "url": "seoshop.webshopapp.com",
+ "website": "www.lightspeedhq.com/products/ecommerce/"
+ },
+ "Lighty": {
+ "cats": [
+ 18
+ ],
+ "headers": {
+ "Set-Cookie": "lighty_version"
+ },
+ "icon": "Lighty.png",
+ "implies": "PHP",
+ "website": "gitlab.com/lighty/framework"
+ },
"LimeSurvey": {
"cats": [
19
@@ -3904,6 +3898,15 @@
"script": "^https?://cdn\\.linksmart\\.com/linksmart_([\\d.]+?)(?:\\.min)?\\.js\\;version:\\1",
"website": "linksmart.com"
},
+ "List.js": {
+ "cats": [
+ 12
+ ],
+ "env": "^List$",
+ "icon": "List.js.png",
+ "script": "^list\\.(?:min\\.)?js$",
+ "website": "www.listjs.com"
+ },
"LiteSpeed": {
"cats": [
22
@@ -3983,15 +3986,6 @@
"script": "lodash.*\\.js",
"website": "www.lodash.com"
},
- "Lockerz Share": {
- "cats": [
- 5
- ],
- "env": "^a2apage_init$",
- "icon": "Lockerz Share.png",
- "script": "addtoany\\.com/menu/page\\.js",
- "website": "share.lockerz.com"
- },
"Locomotive": {
"cats": [
1
@@ -4115,15 +4109,23 @@
"cats": [
6
],
- "env": "^(?:Mage|VarienForm)$",
+ "env": [
+ "^(?:Mage|VarienForm)$"
+ ],
"headers": {
"Set-Cookie": "frontend=\\;confidence:50"
},
+ "html": [
+ "