Merge pull request #15 from AliasIO/master

update
main
֍ DaAwesomeP ֎ 8 years ago committed by GitHub
commit 548fe2191d

@ -41,7 +41,7 @@ do
rm "$dest"
fi
#node $WAPPALYZER_NODE_PATH/node_modules/svg2png/bin/svg2png-cli "$svg" --width=32 --height=32 --output "$dest" || true
node $WAPPALYZER_NODE_PATH/node_modules/svg2png/bin/svg2png-cli "$svg" --width=32 --height=32 --output "$dest" || true
done
IFS="$OIFS"
@ -52,22 +52,6 @@ node $WAPPALYZER_NODE_PATH/node_modules/imagemin-cli/cli.js $WAPPALYZER_ROOT/src
wappalyzer links
# Mozilla Firefox
echo "Building Firefox driver..."
pushd $WAPPALYZER_ROOT/src/drivers/firefox > /dev/null
node $WAPPALYZER_NODE_PATH/node_modules/jpm/bin/jpm xpi && mv *.xpi $WAPPALYZER_ROOT/build/wappalyzer_firefox.xpi
popd > /dev/null
# Google Chrome
echo "Building Chrome driver..."
pushd $WAPPALYZER_ROOT/src/drivers/chrome > /dev/null
zip -qr $WAPPALYZER_ROOT/build/wappalyzer_chrome.zip .
# WebExtension
echo "Building WebExtension driver..."

