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": [ + "