diff --git a/.gitignore b/.gitignore index 7d65964c0..22170b159 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,14 @@ -.vagrant - -build/* -src/icons/converted/* - -node_modules -npm-debug.log - -tags +/build/* +/src/icons/converted/* +/node_modules +/npm-debug.log !.gitkeep +# Junk files Thumbs.db Desktop.ini *.DS_Store ._* +tags +tags.* diff --git a/.travis.yml b/.travis.yml index d9239161a..c6d5ebf3a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,17 +1,15 @@ -language: node_js -node_js: - - "node" -sudo: false -dist: trusty -before_install: - - export WAPPALYZER_ROOT=$TRAVIS_BUILD_DIR - - export WAPPALYZER_NODE_PATH=$TRAVIS_BUILD_DIR - - export PATH=$PATH:$TRAVIS_BUILD_DIR/bin - - ln -s docker/node/package.json package.json -before_script: npm i -g manifoldjs +sudo: required + +services: + - docker + after_success: - - sha256sum build/* > build/SHA256SUMS - - cat build/SHA256SUMS + - sha256sum build/* > build/SHA256SUMS + - cat build/SHA256SUMS + +script: + - ./run build + deploy: provider: releases api_key: @@ -22,9 +20,6 @@ deploy: on: repo: AliasIO/Wappalyzer tags: true -after_script: ls -l --block-size=kB build -cache: - directories: - - node_modules + env: - CXX=g++-4.8 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index bffe6a2e1..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,3 +0,0 @@ -# Contributing - -You can find our contribution guide [in our wiki](https://github.com/AliasIO/Wappalyzer/wiki/Contributing). diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..e10b84532 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,32 @@ +FROM alpine + +MAINTAINER Elbert Alias + +ENV WAPPALYZER_DIR=/opt/wappalyzer + +RUN apk add --no-cache \ + bash \ + curl \ + fontconfig \ + nodejs \ + optipng \ + zip + +RUN mkdir -p /usr/share && \ + cd /usr/share \ + && curl -L https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xj \ + && ln -s /usr/share/phantomjs/phantomjs /usr/bin/phantomjs + +RUN apk del \ + curl + +RUN npm i -g \ + jsonlint-cli \ + manifoldjs \ + svg2png-many + +RUN mkdir -p $WAPPALYZER_DIR + +WORKDIR $WAPPALYZER_DIR + +CMD [ "./bin/run" ] diff --git a/README.md b/README.md index dbc8eaa5c..ae5627f3d 100644 --- a/README.md +++ b/README.md @@ -20,28 +20,16 @@ Refer to the [wiki](https://github.com/AliasIO/Wappalyzer/wiki) for ## Getting Started -This section describes how to set up a development environment. Everything you -need is contained in a [Docker image](https://registry.hub.docker.com/u/wappalyzer/dev/) -which is managed by Vagrant. - -Running this environment is optional but recommended as it provides some helpful tools. - -First, install [Docker](https://www.docker.com/) and [Vagrant](https://www.vagrantup.com/) -on your system. - -Clone the Wappalyzer repository and open the newly created directory in a -terminal. Run `vagrant up` to start the environment. - -Run `vagrant ssh` to access the environment and read usage instructions. +Install [Docker](https://www.docker.com/) on your system first. ```shell -$ git clone https://github.com/AliasIO/Wappalyzer.git wappalyzer -$ cd wappalyzer -$ vagrant up -$ vagrant ssh +$ git clone https://github.com/AliasIO/Wappalyzer.git +$ cd Wappalyzer +$ ./run links ``` -To stop the environment, run `vagrant halt`. +The `links` command creates symlinks for files that shared between the various +drivers (i.e. different platforms). If your file system does not support +symlinks, you need to manually copy these files (see [`bin/links`](https://github.com/AliasIO/Wappalyzer/blob/master/bin/links)). -If a new Docker image becomes available, rebuild the environment with -`vagrant destroy -y && vagrant up`. +Please run `./run validate` before submitting a pull request. diff --git a/Vagrantfile b/Vagrantfile deleted file mode 100644 index b4d0f218c..000000000 --- a/Vagrantfile +++ /dev/null @@ -1,20 +0,0 @@ -ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker' - -SYNCED_FOLDER = "/home/wappalyzer/synced" - -Vagrant.configure("2") do |config| - config.vm.synced_folder ".", SYNCED_FOLDER - - config.vm.provider "docker" do |d| - d.image = "wappalyzer/dev" - d.has_ssh = true - d.remains_running = true - end - - config.ssh.port = "22" - config.ssh.username = "wappalyzer" - config.ssh.private_key_path = "docker/ssh/insecure.key" - - config.vm.provision "shell", inline: "su - wappalyzer -c 'wappalyzer links'" - config.vm.provision "shell", inline: "echo Finished. Run \\`vagrant ssh\\` to access the environment." -end diff --git a/bin/build b/bin/build new file mode 100755 index 000000000..2c2941ba6 --- /dev/null +++ b/bin/build @@ -0,0 +1,77 @@ +#!/bin/bash + +cd "$(dirname $0)/.." + +set -eu + +./bin/validate + +echo "Prettifying apps.json..." + +jsonlint-cli -ist $'\t' src/apps.json + +echo "Converting SVG icons to PNG..." + +#svg2png-many -i src/icons/ -o src/icons/converted/ --width=32 --height=32 + +echo "Compressing PNG icons..." + +set +e + +optipng -quiet "src/icons/*.png" +optipng -quiet "src/icons/converted/*.png" + +set -e + +# WebExtension +echo "Building WebExtension..." + +webextension_dir=src/drivers/webextension + +pushd $webextension_dir > /dev/null + +zip -qr ../../../build/wappalyzer_webextension.zip . + +popd > /dev/null + +# Edge +echo "Building Edge application..." + +pushd build > /dev/null + +webextension_dir="../$webextension_dir" +manifest_dir="Wappalyzer/edgeextension/manifest" + +mv $webextension_dir/manifest.json $webextension_dir/manifest.webextension.json +mv $webextension_dir/manifest.edge.json $webextension_dir/manifest.json + +manifoldjs -l debug -p edgeextension -f edgeextension -m $webextension_dir/manifest.json + +# Replace symlinks with actual files +rm $manifest_dir/Extension/images/icons + +cp ../src/apps.json $manifest_dir/Extension +cp ../src/wappalyzer.js $manifest_dir/Extension/js +cp -r ../src/icons $manifest_dir/Extension/images + +mv $webextension_dir/manifest.json $webextension_dir/manifest.edge.json +mv $webextension_dir/manifest.webextension.json $webextension_dir/manifest.json + +sed -i 's/INSERT-YOUR-PACKAGE-IDENTITY-NAME-HERE/1591Wappalyzer.Wappalyzer/' $manifest_dir/appxmanifest.xml +sed -i 's/INSERT-YOUR-PACKAGE-IDENTITY-PUBLISHER-HERE/D240C22F-A6C1-45DF-BF7B-4C835064DF51/' $manifest_dir/appxmanifest.xml +sed -i 's/INSERT-YOUR-PACKAGE-PROPERTIES-PUBLISHERDISPLAYNAME-HERE/Wappalyzer/' $manifest_dir/appxmanifest.xml +sed -i 's/Version="0.\([^"]\+\)/Version="\1.0/' $manifest_dir/appxmanifest.xml + +cp $webextension_dir/images/icon_44.png $manifest_dir/Assets/Square44x44Logo.png +cp $webextension_dir/images/icon_150.png $manifest_dir/Assets/Square150x150Logo.png +cp $webextension_dir/images/icon_50.png $manifest_dir/Assets/StoreLogo.png + +manifoldjs -l debug -p edgeextension package $manifest_dir + +mv Wappalyzer/edgeextension/package/edgeExtension.appx wappalyzer_edge.appx + +rm -rf Wappalyzer + +popd > /dev/null + +echo "Done." diff --git a/bin/wappalyzer-help b/bin/help similarity index 60% rename from bin/wappalyzer-help rename to bin/help index d832f88c1..dc2fd3e8d 100755 --- a/bin/wappalyzer-help +++ b/bin/help @@ -1,11 +1,11 @@ #!/bin/bash cat << 'EOF' -usage: wappalyzer [] +usage: ./run [] The following commands are available: build Package drivers help This help text - links Create hard links to shared files in each driver + links Create symlinks to shared files in each driver validate Validate apps.json EOF diff --git a/bin/links b/bin/links new file mode 100755 index 000000000..368ce0e66 --- /dev/null +++ b/bin/links @@ -0,0 +1,14 @@ +#!/bin/bash + +cd "$(dirname $0)/../src" + +echo "Creating links..." + +ln -nsf ../../apps.json drivers/npm +ln -nsf ../../wappalyzer.js drivers/npm + +ln -nsf ../../apps.json drivers/webextension +ln -nsf ../../../wappalyzer.js drivers/webextension/js +ln -nsf ../../../icons/ drivers/webextension/images/icons + +echo "Done." diff --git a/bin/run b/bin/run new file mode 100755 index 000000000..f7a29c820 --- /dev/null +++ b/bin/run @@ -0,0 +1,11 @@ +#!/bin/bash + +cd "$(dirname $0)" + +if [[ -f "$1" ]]; then + ./$1 $@ +else + ./help + + exit 1 +fi diff --git a/bin/validate b/bin/validate new file mode 100755 index 000000000..1d6587600 --- /dev/null +++ b/bin/validate @@ -0,0 +1,17 @@ +#!/bin/bash + +cd "$(dirname $0)/.." + +set -eu + +echo "Validating apps.json..." + +jsonlint-cli -s schema.json src/apps.json + +echo "Validating regular expressions..." + +./bin/validate-regex + +echo "Validating icons..." + +./bin/validate-icons diff --git a/bin/validate-icons b/bin/validate-icons new file mode 100755 index 000000000..e1e629bbe --- /dev/null +++ b/bin/validate-icons @@ -0,0 +1,43 @@ +#!/usr/bin/env node + +var + app, + fs = require('fs'), + fileType = require('../node_modules/file-type'), + readChunk = require('../node_modules/read-chunk') + isSvg = require('../node_modules/is-svg') + json = require('../src/apps.json'); + +for (app in json.apps) { + (function(app) { + var + basePath = 'src/icons/'; + iconPath = json.apps[app].icon || 'default.svg'; + path = basePath + iconPath, + ext = iconPath.substr(iconPath.length - 4); + + if ( ext !== '.png' && ext !== '.svg' ) { + throw err = new Error('Icon file extension specified for app "' + app + '" is not ".png" or ".svg": src/icons/' + iconPath); + } + + fs.exists(path, function(exists) { + if ( exists ) { + if ( ext === '.png' ) { + var buffer = fileType(readChunk.sync(path, 0, 262)); + + if ( buffer === null ) { + throw new Error('Unknown mimetype or bad file for "' + app + '": src/icons/' + iconPath); + } else if ( buffer.mime !== 'image/png' ) { + throw new Error('Incorrect mimetype "' + buffer.mime + '" when expected PNG for app "' + app + '": src/icons/' + iconPath); + } + } else if ( type === 'svg' ) { + if ( !isSvg(fs.readFileSync(path)) ) { + throw new Error('Incorrect mimetype when expected SVG for app "' + app + '": src/icons/' + iconPath); + } + } + } else { + throw Error('Missing file for app "' + app + '": src/icons/' + iconPath); + } + }); + }(app)); +} diff --git a/bin/wappalyzer-validate-regex b/bin/validate-regex similarity index 94% rename from bin/wappalyzer-validate-regex rename to bin/validate-regex index f7976c116..423aa2c69 100755 --- a/bin/wappalyzer-validate-regex +++ b/bin/validate-regex @@ -2,8 +2,7 @@ var app, - modulesPath = process.env.WAPPALYZER_NODE_PATH !== undefined ? process.env.WAPPALYZER_NODE_PATH + '/node_modules/' : '', - json = require(process.env.WAPPALYZER_ROOT + '/src/apps.json'); + json = require('../src/apps.json'); for ( app in json.apps ) { ['headers', 'html', 'env', 'meta', 'script'].forEach(function(type) { diff --git a/bin/wappalyzer b/bin/wappalyzer deleted file mode 100755 index 5c1cb8261..000000000 --- a/bin/wappalyzer +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash - -if [ -f "$0-$1" ] -then - $0-$1 ${*:2} -else - $0-help - - exit 1 -fi - -exit diff --git a/bin/wappalyzer-build b/bin/wappalyzer-build deleted file mode 100755 index a07a85b59..000000000 --- a/bin/wappalyzer-build +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/bash - -if [ -z $WAPPALYZER_ROOT ] -then - echo "\$WAPPALYZER_ROOT not set" - - exit 1 -fi - -if [ -z $WAPPALYZER_NODE_PATH ] -then - echo "\$WAPPALYZER_NODE_PATH not set" - - exit 1 -fi - -set -eu - -wappalyzer validate - -echo "Prettifying apps.json..." - -node $WAPPALYZER_NODE_PATH/node_modules/jsonlint/lib/cli.js -ist $'\t' $WAPPALYZER_ROOT/src/apps.json - -echo "Compressing PNG and SVG icons..." - -node $WAPPALYZER_NODE_PATH/node_modules/imagemin-cli/cli.js $WAPPALYZER_ROOT/src/icons/* --out-dir $WAPPALYZER_ROOT/src/icons 2>&1 > /dev/null - -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 - rm "$dest" - fi - - node $WAPPALYZER_NODE_PATH/node_modules/svg2png/bin/svg2png-cli "$svg" --width=32 --height=32 --output "$dest" || true -done - -IFS="$OIFS" - -echo "Compressing converted PNG icons..." - -node $WAPPALYZER_NODE_PATH/node_modules/imagemin-cli/cli.js $WAPPALYZER_ROOT/src/icons/converted/* $WAPPALYZER_ROOT/src/icons/converted - -wappalyzer links - -# WebExtension -echo "Building WebExtension driver..." - -webextension_dir=$WAPPALYZER_ROOT/src/drivers/webextension - -pushd $webextension_dir > /dev/null - -zip -qr $WAPPALYZER_ROOT/build/wappalyzer_webextension.zip . - -popd > /dev/null - -# Edge - -pushd $WAPPALYZER_ROOT/build > /dev/null - -mv $webextension_dir/manifest.json $webextension_dir/manifest.webextension.json -mv $webextension_dir/manifest.edge.json $webextension_dir/manifest.json - -manifoldjs -l debug -p edgeextension -f edgeextension -m $webextension_dir/manifest.json - -mv $webextension_dir/manifest.json $webextension_dir/manifest.edge.json -mv $webextension_dir/manifest.webextension.json $webextension_dir/manifest.json - -manifest_dir="Wappalyzer/edgeextension/manifest" - -sed -i 's/INSERT-YOUR-PACKAGE-IDENTITY-NAME-HERE/Wappalyzer/' $manifest_dir/appxmanifest.xml -sed -i 's/INSERT-YOUR-PACKAGE-IDENTITY-PUBLISHER-HERE/Wappalyzer/' $manifest_dir/appxmanifest.xml -sed -i 's/INSERT-YOUR-PACKAGE-PROPERTIES-PUBLISHERDISPLAYNAME-HERE/Wappalyzer/' $manifest_dir/appxmanifest.xml -sed -i 's/Version="0.\([^"]\+\)/Version="\1.0/' $manifest_dir/appxmanifest.xml - -cp $webextension_dir/images/icon_44.png $manifest_dir/Assets/Square44x44Logo.png -cp $webextension_dir/images/icon_150.png $manifest_dir/Assets/Square150x150Logo.png -cp $webextension_dir/images/icon_50.png $manifest_dir/Assets/StoreLogo.png - -manifoldjs -l debug -p edgeextension package $manifest_dir - -mv Wappalyzer/edgeextension/package/edgeExtension.appx wappalyzer_edge.appx - -rm -rf Wappalyzer - -popd > /dev/null - -echo "Done. Builds have been created in $WAPPALYZER_ROOT/build." diff --git a/bin/wappalyzer-links b/bin/wappalyzer-links deleted file mode 100755 index ae75f4432..000000000 --- a/bin/wappalyzer-links +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash - -path=$1 - -if [ -z $path ] -then - if [ -z $WAPPALYZER_ROOT ] - then - echo "-$(basename $0): No path specified" - - exit 1 - fi - - path=$WAPPALYZER_ROOT -fi - -set -eu - -if [ ! -d $path/src ] -then - echo "-$(basename $0): Incorrect path" - - exit 1 -fi - -path="$path/src" - -echo "Creating hard links..." - -ln -f $path/wappalyzer.js $path/drivers/phantomjs -ln -f $path/apps.json $path/drivers/phantomjs - -ln -f $path/wappalyzer.js $path/drivers/webextension/js -ln -f $path/apps.json $path/drivers/webextension -ln -f $path/icons/*.png $path/drivers/webextension/images/icons -ln -f $path/icons/*.svg $path/drivers/webextension/images/icons -ln -f $path/utils/*.js $path/drivers/webextension/js - -if [ "$(compgen -G "$path/icons/converted/*.png" | head -n1)" ]; then - ln -f $path/icons/converted/*.png $path/drivers/webextension/images/icons/converted -fi - -echo "OK" - -exit 0 diff --git a/bin/wappalyzer-validate b/bin/wappalyzer-validate deleted file mode 100755 index 0106c4d18..000000000 --- a/bin/wappalyzer-validate +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -path="$1" - -if [ -z "$path" ]; then - if [ -z "$WAPPALYZER_ROOT" ]; then - echo "-$(basename $0): No path specified" - - exit 1 - fi - - path="$WAPPALYZER_ROOT" -fi - -set -eu - -if [ ! -d "$path/src" ]; then - echo "-$(basename $0): Incorrect path" - - exit 1 -fi - -path="$path/src" - -echo "Validating apps.json..." - -node "$WAPPALYZER_NODE_PATH/node_modules/jsonlint/lib/cli.js" --quiet -V "$WAPPALYZER_ROOT/schema.json" "$path/apps.json" - -echo "Validating regular expressions..." - -wappalyzer validate-regex - -echo "Validating icons..." - -wappalyzer validate-icons diff --git a/bin/wappalyzer-validate-icons b/bin/wappalyzer-validate-icons deleted file mode 100755 index 185511826..000000000 --- a/bin/wappalyzer-validate-icons +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env node - -var - app, - modulesPath = process.env.WAPPALYZER_NODE_PATH !== undefined ? process.env.WAPPALYZER_NODE_PATH + '/node_modules/' : '', - fs = require('fs'), - fileType = require(modulesPath + 'file-type'), - readChunk = require(modulesPath + 'read-chunk') - isSvg = require(modulesPath + 'is-svg') - json = require(process.env.WAPPALYZER_ROOT + '/src/apps.json'); - -for (app in json.apps) { - (function(app) { - var basePath = process.env.WAPPALYZER_ROOT + '/src/icons/'; - var iconPath = json.apps[app].icon || 'default.svg'; - var path = basePath + iconPath; - - var type; - if (path.substr(path.length - 4) === '.png') { - type = "PNG"; - } - else if (path.substr(path.length - 4) === '.svg') { - type = "SVG"; - } - else { - var err = new Error('Icon file extension specified for app "' + app + '" is not ".png" or ".svg": src/icons/' + iconPath); - throw err; - } - - fs.exists(path, function(exists) { - if (exists) { - if (type === "PNG") { - var buffer = fileType(readChunk.sync(path, 0, 262)); - if (buffer === null) { - var err = new Error('Unknown mimetype or bad file for "' + app + '": src/icons/' + iconPath); - throw err; - } - else if (buffer.mime !== 'image/png') { - var err = new Error('Incorrect mimetype "' + buffer.mime + '" when expected PNG for app "' + app + '": src/icons/' + iconPath); - throw err; - } - } - else if (type === "SVG") { - if (!isSvg(fs.readFileSync(path))) { - var err = new Error('Incorrect mimetype when expected SVG for app "' + app + '": src/icons/' + iconPath); - throw err; - } - } - } else { - var err = new Error('Missing file for app "' + app + '": src/icons/' + iconPath); - throw err; - } - }); - }(app)); -}; diff --git a/docker/Dockerfile b/docker/Dockerfile deleted file mode 100644 index c35776024..000000000 --- a/docker/Dockerfile +++ /dev/null @@ -1,72 +0,0 @@ -FROM phusion/baseimage - -MAINTAINER Elbert Alias - -ENV DEBIAN_FRONTEND noninteractive - -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 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 -RUN useradd -ms /bin/bash wappalyzer && usermod -a -G docker_env wappalyzer && echo "wappalyzer:wappalyzer" | chpasswd -RUN echo 'wappalyzer ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers - -WORKDIR /home/wappalyzer - -RUN su wappalyzer -c "mkdir bin synced" -RUN su wappalyzer -c "echo \"export PATH=\$PATH:/home/wappalyzer/bin:\\$WAPPALYZER_ROOT/bin\" | cat - .profile > /tmp/profile && mv /tmp/profile .profile" - -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 su wappalyzer -c "cd $WAPPALYZER_NODE_PATH && npm i" - -RUN npm i -g manifoldjs - - -# SSH -RUN rm -f /etc/service/sshd/down -RUN su wappalyzer -c "mkdir .ssh && chmod 700 .ssh" - -ADD ssh/insecure.key.pub /tmp/insecure.key.pub - -RUN su wappalyzer -c "cat /tmp/insecure.key.pub >> .ssh/authorized_keys && chmod 600 .ssh/authorized_keys" && rm -f /tmp/insecure.key.pub - - -# Fix the `stdin: is not a tty` error in Vagrant -RUN sed -i 's/^mesg n$/tty -s \&\& mesg n/g' /root/.profile - -EXPOSE 22 - -RUN echo "/usr/sbin/sshd -D" > /etc/my_init.d/sshd.sh - -CMD ["/sbin/my_init"] diff --git a/docker/node/package.json b/docker/node/package.json deleted file mode 100644 index cbfe4c39e..000000000 --- a/docker/node/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "wappalyzer-test", - "private": true, - "license": "GPLv3", - "bugs": { - "url": "https://github.com/AliasIO/Wappalyzer/issues" - }, - "homepage": "https://github.com/AliasIO/Wappalyzer", - "description": "Build test for Wappalyzer", - "repository": "AliasIO/Wappalyzer", - "scripts": { - "test": "./bin/wappalyzer build" - }, - "devDependencies": { - "file-type": "3.8.*", - "is-svg": "2.0.*", - "read-chunk": "2.0.*", - "jsonlint": "*", - "jpm": "*", - "imagemin-cli": "2.*.*", - "phantomjs-prebuilt": "*", - "svg2png": "3.*.*" - }, - "engines": { - "node": ">= 4" - } -} diff --git a/docker/ssh/insecure.key b/docker/ssh/insecure.key deleted file mode 100644 index bf599e805..000000000 --- a/docker/ssh/insecure.key +++ /dev/null @@ -1,27 +0,0 @@ ------BEGIN RSA PRIVATE KEY----- -MIIEowIBAAKCAQEAqVo54bv3J4K62IDCUIVY7gF2iBOR8fub5c9t6j4MbsRQDmU0 -yxhN1+7fMCERcoMSelAb/SYSzKE8azLugP7hsq4t+/xJijCB22uriFhKMpu4ySoA -6PVNbfbIptaVo6holVIMRKPXTg1hU6lr2DWMKB5AlGmz7ZHmQgX9iBoV8PmMYOF5 -UpiwfokcNnIwDiCCpd19G/lT6FlCVZHZdeZh41FWke8oQgWevM8fdGJkZ+a7Lgdm -6A3WlvI0AIz9KWfXlXAOvthi4QlB4SvSCwRQbKdHbW5UBRShucjlce3hZO9Q6ROC -Ta1zgvscleKd63yHSQ18Z2+j1t5T3HJzhOn1ywIDAQABAoIBAFdbcWwd15oL93Hi -yVlbz8nF+2yqG6ilT3+2Bk7EfwlMPreOQTNacB0o3PwosqVNM2Tgme91ilEAAviR -JzJnR+kxrArF0vFzoCidW7hTQsLkTOeHwTxp/OzyVgKpwjrPjlMoJafqlA9xG3la -dYTr6kZvhISKGgQ8NHhuOp/QRO0uFaQD8l0kVCEufgqbs6gBY7aAkNf2iogSms9w -139zwsXeSg2Vm7Img1PVrRsRM5qbTNBMIim+9q4fSrqP+rYF9lU1p68IzmG/wY2o -0ElwRoatVVV9Rvk00a1qBGNaT39oVEtryIiAlXPno+KW5dyVx53o9vjWHDz44yBN -G8/EgEECgYEA3UJtj5ikEdhquzy1WfbZwZVmTCJLMefiVui00RLV4Q/r/4Uojdsb -L/QCAplpbHUrj7O8Lp9CuXSnUNa4CkrTidj2wkDWDFl1EBLJNz1zhJjs6Aaw2u1t -SV6ULgx9Y25oiStygkJhon+wlNF9HRSCFeNkBNNjpkD2gEifxnHIDLsCgYEAw/Fi -OHFvVPx0/DS3FD/MEJAAZaGdg8Zb2TCmCIVjoj0tZOTDvwKIEYCQ41vADDLlCSGg -XOgNXvosSZtezmJxnkzO3NYXE4XZ7bPVMamuqbKXXzaee3tPmiFaeZfiB4tj7uxh -tWQdUicSMQ8WPqyTB5wmcF7k3L4TzrjSLOi5MjECgYEAnsLYfI3pREjGpN01v3zp -2QbLZVvCGugpN3U4sUBTqW9URn+Ujt0mD+2FN7o+tC0K+czc/ZMXPJ1gpRe87N2u -Fh5RSSder3PNFKB2MyXr6rwUWZTbd+ufXGL57mTV3+/MIIjFXIQnLIN1AAOlQ6WA -hhYooXHQ8e1xMrFpu+nOwpsCgYAanYEf9ZiPzLL/RxHPOFM5tLW5GFjS+3Cicc87 -vRKpiPHPkJteKLPe3L3RhDbz8T3XHbAwrnySeBzn6qjYE9snC3vV12bPChFuDk1Z -L5lAB7g0ALFKSJepcfpeJdlX+QEcBRPIlc69x/zamRgGb16RXA6EmP8xVMhP/h7e -ZsYxIQKBgBqOaZNHwaG6PqP2HCjc1keH4wQVx9eTV5y4/B5FJbMeK05vV2rBHoxA -P/dXE85olj8D/9E88xJ1V716kBeONcKFdbd3VfY5bo2VBz+piOaG3EBQOLIbd4/C -KVtgOWqI7WTLPIgpXlG5MA801RwhVyk1phmwhvW/Kb3lWsK1vkOe ------END RSA PRIVATE KEY----- diff --git a/docker/ssh/insecure.key.pub b/docker/ssh/insecure.key.pub deleted file mode 100644 index 48f46c871..000000000 --- a/docker/ssh/insecure.key.pub +++ /dev/null @@ -1 +0,0 @@ -ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCpWjnhu/cngrrYgMJQhVjuAXaIE5Hx+5vlz23qPgxuxFAOZTTLGE3X7t8wIRFygxJ6UBv9JhLMoTxrMu6A/uGyri37/EmKMIHba6uIWEoym7jJKgDo9U1t9sim1pWjqGiVUgxEo9dODWFTqWvYNYwoHkCUabPtkeZCBf2IGhXw+Yxg4XlSmLB+iRw2cjAOIIKl3X0b+VPoWUJVkdl15mHjUVaR7yhCBZ68zx90YmRn5rsuB2boDdaW8jQAjP0pZ9eVcA6+2GLhCUHhK9ILBFBsp0dtblQFFKG5yOVx7eFk71DpE4JNrXOC+xyV4p3rfIdJDXxnb6PW3lPccnOE6fXL elbert@home diff --git a/package.json b/package.json new file mode 100644 index 000000000..dd2dbe93d --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "dependencies": { + "file-type": "3.8.*", + "is-svg": "2.0.*", + "read-chunk": "2.0.*", + "svg2png-many": "*" + } +} + diff --git a/run b/run new file mode 100755 index 000000000..237565872 --- /dev/null +++ b/run @@ -0,0 +1,19 @@ +#!/bin/bash + +cd "$(dirname $0)" + +if [[ -z "$(which docker)" ]]; then + echo "Please install Docker from https://www.docker.com" + + exit 1 +fi + +docker="docker run --rm -v "$(pwd):/opt/wappalyzer" -it wappalyzer/dev" + +if [[ ! -d "node_modules" ]]; then + $docker ./bin/run links + + $docker npm i +fi + +$docker ./bin/run $@ diff --git a/src/apps.json b/src/apps.json index 428cbbef7..085251734 100755 --- a/src/apps.json +++ b/src/apps.json @@ -161,6 +161,21 @@ "icon": "ActOn.png", "website": "http://act-on.com" }, + "Prebid": { + "cats": [ + "36" + ], + "icon": "Prebid.png", + "env": [ + "pbjs", + "PREBID_TIMEOUT" + ], + "script": [ + "/prebid\\.js", + "adnxs\\.com/[^\"]*(?:prebid|/pb\\.js)" + ], + "website": "http://prebid.org" + }, "AdInfinity": { "cats": [ "36" @@ -813,6 +828,14 @@ }, "website": "http://bigace.de" }, + "Bablic": { + "cats": [ + "3","9" + ], + "website":"https://www.bablic.com/", + "env":"^bablic$", + "icon":"bablic.png" + }, "Backbone.js": { "cats": [ "12" @@ -927,7 +950,7 @@ ], "icon": "Blogger.png", "meta": { - "generator": "blogger" + "generator": "^Blogger$" }, "url": "\\.blogspot\\.com", "website": "http://www.blogger.com" @@ -1401,8 +1424,11 @@ "Python", "Solr", "Java", - "PostgreSQL\\;confidence:80" + "PostgreSQL" ], + "meta": { + "generator": ".*ckan.*" + }, "website": "http://ckan.org/" }, "ClickHeat": { @@ -1686,7 +1712,7 @@ }, "icon": "Craft CMS.png", "implies": "Yii", - "website": "http://buildwithcraft.com" + "website": "https://craftcms.com" }, "Crazy Egg": { "cats": [ @@ -1910,18 +1936,6 @@ "icon": "Dell.png", "website": "http://dell.com" }, - "Salesforce Commerce Cloud": { - "cats": [ - "6" - ], - "env": "^dwAnalytics$", - "headers": { - "Server": "Demandware eCommerce Server" - }, - "html": "<[^>]+demandware\\.edgesuite", - "icon": "Salesforce.svg", - "website": "http://demandware.com" - }, "Deployd": { "cats": [ "12" @@ -3142,19 +3156,6 @@ }, "website": "http://developers.google.com/web-toolkit" }, - "govCMS": { - "cats": [ - "1" - ], - "meta": { - "generator": "Drupal ([\\d]+) \\(http:\\/\\/drupal\\.org\\) \\+ govCMS\\;version:\\1" - }, - "icon": "govCMS.svg", - "implies": [ - "Drupal" - ], - "website": "https://www.govcms.gov.au" - }, "Graffiti CMS": { "cats": [ "1" @@ -3377,6 +3378,15 @@ "implies": "OmniTouch 8660 My Teamwork", "website": "http://example.com" }, + "Haravan": { + "cats": [ + "6" + ], + "env": "^Haravan$", + "icon": "Haravan.png", + "script": "haravan.*\\.js", + "website": "https://www.haravan.com" + }, "Haskell": { "cats": [ "27" @@ -4322,16 +4332,6 @@ "icon": "LabVIEW.png", "website": "http://ni.com/labview" }, - "Shapecss": { - "cats":[ - "18" - ], - "env": "^Shapecss$", - "html":"]* href=\"[^\"]*shapecss(?:\\.min)?\\.css", - "script":"shapecss(?:\\.min)?\\.js", - "icon":"Shapecss.svg", - "website":"https://shapecss.com" - }, "Laravel": { "cats": [ "18" @@ -4388,17 +4388,6 @@ "implies": "Scala", "website": "http://liftweb.net" }, - "Play": { - "cats": [ - "18" - ], - "headers": { - "Set-Cookie": "PLAY_SESSION" - }, - "icon": "Play.svg", - "implies": "Scala", - "website": "https://www.playframework.com" - }, "LightMon Engine": { "cats": [ "1" @@ -4636,6 +4625,15 @@ "implies": "Java", "website": "http://lucene.apache.org/core/" }, + "Luigiā€™s Box": { + "cats": [ + "10", + "29" + ], + "env": "^Luigis$", + "icon": "Luigisbox.svg", + "website": "https://www.luigisbox.com" + }, "M.R. Inc BoxyOS": { "cats": [ "28" @@ -4907,7 +4905,7 @@ "icon": "MediaWiki.png", "implies": "PHP", "meta": { - "generator": "MediaWiki" + "generator": "^MediaWiki ?([\\d.]+)$\\;version:\\1" }, "website": "http://www.mediawiki.org" }, @@ -4955,8 +4953,7 @@ "icon": "Meteor.png", "implies": [ "MongoDB", - "Node.js", - "jQuery" + "Node.js" ], "website": "http://meteor.com" }, @@ -5261,6 +5258,14 @@ }, "website": "http://moodle.org" }, + "Moon": { + "cats": [ + "12" + ], + "icon": "moon.png", + "script": "/moon(?:\\.min)?\\.js$", + "website": "http://moonjs.ga/" + }, "Motion-httpd": { "cats": [ "22" @@ -5394,6 +5399,15 @@ "script": "nv\\.d3(?:\\.min)?\\.js", "website": "http://nvd3.org" }, + "Navegg": { + "cats": [ + "10" + ], + "env": "^nvg[0-9]$", + "icon": "Navegg.png", + "script": "tag.navdmp.com", + "website": "https://www.navegg.com/" + }, "Nedstat": { "cats": [ "10" @@ -6071,7 +6085,6 @@ "Server": "\bPerl\b(?: ?/?v?([\\d.]+))?\\;version:\\1" }, "icon": "Perl.png", - "url": "\\.pl(?:$|\\?)", "website": "http://perl.org" }, "Petrojs": { @@ -6182,6 +6195,17 @@ }, "website": "http://planetplanet.org" }, + "Play": { + "cats": [ + "18" + ], + "headers": { + "Set-Cookie": "PLAY_SESSION" + }, + "icon": "Play.svg", + "implies": "Scala", + "website": "https://www.playframework.com" + }, "Plentymarkets": { "cats": [ "6" @@ -6615,6 +6639,12 @@ "icon": "Raspbian.svg", "website": "https://www.raspbian.org/" }, + "Rdf": { + "cats": [ + "27" + ], + "website": "https://www.w3.org/RDF/" + }, "React": { "cats": [ "12" @@ -7013,6 +7043,18 @@ "icon": "Salesforce.svg", "website": "https://www.salesforce.com" }, + "Salesforce Commerce Cloud": { + "cats": [ + "6" + ], + "env": "^dwAnalytics$", + "headers": { + "Server": "Demandware eCommerce Server" + }, + "html": "<[^>]+demandware\\.edgesuite", + "icon": "Salesforce.svg", + "website": "http://demandware.com" + }, "Sarka-SPIP": { "cats": [ "1" @@ -7086,9 +7128,9 @@ "cats": [ "12" ], + "icon": "Select2.png", "implies": "jQuery", "script": "select2.*\\.js", - "icon": "Select2.png", "website": "http://select2.github.io" }, "Semantic-ui": { @@ -7164,6 +7206,20 @@ "implies": "PHP", "website": "http://shadow-technologies.co.uk" }, + "Shapecss": { + "cats": [ + "18" + ], + "env": "^Shapecss$", + "html": "]* href=\"[^\"]*shapecss(?:\\.min)?\\.css", + "icon": "Shapecss.svg", + "script": [ + "shapecss[-.]([\\d.]*\\d)[^/]*\\.js\\;version:\\1", + "/([\\d.]+)/shapecss(?:\\.min)?\\.js\\;version:\\1", + "shapecss.*\\.js" + ], + "website": "https://shapecss.com" + }, "ShareThis": { "cats": [ "5" @@ -7511,12 +7567,12 @@ "SonarQube" ], - "script": "^/js/bundles/sonar\\.js?v=([\\d.]+)$\\;version:\\1", "icon": "sonar.png", "implies": "Java", "meta": { "application-name": "^SonarQubes$" }, + "script": "^/js/bundles/sonar\\.js?v=([\\d.]+)$\\;version:\\1", "website": "https://www.sonarqube.org/" }, "SoundManager": { @@ -7527,6 +7583,12 @@ "icon": "SoundManager.png", "website": "http://www.schillmania.com/projects/soundmanager2" }, + "Sparql": { + "cats": [ + "27" + ], + "website": "https://www.w3.org/TR/sparql11-overview/" + }, "Sphinx": { "cats": [ "4" @@ -7680,7 +7742,7 @@ "icon": "Store Systems.png", "website": "http://store-systems.de" }, - "Storyblok": { + "Storyblok": { "cats": [ "1" ], @@ -7796,6 +7858,7 @@ "cats": [ "12" ], + "excludes": "SweetAlert", "html": "]+?href=\"[^\"]+sweetalert2(?:\\.min)?\\.css", "icon": "SweetAlert2.png", "script": "sweetalert2(?:\\.min)?\\.js", @@ -8111,7 +8174,7 @@ "PHP", "jQuery" ], - "script": "lucide\\.init\\.js", + "script": "lucide\\.init(?:\\.min)?\\.js", "website": "http://www.translucide.net" }, "Tumblr": { @@ -8182,7 +8245,7 @@ "html": [ "Froala \ No newline at end of file +Froala \ No newline at end of file diff --git a/src/icons/Google Search Appliance.png b/src/icons/Google Search Appliance.png index 2e1f97ece..71bb47077 100644 Binary files a/src/icons/Google Search Appliance.png and b/src/icons/Google Search Appliance.png differ diff --git a/src/icons/Haravan.png b/src/icons/Haravan.png new file mode 100644 index 000000000..e5d48e6b2 Binary files /dev/null and b/src/icons/Haravan.png differ diff --git a/src/icons/Homeland.png b/src/icons/Homeland.png index a269934c4..e8ca492f0 100644 Binary files a/src/icons/Homeland.png and b/src/icons/Homeland.png differ diff --git a/src/icons/Jetshop.png b/src/icons/Jetshop.png new file mode 100644 index 000000000..604b7ba85 Binary files /dev/null and b/src/icons/Jetshop.png differ diff --git a/src/icons/Kamva.svg b/src/icons/Kamva.svg index 8bbf89c96..0304de60a 100644 --- a/src/icons/Kamva.svg +++ b/src/icons/Kamva.svg @@ -1,212 +1 @@ - - - -image/svg+xml + \ No newline at end of file diff --git a/src/icons/Klarna.svg b/src/icons/Klarna.svg index e611627af..0bb061c85 100644 --- a/src/icons/Klarna.svg +++ b/src/icons/Klarna.svg @@ -1,12 +1 @@ - - - - klarna - Created with Sketch. - - - - - - - \ No newline at end of file +klarna \ No newline at end of file diff --git a/src/icons/Luigisbox.svg b/src/icons/Luigisbox.svg new file mode 100644 index 000000000..3a7dc2388 --- /dev/null +++ b/src/icons/Luigisbox.svg @@ -0,0 +1,25 @@ + +image/svg+xml \ No newline at end of file diff --git a/src/icons/Medium.svg b/src/icons/Medium.svg index f85a5519f..afaa40a70 100755 --- a/src/icons/Medium.svg +++ b/src/icons/Medium.svg @@ -1,9 +1 @@ - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/Navegg.png b/src/icons/Navegg.png new file mode 100644 index 000000000..037dc61f5 Binary files /dev/null and b/src/icons/Navegg.png differ diff --git a/src/icons/Netlify.svg b/src/icons/Netlify.svg index 370591793..fa36dd539 100644 --- a/src/icons/Netlify.svg +++ b/src/icons/Netlify.svg @@ -1,9 +1 @@ - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/Neto.svg b/src/icons/Neto.svg index a4fabcbe3..4ed0473bf 100644 --- a/src/icons/Neto.svg +++ b/src/icons/Neto.svg @@ -1,36 +1 @@ - - - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/PHP.svg b/src/icons/PHP.svg index e5799b153..894c7f342 100644 --- a/src/icons/PHP.svg +++ b/src/icons/PHP.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/Play.svg b/src/icons/Play.svg index 10925d767..098d6b665 100644 --- a/src/icons/Play.svg +++ b/src/icons/Play.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/Plotly.png b/src/icons/Plotly.png index 20f7b24d8..b970858cb 100644 Binary files a/src/icons/Plotly.png and b/src/icons/Plotly.png differ diff --git a/src/icons/Prebid.png b/src/icons/Prebid.png new file mode 100644 index 000000000..3a9ab86c6 Binary files /dev/null and b/src/icons/Prebid.png differ diff --git a/src/icons/Raspbian.svg b/src/icons/Raspbian.svg index 2131cf097..ceed5e799 100644 --- a/src/icons/Raspbian.svg +++ b/src/icons/Raspbian.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/Revel.png b/src/icons/Revel.png index f8e9b6ef5..89494132d 100644 Binary files a/src/icons/Revel.png and b/src/icons/Revel.png differ diff --git a/src/icons/RockRMS.svg b/src/icons/RockRMS.svg index 1a782b9bb..6b352f6ca 100644 --- a/src/icons/RockRMS.svg +++ b/src/icons/RockRMS.svg @@ -1,12 +1 @@ - - - - rock-logo - Created with Sketch. - - - - - \ No newline at end of file +rock-logo \ No newline at end of file diff --git a/src/icons/Salesforce.svg b/src/icons/Salesforce.svg index c5635099f..8209a8af9 100644 --- a/src/icons/Salesforce.svg +++ b/src/icons/Salesforce.svg @@ -1,159 +1 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/Scholica.svg b/src/icons/Scholica.svg index b35216915..d136a5b2c 100644 --- a/src/icons/Scholica.svg +++ b/src/icons/Scholica.svg @@ -1,24 +1 @@ - - - - logo-green-icon - Created with Sketch. - - - - - - - - - \ No newline at end of file +logo-green-icon \ No newline at end of file diff --git a/src/icons/Shapecss.svg b/src/icons/Shapecss.svg index 8d577bec6..71026cd91 100644 --- a/src/icons/Shapecss.svg +++ b/src/icons/Shapecss.svg @@ -1,27 +1 @@ - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/ShellInABox.png b/src/icons/ShellInABox.png index 036151609..3bb29f8c6 100644 Binary files a/src/icons/ShellInABox.png and b/src/icons/ShellInABox.png differ diff --git a/src/icons/SpinCMS.png b/src/icons/SpinCMS.png index f6e947831..893beccae 100644 Binary files a/src/icons/SpinCMS.png and b/src/icons/SpinCMS.png differ diff --git a/src/icons/SumoMe.png b/src/icons/SumoMe.png index b70b8f935..10f30c3bd 100644 Binary files a/src/icons/SumoMe.png and b/src/icons/SumoMe.png differ diff --git a/src/icons/SweetAlert2.png b/src/icons/SweetAlert2.png index 1d7edfcf1..bba68625d 100644 Binary files a/src/icons/SweetAlert2.png and b/src/icons/SweetAlert2.png differ diff --git a/src/icons/Vinala.png b/src/icons/Vinala.png index 8aa46505e..b453eb188 100644 Binary files a/src/icons/Vinala.png and b/src/icons/Vinala.png differ diff --git a/src/icons/YouTrack.png b/src/icons/YouTrack.png index 4a00a51d4..c9aee2f8e 100644 Binary files a/src/icons/YouTrack.png and b/src/icons/YouTrack.png differ diff --git a/src/icons/adminer.png b/src/icons/adminer.png index 231efe4d6..e0911caa5 100644 Binary files a/src/icons/adminer.png and b/src/icons/adminer.png differ diff --git a/src/icons/apostrophecms.svg b/src/icons/apostrophecms.svg index d71a5b5db..ca5fc0d41 100644 --- a/src/icons/apostrophecms.svg +++ b/src/icons/apostrophecms.svg @@ -1,12 +1 @@ - - - - 256 - Created with Sketch. - - - - - - - \ No newline at end of file +256 \ No newline at end of file diff --git a/src/icons/aws-ec2.svg b/src/icons/aws-ec2.svg index f6da9f51d..bb4f86907 100755 --- a/src/icons/aws-ec2.svg +++ b/src/icons/aws-ec2.svg @@ -1,13 +1 @@ - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/aws-s3.svg b/src/icons/aws-s3.svg index 70a784357..3c8c386a2 100755 --- a/src/icons/aws-s3.svg +++ b/src/icons/aws-s3.svg @@ -1,17 +1 @@ - - - - - - - - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/bablic.png b/src/icons/bablic.png new file mode 100644 index 000000000..c258cdd60 Binary files /dev/null and b/src/icons/bablic.png differ diff --git a/src/icons/cloudcart.svg b/src/icons/cloudcart.svg index 5d5c41cf9..e7029a935 100644 --- a/src/icons/cloudcart.svg +++ b/src/icons/cloudcart.svg @@ -1,24 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/default.svg b/src/icons/default.svg index af0f6be0c..fbbd408a7 100644 --- a/src/icons/default.svg +++ b/src/icons/default.svg @@ -1,19 +1 @@ - - - - Favicon - Created with Sketch. - - - - - - - - - - - - - - \ No newline at end of file +Favicon \ No newline at end of file diff --git a/src/icons/eCommercePy.png b/src/icons/eCommercePy.png index 16fb0d0b9..ae9d304fb 100644 Binary files a/src/icons/eCommercePy.png and b/src/icons/eCommercePy.png differ diff --git a/src/icons/ebis.png b/src/icons/ebis.png index 1c572e816..463d82d95 100644 Binary files a/src/icons/ebis.png and b/src/icons/ebis.png differ diff --git a/src/icons/ec-cube.png b/src/icons/ec-cube.png index beb4e7123..1097be68e 100644 Binary files a/src/icons/ec-cube.png and b/src/icons/ec-cube.png differ diff --git a/src/icons/etherpad.png b/src/icons/etherpad.png index 8cf4ddebf..58211c95f 100644 Binary files a/src/icons/etherpad.png and b/src/icons/etherpad.png differ diff --git a/src/icons/gerrit.svg b/src/icons/gerrit.svg index 160dd52e3..1b8d4e217 100644 --- a/src/icons/gerrit.svg +++ b/src/icons/gerrit.svg @@ -1,8 +1 @@ - - - - - - - - + \ No newline at end of file diff --git a/src/icons/gogs.png b/src/icons/gogs.png index e64bfcc2e..dcc329ca7 100644 Binary files a/src/icons/gogs.png and b/src/icons/gogs.png differ diff --git a/src/icons/gravityforms.svg b/src/icons/gravityforms.svg index b2c4ee7c6..43130e50a 100644 --- a/src/icons/gravityforms.svg +++ b/src/icons/gravityforms.svg @@ -1 +1 @@ -gravityforms +gravityforms \ No newline at end of file diff --git a/src/icons/iPresta.png b/src/icons/iPresta.png index f493a4650..7ab9809ed 100644 Binary files a/src/icons/iPresta.png and b/src/icons/iPresta.png differ diff --git a/src/icons/infusionsoft.svg b/src/icons/infusionsoft.svg index 50f50d016..c2b7a1253 100644 --- a/src/icons/infusionsoft.svg +++ b/src/icons/infusionsoft.svg @@ -1 +1 @@ -infusionsoft \ No newline at end of file +infusionsoft \ No newline at end of file diff --git a/src/icons/kibana.svg b/src/icons/kibana.svg index 419dcbd87..595a80598 100644 --- a/src/icons/kibana.svg +++ b/src/icons/kibana.svg @@ -1,19 +1 @@ - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/mailchimp.svg b/src/icons/mailchimp.svg index 2456a7208..5831b880a 100644 --- a/src/icons/mailchimp.svg +++ b/src/icons/mailchimp.svg @@ -1 +1 @@ -mailchimp +mailchimp \ No newline at end of file diff --git a/src/icons/mattermost.png b/src/icons/mattermost.png index 7375f3e61..cca83f7a0 100644 Binary files a/src/icons/mattermost.png and b/src/icons/mattermost.png differ diff --git a/src/icons/meliscmsv2.png b/src/icons/meliscmsv2.png index 39ec358a6..c545b2882 100644 Binary files a/src/icons/meliscmsv2.png and b/src/icons/meliscmsv2.png differ diff --git a/src/icons/moon.png b/src/icons/moon.png index 2fdae7cc3..eb8ff3afd 100644 Binary files a/src/icons/moon.png and b/src/icons/moon.png differ diff --git a/src/icons/octopress.png b/src/icons/octopress.png index 0f2506730..d65b4ba96 100644 Binary files a/src/icons/octopress.png and b/src/icons/octopress.png differ diff --git a/src/icons/pygments.png b/src/icons/pygments.png index 222c8951c..3f3be26e6 100644 Binary files a/src/icons/pygments.png and b/src/icons/pygments.png differ diff --git a/src/icons/storyblok.png b/src/icons/storyblok.png index daf5882d1..404358d94 100644 Binary files a/src/icons/storyblok.png and b/src/icons/storyblok.png differ diff --git a/src/icons/translucide.svg b/src/icons/translucide.svg index 1cadcf7ac..ed882e815 100644 --- a/src/icons/translucide.svg +++ b/src/icons/translucide.svg @@ -1,36 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/src/icons/typecho.svg b/src/icons/typecho.svg index b447bb51b..e43dcb1f9 100644 --- a/src/icons/typecho.svg +++ b/src/icons/typecho.svg @@ -1,10 +1 @@ - - - typecho-logo - Created with Sketch (http://www.bohemiancoding.com/sketch) - - - - - - \ No newline at end of file +typecho-logo \ No newline at end of file diff --git a/src/icons/wpCache.png b/src/icons/wpCache.png index 12470ff47..e8a21e343 100644 Binary files a/src/icons/wpCache.png and b/src/icons/wpCache.png differ diff --git a/src/icons/wp_super_cache.png b/src/icons/wp_super_cache.png index 87e8d17ed..819cab29f 100644 Binary files a/src/icons/wp_super_cache.png and b/src/icons/wp_super_cache.png differ diff --git a/src/wappalyzer.js b/src/wappalyzer.js index aa7b2f03e..093ab7c80 100644 --- a/src/wappalyzer.js +++ b/src/wappalyzer.js @@ -470,7 +470,7 @@ var wappalyzer = (function() { regex = /]+>/ig, patterns = parsePatterns(w.apps[app.app].meta); - if ( patterns.length ) { + if ( patterns ) { while ( match = regex.exec(html) ) { for ( meta in patterns ) { if ( new RegExp('(name|property)=["\']' + meta + '["\']', 'i').test(match) ) {