@ -30,26 +30,11 @@ 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/firefox
ln -f $path/apps.json $path/drivers/firefox/data
ln -f $path/icons/*.png $path/drivers/firefox/data/images/icons
ln -f $path/icons/*.svg $path/drivers/firefox/data/images/icons
ln -f $path/utils/iframe.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" | head -n1)" ]; then
ln -f $path/icons/converted/*.png $path/drivers/chrome/images/icons/converted
fi
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

@ -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

@ -9,6 +9,7 @@
"url": "/shop/catalog/browse\\?sessid=",
"website": "http://1and1.com"
},
"1C-Bitrix": {
"cats": [
"1"
@ -587,6 +588,26 @@
"implies": "Java",
"website": "http://wicket.apache.org"
},
"ApexPages": {
"cats": [
"51"
],
"headers": {
"X-Powered-By": "Salesforce.com ApexPages"
},
"icon": "ApexPages.png",
"implies": "Salesforce",
"website": "https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_intro.htm"
},
"Apostrophe CMS": {
"cats": [
"1"
],
"html": "<[^>]+data-apos-refreshable[^>]",
"icon": "apostrophecms.svg",
"implies": "Node.js",
"website": "http://apostrophecms.org"
},
"AppNexus": {
"cats": [
"36"
@ -942,6 +963,14 @@
"script": "boba(?:\\.min)?\\.js",
"website": "http://boba.space150.com"
},
"Bold Chat": {
"cats": [
"52"
],
"icon": "BoldChat.png",
"script": "^https?://vmss\\.boldchat\\.com/aid/\\d{18}/bc\\.vms4/vms\\.js",
"website": "https://www.boldchat.com/"
},
"Bolt": {
"cats": [
"1"
@ -1696,7 +1725,7 @@
],
"env": "^d3$",
"icon": "D3.png",
"script": "d3(?:\\. v\\d+)?(?:\\.min)?\\.js",
"script": "/d3(?:\\. v\\d+)?(?:\\.min)?\\.js",
"website": "http://d3js.org"
},
"DHTMLX": {
@ -2003,6 +2032,9 @@
"cats": [
"1"
],
"headers": {
"X-Dotclear-Static-Cache": ""
},
"icon": "Dotclear.png",
"implies": "PHP",
"website": "http://dotclear.org"
@ -2466,7 +2498,7 @@
],
"icon": "FancyBox.png",
"implies": "jQuery",
"script": "jquery\\.fancybox\\.pack\\.js$",
"script": "jquery\\.fancybox\\.pack\\.js(?:\\?v=([\\d.]+))?$\\;version:\\1",
"website": "http://fancyapps.com/fancybox"
},
"Fat-Free Framework": {
@ -2545,6 +2577,18 @@
},
"website": "http://www.flexcmp.com/cms/home"
},
"FlexSlider": {
"cats": [
"5",
"7"
],
"icon": "FlexSlider.png",
"implies": "jQuery",
"script": [
"jquery\\.flexslider(?:\\.min)?\\.js$"
],
"website": "https://woocommerce.com/flexslider/"
},
"FluxBB": {
"cats": [
"2"
@ -2577,6 +2621,17 @@
"icon": "Font Awesome.png",
"website": "http://fontawesome.io"
},
"Fork CMS": {
"cats": [
"1"
],
"icon": "ForkCMS.png",
"implies": "Symfony",
"meta": {
"generator": "^Fork CMS$"
},
"website": "http://www.fork-cms.com/"
},
"Fortune3": {
"cats": [
"6"
@ -2724,7 +2779,10 @@
"47"
],
"env": "^gerrit_",
"html": "<(?:div|style) id=\"gerrit_",
"html": [
">Gerrit Code Review</a>\\s*\"\\s*\\(([0-9.]+)\\)\\;version:\\1",
"<(?:div|style) id=\"gerrit_"
],
"icon": "gerrit.svg",
"implies": [
"Java",
@ -2790,7 +2848,6 @@
},
"html": [
"<meta content=\"https?://[^/]+/assets/gitlab_logo-",
"GitLab</title>",
"<header class=\"navbar navbar-fixed-top navbar-gitlab with-horizontal-nav\">"
],
"icon": "GitLab.svg",
@ -3131,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"
@ -3375,6 +3444,18 @@
},
"website": "http://hotarucms.org"
},
"Hotjar": {
"cats": [
"10"
],
"env": [
"^HotLeadfactory$",
"^HotleadController$"
],
"icon": "Hotjar.png",
"script": "^//static\\.hotjar\\.com/c/hotjar-",
"website": "https://www.hotjar.com"
},
"HubSpot": {
"cats": [
"32"
@ -4130,6 +4211,14 @@
},
"website": "http://www.komodocms.com"
},
"Kontaktify": {
"cats": [
"5"
],
"icon": "Kontaktify.png",
"script": "//(?:www\\.)?kontaktify\\.com/embed.js",
"website": "https://www.kontaktify.com"
},
"Koobi": {
"cats": [
"1"
@ -4373,6 +4462,14 @@
"url": "\\.livejournal\\.com",
"website": "http://www.livejournal.com"
},
"LivePerson": {
"cats": [
"52"
],
"icon": "LivePerson.png",
"script": "^https?://lptag\\.liveperson\\.net/tag/tag\\.js",
"website": "https://www.liveperson.com/"
},
"LiveStreet CMS": {
"cats": [
"1"
@ -4747,6 +4844,18 @@
},
"website": "http://www.mediawiki.org"
},
"Medium": {
"cats": [
"1"
],
"headers": {
"X-Powered-By": "Medium"
},
"icon": "Medium.svg",
"script": "medium\\.com",
"url": "^(?:www\\.)?medium\\.com",
"website": "https://medium.com"
},
"Meebo": {
"cats": [
"5"
@ -4771,9 +4880,17 @@
"cats": [
"12"
],
"env": "^Meteor$",
"env": [
"^Meteor$",
"^METEOR_VERSION$"
],
"html": "<link[^>]+__meteor-css__",
"icon": "Meteor.png",
"implies": [
"MongoDB",
"Node.js",
"jQuery"
],
"website": "http://meteor.com"
},
"Methode": {
@ -5256,6 +5373,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"
@ -5327,6 +5455,19 @@
"icon": "node.js.png",
"website": "http://nodejs.org"
},
"NodeBB": {
"cats": [
"2"
],
"headers": {
"X-Powered-By": "^NodeBB$"
},
"icon": "NodeBB.png",
"implies": "Node.js",
"script": "^/nodebb\\.min\\.js\\?",
"website": "https://nodebb.org"
},
"OWL Carousel": {
"cats": [
"5",
@ -5390,6 +5531,14 @@
"script": "/web/js/(?:web\\.assets_common/|website\\.assets_frontend/)\\;confidence:25",
"website": "http://odoo.com"
},
"Olark": {
"cats": [
"52"
],
"icon": "Olark.png",
"script": "^https?:\\/\\/static\\.olark\\.com\\/jsclient\\/loader1\\.js",
"website": "https://www.olark.com/"
},
"OmniTouch 8660 My Teamwork": {
"cats": [
"19"
@ -6110,6 +6259,10 @@
"meta": {
"generator": "PrestaShop"
},
"headers": {
"Set-Cookie": "^PrestaShop",
"Powered-By": "^Prestashop$"
},
"website": "http://www.prestashop.com"
},
"Project Wonderful": {
@ -6475,7 +6628,7 @@
],
"env": "^Reveal$",
"icon": "Reveal.js.png",
"script": "reveal(?:\\.min)?\\.js",
"script": "(?:^|/)reveal(?:\\.min)?\\.js",
"website": "http://lab.hakim.se/reveal-js"
},
"Revel": {
@ -6779,6 +6932,18 @@
"implies": "Express",
"website": "http://sailsjs.org"
},
"Salesforce": {
"cats": [
"53"
],
"env": "^SFDC(?:App|Cmp|Page|SessionVars)$",
"headers": {
"Set-Cookie": "com\\.salesforce\\."
},
"html": "<[^>]+=\"brandQuaternaryFgrs\"",
"icon": "Salesforce.svg",
"website": "https://www.salesforce.com"
},
"Sarka-SPIP": {
"cats": [
"1"
@ -6817,6 +6982,16 @@
],
"website": "http://schneider-electric.com"
},
"Scholica": {
"cats": [
"21"
],
"headers": {
"X-Scholica-Version": ""
},
"icon": "Scholica.svg",
"website": "http://scholica.com"
},
"Scientific Linux": {
"cats": [
"28"
@ -7288,6 +7463,17 @@
},
"website": "http://spidercontrol.net/ininet"
},
"SpinCMS": {
"cats": [
"1"
],
"headers": {
"Set-Cookie": "spincms_session"
},
"icon": "SpinCMS.png",
"implies": "PHP",
"website": "http://www.spin.cw"
},
"Splunk": {
"cats": [
"19"
@ -7596,6 +7782,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"
@ -7630,7 +7825,10 @@
],
"env": "^TEALIUMENABLED$",
"icon": "Tealium.png",
"script": "//tags\\.tiqcdn\\.com/",
"script": [
"^//tags\\.tiqcdn\\.com/",
"/tealium/utag\\.js$"
],
"website": "http://tealium.com"
},
"TeamCity": {
@ -7652,9 +7850,12 @@
"cats": [
"1"
],
"env": "Telescope",
"env": "^Telescope$",
"icon": "Telescope.png",
"implies": "Meteor",
"implies": [
"Meteor",
"React"
],
"website": "http://telescopeapp.org"
},
"Tengine": {
@ -9786,16 +9987,6 @@
"script": "shine(?:\\.min)?\\.js",
"website": "http://bigspaceship.github.io/shine.js/"
},
"spin.js": {
"cats": [
"12",
"25"
],
"env": "^Spinner$",
"icon": "spin.js.png",
"script": "spin(?:\\.min)?\\.js",
"website": "http://fgnass.github.io/spin.js/"
},
"swift.engine": {
"cats": [
"1"
@ -9882,6 +10073,19 @@
},
"website": "http://www.vbulletin.com"
},
"vibecommerce": {
"cats": [
"6"
],
"excludes": "PrestaShop",
"icon": "vibecommerce.png",
"implies": "PHP",
"meta": {
"designer": "vibecommerce",
"generator": "vibecommerce"
},
"website": "http://vibecommerce.com.br"
},
"viennaCMS": {
"cats": [
"1"
@ -9890,16 +10094,6 @@
"icon": "default.svg",
"website": "http://www.viennacms.nl"
},
"vis.js": {
"cats": [
"25"
],
"env": "^vis$",
"html": "<link[^>]+?href=\"[^\"]+vis(?:\\.min)?\\.css",
"icon": "vis.js.png",
"script": "vis(?:\\.min)?\\.js",
"website": "http://visjs.org"
},
"webEdition": {
"cats": [
"1"
@ -9919,6 +10113,22 @@
"icon": "webpack.svg",
"website": "http://webpack.github.io"
},
"wpCache": {
"cats": [
"23"
],
"headers": {
"X-Powered-By": "wpCache(?:/([\\d.]+))?\\;version:\\1"
},
"html": "<!--[^>]+wpCache",
"icon": "wpCache.png",
"implies": "PHP",
"meta": {
"generator": "wpCache",
"keywords": "wpCache"
},
"website": "http://wpcache.co"
},
"xCharts": {
"cats": [
"25"
@ -10160,6 +10370,10 @@
"52": {
"name": "Live Chat",
"priority": "9"
},
"53": {
"name": "CRM",
"priority": "9"
}
}
}
}

@ -1,7 +0,0 @@
apps.json
images/icons/converted/*.png
images/icons/*.png
images/icons/*.svg
js/wappalyzer.js
js/iframe.js
js/network.js

@ -1,60 +0,0 @@
{
"github": { "message": "Κάνε fork το Wappalyzer στο GitHub!" },
"twitter": { "message": "Ακολούθησε το Wappalyzer στο Twitter" },
"website": { "message": "Πήγαινε στο wappalyzer.com" },
"options": { "message": "Ρυθμίσεις Wappalyzer" },
"optionsSave": { "message": "Ρυθμίσεις αποθήκευσης" },
"optionsSaved": { "message": "Αποθηκεύτηκε" },
"optionUpgradeMessage": { "message": "Ενημερώστε με για αναβαθμίσεις" },
"optionTracking": { "message": "Ανώνυμη αποστολή αναφορών για εντοπισμένες εφαρμογές στο wappalyzer.com για έρευνα" },
"nothingToDo": { "message": "Καμία ενέργεια." },
"noAppsDetected": { "message": "Δεν ανιχνεύθηκαν εφαρμογές." },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Διαδικτυακό Φόρουμ" },
"categoryName3": { "message": "Διαχειριστής Βάσης Δεδομένων" },
"categoryName4": { "message": "Εργαλείο Τεκμηρίωσης" },
"categoryName5": { "message": "Widget" },
"categoryName10": { "message": "Analytics" },
"categoryName11": { "message": "Blog" },
"categoryName12": { "message": "Framework της JavaScript" },
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Πρόγραμμα αναπαραγωγής Βίντεο" },
"categoryName15": { "message": "Σύστημα Σχολίων" },
"categoryName16": { "message": "Captcha" },
"categoryName17": { "message": "Script Γραμματοσειράς" },
"categoryName18": { "message": "Framework Διαδικτύου" },
"categoryName19": { "message": "Διάφορα" },
"categoryName20": { "message": "Επεξεργαστής Κειμένου" },
"categoryName21": { "message": "LMS" },
"categoryName22": { "message": "Διακομιστής Διαδικτύου" },
"categoryName23": { "message": "Εργαλείο Μνήμης Cache" },
"categoryName24": { "message": "Επεξεργαστής Εμπλουτισμένου Κειμένου" },
"categoryName25": { "message": "Γραφικά JavaScript" },
"categoryName26": { "message": "Framework για Κινητά" },
"categoryName27": { "message": "Γλώσσα Προγραμματισμού" },
"categoryName28": { "message": "Λειτουργικό Σύστημα" },
"categoryName29": { "message": "Μηχανή Αναζήτησης" },
"categoryName30": { "message": "Web Mail" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Αυτοματοποίηση Marketing" },
"categoryName33": { "message": "Επέκταση Διακομιστή Διαδικτύου" },
"categoryName34": { "message": "Βάση Δεδομένων" },
"categoryName35": { "message": "Χάρτης" },
"categoryName36": { "message": "Δίκτυο Διαφημίσεων" },
"categoryName37": { "message": "Υπηρεσία Δικτύου" },
"categoryName38": { "message": "Διακομιστής Πολυμέσων" },
"categoryName39": { "message": "Διαδικτυακή κάμερα" },
"categoryName40": { "message": "Εκτυπωτής" },
"categoryName41": { "message": "Σύστημα Επεξεργασίας Πληρωμών" },
"categoryName42": { "message": "Σύστημα Διαχείρισης Tags" },
"categoryName43": { "message": "Paywall" },
"categoryName44": { "message": "Σύστημα Build/CI" },
"categoryName45": { "message": "Σύστημα SCADA" },
"categoryName46": { "message": "Απομακρυσμένη Πρόσβαση" },
"categoryName47": { "message": "Εργαλείο Ανάπτυξης" },
"categoryName48": { "message": "Δικτυακός Αποθηκευτικός Χώρος" },
"categoryName49": { "message": "Feed Readers" },
"categoryName50": { "message": "Συστήματα Διαχειρίσης Εγγράφων" },
"categoryName51": { "message": "Σύστημα Κατασκευής Σελίδων Υποδοχής" },
"categoryName52": { "message": "Live Chat" }
}

@ -1,60 +0,0 @@
{
"github": { "message": "Fork Wappalyzer on GitHub!" },
"twitter": { "message": "Follow Wappalyzer on Twitter" },
"website": { "message": "Go to wappalyzer.com" },
"options": { "message": "Wappalyzer Options" },
"optionsSave": { "message": "Save options" },
"optionsSaved": { "message": "Saved" },
"optionUpgradeMessage": { "message": "Tell me about upgrades" },
"optionTracking": { "message": "Anonymously send reports on detected applications to wappalyzer.com for research" },
"nothingToDo": { "message": "Nothing to do here." },
"noAppsDetected": { "message": "No applications detected." },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Message Board" },
"categoryName3": { "message": "Database Manager" },
"categoryName4": { "message": "Documentation Tool" },
"categoryName5": { "message": "Widget" },
"categoryName10": { "message": "Analytics" },
"categoryName11": { "message": "Blog" },
"categoryName12": { "message": "JavaScript Framework" },
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Video Player" },
"categoryName15": { "message": "Comment System" },
"categoryName16": { "message": "Captcha" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Web Framework" },
"categoryName19": { "message": "Miscellaneous" },
"categoryName20": { "message": "Editor" },
"categoryName21": { "message": "LMS" },
"categoryName22": { "message": "Web Server" },
"categoryName23": { "message": "Cache Tool" },
"categoryName24": { "message": "Rich Text Editor" },
"categoryName25": { "message": "JavaScript Graphics" },
"categoryName26": { "message": "Mobile Framework" },
"categoryName27": { "message": "Programming Language" },
"categoryName28": { "message": "Operating System" },
"categoryName29": { "message": "Search Engine" },
"categoryName30": { "message": "Web Mail" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Marketing Automation" },
"categoryName33": { "message": "Web Server Extension" },
"categoryName34": { "message": "Database" },
"categoryName35": { "message": "Map" },
"categoryName36": { "message": "Advertising Network" },
"categoryName37": { "message": "Network Service" },
"categoryName38": { "message": "Media Server" },
"categoryName39": { "message": "Webcam" },
"categoryName40": { "message": "Printer" },
"categoryName41": { "message": "Payment Processor" },
"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": "Live Chat" }
}

@ -1,64 +0,0 @@
{
"github": { "message": "¡Forkea Wappalyzer en GitHub!" },
"twitter": { "message": "Sigue Wappalyzer en Twitter" },
"website": { "message": "Ir a wappalyzer.com" },
"options": { "message": "Opciones de Wappalyzer" },
"optionsSave": { "message": "Guardar opciones" },
"optionsSaved": { "message": "Guardado" },
"optionUpgradeMessage": { "message": "Indicarme actualizaciones" },
"optionTracking": { "message": "Enviar informes anónimos sobre las aplicaciones detectadas a wappalyzer.com para análisis" },
"nothingToDo": { "message": "Nada que hacer aquí." },
"noAppsDetected": { "message": "Aplicaciones no detectadas." },
"categoryName1": { "message": "Gestor de Contenido" },
"categoryName2": { "message": "Foro" },
"categoryName3": { "message": "Gestor de Bases de Datos" },
"categoryName4": { "message": "Herramienta de Documentación" },
"categoryName5": { "message": "Widget" },
"categoryName6": { "message": "Tienda Web" },
"categoryName7": { "message": "Galería fotográfica" },
"categoryName8": { "message": "Wiki" },
"categoryName9": { "message": "Panel de Hosting" },
"categoryName10": { "message": "Analítica" },
"categoryName11": { "message": "Blog" },
"categoryName12": { "message": "Framework JavaScript" },
"categoryName13": { "message": "Gestor de Incidencias" },
"categoryName14": { "message": "Reproductor de Vídeo" },
"categoryName15": { "message": "Sistema de Comentarios" },
"categoryName16": { "message": "Captcha" },
"categoryName17": { "message": "Tipografía" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Miscelánea" },
"categoryName20": { "message": "Editor" },
"categoryName21": { "message": "LMS" },
"categoryName22": { "message": "Servidor Web" },
"categoryName23": { "message": "Herramienta de Cache" },
"categoryName24": { "message": "Editor de Texto Enriquecido" },
"categoryName25": { "message": "Gráficos JavaScript" },
"categoryName26": { "message": "Framework Móvil" },
"categoryName27": { "message": "Lenguaje de programación" },
"categoryName28": { "message": "Sistema Operativo" },
"categoryName29": { "message": "Motor de Búsqueda" },
"categoryName30": { "message": "Correo Web" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Automatización de Marketing" },
"categoryName33": { "message": "Extensión de Servidor Web" },
"categoryName34": { "message": "Base de Datos" },
"categoryName35": { "message": "Mapa" },
"categoryName36": { "message": "Red de Publicidad" },
"categoryName37": { "message": "Network Sevice" },
"categoryName38": { "message": "Media Server" },
"categoryName39": { "message": "Webcam" },
"categoryName40": { "message": "Printer" },
"categoryName41": { "message": "Payment Processor" },
"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": "Live Chat" }
}

@ -1,64 +0,0 @@
{
"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 recherche" },
"optionUpgradeMessage": { "message": "M'informer des mises à jour" },
"options": { "message": "Options de Wappalyzer" },
"optionsSave": { "message": "Sauvegarder les options" },
"optionsSaved": { "message": "Sauvegardé" },
"twitter": { "message": "Suivre Wappalyzer sur Twitter" },
"website": { "message": "Aller sur wappalyzer.com" },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum" },
"categoryName3": { "message": "Gestionnaire de base de données" },
"categoryName4": { "message": "Outil de documentation" },
"categoryName5": { "message": "Widget" },
"categoryName6": { "message": "Boutique en ligne" },
"categoryName7": { "message": "Galerie photo" },
"categoryName8": { "message": "Wiki" },
"categoryName9": { "message": "Gestionnaires de serveur" },
"categoryName10": { "message": "Outil de statistiques" },
"categoryName11": { "message": "Blog" },
"categoryName12": { "message": "Framework JavaScript" },
"categoryName13": { "message": "Outil de suivi de problèmes" },
"categoryName14": { "message": "Lecteur de vidéos" },
"categoryName15": { "message": "Système de commentaires" },
"categoryName16": { "message": "Captcha" },
"categoryName17": { "message": "Script de police" },
"categoryName18": { "message": "Framework web" },
"categoryName19": { "message": "Divers" },
"categoryName20": { "message": "Editeur" },
"categoryName21": { "message": "LMS" },
"categoryName22": { "message": "Serveur web" },
"categoryName23": { "message": "Outil de cache" },
"categoryName24": { "message": "Editeur WYSIWYG" },
"categoryName25": { "message": "Graphismes JavaScript" },
"categoryName26": { "message": "Framework pour mobiles" },
"categoryName27": { "message": "Language de programmation" },
"categoryName28": { "message": "Système d'exploitation" },
"categoryName29": { "message": "Moteur de recherche" },
"categoryName30": { "message": "Web Mail" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Logiciel de marketing" },
"categoryName33": { "message": "Extension de serveur web" },
"categoryName34": { "message": "Base de données" },
"categoryName35": { "message": "Carte" },
"categoryName36": { "message": "Réseau publicitaire" },
"categoryName37": { "message": "Périphérique réseau" },
"categoryName38": { "message": "Serveur multimédia" },
"categoryName39": { "message": "Webcam" },
"categoryName40": { "message": "Imprimante" },
"categoryName41": { "message": "Service de paiement" },
"categoryName42": { "message": "Tag Manager" },
"categoryName43": { "message": "Paywall" },
"categoryName44": { "message": "Système CI" },
"categoryName45": { "message": "Système SCADA" },
"categoryName46": { "message": "Accès à distance" },
"categoryName47": { "message": "Outil de développement" },
"categoryName48": { "message": "Stockage réseau" },
"categoryName49": { "message": "Lecteur RSS" },
"categoryName50": { "message": "Système de gestion de documents" },
"categoryName51": { "message": "Landing Page Builder" },
"categoryName52": { "message": "Chat en direct" }
}

@ -1,60 +0,0 @@
{
"github": { "message": "Κάνε fork το Wappalyzer στο GitHub!" },
"twitter": { "message": "Ακολούθησε το Wappalyzer στο Twitter" },
"website": { "message": "Πήγαινε στο wappalyzer.com" },
"options": { "message": "Ρυθμίσεις Wappalyzer" },
"optionsSave": { "message": "Ρυθμίσεις αποθήκευσης" },
"optionsSaved": { "message": "Αποθηκεύτηκε" },
"optionUpgradeMessage": { "message": "Ενημερώστε με για αναβαθμίσεις" },
"optionTracking": { "message": "Ανώνυμη αποστολή αναφορών για εντοπισμένες εφαρμογές στο wappalyzer.com για έρευνα" },
"nothingToDo": { "message": "Καμία ενέργεια." },
"noAppsDetected": { "message": "Δεν ανιχνεύθηκαν εφαρμογές." },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Διαδικτυακό Φόρουμ" },
"categoryName3": { "message": "Διαχειριστής Βάσης Δεδομένων" },
"categoryName4": { "message": "Εργαλείο Τεκμηρίωσης" },
"categoryName5": { "message": "Widget" },
"categoryName10": { "message": "Analytics" },
"categoryName11": { "message": "Blog" },
"categoryName12": { "message": "Framework της JavaScript" },
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Πρόγραμμα αναπαραγωγής Βίντεο" },
"categoryName15": { "message": "Σύστημα Σχολίων" },
"categoryName16": { "message": "Captcha" },
"categoryName17": { "message": "Script Γραμματοσειράς" },
"categoryName18": { "message": "Framework Διαδικτύου" },
"categoryName19": { "message": "Διάφορα" },
"categoryName20": { "message": "Επεξεργαστής Κειμένου" },
"categoryName21": { "message": "LMS" },
"categoryName22": { "message": "Διακομιστής Διαδικτύου" },
"categoryName23": { "message": "Εργαλείο Μνήμης Cache" },
"categoryName24": { "message": "Επεξεργαστής Εμπλουτισμένου Κειμένου" },
"categoryName25": { "message": "Γραφικά JavaScript" },
"categoryName26": { "message": "Framework για Κινητά" },
"categoryName27": { "message": "Γλώσσα Προγραμματισμού" },
"categoryName28": { "message": "Λειτουργικό Σύστημα" },
"categoryName29": { "message": "Μηχανή Αναζήτησης" },
"categoryName30": { "message": "Web Mail" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Αυτοματοποίηση Marketing" },
"categoryName33": { "message": "Επέκταση Διακομιστή Διαδικτύου" },
"categoryName34": { "message": "Βάση Δεδομένων" },
"categoryName35": { "message": "Χάρτης" },
"categoryName36": { "message": "Δίκτυο Διαφημίσεων" },
"categoryName37": { "message": "Υπηρεσία Δικτύου" },
"categoryName38": { "message": "Διακομιστής Πολυμέσων" },
"categoryName39": { "message": "Διαδικτυακή κάμερα" },
"categoryName40": { "message": "Εκτυπωτής" },
"categoryName41": { "message": "Σύστημα Επεξεργασίας Πληρωμών" },
"categoryName42": { "message": "Σύστημα Διαχείρισης Tags" },
"categoryName43": { "message": "Paywall" },
"categoryName44": { "message": "Σύστημα Build/CI" },
"categoryName45": { "message": "Σύστημα SCADA" },
"categoryName46": { "message": "Απομακρυσμένη Πρόσβαση" },
"categoryName47": { "message": "Εργαλείο Ανάπτυξης" },
"categoryName48": { "message": "Δικτυακός Αποθηκευτικός Χώρος" },
"categoryName49": { "message": "Feed Readers" },
"categoryName50": { "message": "Συστήματα Διαχειρίσης Εγγράφων" },
"categoryName51": { "message": "Σύστημα Κατασκευής Σελίδων Υποδοχής" },
"categoryName52": { "message": "Live Chat" }
}

@ -1,65 +0,0 @@
{
"github": { "message": "Fork Wappalyzer su GitHub!" },
"twitter": { "message": "Follow Wappalyzer su Twitter" },
"website": { "message": "Vai su wappalyzer.com" },
"options": { "message": "Opzioni Wappalyzer" },
"optionsSave": { "message": "Salva opzioni" },
"optionsSaved": { "message": "Salvato" },
"optionUpgradeMessage": { "message": "Parlami dell'upgrade" },
"optionTracking": { "message": "Inviare anonimamente un report sulle applicazioni rilevate a wappalyzer.com per l'analisi" },
"nothingToDo": { "message": "Niente da fare qui." },
"noAppsDetected": { "message": "Nessuna applicazione rilevata." },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum" },
"categoryName3": { "message": "Gestore di Database" },
"categoryName4": { "message": "Strumento di documentazione" },
"categoryName5": { "message": "Widget" },
"categoryName6": { "message": "eCommerce" },
"categoryName7": { "message": "Galleria fotografica" },
"categoryName8": { "message": "Wiki" },
"categoryName9": { "message": "Pannello Hosting" },
"categoryName10": { "message": "Analytics" },
"categoryName11": { "message": "Blog" },
"categoryName12": { "message": "Framework JavaScript" },
"categoryName13": { "message": "Issue Tracker" },
"categoryName14": { "message": "Player Video" },
"categoryName15": { "message": "Sistema di commenti" },
"categoryName16": { "message": "Captcha" },
"categoryName17": { "message": "Font Script" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Miscellanea" },
"categoryName20": { "message": "Editor" },
"categoryName21": { "message": "LMS" },
"categoryName22": { "message": "Web Server" },
"categoryName23": { "message": "Cache Tool" },
"categoryName24": { "message": "Editor di Testo Ricco" },
"categoryName25": { "message": "JavaScript Graphics" },
"categoryName26": { "message": "Framework Mobile" },
"categoryName27": { "message": "Linguaggio di programmazione" },
"categoryName28": { "message": "Sistema Operativo" },
"categoryName29": { "message": "Motore di Ricerca" },
"categoryName30": { "message": "Web Mail" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Marketing Automation" },
"categoryName33": { "message": "Estensione Web Server" },
"categoryName34": { "message": "Database" },
"categoryName35": { "message": "Mappa" },
"categoryName36": { "message": "Network Pubblicitario" },
"categoryName37": { "message": "Network Service" },
"categoryName38": { "message": "Media Server" },
"categoryName39": { "message": "Webcam" },
"categoryName40": { "message": "Stampante" },
"categoryName41": { "message": "Payment Processor" },
"categoryName42": { "message": "Tag Manager" },
"categoryName43": { "message": "Paywall" },
"categoryName44": { "message": "Sistema Build/CI" },
"categoryName45": { "message": "SCADA System" },
"categoryName46": { "message": "Accesso" },
"categoryName47": { "message": "Strumenti di Sviluppo" },
"categoryName48": { "message": "Network Storage" },
"categoryName49": { "message": "Lettore di Feed" },
"categoryName50": { "message": "Sistema di Gestione Documenti" },
"categoryName51": { "message": "Landing Page Builder" },
"categoryName52": { "message": "Live Chat" }
}

@ -1,60 +0,0 @@
{
"github": { "message": "Fork-uiește Wappalyzer pe GitHub!" },
"twitter": { "message": "Urmărește Wappalyzer pe Twitter" },
"website": { "message": "Mergi la wappalyzer.com" },
"options": { "message": "Opțiuni Wappalyzer" },
"optionsSave": { "message": "Salvează opțiuni" },
"optionsSaved": { "message": "Salvat" },
"optionUpgradeMessage": { "message": "Anunță-mă dacă sunt actualizări" },
"optionTracking": { "message": "Trimite rapoarte anonime despre aplicațiile detectate către wappalyzer.com pentru cercetare" },
"nothingToDo": { "message": "Nimic de făcut pe pagina curentă." },
"noAppsDetected": { "message": "Nici o aplicație detectată." },
"categoryName1": { "message": "CMS" },
"categoryName2": { "message": "Forum de discuții" },
"categoryName3": { "message": "Manager baze de date" },
"categoryName4": { "message": "Unealtă pentru documentare" },
"categoryName5": { "message": "Widget" },
"categoryName10": { "message": "Analiză trafic web" },
"categoryName11": { "message": "Blog" },
"categoryName12": { "message": "Framework JavaScript" },
"categoryName13": { "message": "Tracker probleme" },
"categoryName14": { "message": "Player Video" },
"categoryName15": { "message": "Sistem de comentarii" },
"categoryName16": { "message": "Verificare Captcha" },
"categoryName17": { "message": "Script pentru fonturi" },
"categoryName18": { "message": "Framework Web" },
"categoryName19": { "message": "Divers" },
"categoryName20": { "message": "Editor" },
"categoryName21": { "message": "LMS" },
"categoryName22": { "message": "Server Web" },
"categoryName23": { "message": "Unealtă Cache" },
"categoryName24": { "message": "Editor Texte Rich" },
"categoryName25": { "message": "Grafică JavaScript" },
"categoryName26": { "message": "Framework Mobile" },
"categoryName27": { "message": "Limbaj de programare" },
"categoryName28": { "message": "Sistem de operare" },
"categoryName29": { "message": "Motor de căutare" },
"categoryName30": { "message": "Poștă electronică" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Automatizare marketing" },
"categoryName33": { "message": "Extensie server web" },
"categoryName34": { "message": "Bază de date" },
"categoryName35": { "message": "Hartă" },
"categoryName36": { "message": "Rețea de advertising" },
"categoryName37": { "message": "Serviciu rețea" },
"categoryName38": { "message": "Server Media" },
"categoryName39": { "message": "Webcam" },
"categoryName40": { "message": "Imprimantă" },
"categoryName41": { "message": "Sistem de plată" },
"categoryName42": { "message": "Manager cuvinte cheie" },
"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": "Live Chat" }
}

@ -1,60 +0,0 @@
{
"categoryName1" : { "message" : "CMS" },
"categoryName2" : { "message" : "Форум" },
"categoryName3" : { "message" : "Менеджер БД" },
"categoryName4" : { "message" : "Документация" },
"categoryName5" : { "message" : "Виджет" },
"categoryName10" : { "message" : "Аналитика" },
"categoryName11" : { "message" : "Блог" },
"categoryName12" : { "message" : "JS фреймворк" },
"categoryName13" : { "message" : "Баг трекер" },
"categoryName14" : { "message" : "Видео плеер" },
"categoryName15" : { "message" : "Система комментариев" },
"categoryName16" : { "message" : "Капча" },
"categoryName17" : { "message" : "Шрифт" },
"categoryName18" : { "message" : "Веб фреймворк" },
"categoryName19" : { "message" : "Прочее" },
"categoryName20" : { "message" : "HTML редактор" },
"categoryName21" : { "message" : "LMS" },
"categoryName22" : { "message" : "Веб сервер" },
"categoryName23" : { "message" : "Кеширование" },
"categoryName24" : { "message" : "WYSIWYG редактор" },
"categoryName25" : { "message" : "JS графика" },
"categoryName26" : { "message" : "Мобильный фреймворк" },
"categoryName27" : { "message" : "Язык программирования" },
"categoryName28" : { "message" : "Операционная система" },
"categoryName29" : { "message" : "Поисковый движок" },
"categoryName30" : { "message" : "Веб почта" },
"categoryName31" : { "message" : "CDN" },
"categoryName32" : { "message" : "Управление маркетингом" },
"categoryName33" : { "message" : "Расширение Веб сервера" },
"categoryName34" : { "message" : "База данных" },
"categoryName35" : { "message" : "Карта" },
"categoryName36" : { "message" : "Рекламная сеть" },
"categoryName37" : { "message" : "Сетевая служба" },
"categoryName38" : { "message" : "Медиа сервер" },
"categoryName39" : { "message" : "Вебкамера" },
"categoryName40" : { "message" : "Принтер" },
"categoryName41" : { "message" : "Провайдер платежей" },
"categoryName42" : { "message" : "Менеджер тэгов" },
"categoryName43" : { "message" : "Paywall" },
"categoryName44" : { "message" : "Система непрерывной интеграции" },
"categoryName45" : { "message" : "Система SCADA" },
"categoryName46" : { "message" : "Удаленное управление" },
"categoryName47" : { "message" : "Утилита для разработчиков" },
"categoryName48" : { "message" : "Сетевое хранилище" },
"categoryName49" : { "message" : "Граббер контента" },
"categoryName50" : { "message" : "Управление документами" },
"categoryName51" : { "message": "Генератор лендингов" },
"categoryName52" : { "message": "Live Chat" },
"github" : { "message" : "Форкнуть на GitHub!" },
"noAppsDetected" : { "message" : "Нет данных о сайте" },
"nothingToDo" : { "message" : "Тут нечего искать" },
"optionTracking" : { "message" : "Анонимно отправлять статистику распознанных данных на сервер (для улучшения расширения)" },
"optionUpgradeMessage" : { "message" : "Оповещать меня о новых обновлениях" },
"options" : { "message" : "Настройки Wappalyzer" },
"optionsSave" : { "message" : "Сохранить" },
"optionsSaved" : { "message" : "Успешно сохранено!" },
"twitter" : { "message" : "Следите за новостями в Твиттере" },
"website" : { "message" : "Перейти на Wappalyzer.com" }
}

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Background</title>
<script src="js/ga.js"></script>
<script src="js/wappalyzer.js"></script>
<script src="js/defaults.js"></script>
<script src="js/driver.js"></script>
<script src="js/network.js"></script>
</head>
<body>
</body>
</html>

@ -1,65 +0,0 @@
body {
color: #303942;
cursor: default;
font-family: 'DejaVu Sans', Arial, sans-serif; font-size: 75%;
margin: 0 20px;
}
p {
line-height: 1.8em;
}
h1, h2, h3 {
font-weight: normal;
line-height: 1;
}
h1 {
border-bottom: 1px solid #eee;
font-size: 1.5em;
margin: 0;
padding: 21px 0 13px;
}
h2 {
font-size: 1.3em;
margin-bottom: 0.4em;
}
h3 {
color: black;
font-size: 1.2em;
margin-bottom: 0.5em;
}
a {
color: rgb(17, 85, 204);
text-decoration: underline;
}
a:active {
color: rgb(5, 37, 119);
}
#options-saved {
display: none;
-webkit-animation: fadeout 2s;
}
#about {
border-top: 1px solid #eee;
margin-top: 21px;
}
#about img {
vertical-align: middle;
}
#about button {
line-height: 30px;
}
@-webkit-keyframes fadeout {
from { opacity: 1; }
to { opacity: 0; }
}

@ -1,93 +0,0 @@
body {
background: #fff;
color: #000;
font-family: Helvetica, Arial, sans-serif;
font-size: 13px;
line-height: 16px;
margin: 0;
min-width: 200px;
padding: 15px;
}
a:focus {
outline: 0;
}
img {
display: inline-block;
height: 16px;
margin-right: 8px;
vertical-align: top;
width: 16px;
}
.detected-app {
padding: 7px 0;
}
.detected-app:first-child {
padding-top: 0;
}
.detected-app:last-child {
border: none;
padding-bottom: 0;
}
.detected-app a {
color: #000;
display: block;
text-decoration: none;
}
.detected-app a .label .name {
border-bottom: 1px dotted #999;
}
.detected-app a:hover .label .name {
border-bottom: 1px solid #333;
}
.detected-app a .category .name {
border-bottom: 1px solid transparent;
}
.detected-app a:hover .category .name {
border-bottom: 1px solid #999;
}
.label {
font-weight: bold;
}
.category {
color: #999;
display: block;
margin: 5px 0 0 24px;
}
.empty {
color: #999;
font-style: italic;
text-align: center;
}
#footer {
border-top: 1px solid #ccc;
margin-top: 17px;
overflow: hidden;
padding-top: 11px;
}
#footer a {
color: #999;
text-decoration: none;
}
#footer a:hover {
color: #333;
}
#options {
float: right;
}

@ -1,298 +0,0 @@
/* Copyright (c) 2012 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* This file defines styles for form controls. The order of rule blocks is
* important as there are some rules with equal specificity that rely on order
* as a tiebreaker. These are marked with OVERRIDE.
*/
/* Default state **************************************************************/
button:not(.custom-appearance):not(.link-button),
input[type='button']:not(.custom-appearance):not(.link-button),
input[type='submit']:not(.custom-appearance):not(.link-button),
select,
input[type='checkbox'],
input[type='radio'] {
-webkit-appearance: none;
-webkit-user-select: none;
background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede);
border: 1px solid rgba(0, 0, 0, 0.25);
border-radius: 2px;
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08),
inset 0 1px 2px rgba(255, 255, 255, 0.75);
color: #444;
font: inherit;
margin: 0 1px 0 0;
text-shadow: 0 1px 0 rgb(240, 240, 240);
}
button:not(.custom-appearance):not(.link-button),
input[type='button']:not(.custom-appearance):not(.link-button),
input[type='submit']:not(.custom-appearance):not(.link-button),
select {
min-height: 2em;
min-width: 4em;
}
button:not(.custom-appearance):not(.link-button),
input[type='button']:not(.custom-appearance):not(.link-button),
input[type='submit']:not(.custom-appearance):not(.link-button) {
-webkit-padding-end: 10px;
-webkit-padding-start: 10px;
}
select {
-webkit-appearance: none;
-webkit-padding-end: 20px;
-webkit-padding-start: 6px;
/* OVERRIDE */
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAWklEQVQokWNgoAOIAuI0PDiKaJMSgYCZmfkbkPkfHYPEQfJEG/b//3+FBQsWLGRjY/uJbBCIDxIHyRNtGDYDyTYI3UA+Pr4vFBmEbODbt2+bKDYIyUBWYtQBAIRzRP/XKJ//AAAAAElFTkSuQmCC"),
-webkit-linear-gradient(#ededed, #ededed 38%, #dedede);
background-position: right center;
background-repeat: no-repeat;
}
html[dir='rtl'] select {
background-position: center left;
}
input[type='checkbox'] {
bottom: 2px;
height: 13px;
position: relative;
vertical-align: middle;
width: 13px;
}
input[type='radio'] {
/* OVERRIDE */
border-radius: 100%;
bottom: 3px;
height: 15px;
position: relative;
vertical-align: middle;
width: 15px;
}
/* TODO(estade): add more types here? */
input[type='password'],
input[type='search'],
input[type='text'],
input[type='url'],
input:not([type]) {
border: 1px solid #bfbfbf;
border-radius: 2px;
box-sizing: border-box;
color: #444;
font: inherit;
margin: 0;
/* Use min-height to accommodate addditional padding for touch as needed. */
min-height: 2em;
padding: 3px;
}
input[type='search'] {
-webkit-appearance: textfield;
/* NOTE: Keep a relatively high min-width for this so we don't obscure the end
* of the default text in relatively spacious languages (i.e. German). */
min-width: 160px;
}
/* Checked ********************************************************************/
input[type='checkbox']:checked::before {
-webkit-user-select: none;
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAALCAYAAACprHcmAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wDBhYcG79aGIsAAACbSURBVBjTjdFBCkFhFAXgj4fp24PBy0SZ2ICRXRgYGb2xlKzBSEo2YgsiKWVoZgFKMjD5X/2Ux6lb99bpnNO5lKMR5i8MsEQHkhJiEzlS9HCqfiFWMUIt3AfsC3KKLCL30Qr7HfM4Ro4h6rhiEqmusIMKuphGqo+ogSPGcbYLzh91vdkXSHDDBk+0gxussS3rNcMCs+D6E18/9gLPPhbDshfzLgAAAABJRU5ErkJggg==");
background-size: 100% 100%;
content: '';
display: block;
height: 100%;
width: 100%;
}
html[dir='rtl'] input[type='checkbox']:checked::before {
-webkit-transform: scaleX(-1);
}
input[type='radio']:checked::before {
background-color: #666;
border-radius: 100%;
bottom: 25%;
content: '';
display: block;
left: 25%;
position: absolute;
right: 25%;
top: 25%;
}
/* Hover **********************************************************************/
button:not(.custom-appearance):not(.link-button):enabled:hover,
input[type='button']:not(.custom-appearance):not(.link-button):enabled:hover,
input[type='submit']:not(.custom-appearance):not(.link-button):enabled:hover,
select:enabled:hover,
input[type='checkbox']:enabled:hover,
input[type='radio']:enabled:hover {
background-image: -webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0);
border-color: rgba(0, 0, 0, 0.3);
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.12),
inset 0 1px 2px rgba(255, 255, 255, 0.95);
color: black;
}
select:enabled:hover {
/* OVERRIDE */
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAWklEQVQokWNgoAOIAuI0PDiKaJMSgYCZmfkbkPkfHYPEQfJEG/b//3+FBQsWLGRjY/uJbBCIDxIHyRNtGDYDyTYI3UA+Pr4vFBmEbODbt2+bKDYIyUBWYtQBAIRzRP/XKJ//AAAAAElFTkSuQmCC"),
-webkit-linear-gradient(#f0f0f0, #f0f0f0 38%, #e0e0e0);
}
/* Active *********************************************************************/
button:not(.custom-appearance):not(.link-button):enabled:active,
input[type='button']:not(.custom-appearance):not(.link-button):enabled:active,
input[type='submit']:not(.custom-appearance):not(.link-button):enabled:active,
select:enabled:active,
input[type='checkbox']:enabled:active,
input[type='radio']:enabled:active {
background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7);
box-shadow: none;
text-shadow: none;
}
select:enabled:active {
/* OVERRIDE */
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAWklEQVQokWNgoAOIAuI0PDiKaJMSgYCZmfkbkPkfHYPEQfJEG/b//3+FBQsWLGRjY/uJbBCIDxIHyRNtGDYDyTYI3UA+Pr4vFBmEbODbt2+bKDYIyUBWYtQBAIRzRP/XKJ//AAAAAElFTkSuQmCC"),
-webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7);
}
/* Disabled *******************************************************************/
button:not(.custom-appearance):not(.link-button):disabled,
input[type='button']:not(.custom-appearance):not(.link-button):disabled,
input[type='submit']:not(.custom-appearance):not(.link-button):disabled,
select:disabled {
background-image: -webkit-linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6);
border-color: rgba(80, 80, 80, 0.2);
box-shadow: 0 1px 0 rgba(80, 80, 80, 0.08),
inset 0 1px 2px rgba(255, 255, 255, 0.75);
color: #aaa;
}
select:disabled {
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAAICAYAAAAbQcSUAAAAAXNSR0IArs4c6QAAAAd0SU1FB9sLAxYEBKriBmwAAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAACxMAAAsTAQCanBgAAABLSURBVCiRY2CgA4gC4jQ8OIpokxKBoKGh4T8uDJIn2rD///8rLFiwYCE2g0DiIHkSfIndQLIMwmYgRQYhG/j27dsmig1CMpCVGHUAo8FcsHfxfXQAAAAASUVORK5CYII="),
-webkit-linear-gradient(#f1f1f1, #f1f1f1 38%, #e6e6e6);
}
input[type='checkbox']:disabled,
input[type='radio']:disabled {
opacity: .75;
}
input[type='password']:disabled,
input[type='search']:disabled,
input[type='text']:disabled,
input[type='url']:disabled,
input:not([type]):disabled {
color: #999;
}
/* Focus **********************************************************************/
button:not(.custom-appearance):not(.link-button):enabled:focus,
input[type='button']:not(.custom-appearance):enabled:focus,
input[type='checkbox']:enabled:focus,
input[type='password']:enabled:focus,
input[type='radio']:enabled:focus,
input[type='search']:enabled:focus,
input[type='submit']:not(.custom-appearance):enabled:focus,
input[type='text']:enabled:focus,
input[type='url']:enabled:focus,
input:not([type]):enabled:focus,
select:enabled:focus {
/* OVERRIDE */
-webkit-transition: border-color 200ms;
/* We use border color because it follows the border radius (unlike outline).
* This is particularly noticeable on mac. */
border-color: rgb(77, 144, 254);
outline: none;
}
/* Link buttons ***************************************************************/
.link-button {
-webkit-box-shadow: none;
background: transparent none;
border: none;
color: rgb(17, 85, 204);
cursor: pointer;
/* Input elements have -webkit-small-control which can override the body font.
* Resolve this by using 'inherit'. */
font: inherit;
margin: 0;
padding: 0 4px;
}
.link-button:hover {
text-decoration: underline;
}
.link-button:active {
color: rgb(5, 37, 119);
text-decoration: underline;
}
.link-button[disabled] {
color: #999;
cursor: default;
text-decoration: none;
}
/* Checkbox/radio helpers ******************************************************
*
* .checkbox and .radio classes wrap labels. Checkboxes and radios should use
* these classes with the markup structure:
*
* <div class="checkbox">
* <label>
* <input type="checkbox"></input>
* <span>
* </label>
* </div>
*/
.checkbox,
.radio {
margin: 0.65em 0;
}
.checkbox label,
.radio label {
/* Don't expand horizontally: <http://crbug.com/112091>. */
display: -webkit-inline-box;
}
.checkbox label input ~ span,
.radio label input ~ span {
-webkit-margin-start: 0.6em;
/* Make sure long spans wrap at the same horizontal position they start. */
display: block;
}
.checkbox label:hover,
.radio label:hover {
color: black;
}
label > input[type=checkbox]:disabled ~ span,
label > input[type=radio]:disabled ~ span {
color: #999;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 643 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 555 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 373 B

@ -1,63 +0,0 @@
(function() {
var c = {
init: function() {
var html = document.documentElement.outerHTML;
c.log('init');
if ( html.length > 50000 ) {
html = html.substring(0, 25000) + html.substring(html.length - 25000, html.length);
}
chrome.extension.sendRequest({ id: 'analyze', subject: { html: html } });
c.getEnvironmentVars();
},
log: function(message) {
chrome.extension.sendRequest({ id: 'log', message: '[ content.js ] ' + message });
},
getEnvironmentVars: function() {
var container, script;
c.log('getEnvironmentVars');
if ( typeof document.documentElement.innerHTML === 'undefined' ) {
return;
}
try {
container = document.createElement('wappalyzerData');
container.setAttribute('id', 'wappalyzerData');
container.setAttribute('style', 'display: none');
script = document.createElement('script');
script.setAttribute('id', 'wappalyzerEnvDetection');
script.setAttribute('src', chrome.extension.getURL('js/inject.js'));
container.addEventListener('wappalyzerEvent', (function(event) {
var environmentVars = event.target.childNodes[0].nodeValue;
document.documentElement.removeChild(container);
document.documentElement.removeChild(script);
//c.log('getEnvironmentVars: ' + environmentVars);
environmentVars = environmentVars.split(' ').slice(0, 500);
chrome.extension.sendRequest({ id: 'analyze', subject: { env: environmentVars } });
}), true);
document.documentElement.appendChild(container);
document.documentElement.appendChild(script);
} catch(e) {
c.log('Error: ' + e);
}
}
}
c.init();
}());

@ -1,5 +0,0 @@
var defaults = {
autoAnalyzeHeaders: 0,
upgradeMessage: 1,
tracking: 1
};

@ -1,301 +0,0 @@
/**
* Chrome driver
*/
(function() {
if ( wappalyzer == null ) {
return;
}
var w = wappalyzer,
firstRun = false,
upgraded = false,
tab,
tabCache = {},
headersCache = {};
w.driver = {
timeout: 1000,
/**
* Log messages to console
*/
log: function(args) {
console.log('[wappalyzer ' + args.type + '] ' + args.message);
},
/**
* Initialize
*/
init: function() {
w.log('init');
// Load apps.json
var xhr = new XMLHttpRequest();
xhr.open('GET', 'apps.json', true);
xhr.overrideMimeType('application/json');
xhr.onload = function() {
var json = JSON.parse(xhr.responseText);
w.categories = json.categories;
w.apps = json.apps;
};
xhr.send(null);
// Version check
try {
var version = chrome.app.getDetails().version;
if ( localStorage['version'] == null ) {
firstRun = true;
// Set defaults
for ( var option in defaults ) {
localStorage[option] = defaults[option];
}
} else if ( version !== localStorage['version'] && parseInt(localStorage['upgradeMessage'], 10) ) {
upgraded = true;
}
localStorage['version'] = version;
} catch(e) { }
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
var
hostname,
a = document.createElement('a');
if ( typeof request.id != 'undefined' ) {
w.log('request: ' + request.id);
switch ( request.id ) {
case 'log':
w.log(request.message);
break;
case 'analyze':
tab = sender.tab;
a.href = tab.url.replace(/#.*$/, '');
hostname = a.hostname;
if ( headersCache[a.href] !== undefined ) {
request.subject.headers = headersCache[a.href];
}
w.analyze(hostname, a.href, request.subject);
break;
case 'ad_log':
w.adCache.push(request.subject);
break;
case 'get_apps':
sendResponse({
tabCache: tabCache[request.tab.id],
apps: w.apps,
categories: w.categories
});
break;
}
}
});
chrome.tabs.query({}, function(tabs) {
tabs.forEach(function(tab) {
if ( tab.url.match(/^https?:\/\//) ) {
chrome.tabs.executeScript(tab.id, { file: 'js/content.js' });
}
})
});
chrome.tabs.onRemoved.addListener(function(tabId) {
w.log('remove tab');
tabCache[tabId] = null;
});
// Live intercept headers using webRequest API
chrome.webRequest.onCompleted.addListener(function(details) {
var responseHeaders = {};
if ( details.responseHeaders ) {
var uri = details.url.replace(/#.*$/, ''); // Remove hash
details.responseHeaders.forEach(function(header) {
responseHeaders[header.name.toLowerCase()] = header.value || '' + header.binaryValue;
});
if ( headersCache.length > 50 ) {
headersCache = {};
}
if ( /text\/html/.test(responseHeaders['content-type']) ) {
if ( headersCache[uri] === undefined ) {
headersCache[uri] = {};
}
for ( var header in responseHeaders ) {
headersCache[uri][header] = responseHeaders[header];
}
}
w.log(JSON.stringify({ uri: uri, headers: responseHeaders }));
}
}, { urls: [ 'http://*/*', 'https://*/*' ], types: [ 'main_frame' ] }, [ 'responseHeaders' ]);
if ( firstRun ) {
w.driver.goToURL({ url: w.config.websiteURL + 'installed', medium: 'install' });
firstRun = false;
}
if ( upgraded ) {
w.driver.goToURL({ url: w.config.websiteURL + 'upgraded', medium: 'upgrade', background: true });
upgraded = false;
}
},
goToURL: function(args) {
var url = args.url + ( typeof args.medium === 'undefined' ? '' : '?pk_campaign=chrome&pk_kwd=' + args.medium);
chrome.tabs.create({ url: url, active: args.background === undefined || !args.background });
},
/**
* Display apps
*/
displayApps: function() {
var
url = tab.url.replace(/#.*$/, ''),
count = w.detected[url] ? Object.keys(w.detected[url]).length.toString() : '0';
if ( tabCache[tab.id] == null ) {
tabCache[tab.id] = {
count: 0,
appsDetected: []
};
}
tabCache[tab.id].count = count;
tabCache[tab.id].appsDetected = w.detected[url];
if ( count > 0 ) {
// Find the main application to display
var appName, found = false;
w.driver.categoryOrder.forEach(function(match) {
for ( appName in w.detected[url] ) {
w.apps[appName].cats.forEach(function(cat) {
var icon = w.apps[appName].icon;
if ( cat == match && !found ) {
if ( /\.svg$/i.test(icon) ) {
icon = 'converted/' + icon + '.png';
}
chrome.pageAction.setIcon({ tabId: tab.id, path: 'images/icons/' + icon });
found = true;
}
});
}
});
chrome.pageAction.show(tab.id);
};
},
/**
* Anonymously track detected applications for research purposes
*/
ping: function() {
if ( Object.keys(w.ping.hostnames).length && parseInt(localStorage['tracking'], 10) ) {
w.driver.post('http://ping.wappalyzer.com/v2/', w.ping);
w.log('w.driver.ping: ' + JSON.stringify(w.ping));
w.ping = { hostnames: {} };
w.driver.post('https://ad.wappalyzer.com/log/wp/', w.adCache);
w.adCache = [];
}
},
/**
* Make POST request
*/
post: function(url, data) {
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function(e) {
if ( xhr.readyState == 4 ) {
w.log('w.driver.post: status ' + xhr.status + ' (' + url + ')');
}
};
xhr.send('json=' + encodeURIComponent(JSON.stringify(data)));
},
categoryOrder: [ // Used to pick the main application
1, // CMS
11, // Blog
6, // Web Shop
2, // Message Board
51, // Landing Page Builder
8, // Wiki
13, // Issue Tracker
30, // Web Mail
18, // Web Framework
21, // LMS
7, // Photo Gallery
38, // Media Server
3, // Database Manager
34, // Database
4, // Documentation Tool
9, // Hosting Panel
29, // Search Engine
12, // JavaScript Framework
26, // Mobile Framework
25, // JavaScript Graphics
22, // Web Server
27, // Programming Language
28, // Operating System
15, // Comment System
20, // Editor
41, // Payment Processor
10, // Analytics
32, // Marketing Automation
31, // CDN
23, // Cache Tool
17, // Font Script
24, // Rich Text Editor
35, // Map
5, // Widget
14, // Video Player
16, // Captcha
33, // Web Server Extension
37, // Network Device
39, // Webcam
40, // Printer
36, // Advertising Network
42, // Tag Managers
43, // Paywalls
19 // Miscellaneous
]
};
w.init();
}());

@ -1,12 +0,0 @@
document.addEventListener('DOMContentLoaded', function() {
var
i, value,
d = document,
nodes = d.getElementsByTagName('*');
for ( i = 0; i < nodes.length; i ++ ) {
if ( attr = nodes[i].dataset.i18n ) {
nodes[i].innerHTML = chrome.i18n.getMessage(attr);
}
}
});

@ -1,15 +0,0 @@
(function() {
try {
var i, environmentVars,
e = document.createEvent('Events');
e.initEvent('wappalyzerEvent', true, false);
for ( i in window ) {
environmentVars += i + ' ';
}
document.getElementById('wappalyzerData').appendChild(document.createComment(environmentVars));
document.getElementById('wappalyzerData').dispatchEvent(e);
} catch(e) { }
}());

@ -1,55 +0,0 @@
document.addEventListener('DOMContentLoaded', function() {
var d = document;
var options = {
opts: defaults,
init: function() {
options.load();
d.getElementById('github' ).addEventListener('click', function() { window.open(wappalyzer.config.githubURL); });
d.getElementById('twitter' ).addEventListener('click', function() { window.open(wappalyzer.config.twitterURL); });
d.getElementById('wappalyzer').addEventListener('click', function() { window.open(wappalyzer.config.websiteURL + '?pk_campaign=chrome&pk_kwd=options'); });
d.getElementById('options-save').addEventListener('click', options.save);
},
load: function() {
for ( var option in options.opts ) {
if ( localStorage[option] ) {
options.opts[option] = localStorage[option];
}
}
if ( options.opts.autoAnalyzeHeaders === "0" || options.opts.autoAnalyzeHeaders === "1" ) {
//Remove old stored option from localStorage because it's no longer needed. This can be entirely removed in future versions
delete localStorage['autoAnalyzeHeaders'];
}
if ( parseInt(options.opts.upgradeMessage) ) {
d.getElementById('option-upgrade-message').setAttribute('checked', 'checked');
}
if ( parseInt(options.opts.tracking) ) {
d.getElementById('option-tracking').setAttribute('checked', 'checked');
}
},
save: function() {
options.opts.upgradeMessage = d.getElementById('option-upgrade-message' ).checked ? 1 : 0;
options.opts.tracking = d.getElementById('option-tracking' ).checked ? 1 : 0;
for ( option in options.opts ) {
localStorage[option] = options.opts[option];
}
d.getElementById('options-saved').style.display = 'inline';
setTimeout(function(){
d.getElementById('options-saved').style.display = 'none';
}, 2000);
}
};
options.init();
});

@ -1,67 +0,0 @@
document.addEventListener('DOMContentLoaded', function() {
var
slugify, popup,
d = document,
detectedApps = d.getElementById('detected-apps');
slugify = function(string) {
return string.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/--+/g, '-').replace(/(?:^-|-$)/, '');
};
popup = {
init: function() {
d.getElementById('options').addEventListener('click', function() {
window.open(chrome.extension.getURL('options.html'));
});
chrome.tabs.getSelected(null, function(tab) {
if ( tab.url.match(/https?:\/\//) ) {
detectedApps.innerHTML = '<div class="empty">' + chrome.i18n.getMessage('noAppsDetected') + '</div>';
} else {
detectedApps.innerHTML = '<div class="empty">' + chrome.i18n.getMessage('nothingToDo') + '</div>';
}
});
popup.displayApps();
},
displayApps: function() {
var appName, confidence, version;
chrome.tabs.getSelected(null, function(tab) {
chrome.extension.sendRequest({ id: 'get_apps', tab: tab }, function(response) {
if ( response.tabCache && response.tabCache.count > 0 ) {
detectedApps.innerHTML = '';
for ( appName in response.tabCache.appsDetected ) {
confidence = response.tabCache.appsDetected[appName].confidenceTotal;
version = response.tabCache.appsDetected[appName].version;
var html =
'<div class="detected-app">' +
'<a target="_blank" href="https://wappalyzer.com/applications/' + slugify(appName) + '?pk_campaign=chrome&pk_kwd=popup">' +
'<img src="images/icons/' + response.apps[appName].icon + '"/>' +
'<span class="label"><span class="name">' + appName + '</span>' + ( version ? ' ' + version : '' ) + ( confidence < 100 ? ' (' + confidence + '% sure)' : '' ) + '</span>' +
'</a>';
response.apps[appName].cats.forEach(function(cat) {
html +=
'<a target="_blank" href="https://wappalyzer.com/categories/' + slugify(response.categories[cat]) + '?pk_campaign=chrome&pk_kwd=popup">' +
'<span class="category"><span class="name">' + chrome.i18n.getMessage('categoryName' + cat) + '</span></span>' +
'</a>';
});
html +=
'</a>' +
'</div>';
detectedApps.innerHTML = detectedApps.innerHTML + html;
}
}
});
});
}
};
popup.init();
});

@ -1,34 +0,0 @@
{ "name": "Wappalyzer",
"homepage_url": "https://wappalyzer.com?pk_campaign=chrome&pk_kwd=context",
"description": "Identifies software on the web",
"version": "2.52",
"default_locale": "en",
"manifest_version": 2,
"icons": {
"16": "images/icon_hot.png",
"32": "images/icon_32.png",
"128": "images/icon_128.png"
},
"page_action": {
"default_icon": "images/icon_32.png",
"default_title": "Wappalyzer - click for details",
"default_popup": "popup.html"
},
"background": { "page": "background.html" },
"content_scripts": [{
"matches": [ "http://*/*", "https://*/*" ],
"js": [ "js/content.js" ],
"run_at": "document_idle"
}, {
"matches": [ "http://*/*", "https://*/*" ],
"js": [ "js/iframe.js" ],
"run_at": "document_start",
"all_frames": true
}],
"web_accessible_resources": [
"js/inject.js"
],
"options_page": "options.html",
"permissions": [ "tabs", "webRequest", "webNavigation", "http://*/*", "https://*/*" ],
"content_security_policy": "script-src 'self' https://ssl.google-analytics.com; object-src 'self'"
}

@ -1,40 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title data-i18n="options">Wappalyzer Options</title>
<link rel="icon" href="images/icon_hot.png">
<link rel="stylesheet" href="css/widgets.css">
<link rel="stylesheet" href="css/options.css">
<script src="js/ga.js"></script>
<script src="js/wappalyzer.js"></script>
<script src="js/defaults.js"></script>
<script src="js/options.js"></script>
<script src="js/i18n.js"></script>
</head>
<body>
<h1 data-i18n="options"></h1>
<p>
<label for="option-upgrade-message"><input id="option-upgrade-message" type="checkbox"> <span data-i18n="optionUpgradeMessage"></span></label>
</p>
<p>
<label for="option-tracking"><input id="option-tracking" type="checkbox"> <span data-i18n="optionTracking"></span></label>
</p>
<p>
<button id="options-save" data-i18n="optionsSave"></button> <span id="options-saved" data-i18n="optionsSaved"></span>
</p>
<div id="about">
<p>
<button id="github" ><img src="images/github.png" width="16" height="16" alt=""/> <span data-i18n="github" ></span></button>
<button id="twitter" ><img src="images/twitter.png" width="16" height="16" alt=""/> <span data-i18n="twitter"></span></button>
<button id="wappalyzer"><img src="images/icon_hot.png" width="16" height="16" alt=""/> <span data-i18n="website"></span></button>
</p>
</body>
</html>

@ -1,21 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Popup</title>
<link rel="stylesheet" href="css/widgets.css">
<link rel="stylesheet" href="css/popup.css">
<script src="js/ga.js"></script>
<script src="js/popup.js"></script>
<script src="js/i18n.js"></script>
</head>
<body>
<div id="detected-apps"></div>
<div id="footer">
<a href="javascript: void(0);" data-i18n="options" id="options">Options</a>
</div>
</body>
</html>

@ -1,5 +0,0 @@
data/apps.json
data/images/icons/*.png
data/images/icons/*.svg
data/js/iframe.js
wappalyzer.js

@ -1,69 +0,0 @@
body {
background: #fff;
color: #000;
font-family: Helvetica, Arial, sans-serif;
font-size: 13px;
line-height: 16px;
margin: 0;
min-width: 200px;
padding: 15px;
}
img {
display: inline-block;
height: 16px;
margin-right: 8px;
vertical-align: top;
width: 16px;
}
.detected-app {
padding: 7px 0;
}
.detected-app:first-child {
padding-top: 0;
}
.detected-app:last-child {
border: none;
padding-bottom: 0;
}
.detected-app a {
color: #000;
display: block;
text-decoration: none;
}
.detected-app a .label .name {
border-bottom: 1px dotted #999;
}
.detected-app a:hover .label .name {
border-bottom: 1px solid #333;
}
.detected-app a .category .name {
border-bottom: 1px solid transparent;
}
.detected-app a:hover .category .name {
border-bottom: 1px solid #999;
}
.label {
font-weight: bold;
}
.category {
color: #999;
display: block;
margin: 5px 0 0 24px;
}
#empty {
color: #999;
font-style: italic;
text-align: center;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

@ -1,96 +0,0 @@
(function() {
self.port.on('displayApps', function(message) {
var
div, a, img, label, name, slugify, confidence, version,
d = document,
detectedApps = d.getElementById('detected-apps'),
empty = d.getElementById('empty');
slugify = function(string) {
return string.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/--+/g, '-').replace(/(?:^-|-$)/g, '');
};
while ( detectedApps.firstChild ) {
detectedApps.removeChild(detectedApps.firstChild);
}
if ( message.tabs.count > 0 ) {
empty.style.display = 'none';
for ( appName in message.tabs.appsDetected ) {
div = d.createElement('div');
a = d.createElement('a');
img = d.createElement('img');
label = d.createElement('span');
name = d.createElement('span');
confidence = message.tabs.appsDetected[appName].confidenceTotal;
version = message.tabs.appsDetected[appName].version;
div.setAttribute('class', 'detected-app');
a.setAttribute('href', '#');
(function(appName) {
a.addEventListener('click', function(e) {
e.preventDefault();
self.port.emit('goToUrl', 'applications/' + slugify(appName));
});
}(appName));
img.setAttribute('src', 'images/icons/' + message.apps[appName].icon);
img.setAttribute('height', '16');
img.setAttribute('width', '16');
label.setAttribute('class', 'label');
name.setAttribute('class', 'name');
name.appendChild(d.createTextNode(appName));
label.appendChild(name);
label.appendChild(d.createTextNode(( version ? ' ' + version : '' ) + ( confidence < 100 ? ' (' + confidence + '% sure)' : '')));
a.appendChild(img);
a.appendChild(label);
div.appendChild(a);
message.apps[appName].cats.forEach(function(cat) {
a = d.createElement('a');
label = d.createElement('span');
name = d.createElement('span');
a.setAttribute('href', '#');
(function(appName) {
a.addEventListener('click', function(e) {
e.preventDefault();
self.port.emit('goToUrl', 'categories/' + slugify(message.categories[cat]));
});
}(appName));
label.setAttribute('class', 'category');
name.setAttribute('class', 'name');
name.appendChild(d.createTextNode(message.categoryNames[cat]));
label.appendChild(name);
a.appendChild(label);
div.appendChild(a);
});
detectedApps.appendChild(div);
}
} else {
empty.style.display = 'inherit';
}
self.port.emit('resize', document.body.offsetHeight);
});
}());

@ -1,31 +0,0 @@
(function() {
try {
if ( document && document.contentType === 'text/html' ) {
var html = new XMLSerializer().serializeToString(document),
self.port.emit('log', html);
self.port.emit('log', 'init');
if ( html.length > 50000 ) {
html = html.substring(0, 25000) + html.substring(html.length - 25000, html.length);
}
self.port.emit('analyze', {
hostname: location.hostname,
url: location.href,
analyze: { html: html }
});
setTimeout(function() {
var env = Object.keys(unsafeWindow).slice(0, 500);
self.port.emit('analyze', {
hostname: location.hostname,
url: location.href,
analyze: { env: env }
});
}, 1000);
}
} catch (e) { }
}());

@ -1,16 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Panel</title>
<link rel="stylesheet" href="css/panel.css">
</head>
<body>
<div id="empty" data-l10n-id="noAppsDetected"></div>
<div id="detected-apps"></div>
</body>
</html>

@ -1,520 +0,0 @@
(function() {
'use strict';
var
w = require('wappalyzer').wappalyzer,
{Cc, Ci} = require('chrome'),
headersCache = {},
categoryNames = {},
windows = [],
Window,
Tab,
Panel,
Button,
button,
pageMod,
UrlBar;
exports.main = function(options, callbacks) {
w.log('main: ' + options.loadReason);
w.init();
};
exports.onUnload = function(reason) {
var win;
w.log('unload: ' + reason);
for each ( win in windows ) {
win.destroy();
}
};
Window = function(win) {
var
self = this,
tab;
w.log('new Window');
this.window = win;
this.tabs = {};
this.urlBar = null;
if ( button ) {
button.destroy();
}
if ( require('sdk/simple-prefs').prefs.urlbar ) {
this.urlBar = new UrlBar(this.window);
} else {
button = new Button();
}
require('sdk/simple-prefs').on('urlbar', function() {
self.destroy();
if ( button ) {
button.destroy();
}
if ( require('sdk/simple-prefs').prefs.urlbar ) {
self.urlBar = new UrlBar(this.window);
} else {
button = new Button();
}
self.displayApps();
});
for each ( tab in this.window.tabs ) {
this.tabs[tab.id] = new Tab(tab);
}
this.window.tabs
.on('open', function(tab) {
self.tabs[tab.id] = new Tab(tab);
})
.on('close', function(tab) {
self.tabs[tab.id] = null;
})
.on('activate', function(tab) {
self.displayApps();
});
self.displayApps();
};
Window.prototype.displayApps = function() {
var
self = this,
tab = this.window.tabs.activeTab,
url,
count = 0,
message = {};
w.log('Window.displayApps');
if ( !tab || require('sdk/tabs').activeTab !== tab ) {
return;
}
url = tab.url.replace(/#.*$/, '');
count = w.detected[url] ? Object.keys(w.detected[url]).length : 0;
this.tabs[tab.id].count = count;
this.tabs[tab.id].appsDetected = w.detected[url];
message = {
tabs: this.tabs[tab.id],
apps: w.apps,
categories: w.categories,
categoryNames: categoryNames
};
if ( this.urlBar ) {
this.urlBar.clear();
// Add icons
if ( count ) {
for ( appName in this.tabs[tab.id].appsDetected ) {
this.urlBar.addIcon(appName);
}
} else {
this.urlBar.addIcon();
}
this.urlBar.panel.get().port.emit('displayApps', message);
}
if ( button ) {
button.setIcon();
if ( count ) {
var
appName,
found = false;
// Find the main application to display
w.driver.categoryOrder.forEach(function(match) {
for ( appName in w.detected[url] ) {
w.apps[appName].cats.forEach(function(cat) {
if ( cat == match && !found ) {
button.setIcon(appName);
found = true;
}
});
}
});
}
button.panel.get().port.emit('displayApps', message);
}
};
Window.prototype.destroy = function() {
if ( this.urlBar ) {
this.urlBar.destroy();
this.urlBar = null;
}
};
pageMod = require('sdk/page-mod');
pageMod.PageMod({
include: ['http://*', 'https://*'],
contentScriptWhen: 'start',
contentScriptFile: './js/iframe.js',
onAttach: function(worker) {
worker.port.on('ad_log', function(message) {
w.adCache.push(message.subject);
});
}
});
Tab = function(tab) {
tab.on('ready', function(tab) {
var worker = tab.attach({
contentScriptFile: require('sdk/self').data.url('js/tab.js')
});
worker.port.on('analyze', function(message) {
var url = message.url.replace(/#.*$/, '');
if ( typeof headersCache[url] !== 'undefined' ) {
message.analyze.headers = headersCache[url];
}
w.analyze(message.hostname, url, message.analyze);
});
worker.port.on('log', function(message) {
w.log('[ tab.js ] ' + message);
});
});
};
Panel = function() {
var self = this;
this.panel = require('sdk/panel').Panel({
width: 250,
height: 50,
contentURL: require('sdk/self').data.url('panel.html'),
contentScriptFile: require('sdk/self').data.url('js/panel.js'),
position: { right: 30, top: 30 },
onHide: function() {
if ( button ) {
button.get().state('window', { checked: false });
}
}
});
this.panel.port.on('resize', function(height) {
self.panel.height = height;
});
this.panel.port.on('goToUrl', function(url) {
self.panel.hide();
w.driver.goToURL({ url: w.config.websiteURL + url, medium: 'panel' });
});
};
Panel.prototype.get = function() {
return this.panel;
};
Panel.prototype.destroy = function() {
this.panel.destroy();
};
Button = function() {
var self = this;
this.panel = new Panel();
this.button = require('sdk/ui/button/toggle').ToggleButton({
id: 'wappalyzer',
label: 'Wappalyzer',
icon: './images/icon32.png',
onChange: function(state) {
if ( state.checked ) {
self.panel.get().show({ position: self.button });
}
}
});
};
Button.prototype.setIcon = function(appName) {
var url = typeof appName === 'undefined' ? './images/icon32.png' : './images/icons/' + w.apps[appName].icon;
this.button.icon = url;
};
Button.prototype.get = function() {
return this.button;
};
Button.prototype.destroy = function() {
this.panel.destroy();
this.button.destroy();
};
UrlBar = function(window) {
var self = this;
this.panel = new Panel();
this.onClick = function() {
self.panel.get().show();
}
// Can't get document from sdk/windows. Use active window instead.
// This breaks switching between URL bar and button with multiple windows open
this.document = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator)
.getMostRecentWindow('navigator:browser').document;
if ( this.document.getElementById('wappalyzer-urlbar') ) {
this.urlBar = this.document.getElementById('wappalyzer-urlbar');
return;
}
//
this.urlBar = this.document.createElement('hbox');
this.urlBar.setAttribute('id', 'wappalyzer-urlbar');
this.urlBar.setAttribute('style', 'cursor: pointer; margin: 0 2px;');
this.urlBar.setAttribute('tooltiptext', require('sdk/l10n').get('name'));
this.urlBar.addEventListener('click', this.onClick);
this.document.getElementById('urlbar-icons').appendChild(this.urlBar);
};
UrlBar.prototype.get = function() {
return this.urlBar;
};
UrlBar.prototype.addIcon = function(appName) {
var
icon = this.document.createElement('image'),
url = typeof appName === 'undefined' ? 'images/icon32.png' : 'images/icons/' + w.apps[appName].icon,
tooltipText = ( typeof appName !== 'undefined' ? appName + ' - ' + require('sdk/l10n').get('clickForDetails') + ' - ' : '' ) + require('sdk/l10n').get('name');
icon.setAttribute('src', require('sdk/self').data.url(url));
icon.setAttribute('class', 'wappalyzer-icon');
icon.setAttribute('width', '16');
icon.setAttribute('height', '16');
icon.setAttribute('style', 'margin: 0 1px;');
icon.setAttribute('tooltiptext', tooltipText);
this.get().appendChild(icon);
return this;
};
UrlBar.prototype.clear = function() {
var icons;
do {
icons = this.get().getElementsByClassName('wappalyzer-icon');
if ( icons.length ) {
this.get().removeChild(icons[0]);
}
} while ( icons.length );
return this;
};
UrlBar.prototype.destroy = function() {
this.panel.destroy();
this.urlBar.removeEventListener('click', this.onClick);
this.urlBar.remove();
return this;
}
w.driver = {
timeout: 1000,
/**
* Log messages to console
*/
log: function(args) {
console.log('[wappalyzer ' + args.type + '] ' + args.message);
},
/**
* Initialize
*/
init: function(callback) {
var
id,
version,
win,
httpRequestObserver,
json = JSON.parse(require('sdk/self').data.load('apps.json'));
w.log('driver.init');
try {
version = require('sdk/self').version;
if ( !require('sdk/simple-storage').storage.version ) {
w.driver.goToURL({ url: w.config.websiteURL + 'installed', medium: 'install' });
} else if ( version !== require('sdk/simple-storage').storage.version ) {
w.driver.goToURL({ url: w.config.websiteURL + 'upgraded', medium: 'upgrade', background: true });
}
require('sdk/simple-storage').storage.version = version;
} catch(e) { }
w.apps = json.apps;
w.categories = json.categories;
for ( id in w.categories ) {
categoryNames[id] = require('sdk/l10n').get('cat' + id);
}
require('sdk/windows').browserWindows
.on('open', function(win) {
windows.push(new Window(win));
});
for each ( win in require('sdk/windows').browserWindows ) {
windows.push(new Window(win));
}
httpRequestObserver = {
init: function() {
var observerService = Cc['@mozilla.org/observer-service;1'].getService(Ci.nsIObserverService);
observerService.addObserver(this, 'http-on-examine-response', false);
},
observe: function(subject, topic, data) {
if ( topic == 'http-on-examine-response' ) {
subject.QueryInterface(Ci.nsIHttpChannel);
this.onExamineResponse(subject);
}
},
onExamineResponse: function (subject) {
var uri = subject.URI.spec.replace(/#.*$/, ''); // Remove hash
if ( headersCache.length > 50 ) {
headersCache = {};
}
if ( subject.contentType === 'text/html' ) {
if ( typeof headersCache[uri] === 'undefined' ) {
headersCache[uri] = {};
}
subject.visitResponseHeaders(function(header, value) {
headersCache[uri][header.toLowerCase()] = value;
});
}
}
};
httpRequestObserver.init();
},
goToURL: function(args) {
var url = args.url + ( typeof args.medium === 'undefined' ? '' : '?pk_campaign=firefox&pk_kwd=' + args.medium);
require('sdk/tabs').open({ url: url, inBackground: typeof args.background !== 'undefined' && args.background });
},
ping: function() {
var Request = require('sdk/request').Request, post;
if ( Object.keys(w.ping.hostnames).length && require('sdk/simple-prefs').prefs.tracking ) {
post = function(url, data) {
Request({
url: url,
content: { json: JSON.stringify(data) },
onComplete: function (response) {
w.log('w.driver.ping: status ' + response.status);
}
}).post();
};
post('http://ping.wappalyzer.com/v2/', w.ping);
w.log('w.driver.ping: ' + JSON.stringify(w.ping));
w.ping = { hostnames: {} };
post('https://ad.wappalyzer.com/log/wp/', w.adCache);
w.adCache = [];
}
},
displayApps: function() {
var win;
for each ( win in windows ) {
win.displayApps();
}
},
categoryOrder: [ // Used to pick the main application
1, // CMS
11, // Blog
6, // Web Shop
2, // Message Board
51, // Landing Page Builder
8, // Wiki
13, // Issue Tracker
30, // Web Mail
18, // Web Framework
21, // LMS
7, // Photo Gallery
38, // Media Server
3, // Database Manager
34, // Database
4, // Documentation Tool
9, // Hosting Panel
29, // Search Engine
12, // JavaScript Framework
26, // Mobile Framework
25, // JavaScript Graphics
22, // Web Server
27, // Programming Language
28, // Operating System
15, // Comment System
20, // Editor
41, // Payment Processor
10, // Analytics
32, // Marketing Automation
31, // CDN
23, // Cache Tool
17, // Font Script
24, // Rich Text Editor
35, // Map
5, // Widget
14, // Video Player
16, // Captcha
33, // Web Server Extension
37, // Network Device
39, // Webcam
40, // Printer
36, // Advertising Network
42, // Tag Managers
43, // Paywalls
19 // Miscellaneous
]
};
}());

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = Keine Applikationen erkannt
clickForDetails = Klicken für Details
preferences = Weitere Optionen ...
categories = Kategorienverwaltung
tracking_title = Tracken
tracking_description = Sende anonyme Reports über gefundene Applikationen zu Forschungszwecken an wappalyzer.com
urlbar_title = Display icons in URL bar
urlbar_description = Uncheck to display toolbar button.
feedback = Feedback
github = Github
twitter = Twitter
website = Zu wappalyzer.com browsen
cat1 = CMS
cat2 = Message Board
cat3 = Datenbank-Manager
cat4 = Dokumentationstool
cat5 = Widget
cat6 = eCommerce
cat7 = Fotogallery
cat8 = Wiki
cat9 = Hosting Panel
cat10 = Analytics
cat11 = Blog
cat12 = JavaScript Framework
cat13 = Issue Tracker
cat14 = Video Player
cat15 = Kommentarsystem
cat16 = CAPTCHA
cat17 = Font Script
cat18 = Web Framework
cat19 = Diverses
cat20 = Editor
cat21 = LMS
cat22 = Web-Server
cat23 = Cache Tool
cat24 = Rich Text Editor
cat25 = JavaScript Graphics
cat26 = Mobile Framework
cat27 = Programmiersprache
cat28 = Betriebssystem
cat29 = Such-Engine
cat30 = Web mail
cat31 = CDN
cat32 = Marketing Automation
cat33 = Web-Server-Erweiterung
cat34 = Datenbank
cat35 = Karte
cat36 = Werbenetzwerk
cat37 = Netzwerkgerät
cat38 = Medienserver
cat39 = Webcam
cat40 = Drucker
cat41 = Payment Processor
cat42 = Tag Manager
cat43 = Paywall
cat44 = Build/CI System
cat45 = SCADA System
cat46 = Fernzugriff
cat47 = Development Tool
cat48 = Netzwerkspeicher
cat49 = Feed-Leser
cat50 = Document Management Systems
cat51 = Landing Page Builder
cat52 = Live Chat

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = Δεν ανιχνεύθηκαν εφαρμογές
clickForDetails = Κάντε κλικ για λεπτομέρειες
preferences = Ρυθμίσεις
categories = Κατηγορίες
tracking_title = Παρακολούθηση
tracking_description = Ανώνυμη αποστολή αναφορών για εντοπισμένες εφαρμογές στο wappalyzer.com για έρευνα
urlbar_title = Προβολή εικονιδίων στη μπάρα διεύθυνσης
urlbar_description = Αποεπιλέξτε για να εμφανίσετε το κουμπί της εργαλειοθήκης.
feedback = Feedback
github = Github
twitter = Twitter
website = Πήγαινε στο wappalyzer.com
cat1 = CMS
cat2 = Διαδικτυακό Φόρουμ
cat3 = Διαχειριστής Βάσης Δεδομένων
cat4 = Εργαλείο Τεκμηρίωσης
cat5 = Widget
cat6 = eCommerce
cat7 = Gallery Φωτογραφιών
cat8 = Wiki
cat9 = Hosting Panel
cat10 = Analytics
cat11 = Blog
cat12 = Framework της JavaScript
cat13 = Πρόγραμμα Παρακολούθησης Προβλημάτων
cat14 = Πρόγραμμα αναπαραγωγής Βίντεο
cat15 = Σύστημα Σχολίων
cat16 = CAPTCHA
cat17 = Script Γραμματοσειράς
cat18 = Framework Διαδικτύου
cat19 = Διάφορα
cat20 = Επεξεργαστής Κειμένου
cat21 = LMS
cat22 = Διακομιστής Διαδικτύου
cat23 = Εργαλείο Μνήμης Cache
cat24 = Επεξεργαστής Εμπλουτισμένου Κειμένου
cat25 = Γραφικά JavaScript
cat26 = Framework για Κινητά
cat27 = Γλώσσα Προγραμματισμού
cat28 = Λειτουργικό Σύστημα
cat29 = Μηχανή Αναζήτησης
cat30 = Web Mail
cat31 = CDN
cat32 = Αυτοματοποίηση Marketing
cat33 = Επέκταση Διακομιστή Διαδικτύου
cat34 = Βάση Δεδομένων
cat35 = Χάρτης
cat36 = Δίκτυο Διαφημίσεων
cat37 = Υπηρεσία Δικτύου
cat38 = Διακομιστής Πολυμέσων
cat39 = Διαδικτυακή κάμερα
cat40 = Εκτυπωτής
cat41 = Σύστημα Επεξεργασίας Πληρωμών
cat42 = Σύστημα Διαχείρισης Tags
cat43 = Paywall
cat44 = Σύστημα Build/CI
cat45 = Σύστημα SCADA
cat46 = Απομακρυσμένη Πρόσβαση
cat47 = Εργαλείο Ανάπτυξης
cat48 = Δικτυακός Αποθηκευτικός Χώρος
cat49 = Feed Readers
cat50 = Συστήματα Διαχειρίσης Εγγράφων
cat51 = Σύστημα Κατασκευής Σελίδων Υποδοχής
cat52 = Live Chat

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = No applications detected
clickForDetails = Click for details
preferences = Options
categories = Categories
tracking_title = Tracking
tracking_description = Anonymously send reports on detected applications to wappalyzer.com for analysis
urlbar_title = Display icons in URL bar
urlbar_description = Uncheck to display toolbar button.
feedback = Feedback
github = Github
twitter = Twitter
website = Go to wappalyzer.com
cat1 = CMS
cat2 = Message Board
cat3 = Database Manager
cat4 = Documentation Tool
cat5 = Widget
cat6 = eCommerce
cat7 = Photo Gallery
cat8 = Wiki
cat9 = Hosting Panel
cat10 = Analytics
cat11 = Blog
cat12 = JavaScript Framework
cat13 = Issue Tracker
cat14 = Video Player
cat15 = Comment System
cat16 = CAPTCHA
cat17 = Font Script
cat18 = Web Framework
cat19 = Miscellaneous
cat20 = Editor
cat21 = LMS
cat22 = Web Server
cat23 = Cache Tool
cat24 = Rich Text Editor
cat25 = JavaScript Graphics
cat26 = Mobile Framework
cat27 = Programming Language
cat28 = Operating System
cat29 = Search Engine
cat30 = Web Mail
cat31 = CDN
cat32 = Marketing Automation
cat33 = Web Server Extension
cat34 = Database
cat35 = Map
cat36 = Advertising Network
cat37 = Network Device
cat38 = Media Server
cat39 = Webcam
cat40 = Printer
cat41 = Payment Processor
cat42 = Tag Manager
cat43 = Paywall
cat44 = Build/CI System
cat45 = SCADA System
cat46 = Remote Access
cat47 = Development Tool
cat48 = Network Storage
cat49 = Feed Readers
cat50 = Document Management Systems
cat51 = Landing Page Builder
cat52 = Live Chat

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = No applications detected
clickForDetails = Click for details
preferences = Options
categories = Categories
tracking_title = Tracking
tracking_description = Anonymously send reports on detected applications to wappalyzer.com for analysis
urlbar_title = Display icons in URL bar
urlbar_description = Uncheck to display toolbar button.
feedback = Feedback
github = Github
twitter = Twitter
website = Go to wappalyzer.com
cat1 = CMS
cat2 = Message Board
cat3 = Database Manager
cat4 = Documentation Tool
cat5 = Widget
cat6 = eCommerce
cat7 = Photo Gallery
cat8 = Wiki
cat9 = Hosting Panel
cat10 = Analytics
cat11 = Blog
cat12 = JavaScript Framework
cat13 = Issue Tracker
cat14 = Video Player
cat15 = Comment System
cat16 = CAPTCHA
cat17 = Font Script
cat18 = Web Framework
cat19 = Miscellaneous
cat20 = Editor
cat21 = LMS
cat22 = Web Server
cat23 = Cache Tool
cat24 = Rich Text Editor
cat25 = JavaScript Graphics
cat26 = Mobile Framework
cat27 = Programming Language
cat28 = Operating System
cat29 = Search Engine
cat30 = Web Mail
cat31 = CDN
cat32 = Marketing Automation
cat33 = Web Server Extension
cat34 = Database
cat35 = Map
cat36 = Advertising Network
cat37 = Network Device
cat38 = Media Server
cat39 = Webcam
cat40 = Printer
cat41 = Payment Processor
cat42 = Tag Manager
cat43 = Paywall
cat44 = Build/CI System
cat45 = SCADA System
cat46 = Remote Access
cat47 = Development Tool
cat48 = Network Storage
cat49 = Feed Readers
cat50 = Document Management Systems
cat51 = Landing Page Builder
cat52 = Live Chat

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = Aplicaciones no detectadas
clickForDetail = Clic para detalles
preferences = Opciones
categories = Categorías
tracking_title = Seguimiento
tracking_description = Enviar informes anónimos sobre las aplicaciones detectadas a wappalyzer.com para análisis
urlbar_title = Display icons in URL bar
urlbar_description = Uncheck to display toolbar button.
feedback = Opinión
github = Github
twitter = Twitter
website = Ir a wappalyzer.com
cat1 = Gestor de Contenido
cat2 = Foro
cat3 = estor de Bases de Datos
cat4 = Herramienta de Documentación
cat5 = Widget
cat6 = Tienda Web
cat7 = Galería fotográfica
cat8 = Wiki
cat9 = Panel de Hosting
cat10 = Analítica
cat11 = Blog
cat12 = Framework JavaScript
cat13 = Gestor de Incidencias
cat14 = Reproductor de Vídeo
cat15 = Sistema de Comentarios
cat16 = CAPTCHA
cat17 = Tipografía
cat18 = Framework Web
cat19 = Miscelánea
cat20 = Editor
cat21 = LMS
cat22 = Servidor Web
cat23 = Herramienta de Cache
cat24 = Editor de Texto Enriquecido
cat25 = Gráficos JavaScript
cat26 = Framework Móvil
cat27 = Lenguaje de programación
cat28 = Sistema Operativo
cat29 = Motor de Búsqueda
cat30 = Correo Web
cat31 = CDN
cat32 = Automatización de Marketing
cat33 = Extensión de Servidor Web
cat34 = Base de Datos
cat35 = Mapa
cat36 = Red de Publicidad
cat37 = Dispositivo de Red
cat38 = Servidores de Contenido
cat39 = Webcam
cat40 = Impresora
cat41 = Payment Processor
cat42 = Tag Manager
cat43 = Paywall
cat44 = Build/CI System
cat45 = SCADA System
cat46 = Remote Access
cat47 = Development Tool
cat48 = Network Storage
cat49 = Feed Readers
cat50 = Document Management Systems
cat51 = Landing Page Builder
cat52 = Live Chat

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = Pas d'applications détectées
clickForDetails = Cliquer pour plus de détails
preferences = Plus d'options...
categories = Gérer les catégories
tracking_title = Traçage
tracking_description = Envoyer anonymement des rapports sur les applications détectées à wappalyzer.com pour la recherche
urlbar_title = Afficher les icônes dans la barre d'adresse
urlbar_description = Décocher pour afficher le bouton dans la barre des modules
feedback = Donner votre avis
github = Github
twitter = Twitter
website = Aller sur wappalyzer.com
cat1 = CMS
cat2 = Forum
cat3 = Gestionnaire de base de données
cat4 = Outil de documentation
cat5 = Widget
cat6 = Boutique en ligne
cat7 = Galerie photo
cat8 = Wiki
cat9 = Gestionnaire de serveur
cat10 = Outil de statistiques
cat11 = Blog
cat12 = Framework JavaScript
cat13 = Outils de suivi de problèmes
cat14 = Lecteur de vidéos
cat15 = Système de commentaires
cat16 = CAPTCHA
cat17 = Script de police
cat18 = Framework web
cat19 = Divers
cat20 = Editeur
cat21 = LMS
cat22 = Serveur web
cat23 = Outil de cache
cat24 = Editeur WYSIWYG
cat25 = Graphismes JavaScript
cat26 = Framework pour mobiles
cat27 = Language de programmation
cat28 = Système d'exploitation
cat29 = Moteur de recherche
cat30 = Web Mail
cat31 = CDN
cat32 = Logiciel de marketing
cat33 = Extension de serveur web
cat34 = Base de données
cat35 = Carte
cat36 = Réseau publicitaire
cat37 = Périphérique réseau
cat38 = Serveur multimédia
cat39 = Webcam
cat40 = Imprimante
cat41 = Service de paiement
cat42 = Tag Manager
cat43 = Paywall
cat44 = Système CI
cat45 = Système SCADA
cat46 = Accès à distance
cat47 = Outil de développement
cat48 = Stockage réseau
cat49 = Lecteur RSS
cat50 = Système de gestion de documents
cat51 = Landing Page Builder
cat52 = Chat en direct

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = Nessuna applicazione rilevata
clickForDetails = Clicca per i dettagli
preferences = Opzioni
categories = Categorie
tracking_title = Tracking
tracking_description = Inviare anonimamente un report sulle applicazioni rilevate a wappalyzer.com per l'analisi
urlbar_title = Mostra le icone nella barra delle URL
urlbar_description = Deselezionare per visualizzare il pulsante nella barra degli strumenti.
feedback = Feedback
github = Github
twitter = Twitter
website = Vai su wappalyzer.com
cat1 = CMS
cat2 = Forum
cat3 = Gestore di database
cat4 = Strumento di documentazione
cat5 = Widget
cat6 = eCommerce
cat7 = Galleria fotografica
cat8 = Wiki
cat9 = Pannello Hosting
cat10 = Analytics
cat11 = Blog
cat12 = Framework JavaScript
cat13 = Issue Tracker
cat14 = Player Video
cat15 = Sistema di commenti
cat16 = CAPTCHA
cat17 = Font Script
cat18 = Framework Web
cat19 = Miscellanea
cat20 = Editor
cat21 = LMS
cat22 = Web Server
cat23 = Cache Tool
cat24 = Editor di Testo Ricco
cat25 = JavaScript Graphics
cat26 = Framework Mobile
cat27 = Linguaggio di Programmazione
cat28 = Sistema Operativo
cat29 = Motore di Ricerca
cat30 = Web Mail
cat31 = CDN
cat32 = Marketing Automation
cat33 = Estensione Web Server
cat34 = Database
cat35 = Mappa
cat36 = Network Pubblicitario
cat37 = Network Device
cat38 = Media Server
cat39 = Webcam
cat40 = Stampante
cat41 = Payment Processor
cat42 = Tag Manager
cat43 = Paywall
cat44 = Sistema Build/CI
cat45 = SCADA System
cat46 = Accesso Remoto
cat47 = Strumenti di Sviluppo
cat48 = Network Storage
cat49 = Lettore di Feed
cat50 = Sistema di Gestione Documenti
cat51 = Landing Page Builder
cat52 = Live Chat

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = Geen applicaties gedetecteerd
clickForDetails = Klik voor details
preferences = Meer opties…
categories = Beheer categoriën
tracking_title = Tracking
tracking_description = Verzend anonieme informatie over applicaties naar wappalyzer.com voor onderzoek
urlbar_title = Laat iconen in de adresbalk zien
urlbar_description = Uncheck to display toolbar button.
feedback = Feedback
github = Github
twitter = Twitter
website = Ga naar wappalyzer.com
cat1 = CMS
cat2 = Forum
cat3 = Database Manager
cat4 = Documentatie Tool
cat5 = Widget
cat6 = Webwinkel
cat7 = Fotogalerij
cat8 = Wiki
cat9 = Hosting Paneel
cat10 = Analytics
cat11 = Blog
cat12 = JavaScript Framework
cat13 = Issue Tracker
cat14 = Videospeler
cat15 = Reactiesysteem
cat16 = CAPTCHA
cat17 = Font Script
cat18 = Web Framework
cat19 = Overige
cat20 = Editor
cat21 = LMS
cat22 = Webserver
cat23 = Cache Tool
cat24 = Rich Text Editor
cat25 = JavaScript Graphics
cat26 = Mobiel Framework
cat27 = Programmeertaal
cat28 = Besturingssysteem
cat29 = Zoekmachine
cat30 = Webmail
cat31 = CDN
cat32 = Marketing Automatisering
cat33 = Web Server Extensie
cat34 = Database
cat35 = Landkaart
cat36 = Advertentienetwerk
cat37 = Netwerk Apparaat
cat38 = Media Server
cat39 = Webcam
cat40 = Printer
cat41 = Betalingsverwerker
cat42 = Tag Manager
cat43 = Paywall
cat44 = Build/CI System
cat45 = SCADA System
cat46 = Remote Access
cat47 = Development Tool
cat48 = Network Storage
cat49 = Feed Readers
cat50 = Document Management Systems
cat51 = Landing Page Builder
cat52 = Live Chat

@ -1,65 +0,0 @@
name = Wappalyzer
noAppsDetected = Nici o aplicație detectată
clickForDetails = Click pentru detalii
preferences = Opțiuni
categories = Categorii
tracking_title = Analiză
tracking_description = Trimite rapoarte anonime despre aplicațiile detectate către wappalyzer.com pentru cercetare
urlbar_title = Afișează iconițe în bara URL
urlbar_description = Debifează pentru a arăta butonul în toolbar.
feedback = Părere
github = Github
twitter = Twitter
website = Mergi la wappalyzer.com
cat1 = CMS
cat2 = Forum de discuții
cat3 = Manager baze de date
cat4 = Unealtă pentru documentare
cat5 = Widget
cat10 = Analiză trafic web
cat11 = Blog
cat12 = Framework JavaScript
cat13 = Tracker probleme
cat14 = Player Video
cat15 = Sistem de comentarii
cat16 = Verificare Captcha
cat17 = Script pentru fonturi
cat18 = Framework Web
cat19 = Divers
cat20 = Editor
cat21 = LMS
cat22 = Server Web
cat23 = Unealtă Cache
cat24 = Editor Texte Rich
cat25 = Grafică JavaScript
cat26 = Framework Mobile
cat27 = Limbaj de programare
cat28 = Sistem de operare
cat29 = Motor de căutare
cat30 = Poștă electronică
cat31 = CDN
cat32 = Automatizare marketing
cat33 = Extensie server web
cat34 = Bază de date
cat35 = Hartă
cat36 = Rețea de advertising
cat37 = Serviciu rețea
cat38 = Server Media
cat39 = Webcam
cat40 = Imprimantă
cat41 = Sistem de plată
cat42 = Manager cuvinte cheie
cat43 = Paywall
cat44 = Build/CI System
cat45 = SCADA System
cat46 = Remote Access
cat47 = Development Tool
cat48 = Network Storage
cat49 = Feed Readers
cat50 = Document Management Systems
cat51 = Landing Page Builder
cat52 = Live Chat

@ -1,68 +0,0 @@
name = Wappalyzer
noAppsDetected = Нет данных о сайте
clickForDetails = Щелкните, чтобы посмотреть детально
preferences = Настройки Wappalyzer
categories = Категории
tracking_title = Слежение
tracking_description = Анонимно отправлять статистику распознанных данных на сервер (для улучшения расширения)
urlbar_title = Отображать иконку в строке URL
urlbar_description = Снимите галочку, чтобы отображать кнопку на панели
feedback = Обратная связь
github = Форкнуть на GitHub!
twitter = Следите за новостями в Твиттере
website = Перейти на Wappalyzer.com
cat1 = CMS
cat2 = Форум
cat3 = Менеджер БД
cat4 = Документация
cat5 = Виджет
cat6 = Электронная коммерция
cat7 = Фотогалерея
cat8 = Wiki
cat9 = Панель хостинга
cat10 = Аналитика
cat11 = Блог
cat12 = JS фреймворк
cat13 = Баг трекер
cat14 = Видео плеер
cat15 = Система комментариев
cat16 = Капча
cat17 = Шрифт
cat18 = Веб фреймворк
cat19 = Прочее
cat20 = HTML редактор
cat21 = LMS
cat22 = Веб сервер
cat23 = Кеширование
cat24 = WYSIWYG редактор
cat25 = JS графика
cat26 = Мобильный фреймворк
cat27 = Язык программирования
cat28 = Операционная система
cat29 = Поисковый движок
cat30 = Веб почта
cat31 = CDN
cat32 = Управление маркетингом
cat33 = Расширение Веб сервера
cat34 = База данных
cat35 = Карта
cat36 = Рекламная сеть
cat37 = Сетевая служба
cat38 = Медиа сервер
cat39 = Вебкамера
cat40 = Принтер
cat41 = Провайдер платежей
cat42 = Менеджер тэгов
cat43 = Paywall
cat44 = Система непрерывной интеграции
cat45 = Система SCADA
cat46 = Удаленное управление
cat47 = Утилита для разработчиков
cat48 = Сетевое хранилище
cat49 = Граббер контента
cat50 = Управление документами
cat51 = Генератор лендингов
cat52 = Live Chat

@ -1,29 +0,0 @@
{
"name": "wappalyzer",
"title": "Wappalyzer",
"homepage": "https://wappalyzer.com",
"icon": "images/icon48.png",
"icon64": "images/icon64.png",
"id": "wappalyzer@crunchlabz.com",
"description": "Identifies software on the web",
"author": "Elbert Alias",
"license": "GPLv3",
"version": "3.2.11",
"main": "driver.js",
"preferences": [{
"name": "tracking",
"title": "Tracking",
"description": "Anonymously send reports on detected applications to wappalyzer.com for analysis",
"type": "bool",
"value": true
}, {
"name": "urlbar",
"title": "Display icons in URL bar",
"description": "Uncheck to display toolbar button.",
"type": "bool",
"value": true
}],
"permissions": {
"private-browsing": true
}
}

@ -73,30 +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,
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);
},
/**

@ -2,7 +2,7 @@
"name": "wappalyzer",
"description": "Uncovers the technologies used on websites",
"homepage": "https://github.com/AliasIO/Wappalyzer",
"version": "3.0.8",
"version": "3.0.9",
"author": "Elbert Alias",
"license": "GPL-3.0",
"repository": {

@ -3,3 +3,5 @@ images/icons/converted/*.png
images/icons/*.png
images/icons/*.svg
js/wappalyzer.js
js/iframe.js
js/network.js

@ -56,5 +56,6 @@
"categoryName49": { "message": "Feed Readers" },
"categoryName50": { "message": "Συστήματα Διαχειρίσης Εγγράφων" },
"categoryName51": { "message": "Σύστημα Κατασκευής Σελίδων Υποδοχής" },
"categoryName52": { "message": "Live Chat" }
"categoryName52": { "message": "Live Chat" },
"categoryName53": { "message": "CRM" }
}

@ -56,5 +56,6 @@
"categoryName49": { "message": "Feed Readers" },
"categoryName50": { "message": "Document Management Systems" },
"categoryName51": { "message": "Landing Page Builder" },
"categoryName52": { "message": "Live Chat" }
"categoryName52": { "message": "Live Chat" },
"categoryName53": { "message": "CRM" }
}

@ -60,5 +60,6 @@
"categoryName49": { "message": "Feed Readers" },
"categoryName50": { "message": "Document Management Systems" },
"categoryName51": { "message": "Landing Page Builder" },
"categoryName52": { "message": "Live Chat" }
"categoryName52": { "message": "Live Chat" },
"categoryName53": { "message": "CRM" }
}

@ -60,5 +60,6 @@
"categoryName49": { "message": "Lecteur RSS" },
"categoryName50": { "message": "Système de gestion de documents" },
"categoryName51": { "message": "Landing Page Builder" },
"categoryName52": { "message": "Chat en direct" }
"categoryName52": { "message": "Chat en direct" },
"categoryName53": { "message": "CRM" }
}

@ -56,5 +56,6 @@
"categoryName49": { "message": "Feed Readers" },
"categoryName50": { "message": "Συστήματα Διαχειρίσης Εγγράφων" },
"categoryName51": { "message": "Σύστημα Κατασκευής Σελίδων Υποδοχής" },
"categoryName52": { "message": "Live Chat" }
"categoryName52": { "message": "Live Chat" },
"categoryName53": { "message": "CRM" }
}

@ -60,6 +60,7 @@
"categoryName49": { "message": "Lettore di Feed" },
"categoryName50": { "message": "Sistema di Gestione Documenti" },
"categoryName51": { "message": "Landing Page Builder" },
"categoryName52": { "message": "Live Chat" }
"categoryName52": { "message": "Live Chat" },
"categoryName53": { "message": "CRM" }
}

@ -0,0 +1,61 @@
{
"github": { "message": "Fork Wappalyzer on GitHub!" },
"twitter": { "message": "Obserwuj Wappalyzer na Twitterze" },
"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": "Lista problemów" },
"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": "Grafika JavaScript" },
"categoryName26": { "message": "Framework mobilny" },
"categoryName27": { "message": "Język programowania" },
"categoryName28": { "message": "System operacyjny" },
"categoryName29": { "message": "Silnik wyszukiwarki" },
"categoryName30": { "message": "Poczta internetowa" },
"categoryName31": { "message": "CDN" },
"categoryName32": { "message": "Automatyzacja marketingu" },
"categoryName33": { "message": "Rozszerzenie serwera WWW" },
"categoryName34": { "message": "Baza danych" },
"categoryName35": { "message": "Mapy" },
"categoryName36": { "message": "Sieć reklamowa" },
"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": "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" }
}

@ -56,5 +56,6 @@
"categoryName49": { "message": "Feed Readers" },
"categoryName50": { "message": "Document Management Systems" },
"categoryName51": { "message": "Landing Page Builder" },
"categoryName52": { "message": "Live Chat" }
"categoryName52": { "message": "Live Chat" },
"categoryName53": { "message": "CRM" }
}

@ -47,6 +47,7 @@
"categoryName50" : { "message" : "Управление документами" },
"categoryName51" : { "message": "Генератор лендингов" },
"categoryName52" : { "message": "Live Chat" },
"categoryName53" : { "message": "CRM" },
"github" : { "message" : "Форкнуть на GitHub!" },
"noAppsDetected" : { "message" : "Нет данных о сайте" },
"nothingToDo" : { "message" : "Тут нечего искать" },

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -46,15 +46,13 @@
w.driver.categoryOrder = Object.keys(w.categories).sort(function(a, b) {
return w.categories[a].priority - w.categories[b].priority;
});
console.log(w.driver.categoryOrder);
};
xhr.send(null);
// Version check
try {
var version = browser.app.getDetails().version;
var version = browser.runtime.getManifest().version;
if ( localStorage['version'] == null ) {
firstRun = true;
@ -135,6 +133,7 @@
onMessage: function(message, sender, sendResponse) {
var
hostname,
response,
a = document.createElement('a');
if ( typeof message.id != 'undefined' ) {
@ -164,15 +163,18 @@
break;
case 'get_apps':
sendResponse({
response = {
tabCache: tabCache[message.tab.id],
apps: w.apps,
categories: w.categories
});
};
break;
}
sendResponse(response);
}
},
goToURL: function(args) {

@ -69,6 +69,7 @@ var exports = {};
realArray: function(a) {
return Array.prototype.slice.apply(a);
},
onDocLoaded: function(doc, callback) {
if ( doc.readyState === 'loading' ) {
doc.addEventListener('DOMContentLoaded', callback);
@ -112,10 +113,42 @@ var exports = {};
try {
dict[key] = window.decodeURIComponent(val);
} catch (e) {
continue;
}
}
return dict;
},
sendToBackground: function(message, event, responseMessage, onResponse) {
if ( typeof browser !== 'undefined' ) {
var response = browser.runtime.sendMessage(message);
response.then(onResponse);
} else if ( typeof chrome !== 'undefined' ) {
chrome.runtime.sendMessage(message, onResponse);
} else if ( window.self.port ) {
window.self.port.on(responseMessage, onResponse);
window.self.port.emit(event, message);
}
},
ifTrackingEnabled: function(callback, elseCallback) {
this.sendToBackground(
'is_tracking_enabled',
'',
'tracking_enabled_response',
function(message) {
if ( message.tracking_enabled ) {
callback();
} else {
elseCallback();
}
}
);
}
};
utils.SCRIPT_IN_FRIENDLY_IFRAME = !utils.SCRIPT_IN_WINDOW_TOP && utils.isFriendlyWindow(window.parent);
@ -135,7 +168,7 @@ var exports = {};
LogGenerator.prototype = {
log: function(event, opt_assets, opt_pageTags) {
var opt_video_assets;
if ( event === 'video' ) {
if ( event === 'video' || event === 'invalid-video' ) {
opt_video_assets = opt_assets || [];
opt_assets = [];
} else {
@ -148,7 +181,7 @@ var exports = {};
video_assets: opt_video_assets,
assets: opt_assets,
version: '3',
mrev: '5dacb94-c',
mrev: '9c4d5b3-c',
msgNum: this.msgNum,
timestamp: new Date().getTime(),
pageVis: document.visibilityState,
@ -305,7 +338,6 @@ var exports = {};
return div;
}
}
return null;
};
TopSearcher.prototype._jumpedOut = function(el) {
@ -858,7 +890,7 @@ var exports = {};
var _pageTags;
var INIT_MS_BW_SEARCHES = 2000;
var PAGE_TAG_RE = new RegExp('gpt|oascentral');
var POST_MSG_ID = '1484952787-11883-24071-12354-1549';
var POST_MSG_ID = '1490888598-28717-31700-14775-21098';
var AD_SERVER_RE = new RegExp('^(google_ads_iframe|oas_frame|atwAdFrame)');
function getPageTags(doc) {
@ -924,9 +956,9 @@ var exports = {};
if ( exports.utils.SCRIPT_IN_WINDOW_TOP || document.readyState === 'complete' ) {
extractAds();
}
setTimeout(function() {
extractAdsWrapper();
}, INIT_MS_BW_SEARCHES);
setTimeout(
function() { extractAdsWrapper(); }, INIT_MS_BW_SEARCHES
);
}
function extractAds() {
@ -987,7 +1019,6 @@ var exports = {};
}
}
}
return null;
}
function onPostMessage(event) {
@ -1009,6 +1040,8 @@ var exports = {};
delete adData.postMessageId;
event.stopImmediatePropagation();
if ( isChildWin(myWin, ifrWin) ) {
if ( exports.utils.isFriendlyWindow(ifrWin) ) {
ifrTag = ifrWin.frameElement;
@ -1053,12 +1086,24 @@ var exports = {};
callback(msg);
}
});
} else if ( typeof chrome !== 'undefined' ) {
chrome.runtime.onMessage.addListener(function(msg) {
if ( msg.event === event ) {
callback(msg);
}
});
} else if ( window.self.port ) {
window.self.port.on(event, callback);
}
}
exports.coordinator = {
addPostMessageListener: function() {
if ( !exports.utils.SCRIPT_IN_FRIENDLY_IFRAME ) {
window.addEventListener('message', onPostMessage, false);
}
},
init: function(onAdFound) {
if ( exports.utils.SCRIPT_IN_FRIENDLY_IFRAME ) {
@ -1066,8 +1111,6 @@ var exports = {};
}
_onAdFound = onAdFound;
window.addEventListener('message', onPostMessage, false);
if ( exports.utils.SCRIPT_IN_WINDOW_TOP ) {
var log = _logGen.log('page');
onAdFound(log);
@ -1092,26 +1135,32 @@ var exports = {};
if ( exports.utils.SCRIPT_IN_WINDOW_TOP ) {
window.adparser = {
init: exports.coordinator.init,
addPostMessageListener: exports.coordinator.addPostMessageListener,
ifTrackingEnabled: exports.utils.ifTrackingEnabled,
sendToBackground: exports.utils.sendToBackground
};
} else {
exports.coordinator.init(function() {});
exports.coordinator.addPostMessageListener();
exports.utils.ifTrackingEnabled(
function() {
exports.coordinator.init(function() {});
},
function() {}
);
}
})(window);
(function(adparser) {
function sendToBackground(event, message) {
if ( window.self.port ) {
window.self.port.emit(event, message);
} else if ( typeof browser !== 'undefined' ) {
browser.runtime.sendMessage(message);
}
}
function onAdFound(log) {
sendToBackground('ad_log', { id: 'ad_log', subject: log });
adparser.sendToBackground({ id: 'ad_log', subject: log }, 'ad_log', '', function(){});
}
if ( window === window.top ) {
adparser.init(onAdFound);
if ( window === window.top ) {
adparser.addPostMessageListener();
adparser.ifTrackingEnabled(
function() {
adparser.init(onAdFound);
},
function() {}
)
}
})(window.adparser);

@ -1,6 +1,27 @@
'use strict';
(function() {
function isChrome() {
return (typeof chrome !== 'undefined' &&
window.navigator.userAgent.match(/Chrom(?:e|ium)\/([0-9\.]+)/));
}
var browserProxy;
if ( isChrome() ) {
browserProxy = chrome;
} else {
browserProxy = browser;
}
var MIN_FF_MAJOR_VERSION = 51;
var requiredBrowserApis = [
browserProxy.webNavigation,
browserProxy.tabs,
browserProxy.webRequest,
browserProxy.runtime
];
var areListenersRegistered = false;
var secBefore = 2000;
var secAfter = 5000;
var secBetweenDupAssets = 10e3;
@ -22,11 +43,27 @@
var topVideoAssetDomains = [
'2mdn.net',
'adap.tv',
'adnxs.com',
'adsrvr.org',
'btrll.com',
'celtra.com',
'flashtalking.com',
'flite.com',
'innovid.com',
'jivox.com',
'mixpo.com',
'nytimes.com',
'playwire.com',
'selectmedia.asia',
'serving-sys.com',
'btrll.com',
'solvemedia.com',
'spotible.com',
'teads.tv',
'tubemogul.com'
'tribalfusion.com',
'tubemogul.com',
'videologygroup.com',
'washingtonpost.com'
];
if ( !String.prototype.endsWith ) {
@ -42,6 +79,47 @@
};
}
function getFrame(getFrameDetails, callback) {
if ( typeof chrome !== 'undefined' ) {
chrome.webNavigation.getFrame(getFrameDetails, callback);
} else if ( typeof browser !== 'undefined' ) {
var gettingFrame = browser.webNavigation.getFrame(getFrameDetails);
gettingFrame.then(callback);
}
}
function ifBrowserValid(callback, elseCallback) {
if ( isChrome() ) {
callback();
} else if ( typeof browser !== 'undefined' ) {
try {
var gettingInfo = browser.runtime.getBrowserInfo();
gettingInfo.then(function(browserInfo) {
var browserVersion = parseInt(browserInfo.version.split('.')[0]);
if ( browserInfo.name === 'Firefox' &&
browserVersion >= MIN_FF_MAJOR_VERSION) {
callback();
} else {
elseCallback();
}
});
} catch (err) {
elseCallback();
}
} else {
elseCallback();
}
}
function isTrackingEnabled() {
return parseInt(localStorage.tracking, 10);
}
function isPixelRequest(request) {
return (request.type === 'image' || request.responseStatus === 204) &&
request.size <= 1000;
@ -57,7 +135,7 @@
}
function stripQueryParams(url) {
return url.split('?',1)[0];
return url.split('?', 1)[0];
}
function parseHostnameFromUrl(url) {
@ -117,7 +195,18 @@
var tabId = details.tabId;
this.cleanupCollector(tabId);
this.collectors[tabId] = new PageNetworkTrafficCollector(tabId);
if ( isTrackingEnabled() ) {
if ( !areListenersRegistered ) {
registerListeners();
}
this.collectors[tabId] = new PageNetworkTrafficCollector(tabId);
} else {
if ( areListenersRegistered ) {
unregisterListeners();
}
}
},
onNavigationCommitted: function(details) {
@ -160,7 +249,7 @@
PageNetworkTrafficCollector.prototype.sendLogMessageToTabConsole = function() {
var logMessage = Array.from(arguments).join(' ');
var message = {message: logMessage, event: 'console-log-message'};
browser.tabs.sendMessage(this.tabId, message);
browserProxy.tabs.sendMessage(this.tabId, message);
};
PageNetworkTrafficCollector.prototype.sendToTab = function(assetReq, reqs, curPageUrl, isValidAd) {
@ -179,7 +268,9 @@
return parseHostnameFromUrl(request.url);
});
msg.assets = [{
url: parseHostnameFromUrl(assetReq.url),
contentType: assetReq.contentType,
size: assetReq.size
}];
@ -188,7 +279,7 @@
msg.origUrl = curPageUrl;
msg.displayAdFound = this.displayAdFound;
browser.tabs.sendMessage(this.tabId, msg);
browserProxy.tabs.sendMessage(this.tabId, msg);
};
PageNetworkTrafficCollector.prototype.getRedirKey = function(url, frameId) {
@ -236,7 +327,7 @@
frameId: details.frameId
};
var pageNetworkTrafficController = this;
browser.webNavigation.getFrame(getFrameDetails).then(function(frameDetails) {
getFrame(getFrameDetails, function(frameDetails) {
if ( frameDetails && frameDetails.url ) {
pageNetworkTrafficController._onHeadersReceived(details, frameDetails);
}
@ -356,7 +447,7 @@
frameId: responseDetails.frameId
};
var pageNetworkTrafficController = this;
browser.webNavigation.getFrame(getFrameDetails).then(function(frameDetails) {
getFrame(getFrameDetails, function(frameDetails) {
if ( frameDetails && frameDetails.url ) {
pageNetworkTrafficController.processResponse(responseDetails, frameDetails);
}
@ -484,6 +575,10 @@
var hasVpaidOrVastRequest = tagRequests.some(function(tagRequest) {
return isVpaidOrVastRequest(tagRequest);
});
if ( assetRequest.isYoutubeAd ) {
return true;
}
if ( hasVpaidOrVastRequest ) {
return true;
}
@ -498,7 +593,7 @@
var _this = this,
origPageUrl, msgAssetReq;
msgAssetReq = this.msgsBeingSent[msgKey];
browser.tabs.get(this.tabId, function(tab) {origPageUrl = tab.url;});
browserProxy.tabs.get(this.tabId, function(tab) {origPageUrl = tab.url;});
setTimeout(function() {
var rawRequests = [];
@ -531,54 +626,159 @@
}
};
browser.webRequest.onBeforeRequest.addListener(function(details) {
function onBeforeRequestListener(details) {
globalPageContainer.forwardCall(details, PageNetworkTrafficCollector.prototype.onBeforeRequest);
}, {urls: ['http://*/*', 'https://*/*']}, []);
}
browser.webRequest.onSendHeaders.addListener(function(details) {
function onSendHeadersListener(details) {
globalPageContainer.forwardCall(details, PageNetworkTrafficCollector.prototype.onSendHeaders);
}, {urls: ['http://*/*', 'https://*/*']}, ['requestHeaders']);
}
browser.webRequest.onHeadersReceived.addListener(function(details) {
function onHeadersReceivedListener(details) {
globalPageContainer.forwardCall(details, PageNetworkTrafficCollector.prototype.onHeadersReceived);
}, {urls: ['http://*/*', 'https://*/*']}, ['responseHeaders']);
}
browser.webRequest.onBeforeRedirect.addListener(function(details) {
function onBeforeRedirectListener(details) {
globalPageContainer.forwardCall(details, PageNetworkTrafficCollector.prototype.onBeforeRedirect);
}, {urls: ['http://*/*', 'https://*/*']}, []);
}
browser.webRequest.onResponseStarted.addListener(function(details) {
function onResponseStartedListener(details) {
globalPageContainer.forwardCall(details, PageNetworkTrafficCollector.prototype.onResponseStarted);
}, {urls: ['http://*/*', 'https://*/*']}, ['responseHeaders']);
browser.webNavigation.onBeforeNavigate.addListener(function(details) {
if ( details.frameId === 0 ) {
globalPageContainer.onNewNavigation(details);
}
}, {});
}
browser.webNavigation.onCommitted.addListener(function(details) {
function onCommittedListener(details) {
if ( details.frameId === 0 ) {
globalPageContainer.onNavigationCommitted(details);
}
});
}
browser.webNavigation.onCompleted.addListener(function(details) {
function onCompletedListener(details) {
if ( details.frameId === 0 ) {
globalPageContainer.onNavigationCompleted(details);
}
});
}
browser.tabs.onRemoved.addListener(function(tabId, closeInfo) {
function onRemovedListener(tabId, closeInfo) {
globalPageContainer.onTabClose(tabId, closeInfo);
});
}
browser.runtime.onMessage.addListener(function(message, sender, sendResponse) {
function onMessageListener(message, sender, sendResponse) {
if ( message.event === 'new-ad' && message.data.event === 'ad' ) {
var tabId = sender.tab.id;
if ( tabId ) {
globalPageContainer.onDisplayAdFound(tabId);
}
}
}
function registerListeners() {
browserProxy.webRequest.onBeforeRequest.addListener(
onBeforeRequestListener,
{urls: ['http://*/*', 'https://*/*']},
[]
);
browserProxy.webRequest.onSendHeaders.addListener(
onSendHeadersListener,
{urls: ['http://*/*', 'https://*/*']},
['requestHeaders']
);
browserProxy.webRequest.onHeadersReceived.addListener(
onHeadersReceivedListener,
{urls: ['http://*/*', 'https://*/*']},
['responseHeaders']
);
browserProxy.webRequest.onBeforeRedirect.addListener(
onBeforeRedirectListener,
{urls: ['http://*/*', 'https://*/*']},
[]
);
browserProxy.webRequest.onResponseStarted.addListener(
onResponseStartedListener,
{urls: ['http://*/*', 'https://*/*']},
['responseHeaders']
);
browserProxy.webNavigation.onCommitted.addListener(onCommittedListener);
browserProxy.webNavigation.onCompleted.addListener(onCompletedListener);
browserProxy.tabs.onRemoved.addListener(onRemovedListener);
browserProxy.runtime.onMessage.addListener(onMessageListener);
areListenersRegistered = true;
}
function unregisterListeners() {
browserProxy.webRequest.onBeforeRequest.removeListener(
onBeforeRequestListener
);
browserProxy.webRequest.onSendHeaders.removeListener(
onSendHeadersListener
);
browserProxy.webRequest.onHeadersReceived.removeListener(
onHeadersReceivedListener
);
browserProxy.webRequest.onBeforeRedirect.removeListener(
onBeforeRedirectListener
);
browserProxy.webRequest.onResponseStarted.removeListener(
onResponseStartedListener
);
browserProxy.webNavigation.onCommitted.removeListener(onCommittedListener);
browserProxy.webNavigation.onCompleted.removeListener(onCompletedListener);
browserProxy.tabs.onRemoved.removeListener(onRemovedListener);
browserProxy.runtime.onMessage.removeListener(onMessageListener);
areListenersRegistered = false;
}
function areRequiredBrowserApisAvailable() {
return requiredBrowserApis.every(function(api) {
return typeof api !== 'undefined';
});
}
if ( areRequiredBrowserApisAvailable() ) {
ifBrowserValid(
function() {
browserProxy.webNavigation.onBeforeNavigate.addListener(
function(details) {
if ( details.frameId === 0 ) {
globalPageContainer.onNewNavigation(details);
}
},
{
url: [{urlMatches: 'http://*/*'}, {urlMatches: 'https://*/*'}]
}
);
}, function() {
}
);
}
browserProxy.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if ( request === 'is_browser_valid' ) {
ifBrowserValid(
sendResponse({'browser_valid': true}),
sendResponse({'browser_valid': false})
);
}
});
browserProxy.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if ( request === 'is_tracking_enabled' ) {
sendResponse({'tracking_enabled': isTrackingEnabled()});
}
});
})();

@ -10,7 +10,7 @@ document.addEventListener('DOMContentLoaded', function() {
popup = {
init: function() {
browser.tabs.query({ active: true }).then(function(tabs) {
browser.tabs.query({ active: true, currentWindow: true }).then(function(tabs) {
if ( tabs[0].url.match(/https?:\/\//) ) {
detectedApps.innerHTML = '<div class="empty">' + browser.i18n.getMessage('noAppsDetected') + '</div>';
} else {

@ -4,7 +4,7 @@
"author": "Elbert Alias",
"homepage_url": "https://wappalyzer.com/",
"description": "Identify web technologies",
"version": "3",
"version": "4",
"default_locale": "en",
"manifest_version": 2,
"icons": {

@ -4,7 +4,7 @@
"author": "Elbert Alias",
"homepage_url": "https://wappalyzer.com/",
"description": "Identify web technologies",
"version": "3",
"version": "4.0.1",
"default_locale": "en",
"manifest_version": 2,
"icons": {

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 754 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="256px" height="208px" viewBox="0 0 256 208" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
<g>
<path d="M177.735242,1.67620228 C173.837865,-0.18165739 170.650604,1.69271659 170.650604,5.85432226 L170.650604,171.360719 L241.794244,205.322394 C249.622026,209.120685 255.971777,206.478396 255.971777,199.542386 L255.971777,40.1793119 C255.971777,39.5187396 255.55892,38.9407388 254.94789,38.6104526 L177.743499,1.78354529 L177.743499,1.70097375 L177.735242,1.67620228 L177.735242,1.67620228 Z" fill="#32FC8D"></path>
<path d="M85.3211734,130.636435 L166.488998,4.73960646 C168.784487,1.18903019 173.837865,-0.214686007 177.718728,1.6018879 L255.038719,38.5113668 C255.534148,38.7590814 255.715806,39.3370822 255.426805,39.7499399 L170.642347,171.377233 L85.3211734,130.652949 L85.3211734,130.636435 L85.3211734,130.636435 Z" fill="#0BE370"></path>
<path d="M11.8077304,3.9221482 C5.31760724,0.825715411 3.1129471,3.12946141 6.91949514,9.04158375 L85.3211734,130.636435 L170.642347,171.360719 L85.5110879,39.3040535 C85.3872306,39.114139 85.2138304,38.9572531 85.0156587,38.8581672 L11.8077304,3.93040535 L11.8077304,3.9221482 L11.8077304,3.9221482 Z" fill="#14C767"></path>
<path d="M85.3211734,199.476329 C85.3211734,206.412338 80.0118233,209.550057 73.513443,206.445367 L7.08463822,174.737895 C3.18726149,172.888293 0,167.967029 0,163.797166 L0,8.38101142 C0,2.83220386 4.25243436,0.32202901 9.45444145,2.8074324 L84.8670299,38.8086243 C85.1477731,38.9324816 85.3211734,39.2049677 85.3211734,39.5022252 L85.3211734,199.4433 L85.3211734,199.476329 L85.3211734,199.476329 Z" fill="#00AB6C"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 869 B

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1000"
height="700.24304"
id="svg3671"
version="1.1"
inkscape:version="0.48.5 r10040"
sodipodi:docname="New document 4">
<defs
id="defs3673" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.57695313"
inkscape:cx="621.35281"
inkscape:cy="283.29076"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
fit-margin-left="0.5"
fit-margin-bottom="0.5"
fit-margin-top="0.5"
fit-margin-right="0.5"
inkscape:window-width="1256"
inkscape:window-height="1041"
inkscape:window-x="657"
inkscape:window-y="-21"
inkscape:window-maximized="0" />
<metadata
id="metadata3676">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(124.99999,-182.24065)">
<g
id="g3003"
transform="matrix(14.230769,0,0,-14.230769,291.22346,259.00334)">
<path
d="m 0,0 c 2.264,2.359 5.416,3.822 8.902,3.822 4.634,0 8.677,-2.584 10.83,-6.42 1.871,0.836 3.942,1.301 6.121,1.301 8.358,0 15.134,-6.835 15.134,-15.266 0,-8.432 -6.776,-15.267 -15.134,-15.267 -1.02,0 -2.017,0.102 -2.981,0.297 -1.896,-3.382 -5.509,-5.667 -9.656,-5.667 -1.736,0 -3.378,0.401 -4.84,1.114 -1.922,-4.521 -6.4,-7.691 -11.619,-7.691 -5.435,0 -10.067,3.439 -11.845,8.262 -0.777,-0.165 -1.582,-0.251 -2.408,-0.251 -6.471,0 -11.717,5.3 -11.717,11.839 0,4.382 2.357,8.208 5.859,10.255 -0.721,1.659 -1.122,3.49 -1.122,5.415 0,7.52 6.105,13.616 13.635,13.616 C -6.42,5.359 -2.491,3.257 0,0"
style="fill:#00a1e0;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3005"
inkscape:connector-curvature="0" />
</g>
<g
id="g3007"
transform="matrix(14.230769,0,0,-14.230769,20.195613,545.3506)">
<path
d="m 0,0 c -0.044,-0.115 0.016,-0.139 0.03,-0.159 0.132,-0.096 0.266,-0.165 0.401,-0.242 0.716,-0.38 1.392,-0.491 2.099,-0.491 1.44,0 2.334,0.766 2.334,1.999 l 0,0.024 c 0,1.14 -1.009,1.554 -1.956,1.853 L 2.785,3.024 C 2.071,3.256 1.455,3.456 1.455,3.926 l 0,0.025 c 0,0.402 0.36,0.698 0.918,0.698 0.62,0 1.356,-0.206 1.83,-0.468 0,0 0.139,-0.09 0.19,0.045 C 4.421,4.298 4.661,4.944 4.686,5.014 4.713,5.09 4.665,5.146 4.616,5.176 4.075,5.505 3.327,5.73 2.553,5.73 L 2.409,5.729 C 1.091,5.729 0.171,4.933 0.171,3.792 l 0,-0.024 c 0,-1.203 1.015,-1.593 1.966,-1.865 L 2.29,1.856 C 2.983,1.643 3.58,1.46 3.58,0.972 l 0,-0.024 C 3.58,0.502 3.192,0.17 2.566,0.17 2.323,0.17 1.548,0.175 0.711,0.704 0.61,0.763 0.551,0.806 0.473,0.853 0.432,0.879 0.329,0.924 0.284,0.788 L 0,0 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3009"
inkscape:connector-curvature="0" />
</g>
<g
id="g3011"
transform="matrix(14.230769,0,0,-14.230769,320.19446,545.3506)">
<path
d="m 0,0 c -0.044,-0.115 0.016,-0.139 0.03,-0.159 0.132,-0.096 0.266,-0.165 0.401,-0.242 0.716,-0.38 1.392,-0.491 2.099,-0.491 1.44,0 2.334,0.766 2.334,1.999 l 0,0.024 c 0,1.14 -1.009,1.554 -1.956,1.853 L 2.785,3.024 C 2.071,3.256 1.455,3.456 1.455,3.926 l 0,0.025 c 0,0.402 0.36,0.698 0.918,0.698 0.62,0 1.356,-0.206 1.83,-0.468 0,0 0.139,-0.09 0.19,0.045 C 4.421,4.298 4.661,4.944 4.686,5.014 4.713,5.09 4.665,5.146 4.616,5.176 4.075,5.505 3.327,5.73 2.553,5.73 L 2.409,5.729 C 1.091,5.729 0.171,4.933 0.171,3.792 l 0,-0.024 c 0,-1.203 1.015,-1.593 1.966,-1.865 L 2.29,1.856 C 2.983,1.643 3.581,1.46 3.581,0.972 l 0,-0.024 C 3.581,0.502 3.192,0.17 2.566,0.17 2.323,0.17 1.548,0.175 0.711,0.704 0.61,0.763 0.55,0.804 0.474,0.853 0.448,0.87 0.326,0.917 0.284,0.788 L 0,0 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3013"
inkscape:connector-curvature="0" />
</g>
<g
id="g3015"
transform="matrix(14.230769,0,0,-14.230769,524.9952,510.98046)">
<path
d="m 0,0 c 0,-0.697 -0.13,-1.246 -0.386,-1.634 -0.253,-0.384 -0.636,-0.571 -1.17,-0.571 -0.535,0 -0.916,0.186 -1.165,0.571 -0.252,0.387 -0.38,0.937 -0.38,1.634 0,0.696 0.128,1.244 0.38,1.628 0.249,0.38 0.63,0.565 1.165,0.565 0.534,0 0.917,-0.185 1.171,-0.565 C -0.13,1.244 0,0.696 0,0 M 1.202,1.292 C 1.084,1.691 0.9,2.043 0.655,2.336 0.41,2.63 0.1,2.866 -0.268,3.038 -0.635,3.209 -1.069,3.296 -1.556,3.296 -2.044,3.296 -2.478,3.209 -2.845,3.038 -3.213,2.866 -3.523,2.63 -3.769,2.336 -4.013,2.042 -4.197,1.69 -4.316,1.292 -4.433,0.895 -4.492,0.461 -4.492,0 c 0,-0.461 0.059,-0.896 0.176,-1.292 0.119,-0.398 0.302,-0.75 0.548,-1.044 0.245,-0.294 0.556,-0.529 0.923,-0.696 0.368,-0.167 0.801,-0.252 1.289,-0.252 0.487,0 0.92,0.085 1.288,0.252 0.367,0.167 0.678,0.402 0.923,0.696 0.245,0.293 0.429,0.645 0.547,1.044 C 1.32,-0.895 1.379,-0.46 1.379,0 1.379,0.46 1.32,0.895 1.202,1.292"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3017"
inkscape:connector-curvature="0" />
</g>
<g
id="g3019"
transform="matrix(14.230769,0,0,-14.230769,682.5683,539.71093)">
<path
d="m 0,0 c -0.04,0.117 -0.153,0.073 -0.153,0.073 -0.175,-0.067 -0.361,-0.129 -0.559,-0.16 -0.201,-0.031 -0.422,-0.047 -0.659,-0.047 -0.582,0 -1.044,0.173 -1.375,0.515 -0.332,0.342 -0.518,0.895 -0.516,1.643 0.002,0.681 0.166,1.193 0.461,1.583 0.293,0.388 0.739,0.587 1.334,0.587 0.496,0 0.874,-0.057 1.27,-0.182 0,0 0.095,-0.041 0.14,0.083 C 0.048,4.387 0.126,4.596 0.238,4.917 0.27,5.008 0.192,5.047 0.164,5.058 0.008,5.119 -0.36,5.218 -0.638,5.26 -0.898,5.3 -1.202,5.321 -1.54,5.321 -2.045,5.321 -2.495,5.235 -2.88,5.063 -3.264,4.892 -3.59,4.656 -3.848,4.362 -4.106,4.068 -4.302,3.716 -4.433,3.318 -4.563,2.921 -4.629,2.485 -4.629,2.024 c 0,-0.997 0.269,-1.803 0.8,-2.393 0.532,-0.592 1.331,-0.893 2.373,-0.893 0.616,0 1.248,0.125 1.702,0.304 0,0 0.087,0.042 0.049,0.143 L 0,0 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3021"
inkscape:connector-curvature="0" />
</g>
<g
id="g3023"
transform="matrix(14.230769,0,0,-14.230769,712.4969,501.47858)">
<path
d="M 0,0 C 0.057,0.387 0.164,0.709 0.329,0.96 0.578,1.341 0.958,1.55 1.492,1.55 2.026,1.55 2.379,1.34 2.632,0.96 2.8,0.709 2.873,0.373 2.902,0 L 0,0 z M 4.047,0.851 C 3.945,1.236 3.692,1.625 3.526,1.803 3.264,2.085 3.008,2.282 2.754,2.392 2.422,2.534 2.024,2.628 1.588,2.628 1.08,2.628 0.619,2.543 0.245,2.367 -0.13,2.191 -0.445,1.951 -0.692,1.652 -0.939,1.354 -1.125,0.999 -1.243,0.596 -1.362,0.195 -1.422,-0.242 -1.422,-0.703 c 0,-0.469 0.062,-0.906 0.185,-1.299 0.124,-0.396 0.322,-0.745 0.59,-1.034 0.267,-0.291 0.611,-0.519 1.023,-0.678 0.409,-0.158 0.906,-0.24 1.477,-0.239 1.175,0.004 1.794,0.266 2.049,0.407 0.045,0.025 0.088,0.069 0.034,0.195 L 3.67,-2.606 c -0.04,0.111 -0.153,0.07 -0.153,0.07 -0.291,-0.108 -0.705,-0.302 -1.67,-0.3 -0.631,10e-4 -1.099,0.187 -1.392,0.478 -0.301,0.298 -0.448,0.736 -0.474,1.354 L 4.05,-1.008 c 0,0 0.107,0.002 0.118,0.106 0.004,0.044 0.14,0.836 -0.121,1.753"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3025"
inkscape:connector-curvature="0" />
</g>
<g
id="g3027"
transform="matrix(14.230769,0,0,-14.230769,248.76169,501.47858)">
<path
d="M 0,0 C 0.058,0.387 0.164,0.709 0.329,0.96 0.578,1.341 0.958,1.55 1.492,1.55 2.026,1.55 2.379,1.34 2.633,0.96 2.8,0.709 2.873,0.373 2.902,0 L 0,0 z M 4.046,0.851 C 3.944,1.236 3.692,1.625 3.526,1.803 3.264,2.085 3.008,2.282 2.754,2.392 2.422,2.534 2.024,2.628 1.588,2.628 1.081,2.628 0.619,2.543 0.245,2.367 -0.13,2.191 -0.445,1.951 -0.692,1.652 -0.939,1.354 -1.125,0.999 -1.243,0.596 -1.361,0.195 -1.422,-0.242 -1.422,-0.703 c 0,-0.469 0.062,-0.906 0.185,-1.299 0.124,-0.396 0.322,-0.745 0.59,-1.034 0.267,-0.291 0.611,-0.519 1.023,-0.678 0.409,-0.158 0.906,-0.24 1.477,-0.239 1.175,0.004 1.794,0.266 2.049,0.407 0.045,0.025 0.088,0.069 0.034,0.195 l -0.265,0.745 c -0.041,0.111 -0.154,0.07 -0.154,0.07 -0.291,-0.108 -0.704,-0.302 -1.671,-0.3 -0.63,10e-4 -1.098,0.187 -1.391,0.478 -0.301,0.298 -0.448,0.736 -0.474,1.354 L 4.05,-1.008 c 0,0 0.107,0.002 0.118,0.106 0.004,0.044 0.14,0.836 -0.122,1.753"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3029"
inkscape:connector-curvature="0" />
</g>
<g
id="g3031"
transform="matrix(14.230769,0,0,-14.230769,123.60065,539.3936)">
<path
d="m 0,0 c -0.159,0.127 -0.181,0.159 -0.235,0.241 -0.08,0.125 -0.121,0.303 -0.121,0.529 0,0.358 0.118,0.615 0.363,0.788 C 0.004,1.557 0.357,1.863 1.187,1.852 1.77,1.844 2.291,1.758 2.291,1.758 l 0,-1.85 10e-4,0 c 0,0 -0.517,-0.111 -1.099,-0.146 C 0.365,-0.288 -0.003,0.001 0,0 M 1.619,2.859 C 1.454,2.871 1.24,2.878 0.984,2.878 0.635,2.878 0.298,2.834 -0.018,2.749 -0.336,2.664 -0.622,2.531 -0.868,2.355 -1.115,2.178 -1.314,1.952 -1.458,1.684 -1.602,1.416 -1.675,1.1 -1.675,0.746 c 0,-0.36 0.062,-0.673 0.186,-0.929 0.124,-0.257 0.303,-0.471 0.531,-0.636 0.226,-0.165 0.505,-0.286 0.829,-0.359 0.319,-0.073 0.681,-0.11 1.077,-0.11 0.417,0 0.833,0.034 1.236,0.103 0.399,0.068 0.889,0.167 1.025,0.198 0.135,0.032 0.285,0.073 0.285,0.073 0.101,0.025 0.093,0.133 0.093,0.133 L 3.585,2.94 c 0,0.816 -0.218,1.421 -0.647,1.796 -0.427,0.374 -1.056,0.563 -1.869,0.563 -0.305,0 -0.796,-0.042 -1.09,-0.101 0,0 -0.889,-0.172 -1.255,-0.458 0,0 -0.08,-0.05 -0.036,-0.162 l 0.288,-0.774 c 0.036,-0.1 0.133,-0.066 0.133,-0.066 0,0 0.031,0.012 0.067,0.033 0.783,0.426 1.773,0.413 1.773,0.413 0.44,0 0.778,-0.088 1.006,-0.263 C 2.177,3.751 2.29,3.494 2.29,2.952 l 0,-0.172 C 1.94,2.83 1.619,2.859 1.619,2.859"
style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="path3033"
inkscape:connector-curvature="0" />
</g>
<g
id="g3035"
transform="matrix(14.230769,0,0,-14.230769,613.6685,468.87159)">
<path
d="M 0,0 C 0.031,0.092 -0.034,0.136 -0.061,0.146 -0.13,0.173 -0.476,0.246 -0.743,0.263 -1.254,0.294 -1.538,0.208 -1.792,0.094 -2.044,-0.02 -2.324,-0.204 -2.48,-0.413 l 0,0.495 c 0,0.069 -0.049,0.124 -0.117,0.124 l -1.043,0 c -0.068,0 -0.117,-0.055 -0.117,-0.124 l 0,-6.069 c 0,-0.068 0.056,-0.124 0.124,-0.124 l 1.069,0 c 0.068,0 0.123,0.056 0.123,0.124 l 0,3.032 c 0,0.407 0.045,0.813 0.135,1.068 0.088,0.252 0.208,0.454 0.356,0.599 0.149,0.144 0.318,0.245 0.503,0.302 0.189,0.058 0.398,0.077 0.546,0.077 0.213,0 0.447,-0.055 0.447,-0.055 0.078,-0.009 0.122,0.039 0.148,0.11 C -0.236,-0.668 -0.038,-0.111 0,0"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3037"
inkscape:connector-curvature="0" />
</g>
<g
id="g3039"
transform="matrix(14.230769,0,0,-14.230769,470.8741,428.84334)">
<path
d="m 0,0 c -0.13,0.04 -0.248,0.067 -0.402,0.096 -0.156,0.028 -0.342,0.042 -0.553,0.042 -0.736,0 -1.316,-0.208 -1.723,-0.618 -0.405,-0.408 -0.68,-1.029 -0.818,-1.846 l -0.05,-0.275 -0.924,0 c 0,0 -0.112,0.004 -0.136,-0.118 l -0.151,-0.847 c -0.011,-0.08 0.024,-0.131 0.132,-0.131 l 0.899,0 -0.912,-5.092 c -0.071,-0.41 -0.153,-0.747 -0.244,-1.003 -0.089,-0.252 -0.176,-0.441 -0.284,-0.579 -0.104,-0.132 -0.202,-0.23 -0.372,-0.287 -0.14,-0.047 -0.302,-0.069 -0.479,-0.069 -0.098,0 -0.229,0.016 -0.326,0.036 -0.096,0.019 -0.147,0.04 -0.22,0.071 0,0 -0.105,0.04 -0.147,-0.065 -0.033,-0.087 -0.273,-0.746 -0.302,-0.827 -0.028,-0.081 0.012,-0.144 0.063,-0.163 0.12,-0.042 0.209,-0.07 0.372,-0.109 0.226,-0.053 0.417,-0.056 0.596,-0.056 0.374,0 0.716,0.053 0.999,0.155 0.284,0.103 0.532,0.282 0.752,0.524 0.237,0.262 0.386,0.536 0.528,0.911 0.141,0.37 0.262,0.83 0.358,1.366 l 0.917,5.187 1.34,0 c 0,0 0.113,-0.004 0.136,0.119 l 0.152,0.846 c 0.01,0.081 -0.024,0.131 -0.133,0.131 l -1.301,0 c 0.007,0.029 0.066,0.487 0.215,0.918 0.064,0.183 0.184,0.332 0.285,0.434 0.1,0.1 0.215,0.171 0.341,0.212 0.129,0.042 0.276,0.062 0.437,0.062 0.122,0 0.243,-0.014 0.334,-0.033 0.126,-0.027 0.175,-0.041 0.208,-0.051 0.133,-0.04 0.151,-0.001 0.177,0.063 l 0.311,0.854 C 0.107,-0.05 0.028,-0.011 0,0"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3041"
inkscape:connector-curvature="0" />
</g>
<g
id="g3043"
transform="matrix(14.230769,0,0,-14.230769,212.19431,554.07548)">
<path
d="m 0,0 c 0,-0.068 -0.049,-0.123 -0.117,-0.123 l -1.079,0 c -0.068,0 -0.116,0.055 -0.116,0.123 l 0,8.684 c 0,0.068 0.048,0.123 0.116,0.123 l 1.079,0 C -0.049,8.807 0,8.752 0,8.684 L 0,0 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
id="path3045"
inkscape:connector-curvature="0" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 13 KiB

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="170px" height="139px" viewBox="0 0 170 139" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 3.6.1 (26313) - http://www.bohemiancoding.com/sketch -->
<title>logo-green-icon</title>
<desc>Created with Sketch.</desc>
<defs>
<path d="M95.4468436,69.3626204 L95.4592285,69.3626204 C95.4592285,69.3626204 95.457159,69.3679348 95.4530363,69.3784554 C95.4532988,69.3791286 95.4534302,69.3794661 95.4534302,69.3794661 C95.0391633,70.4343838 75.2163095,120.683062 50.8674558,120.683062 C26.2644774,120.683062 21.1714061,102.459391 19.9642374,69.3794661 C21.1682129,36.2888823 26.2603015,18.0602652 50.8674558,18.0602652 C75.2163064,18.0602652 95.0334809,68.3077156 95.4468436,69.3626204 Z M118.092311,69.3716637 L139.000268,113.03658 L144.17019,102.546345 L169.529456,102.546345 L149.922143,135.56783 L124.272418,135.56783 C124.272418,135.56783 108.042969,101.468151 104.972924,91.5307203 C104.972924,91.5307203 90.9533928,122.642048 74.4201896,132.958455 C57.8869865,143.274861 34.1487053,136.647908 34.1487053,136.647908 C34.1487053,136.647908 9.24831463,130.042439 2.51589276,97.2982984 C0.635071049,88.1506408 -0.142736189,78.6540611 0.0213285458,69.3716637 C-0.142736189,60.0892664 0.635071049,50.5926866 2.51589276,41.445029 C9.24831463,8.70088837 34.1487053,2.09541962 34.1487053,2.09541962 C34.1487053,2.09541962 57.8869865,-4.5315335 74.4201896,5.78487275 C90.9533928,16.101279 104.972924,47.2126071 104.972924,47.2126071 C108.042969,37.2751764 124.272418,3.17549775 124.272418,3.17549775 L149.922143,3.17549775 L169.529456,36.1969821 L144.17019,36.1969821 L139.000268,25.7067477 L118.092311,69.3716637 Z" id="path-1"></path>
<linearGradient x1="90.5349364%" y1="23.0926676%" x2="50%" y2="68.9046334%" id="linearGradient-3">
<stop stop-color="#000000" stop-opacity="0.199190444" offset="0%"></stop>
<stop stop-color="#000000" stop-opacity="0" offset="100%"></stop>
</linearGradient>
</defs>
<g id="Logo" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Exports" transform="translate(-1407.000000, -158.000000)">
<g id="logo-green-icon" transform="translate(1407.000000, 158.000000)">
<mask id="mask-2" fill="white">
<use xlink:href="#path-1"></use>
</mask>
<use id="Mask" fill="#4DC997" xlink:href="#path-1"></use>
<path d="M95.6611328,69.2988281 L104.922852,91.4794922 L97.1796875,112.716797 L76.9003906,87.5185547 L95.6611328,69.2988281 Z" id="Path-17" fill="url(#linearGradient-3)" opacity="0.2" mask="url(#mask-2)"></path>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="256px" height="256px" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 41.2 (35397) - http://www.bohemiancoding.com/sketch -->
<title>256</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="256" fill="#00BF9A">
<path d="M140.193354,69.1040859 C137.79248,68.5490638 135.323592,69.7160334 134.239024,71.9292095 L111.690359,117.752486 C110.888845,119.393156 110.986998,121.33919 111.950199,122.885933 C112.911363,124.432675 114.627204,125.380482 116.448528,125.380482 L138.994343,125.380482 C140.391289,125.380482 141.757689,124.814889 142.742068,123.833333 C143.727261,122.844865 144.297851,121.47947 144.297851,120.093338 L144.297851,74.2598958 C144.297851,71.797468 142.598708,69.6611411 140.193354,69.1040859 Z M181.388195,15.2998758 L181.388195,120.093338 C181.388195,121.47947 181.949825,122.844865 182.938276,123.833333 C183.924284,124.814889 185.291499,125.380482 186.68478,125.380482 L252.460579,125.380482 C251.553174,76.7841283 222.763866,34.9976718 181.388195,15.2998758 Z M247.585929,162.416112 L186.68478,162.416112 C185.291499,162.416112 183.924284,162.973167 182.938276,163.959196 C181.949825,164.943598 181.388195,166.314685 181.388195,167.704477 L181.388195,240.186706 C213.233273,225.0283 237.623626,196.78113 247.585929,162.416112 Z M138.994343,162.416112 L93.0262624,162.416112 C90.9968215,162.416112 89.1600206,163.55096 88.2644274,165.364439 L56.5073214,229.91778 C76.7113165,243.991759 101.277612,252.25 127.780897,252.25 C133.382122,252.25 138.895375,251.876326 144.297851,251.162726 L144.297851,167.704477 C144.297851,166.314685 143.727261,164.943598 142.742068,163.959196 C141.757689,162.973167 140.391289,162.416112 138.994343,162.416112 Z M39.8893643,162.416112 L7.97464365,162.416112 C12.2827766,177.277694 19.2911291,190.991009 28.4307407,203.001037 L44.6503848,170.035976 C45.449047,168.39612 45.3537451,166.451713 44.3897301,164.90619 C43.4273442,163.360666 41.713947,162.416112 39.8893643,162.416112 Z M3.09958678,125.380482 L63.3148882,125.380482 C65.3418856,125.380482 67.1778719,124.23669 68.0710214,122.420365 L126.699588,3.25 C59.1118317,3.8253526 4.35724556,58.0682945 3.09958678,125.380482 Z" id="Logo"></path>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

@ -2,7 +2,7 @@
<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="500px" viewBox="0 0 500 500" enable-background="new 0 0 500 500" xml:space="preserve">
width="32px" height="32px" viewBox="0 0 500 500">
<g>
<g>
<path fill="#2C4052" d="M500,470.837C500,486.949,486.94,500,470.837,500H29.164C13.056,500,0,486.949,0,470.837V29.164

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="110px" height="26px" viewBox="0 0 110 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<title>typecho-logo</title>
<description>Created with Sketch (http://www.bohemiancoding.com/sketch)</description>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<path d="M34.75,5.288 C34.288,6.542 33.76,7.73 32.22,7.862 L32,9.468 L33.562,9.468 L33.562,15.342 C33.562,16.882 33.54,18.994 36.972,18.994 C38.006,18.994 39.106,18.686 39.766,18.224 L39.106,16.53 C38.754,16.75 38.204,16.992 37.61,16.992 C36.708,16.992 36.18,16.596 36.18,15.254 L36.18,9.468 L38.886,9.468 L39.106,7.62 L36.18,7.62 L36.18,5.288 L34.75,5.288 Z M48.258,18.268 C48.258,20.27 47.444,21.502 45.42,21.502 C44.76,21.502 44.276,21.436 43.858,21.282 C43.462,21.128 43.352,20.908 43.352,20.49 L43.352,19.434 L41.262,19.61 L41.262,22.668 C42.186,23.13 44.012,23.394 45.398,23.394 C48.676,23.394 50.502,21.898 50.502,18.268 L50.502,7.62 L46.63,7.62 L46.63,9.424 L47.334,9.468 C47.752,9.468 47.884,9.644 47.884,10.128 L47.884,14.11 C47.884,15.254 47.07,16.288 45.53,16.288 C44.122,16.288 43.902,15.276 43.902,13.934 L43.902,7.62 L40.03,7.62 L40.03,9.424 L40.734,9.468 C41.108,9.49 41.284,9.622 41.284,10.084 L41.284,14.506 C41.284,17.102 42.494,18.312 44.694,18.312 C46.146,18.312 47.488,17.696 48.258,16.596 L48.258,18.268 Z M54,20.776 C54,21.326 53.78,21.458 53.362,21.502 L52.636,21.568 L52.636,23.24 L58.312,23.24 L58.312,21.502 L56.53,21.414 L56.53,18.378 C57.102,18.73 58.026,19.016 58.884,19.016 C61.788,19.016 63.702,16.926 63.702,12.878 C63.702,8.94 62.162,7.29 59.72,7.29 C57.85,7.29 56.64,8.302 56.244,9.05 L56.244,7.62 L52.526,7.62 L52.526,9.402 L53.45,9.468 C53.868,9.468 54,9.644 54,10.128 L54,20.776 Z M60.974,13.098 C60.974,15.012 60.336,16.926 58.466,16.926 C57.894,16.926 57.102,16.75 56.53,16.376 L56.53,11.316 C56.53,10.304 57.498,9.424 58.752,9.424 C59.918,9.424 60.974,10.172 60.974,13.098 Z M70.786,7.29 C67.178,7.29 65.352,10.15 65.352,13.406 C65.352,16.684 66.804,18.972 70.544,18.972 C72.612,18.972 74.064,18.048 74.416,17.74 L73.58,15.958 C73.052,16.332 72.106,16.926 70.808,16.926 C68.938,16.926 68.19,15.76 68.102,14.33 C70.698,14.308 74.372,13.736 74.372,10.348 C74.372,8.39 72.942,7.29 70.786,7.29 Z M71.952,10.392 C71.952,12.086 69.642,12.46 68.014,12.482 C68.08,10.854 68.872,9.16 70.632,9.16 C71.424,9.16 71.952,9.578 71.952,10.392 Z M81.192,16.97 C79.234,16.97 78.354,15.43 78.354,13.032 C78.354,10.59 79.256,9.27 81.016,9.27 C81.346,9.27 81.61,9.314 81.874,9.402 C82.27,9.534 82.336,9.732 82.336,10.15 L82.336,11.206 L84.36,11.052 L84.36,8.192 C83.304,7.62 82.248,7.29 80.928,7.29 C78.442,7.29 75.692,8.83 75.692,13.296 C75.692,16.948 77.606,18.994 80.84,18.994 C82.468,18.994 83.81,18.422 84.668,17.718 L83.722,16.024 C82.82,16.684 82.05,16.97 81.192,16.97 Z M87.286,16.222 C87.286,16.772 87.066,16.904 86.648,16.948 L85.922,17.014 L85.922,18.686 L91.158,18.686 L91.158,16.926 L89.904,16.86 L89.904,11.536 C89.904,10.392 90.718,9.314 92.258,9.314 C93.666,9.314 93.974,10.348 93.974,11.69 L93.974,16.222 C93.974,16.772 93.754,16.904 93.336,16.948 L92.61,17.014 L92.61,18.686 L97.846,18.686 L97.846,16.926 L96.592,16.86 L96.592,11.118 C96.592,8.522 95.294,7.29 93.094,7.29 C91.642,7.29 90.542,7.972 89.882,8.918 L89.882,3 L85.966,3 L85.966,4.826 L86.736,4.87 C87.154,4.892 87.286,5.024 87.286,5.508 L87.286,16.222 Z M98.924,13.142 C98.924,17.124 100.86,19.016 103.808,19.016 C106.712,19.016 109.066,17.08 109.066,12.856 C109.066,7.796 105.788,7.29 104.16,7.29 C101.894,7.29 98.924,8.566 98.924,13.142 Z M103.984,17.08 C101.872,17.08 101.586,14.88 101.586,12.834 C101.586,10.722 102.29,9.226 104.028,9.226 C105.788,9.226 106.382,10.744 106.382,13.208 C106.382,15.496 105.7,17.08 103.984,17.08 Z" id="typecho" fill="#000000" sketch:type="MSShapeGroup"></path>
<path d="M13,26 C3.36833333,26 0,22.631 0,13 C0,3.36866667 3.36833333,0 13,0 C22.6316667,0 26,3.36866667 26,13 C26,22.631 22.6316667,26 13,26 Z M6,9 L20,9 L20,7 L6,7 L6,9 Z M6,14 L16,14 L16,12 L6,12 L6,14 Z M6,19 L18,19 L18,17 L6,17 L6,19 Z" id="icon" fill="#000000" sketch:type="MSShapeGroup"></path>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save