From 80f3b0796957374426f2f7abac015cd3cc6ce25c Mon Sep 17 00:00:00 2001 From: Peter Dave Hello Date: Wed, 5 Apr 2017 00:28:31 +0800 Subject: [PATCH 01/40] Move Travis CI to Ubuntu Trusty As GCC v4.8 is already installed, there is no need to use ubuntu-toolchain-r-test ppa for it, then we can speed up every CI round! --- .travis.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3f1090e37..36a4ebc63 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: node_js node_js: - "node" sudo: false +dist: trusty before_install: - export WAPPALYZER_ROOT=$TRAVIS_BUILD_DIR - export WAPPALYZER_NODE_PATH=$TRAVIS_BUILD_DIR @@ -13,9 +14,3 @@ cache: - node_modules env: - CXX=g++-4.8 -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 From afbb9872c762a78ce19035019fbdddc2cf890033 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 12 Apr 2017 21:39:26 +0300 Subject: [PATCH 02/40] Delete \b in enyo\\.js --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index eca8e667e..43e32ae31 100755 --- a/src/apps.json +++ b/src/apps.json @@ -2342,7 +2342,7 @@ ], "env": "^enyo$", "icon": "Enyo.png", - "script": "\benyo\\.js", + "script": "enyo\\.js", "website": "http://enyojs.com" }, "Epoch": { From 8e9122876dcfa4598787d3c2d56be59170546d54 Mon Sep 17 00:00:00 2001 From: Stefan Neculai Date: Tue, 18 Apr 2017 13:15:52 +0300 Subject: [PATCH 03/40] Improve detection of Froala Editor --- src/apps.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index dffea9b8f..77b167e1c 100755 --- a/src/apps.json +++ b/src/apps.json @@ -2700,8 +2700,9 @@ "24" ], "icon": "Froala.svg", + "html": "class=\".*(fr-view|fr-box)", "implies": [ - "jQuery" + "jQuery", "Font Awesome" ], "website": "http://froala.com/wysiwyg-editor" }, From 3f68925006f7191fbaa9fa10253e53bcd27c3d5e Mon Sep 17 00:00:00 2001 From: jvoisin Date: Tue, 18 Apr 2017 13:23:19 +0200 Subject: [PATCH 04/40] Add sonarbques detection This can be tested [here](https://sonarqube.com/component_issues?id=naxsi) --- src/apps.json | 14 +++++++++++++- src/icons/sonar.png | Bin 0 -> 724 bytes 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/icons/sonar.png diff --git a/src/apps.json b/src/apps.json index 04b2f0408..200f60325 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7261,6 +7261,18 @@ "script": "^https?://api\\.solvemedia\\.com/", "website": "http://solvemedia.com" }, + "SonarQubes": { + "cats": [ + "47" + ], + "env": "^Sonar(?:Measures|Request)$", + "meta": { + "application-name": "^SonarQubes$" + }, + "html": "SonarQube", + "icon": "sonar.png", + "website": "https://www.sonarqube.org/" + }, "SoundManager": { "cats": [ "12" @@ -10162,4 +10174,4 @@ "priority": "9" } } -} \ No newline at end of file +} diff --git a/src/icons/sonar.png b/src/icons/sonar.png new file mode 100644 index 0000000000000000000000000000000000000000..cd565b061d617e4b04ae7f87b7f9e96641342c5d GIT binary patch literal 724 zcmWmCS4@*}5CHJ6kp@~)Bj^J$5;ckvo-`)JL?0?Cql{8Z1#uvPq9P~?Zbc{#Mi4>3 zRiHqDQZ{9mQ8uM4yLbC_mzK`xv;QW)yUX3nJ=|3g39%UTVKf9m7gAaF z)tLG0RA`wf0}_m&%))ix{5hn z<(#gHqpP0Re*qTsH4FN$z@njc(NMQ!__k!IUp6)XE5^nZUPhedW4AhwT)?W2;tG0EPzbZ-KXIVNR}DM0RE%N^4S$Be=` zt8~sOog9^OUgcU)yB5{1B@N(S*1A^#*u4h3xv+<;^Q`MUJiTW_@7XeVw~XFKW>p?I zIiiR}NP(~>X^yYSN{Gcl<;c)D(4Y$9(hDId@Srac&@XBT82T6ClcN1$zu>?_k>1dM z#bA_=$6X?y=VfPxrtiM^UN&D0V3+eg}UIFi;-vGR0O#V za}wibV280wM{3YvG0GS$xdfFl9pOTT2SuC;B66_xVSd$_)a14O(=-YV9TCnrO)se> aA Date: Fri, 21 Apr 2017 00:37:22 -0500 Subject: [PATCH 05/40] Adding Google Search Appliance match + icon > Compressed GSA png from original favico > Adding categories (web server, search engine), simple regex pattern via HTTP 'server:' header --- src/apps.json | 11 +++++++++++ src/icons/Google Search Appliance.png | Bin 0 -> 1509 bytes 2 files changed, 11 insertions(+) create mode 100644 src/icons/Google Search Appliance.png diff --git a/src/apps.json b/src/apps.json index dffea9b8f..f9a1ada48 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3066,6 +3066,17 @@ "script": "apis\\.google\\.com/js/[a-z]*\\.js", "website": "http://plus.google.com" }, + "Google Search Appliance": { + "cats": [ + "22", + "29" + ], + "headers": { + "Server": "^Google\\sSearch\\sAppliance$" + }, + "icon": "Google Search Appliance.png", + "website": "https://enterprise.google.com/search" + }, "Google Sites": { "cats": [ "1" diff --git a/src/icons/Google Search Appliance.png b/src/icons/Google Search Appliance.png new file mode 100644 index 0000000000000000000000000000000000000000..2e1f97ecef5475ec662564d82814157513ff3e5b GIT binary patch literal 1509 zcmV(_~gf&3(YBst*9t|no0-+y}m008acv=a&j|K3sm+eiM{KKs=;|JEzrxE`8* z5Ja2OA&18ROM3s{UjN-p|Jge3$SU#4A?3dy;k+NvtQoSD6{d+2o`Mjfg%5{s4ro>j zHyh@<~c9*&n@-LAlbDW*RvbM zqZrAi7p{*Ksf!bkcMyqj4}4|~ZCMMwlmsb^%Or}*5q`uFc)JL5xCC#t08WSiQicFY zc=vg8^>JzfK4$Y+P!2Ih>qb4?KQ{N!Gy2moyC^LD(kJ)NC-ciC>%}GK!XwP88_cN} zv62#%dlAB&5Q1zFa$XEyP71V(1yrNdJ(tfFfyNnu!vk%w08^R)SB(HqfB;Q@08M-Z zN_h!HZ~x(BiBn?$I$%ISU-f2Q_F!56Vp0GuO}|P^|5{1^O+TnRKjKC{5iC9Y)G*dJ zEu0!Cf+r?O8YS}9B%C=U+btxFAR_I=ALhaz;>jNB!yd+;9g}<<^U)iPQW~m;7-Uo! zsvsEf%ogCe7Ig|1#-b8oQ4nKN3sMRSrw<0oqXg2Y0L>7?TL1t6baYZqQve5iPX1~- zEFB5{^V-qQzo3zBU|3a2Ml~)hC?p*m8yXl2{{H;?`}+C!_V)Ah^YQTT?(XgE?CIy_ ztEg5L4Y3p$B&ieH??tjtGi+56MZmzV7l!eKsa;-kq+s8HG z%FXMWwmw!d_}a8<=I*!O{+WnE{Czh|AbpFzl?;qbZ zme<$SO(`jx+1%Q8EEK39+Pc5DX4&$SeP`EQeER#-YmkD=btTib?`>`C)RAKVh#}Es z;;P;iD^^XcU1!J?%+k_WURp9`N`2Y(z5C{Obfhpa$VaT5)PK5vQtigIVGL69=InXc zP+D3#ZTha3xeKZ~g&2S;ENg4eU6?#|vaSq6*4)CD!z#?o&d3nA^uVG0b7s$OWocj7wP_iY(~M;I?j_wve|}cC z;N|5PV8&FyD8b~%$HU|3#_uD*#9W9ieK9Jsvx$qRv9SYPFem^3Y9rp4!W^B700000 LNkvXXu0mjfZ^y9E literal 0 HcmV?d00001 From f0073652cb4cc6dc96fd35c64078fa2e7325a985 Mon Sep 17 00:00:00 2001 From: Elbert Filius Date: Sun, 23 Apr 2017 14:32:59 +1000 Subject: [PATCH 06/40] Refactoring --- src/drivers/webextension/background.html | 1 - src/wappalyzer.js | 136 ++++++++++------------- 2 files changed, 56 insertions(+), 81 deletions(-) diff --git a/src/drivers/webextension/background.html b/src/drivers/webextension/background.html index 06e298abf..4c4160ac3 100644 --- a/src/drivers/webextension/background.html +++ b/src/drivers/webextension/background.html @@ -6,7 +6,6 @@ - diff --git a/src/wappalyzer.js b/src/wappalyzer.js index 1ec8a4850..4169dc428 100644 --- a/src/wappalyzer.js +++ b/src/wappalyzer.js @@ -14,12 +14,12 @@ var wappalyzer = (function() { */ var Application = function(app, detected) { this.app = app; - this.confidence = {}; + this.confidence = { }; this.confidenceTotal = 0; this.detected = Boolean(detected); - this.excludes = []; + this.excludes = [ ]; this.version = ''; - this.versions = []; + this.versions = [ ]; }; Application.prototype = { @@ -27,7 +27,9 @@ var wappalyzer = (function() { * Calculate confidence total */ getConfidence: function() { - var total = 0, id; + var + id, + total = 0; for ( id in this.confidence ) { total += this.confidence[id]; @@ -67,7 +69,7 @@ var wappalyzer = (function() { this.detected = true; // Set confidence level - this.confidence[type + ' ' + ( key ? key + ' ' : '' ) + pattern.regex] = pattern.confidence ? pattern.confidence : 100; + this.confidence[type + ' ' + ( key ? key + ' ' : '' ) + pattern.regex] = pattern.confidence || 100; // Detect version number if ( pattern.version ) { @@ -81,15 +83,11 @@ var wappalyzer = (function() { var ternary = new RegExp('\\\\' + i + '\\?([^:]+):(.*)$').exec(version); if ( ternary && ternary.length === 3 ) { - w.log({ match: match, i: i, ternary: ternary }); - version = version.replace(ternary[0], match ? ternary[1] : ternary[2]); - - w.log({ version: version }); } // Replace back references - version = version.replace(new RegExp('\\\\' + i, 'g'), match ? match : ''); + version = version.replace(new RegExp('\\\\' + i, 'g'), match || ''); }); if ( version && this.versions.indexOf(version) < 0 ) { @@ -102,6 +100,10 @@ var wappalyzer = (function() { } }; + var asArray = function(value) { + return typeof value === 'string' ? [ value ] : value; + }; + /** * Call driver functions */ @@ -112,10 +114,6 @@ var wappalyzer = (function() { return; } - if ( func !== 'log' ) { - w.log('w.driver.' + func); - } - return w.driver[func](args); }; @@ -127,25 +125,17 @@ var wappalyzer = (function() { key, parsed = {}; - // Convert array to object containing array - if ( patterns instanceof Array ) { - patterns = { main: patterns } - } - // Convert string to object containing array containing string - if ( typeof patterns === 'string' ) { - patterns = { main: [ patterns ] }; + if ( typeof patterns === 'string' || patterns instanceof Array ) { + patterns = { + main: asArray(patterns) + }; } for ( key in patterns ) { parsed[key] = []; - // Convert string to array containing string - if ( typeof patterns[key] === 'string' ) { - patterns[key] = [ patterns[key] ]; - } - - patterns[key].forEach(function(pattern) { + asArray(patterns[key]).forEach(function(pattern) { var attrs = {}; pattern.split('\\;').forEach(function(attr, i) { @@ -185,31 +175,33 @@ var wappalyzer = (function() { * Main script */ var w = { - apps: {}, - cats: null, - ping: { hostnames: {} }, - adCache: [], + apps: {}, + cats: null, + ping: { + hostnames: { } + }, + adCache: [], detected: {}, config: { websiteURL: 'https://wappalyzer.com/', twitterURL: 'https://twitter.com/Wappalyzer', - githubURL: 'https://github.com/AliasIO/Wappalyzer', + githubURL: 'https://github.com/AliasIO/Wappalyzer', + }, + + validation: { + hostname: /(www.)?((.+?)\.(([a-z]{2,3}\.)?[a-z]{2,6}))$/, + hostnameBlacklist: /((local|dev(elopment)?|stag(e|ing)?|test(ing)?|demo(shop)?|admin|google|cache)\.|\/admin|\.local)/ }, /** * Log messages to console */ log: function(message, type) { - if ( type === undefined ) { - type = 'debug'; - } - - if ( typeof message === 'object' ) { - message = JSON.stringify(message); - } - - driver('log', { message: message, type: type }); + driver('log', { + message: JSON.stringify(message), + type: type || 'debug' + }); }, /** @@ -218,15 +210,12 @@ var wappalyzer = (function() { init: function() { w.log('w.init'); - // Checks - if ( w.driver === undefined ) { - w.log('no driver, exiting'); - - return; - } - // Initialize driver - driver('init'); + if ( w.driver !== undefined ) { + driver('init'); + } else { + w.log('No driver, exiting'); + } }, /** @@ -303,11 +292,7 @@ var wappalyzer = (function() { // Exclude app in detected apps only for ( app in apps ) { if ( w.apps[app].excludes ) { - if ( typeof w.apps[app].excludes === 'string' ) { - w.apps[app].excludes = [ w.apps[app].excludes ]; - } - - w.apps[app].excludes.forEach(function(excluded) { + asArray(w.apps[app]).excludes.forEach(function(excluded) { excludes.push(excluded); }); } @@ -336,12 +321,7 @@ var wappalyzer = (function() { confidence = apps[app].confidence; if ( w.apps[app] && w.apps[app].implies ) { - // Cast strings to an array - if ( typeof w.apps[app].implies === 'string' ) { - w.apps[app].implies = [ w.apps[app].implies ]; - } - - w.apps[app].implies.forEach(function(implied) { + asArray(w.apps[app].implies).forEach(function(implied) { implied = parsePatterns(implied)[0]; if ( !w.apps[implied.string] ) { @@ -391,28 +371,24 @@ var wappalyzer = (function() { var app, match; for ( app in apps ) { - if ( w.detected[url][app].getConfidence() >= 100 ) { - if ( /(www.)?((.+?)\.(([a-z]{2,3}\.)?[a-z]{2,6}))$/.test(hostname) && !/((local|dev(elopment)?|stag(e|ing)?|test(ing)?|demo(shop)?|admin|google|cache)\.|\/admin|\.local)/.test(url) ) { - if ( !w.ping.hostnames.hasOwnProperty(hostname) ) { - w.ping.hostnames[hostname] = { - applications: {}, - meta: {} - }; - } + if ( w.detected[url][app].getConfidence() >= 100 && w.validation.hostname.test(hostname) && !w.validation.hostnameBlacklist.test(url) ) { + if ( !w.ping.hostnames.hasOwnProperty(hostname) ) { + w.ping.hostnames[hostname] = { + applications: {}, + meta: {} + }; + } - if ( !w.ping.hostnames[hostname].applications.hasOwnProperty(app) ) { - w.ping.hostnames[hostname].applications[app] = { - hits: 0 - }; - } + if ( !w.ping.hostnames[hostname].applications.hasOwnProperty(app) ) { + w.ping.hostnames[hostname].applications[app] = { + hits: 0 + }; + } - w.ping.hostnames[hostname].applications[app].hits ++; + w.ping.hostnames[hostname].applications[app].hits ++; - if ( apps[app].version ) { - w.ping.hostnames[hostname].applications[app].version = apps[app].version; - } - } else { - w.log('Ignoring hostname "' + hostname + '"'); + if ( apps[app].version ) { + w.ping.hostnames[hostname].applications[app].version = apps[app].version; } } } @@ -516,7 +492,7 @@ var wappalyzer = (function() { header, patterns = parsePatterns(w.apps[app.app].headers); - if ( patterns.length && headers ) { + if ( headers ) { for ( header in patterns ) { patterns[header].forEach(function(pattern) { header = header.toLowerCase(); From 20a41cbeadb4198e9de4d3593d8fe99a1fa8a215 Mon Sep 17 00:00:00 2001 From: Elbert Filius Date: Tue, 25 Apr 2017 10:24:36 +1000 Subject: [PATCH 07/40] Fix Froala Editor HTML pattern --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 06666d8a3..d4be58633 100755 --- a/src/apps.json +++ b/src/apps.json @@ -2700,7 +2700,7 @@ "24" ], "icon": "Froala.svg", - "html": "class=\".*(fr-view|fr-box)", + "html": "<[^>]+class=\"[^\"]+(?:fr-view|fr-box)", "implies": [ "jQuery", "Font Awesome" ], From f5705171bb7ce4588ae3dde858ef9a2481495f60 Mon Sep 17 00:00:00 2001 From: Elbert Filius Date: Tue, 25 Apr 2017 10:28:14 +1000 Subject: [PATCH 08/40] Define variable as string instead of null --- src/apps.json | 2 +- src/drivers/webextension/js/inject.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index d4be58633..ab78bd338 100755 --- a/src/apps.json +++ b/src/apps.json @@ -2700,7 +2700,7 @@ "24" ], "icon": "Froala.svg", - "html": "<[^>]+class=\"[^\"]+(?:fr-view|fr-box)", + "html": "<[^>]+class=\"[^\"]*(?:fr-view|fr-box)", "implies": [ "jQuery", "Font Awesome" ], diff --git a/src/drivers/webextension/js/inject.js b/src/drivers/webextension/js/inject.js index 2369c2583..cc56a76c5 100644 --- a/src/drivers/webextension/js/inject.js +++ b/src/drivers/webextension/js/inject.js @@ -1,6 +1,6 @@ (function() { try { - var i, environmentVars, e = document.createEvent('Events'); + var i, environmentVars = '', e = document.createEvent('Events'); e.initEvent('wappalyzerEvent', true, false); From 50e85b8816b2a090e1aed6eca6d3c0b8bbf8a459 Mon Sep 17 00:00:00 2001 From: Limon Monte Date: Tue, 25 Apr 2017 19:58:40 +0300 Subject: [PATCH 09/40] Add SweetAlert2 app --- src/apps.json | 9 +++++++++ src/icons/SweetAlert2.png | Bin 0 -> 3508 bytes 2 files changed, 9 insertions(+) create mode 100644 src/icons/SweetAlert2.png diff --git a/src/apps.json b/src/apps.json index ab78bd338..c55ea319c 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7720,6 +7720,15 @@ "script": "sweet-alert(?:\\.min)?\\.js", "website": "http://tristanedwards.me/sweetalert" }, + "SweetAlert2": { + "cats": [ + "12" + ], + "html": "]+?href=\"[^\"]+sweetalert2(?:\\.min)?\\.css", + "icon": "SweetAlert2.png", + "script": "sweetalert2(?:\\.min)?\\.js", + "website": "https://limonte.github.io/sweetalert2" + }, "Swiftlet": { "cats": [ "18" diff --git a/src/icons/SweetAlert2.png b/src/icons/SweetAlert2.png new file mode 100644 index 0000000000000000000000000000000000000000..1d7edfcf1bd93266e9dbe3fb076c8a3ff93ffb9c GIT binary patch literal 3508 zcmbtXcUY6x9*&Aw5v^#&*3}rat%^XHCV~(kAj*!`^#`5jG?ttc)Al+TK5|_n-Sc=R4my=Xu}vH=pM`-xEu7rb zZj+0KR+2Am^ZjO=!Sp^IRYHBKh)ipFV!HPgt6|kzZiezY>1*=0fG@+_m zz`q`l#2OxX3u?O`&-tX@K>572~+k&;FQ5iDw`pF z0h*cpZ>XEw-)I8S3iXe_|5cb^(9<6({gfz z;o%(aGKa&<%F4>j%xvrE%*oAV*49n3r^VjhBco$;3roetC2j2;Voy&7qr9uTXLfF3 zYG$ssuD-jsud}PWvZ^{aH*a8Yh(@DT*VGgi6_u8i6%-bhl+gJNO+zE2)3ftc)iup6 ztzsV^&LU@Uc!XYBy4>C|H@{d>S+()*{rDt%rIeAMpDzp!UT$rhoSGS%m|X7Z>+b38 z9~desE@n^93Z6d~1q7_n%O)nLI15X{&@kQz>+|RQ-o63O%pAY2VJ$0L?Caan*;U41 zh#o)A%llkZR6H;=OeT|O=NC8LC#{yy*FSs|`}wV>q%L=MZ@hgw${H`Bm$JquM#m;N zOI$%z)avJa(f#}F9bNSejUAocYv~z+m#_Fu&Ai@zQBctEC`VNmsd=%r?^woqQF3UX_+u2RP5!omQ7x%u4!p)yFcf|oCO!=t>x zA+f)|=>CJ%!Xh%6Qc+PUcon^#l)V1&6R&?@wDkOfg7r@+8}acq%vyd8bEUju zxw&OMHH|kk!ku9At82LIDdE!)K}3WgGIBjNbv5tva!1!%PA+R~f?r$T)Z8Krd$yjE zvXPJ=eEM{aN)tVJ$ex;6ZfO-hd9o23w?@lZ%`f1NjxBff%+4>Yl$Eb#Wb&D{oZ0!+ z;u6;QByVt--`LD#)^ew3d42t&hYtm>WBJUw@`}nDCUcEU;ZDu0Cw~y%y}MFbCBAo0 zOd_SGrgC_E8^d310Dv6?6GNDdXYcIm$*bR)>@7XG_s$lR%h#FqdU|lvBaee+WP-O` zX^Lx$p`sh#KqiT|lqcf|jgZ-TM|@#9(X5HsG^?uiW8+FH-NX6@*C(f=!?xpG#UtFg zy@wLz{-3d)_&_O(9{Wb~jE>JzP~$!Hf>0S9C&0{HRCp0{o}1d5%IP$frGDGnqHX9u z;?Vyj{*~^rg}LuD+Ln9b)v{1F%uim9H0mZR8<8iKs_fdVRJHWO#L#Hth zb2R5aoD87UYpoUh925EsY^8hx+D`Is?oytSvzSSzqlsL2 zsSLbs_Z1;`XG@W*yy8Z>`dvWKv5Z&gLlM(YWW~pe;8F0LiNv%68kvf8hsxx5A%s(1 zWBZxrEINp|r)@-6sx|p#aVR%2`33xR#&@~y4NU*Y9*64ZVGv{Bt0G_OP>A)<$1nO= z(2G5Y=?G{~ypz)JcJ~`Us5iU_`|#bh8+2Q4(j%YU#^wFMnD@13bM{U&n=5tz?EAQ! z(_UMy9r1EX1*_BVm#UKN5oCL{;1ZWmsf~KB^by_dmFa#5rFRv-?7RcNnvTNXL@tON zyz6awSNEl_aM-cAmRZr=tLA&_`)3Vmo6sIXknhIegvgJwPoR?`+BT?ojWOw`93x-ofE~(wpQ{%=sSoUR@p9dM9muGKU9eT0w z^|TyO%D(16{wf2H>C#YLdz1GJrkfjJHE&8@I0<}uThC|)uAM4+S^X1*x6(fxJ&45}|x$eU2E$^ikk0}o9 zV4o@=)hgy*q(ppPdOS+gti%Q}V_=Ttm~%r-K3w%;c(F52cSK zHFPn1ZHj5cC`M7HIc=MFz~v5hK42X}$=X*kBjc#ZyJRurd!Lg}yWJwsmdQc6j*yV> zx6&7;xAtrq1RH(SNo}V&G1A^}|j8*PDf~satf*ZoP=3n8V41iF*Vq5N{z+ zuW7YPEZ`KZM^mwnmVVE?S$j ziX*8{!z_22`CUnbrthgqEf!OxuXWV@3oEPB z&I`3WvIr3XDrtcxx`*4FiAXut?wHH}|J<7=G{| zAC~9p{gc@DcIoY0r&Ga&hK|;W+n=1gk{Ry7Qq^}mohL$X`~Pk<$!*wMv1;MJ1rXQv WX-a8F?z_$ZC= Date: Tue, 25 Apr 2017 23:59:19 +0300 Subject: [PATCH 10/40] Make PHP.svg square icon - 400x400 --- src/icons/PHP.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/icons/PHP.svg b/src/icons/PHP.svg index 3c8553621..e5799b153 100644 --- a/src/icons/PHP.svg +++ b/src/icons/PHP.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 62ecf795de701b13d3300b1c46f91eb852a02bc5 Mon Sep 17 00:00:00 2001 From: Ezekiel Templin Date: Thu, 27 Apr 2017 10:32:45 -0700 Subject: [PATCH 11/40] Add Fastly detection --- src/apps.json | 10 ++++++++++ src/icons/Fastly.svg | 31 +++++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 src/icons/Fastly.svg diff --git a/src/apps.json b/src/apps.json index ab78bd338..13e7af919 100755 --- a/src/apps.json +++ b/src/apps.json @@ -2516,6 +2516,16 @@ "script": "jquery\\.fancybox\\.pack\\.js(?:\\?v=([\\d.]+))?$\\;version:\\1", "website": "http://fancyapps.com/fancybox" }, + "Fastly": { + "cats": [ + "31" + ], + "headers": { + "Fastly-Debug-Digest": "" + }, + "icon": "Fastly.svg", + "website": "https://www.fastly.com" + }, "Fat-Free Framework": { "cats": [ "18" diff --git a/src/icons/Fastly.svg b/src/icons/Fastly.svg new file mode 100644 index 000000000..05ae7d05d --- /dev/null +++ b/src/icons/Fastly.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + From f1bfa4eac11210cdbf495528053bf8d8d95fe97d Mon Sep 17 00:00:00 2001 From: Maxwell Date: Thu, 27 Apr 2017 23:12:53 -0400 Subject: [PATCH 12/40] Added detection for Raspbian OS --- src/apps.json | 21 ++++++++++++++++----- src/icons/Raspbian.svg | 17 +++++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 src/icons/Raspbian.svg diff --git a/src/apps.json b/src/apps.json index ab78bd338..2896c879f 100755 --- a/src/apps.json +++ b/src/apps.json @@ -2699,10 +2699,11 @@ "cats": [ "24" ], - "icon": "Froala.svg", "html": "<[^>]+class=\"[^\"]*(?:fr-view|fr-box)", + "icon": "Froala.svg", "implies": [ - "jQuery", "Font Awesome" + "jQuery", + "Font Awesome" ], "website": "http://froala.com/wysiwyg-editor" }, @@ -6559,6 +6560,17 @@ }, "website": "http://example.com" }, + "Raspbian": { + "cats": [ + "28" + ], + "headers": { + "Server": "Raspbian", + "X-Powered-By": "Raspbian" + }, + "icon": "Raspbian.svg", + "website": "https://www.raspbian.org/" + }, "React": { "cats": [ "12" @@ -7450,11 +7462,11 @@ "47" ], "env": "^Sonar(?:Measures|Request)$", + "html": "SonarQube", + "icon": "sonar.png", "meta": { "application-name": "^SonarQubes$" }, - "html": "SonarQube", - "icon": "sonar.png", "website": "https://www.sonarqube.org/" }, "SoundManager": { @@ -8424,7 +8436,6 @@ "icon": "Vimeo.png", "website": "http://vimeo.com" }, - "Vinala": { "cats": [ "18" diff --git a/src/icons/Raspbian.svg b/src/icons/Raspbian.svg new file mode 100644 index 000000000..2131cf097 --- /dev/null +++ b/src/icons/Raspbian.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file From 4212676acbe017188b2af3f542549514b5963638 Mon Sep 17 00:00:00 2001 From: DominikAngerer Date: Fri, 28 Apr 2017 18:19:43 +0200 Subject: [PATCH 13/40] adds storyblok.png adds storyblok icon --- src/icons/storyblok.png | Bin 0 -> 1899 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/icons/storyblok.png diff --git a/src/icons/storyblok.png b/src/icons/storyblok.png new file mode 100644 index 0000000000000000000000000000000000000000..daf5882d125f704c90965af069124161951ae726 GIT binary patch literal 1899 zcmV-x2bB1UP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 zVoOIv0RI600RN!9r;`8x00(qQO+^Rb1`QJ&Hjo!dvH$=E3`s;mR9M5km(7nHM;V8o z_wAmK-tP~uckxHESsS#(7%=956qFN)HcBECz>2U)6tmg&?s`4bJ>6A54n4j0?AXZ0z$>+?YG$hH>EHWNHOBwQ zKJ(%i0U5H6TbwuIidk4S;+~-wfx&kk{x0dgZ1UM(e3_n419Foxvp8>r6}Na_h+)l$ zC)~oSq+^&ZA)7U`J;CF^uYfxPIQPQ0>3;Cz6z88yK~qjxG>b=e6;?gQ6Gk|J#Z{yu zX0|BVB<3jy;eduK35gD-qs`hQ0FV6ahfTL*7H5sPWEPGE#kJl`KR;n4Yi{8_;VYmy z!!sdge-lR%7$AW;5@4#oHc(Abi~xM(xt~yxSy1m`v-p@1P6EdaErHJnb&z8wBp)v5 zL=z?lA_&|-IBj=QOQ|#Q2W~ zCR-_U?JkG9lPqU5EN8PE&SsfRyKLlJ{PK<8@%pvP_)vi;1v3?mS84z`z$)l?BbQ7l zidK>^k+zs^wOHtOSk5L{$);GDnC5Uc#X@J2nN~(OZIhah#LhbRb8PZ3-+cM|>^tf;vzrL9u>cm}|9p^!WWeIJd~5ZpM5kW2)7r;|XSV$C+|;;xH@O5?70zdY%-p zg8;PxIi`TX3_i8C&f{zEx|b~7H{nD%ZUCxor$8>LG837%Sf5=OTPRBOs*>F@XRGM3 z(Z9x({tj>FyDVi>JbLUjGwp0-&LCFol?9MA8B#$U+zMa-DiK6M(CFsZtCAmGdWDOd zZ?H4y(W`RGFd$MQ1v-gwa^^5+53P>O%fo_*((Rweo>+XD{tk35;Q;% zU<@EJ>qrmG`176y=#It|@BSA(&(iEc-RB8l3Hv!beg8Tr$-P)D@4!^nb z7dDF?*2rH6;Q&-M0NyAdycAwYb;=a?2=Ku45?^@mqnut?CCG^KdLQ{fcr{dg2p~uD zN_Z}uh?5^oga5$h+7o&sDn&J+-X4%Pw5BTl~_i~a!@r0%>Uo8W3u;1+SKon;o8NS$}j zE#1-$QM$?hjRM3b2KE)G=*Cq28UT&Oz*H;cOYeOT*UJhJW=$!9mOEM6x+OpvBT=@m zfMj{%F^fB=8b-i~nANRYGmaPmAGT%@AGSsqf;ETG{>3y0W26vW{N$-76aFS_ z(8vXjli*fAiKQf#;FgYjR{v(atxv#x>6`vWGu~IAHUoH8@~1E!0wuz|UPWgxjzoc* zdWegdN)s-VgFE&0+y!-CI3}0eF*$O_coldC;HMw^{Eb~3JN@I=YFRuaX2FJe?nZdp zEIv_J^zbdW@HMkg8PSJsF(;Z?aI4#9Z1p(069DZYdUAOFktfFi4%*pgE)dl+x4{pL z_-V8Fyc3=jw( z05UK!HZ3qVEip4xF*!OiI65^nD=;!TFfe?*fw}+y03~!qSaf7zbY(hiZ)9m^c>ppn zF*YqQHZ3tTR53X^GB`RlG%GMNIxsK|;5h~W0038dR9JLUVRs;Ka&Km7Y-J#Hd2nSQ zX>fF7004NL Date: Fri, 28 Apr 2017 18:20:49 +0200 Subject: [PATCH 14/40] adds storyblok headless cms --- src/apps.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/apps.json b/src/apps.json index ab78bd338..5497fa718 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7618,6 +7618,16 @@ "icon": "Store Systems.png", "website": "http://store-systems.de" }, + "Storyblok": { + "cats": [ + "1" + ], + "icon": "storyblok.png", + "meta": { + "generator": "storyblok" + }, + "website": "https://www.storyblok.com" + }, "Strapdown.js": { "cats": [ "12" From 70ecdf0899d7e4b02c866dbd1a31847f4acf96a7 Mon Sep 17 00:00:00 2001 From: Elbert Filius Date: Sat, 29 Apr 2017 16:25:21 +1000 Subject: [PATCH 15/40] Refactor popup.js and popup.html, improved logging --- src/drivers/webextension/js/content.js | 10 +-- src/drivers/webextension/js/driver.js | 18 ++-- src/drivers/webextension/js/popup.js | 111 +++++++++++-------------- src/drivers/webextension/popup.html | 1 - src/wappalyzer.js | 23 ++--- 5 files changed, 74 insertions(+), 89 deletions(-) diff --git a/src/drivers/webextension/js/content.js b/src/drivers/webextension/js/content.js index ac21ee724..f7bab8ecd 100644 --- a/src/drivers/webextension/js/content.js +++ b/src/drivers/webextension/js/content.js @@ -5,25 +5,25 @@ init: function() { var html = document.documentElement.outerHTML; - c.log('init'); + c.log('Function call: init()'); if ( html.length > 50000 ) { html = html.substring(0, 25000) + html.substring(html.length - 25000, html.length); } - browser.runtime.sendMessage({ id: 'analyze', subject: { html: html } }); + browser.runtime.sendMessage({ id: 'analyze', subject: { html: html }, source: 'content.js' }); c.getEnvironmentVars(); }, log: function(message) { - browser.runtime.sendMessage({ id: 'log', message: '[ content.js ] ' + message }); + browser.runtime.sendMessage({ id: 'log', message: message, source: 'content.js' }); }, getEnvironmentVars: function() { var container, script; - c.log('getEnvironmentVars'); + c.log('Function call: getEnvironmentVars()'); if ( typeof document.documentElement.innerHTML === 'undefined' ) { return; @@ -48,7 +48,7 @@ environmentVars = environmentVars.split(' ').slice(0, 500); - browser.runtime.sendMessage({ id: 'analyze', subject: { env: environmentVars } }); + browser.runtime.sendMessage({ id: 'analyze', subject: { env: environmentVars }, source: 'content.js' }); }), true); document.documentElement.appendChild(container); diff --git a/src/drivers/webextension/js/driver.js b/src/drivers/webextension/js/driver.js index 4dee2dd54..b6b1e1d2e 100644 --- a/src/drivers/webextension/js/driver.js +++ b/src/drivers/webextension/js/driver.js @@ -26,7 +26,7 @@ * Log messages to console */ log: function(args) { - console.log('[wappalyzer ' + args.type + '] ' + args.message); + console.log('[wappalyzer ' + args.type + ']', '[' + args.source + ']', JSON.parse(args.message)); }, /** @@ -53,7 +53,7 @@ * Initialize */ init: function() { - w.log('init'); + w.log('Function call: w.driver.init()', 'driver'); // Load apps.json var xhr = new XMLHttpRequest(); @@ -122,8 +122,6 @@ } browser.tabs.onRemoved.addListener(function(tabId) { - w.log('remove tab'); - tabCache[tabId] = null; }); @@ -153,8 +151,6 @@ } } } - - w.log(JSON.stringify({ uri: uri, headers: responseHeaders })); } }, { urls: [ 'http://*/*', 'https://*/*' ], types: [ 'main_frame' ] }, [ 'responseHeaders' ]); @@ -178,11 +174,13 @@ a = document.createElement('a'); if ( typeof message.id != 'undefined' ) { - w.log('message: ' + message.id); + if ( message.id !== 'log' ) { + w.log('Message received from ' + message.source + ': ' + message.id, 'driver'); + } switch ( message.id ) { case 'log': - w.log(message.message); + w.log(message.message, message.source); break; case 'analyze': @@ -295,8 +293,6 @@ if ( Object.keys(w.ping.hostnames).length && tracking ) { 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); @@ -318,7 +314,7 @@ xhr.onreadystatechange = function() { if ( xhr.readyState == 4 ) { - w.log('w.driver.post: status ' + xhr.status + ' (' + url + ')'); + w.log({ 'POST request': { url: url, status: xhr.status, data: data } }, 'driver'); } }; diff --git a/src/drivers/webextension/js/popup.js b/src/drivers/webextension/js/popup.js index 70808bb53..eb760d34c 100644 --- a/src/drivers/webextension/js/popup.js +++ b/src/drivers/webextension/js/popup.js @@ -1,24 +1,17 @@ /** global: chrome */ /** global: browser */ -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 = { +(function() { + var popup = { init: function() { var callback = function(tabs) { - if ( tabs[0].url.match(/https?:\/\//) ) { - detectedApps.innerHTML = '
' + browser.i18n.getMessage('noAppsDetected') + '
'; - } else { - detectedApps.innerHTML = '
' + browser.i18n.getMessage('nothingToDo') + '
'; - } + ( chrome || browser ).runtime.sendMessage({ id: 'get_apps', tab: tabs[0], source: 'popup.js' }, function(response) { + if ( /complete|interacrive|loaded/.test(document.readyState) ) { + popup.displayApps(response) + } else { + document.addEventListener('DOMContentLoaded', function() { popup.displayApps(response) }); + } + }); }; try { @@ -28,62 +21,56 @@ document.addEventListener('DOMContentLoaded', function() { // Edge browser.tabs.query({ active: true, currentWindow: true }, callback); } - - popup.displayApps(); }, - displayApps: function() { - var appName, confidence, version; + displayApps: function(response) { + var + appName, confidence, version, + detectedApps = document.querySelector('#detected-apps'); + html = ''; - var callback = function(tabs) { - function sendGetApps(response) { - var html; - - if ( response.tabCache && response.tabCache.count > 0 ) { - detectedApps.innerHTML = ''; + if ( response.tabCache && response.tabCache.count > 0 ) { + for ( appName in response.tabCache.appsDetected ) { + confidence = response.tabCache.appsDetected[appName].confidenceTotal; + version = response.tabCache.appsDetected[appName].version; - for ( appName in response.tabCache.appsDetected ) { - confidence = response.tabCache.appsDetected[appName].confidenceTotal; - version = response.tabCache.appsDetected[appName].version; + html += + '
' + + '' + + '' + + '' + + '' + appName + '' + + ( version ? ' ' + version : '' ) + ( confidence < 100 ? ' (' + confidence + '% sure)' : '' ) + + '' + + ''; - html = - '
' + - '' + - '' + - '' + appName + '' + ( version ? ' ' + version : '' ) + ( confidence < 100 ? ' (' + confidence + '% sure)' : '' ) + '' + - ''; + response.apps[appName].cats.forEach(function(cat) { + html += + '' + + '' + browser.i18n.getMessage('categoryName' + cat) + '' + + ''; + }); - response.apps[appName].cats.forEach(function(cat) { - html += - '' + - '' + browser.i18n.getMessage('categoryName' + cat) + '' + - ''; - }); + html += + '' + + '
'; + } + } else { + html = '
' + browser.i18n.getMessage('noAppsDetected') + '
'; + } - html += - '' + - '
'; + detectedApps.innerHTML = html; - detectedApps.innerHTML = detectedApps.innerHTML + html; - } - } - } - if (typeof chrome === "undefined") { - browser.runtime.sendMessage({ id: 'get_apps', tab: tabs[0] }, sendGetApps); - } else { - chrome.runtime.sendMessage({ id: 'get_apps', tab: tabs[0] }, sendGetApps); - } - }; + // Force redraw after popup animation on Mac OS + setTimeout(function() { + document.body.innerHTML += ' '; + }, 600); + }, - try { - // Chrome, Firefox - browser.tabs.query({ active: true, currentWindow: true }).then(callback); - } catch ( e ) { - // Edge - browser.tabs.query({ active: true, currentWindow: true }, callback); - } + slugify: function(string) { + return string.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/--+/g, '-').replace(/(?:^-|-$)/, ''); } }; popup.init(); -}); +}()); diff --git a/src/drivers/webextension/popup.html b/src/drivers/webextension/popup.html index 1548d426e..afa6e0976 100644 --- a/src/drivers/webextension/popup.html +++ b/src/drivers/webextension/popup.html @@ -4,7 +4,6 @@ - diff --git a/src/wappalyzer.js b/src/wappalyzer.js index 4169dc428..aa7b2f03e 100644 --- a/src/wappalyzer.js +++ b/src/wappalyzer.js @@ -109,7 +109,7 @@ var wappalyzer = (function() { */ var driver = function(func, args) { if ( typeof w.driver[func] !== 'function' ) { - w.log('not implemented: w.driver.' + func, 'warn'); + w.log('not implemented: w.driver.' + func, 'core', 'warn'); return; } @@ -154,7 +154,7 @@ var wappalyzer = (function() { } catch (e) { attrs.regex = new RegExp(); - w.log(e + ': ' + attr, 'error'); + w.log(e + ': ' + attr, 'error', 'core'); } } }); @@ -197,8 +197,9 @@ var wappalyzer = (function() { /** * Log messages to console */ - log: function(message, type) { + log: function(message, source, type) { driver('log', { + source: source || '', message: JSON.stringify(message), type: type || 'debug' }); @@ -208,13 +209,13 @@ var wappalyzer = (function() { * Initialize */ init: function() { - w.log('w.init'); + w.log('Function call: w.init()', 'core'); // Initialize driver if ( w.driver !== undefined ) { driver('init'); } else { - w.log('No driver, exiting'); + w.log('No driver, exiting', 'core'); } }, @@ -226,10 +227,10 @@ var wappalyzer = (function() { app, apps = {}; - w.log('w.analyze'); + w.log('Function call: w.analyze()', 'core'); if ( w.apps === undefined || w.categories === undefined ) { - w.log('apps.json not loaded, check for syntax errors'); + w.log('apps.json not loaded, check for syntax errors', 'core'); return; } @@ -279,7 +280,9 @@ var wappalyzer = (function() { w.cacheDetectedApps(apps, url); w.trackDetectedApps(apps, url, hostname, data.html); - w.log(Object.keys(apps).length + ' apps detected: ' + Object.keys(apps).join(', ') + ' on ' + url); + if ( Object.keys(apps).length ) { + w.log(Object.keys(apps).length + ' apps detected: ' + Object.keys(apps).join(', ') + ' on ' + url, 'core'); + } driver('displayApps'); }, @@ -292,7 +295,7 @@ var wappalyzer = (function() { // Exclude app in detected apps only for ( app in apps ) { if ( w.apps[app].excludes ) { - asArray(w.apps[app]).excludes.forEach(function(excluded) { + asArray(w.apps[app].excludes).forEach(function(excluded) { excludes.push(excluded); }); } @@ -325,7 +328,7 @@ var wappalyzer = (function() { implied = parsePatterns(implied)[0]; if ( !w.apps[implied.string] ) { - w.log('Implied application ' + implied.string + ' does not exist', 'warn'); + w.log('Implied application ' + implied.string + ' does not exist', 'core', 'warn'); return; } From 5de3a444242174a8d5daab9651b5b4940db99505 Mon Sep 17 00:00:00 2001 From: Pavan Welihinda Date: Sat, 29 Apr 2017 19:01:07 +0530 Subject: [PATCH 16/40] added WEBXPAY application. --- src/apps.json | 9 +++++++++ src/icons/WEBXPAY.png | Bin 0 -> 1584 bytes 2 files changed, 9 insertions(+) create mode 100644 src/icons/WEBXPAY.png diff --git a/src/apps.json b/src/apps.json index ab78bd338..a5828e2a5 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10020,6 +10020,15 @@ "icon": "swift.engine.png", "website": "http://mittec.ru/default" }, + “WEBXPAY”: { + "cats": [ + "6" + ], + "env": "^WEBXPAY$", + "html": "Powered by WEBXPAY<", + "icon": “WEBXPAY.png”, + "website": "https://webxpay.com" + }, "three.js": { "cats": [ "25" diff --git a/src/icons/WEBXPAY.png b/src/icons/WEBXPAY.png new file mode 100644 index 0000000000000000000000000000000000000000..425391d63a964afac8468887205ab0b291d66dc1 GIT binary patch literal 1584 zcmZ`(Yc$k(82%NRX$(6q6hJccVk5Km+NS0W^>JLW{?;$WGZXQZ8BS%2_e%> zjkb$6VmG2G%Me+yC=6{VX(g3|soB}FANHL6u+Mwm=RME!p6Bax;v0WYJ=A&>06@>% z3l7v=?D8U4YWR!EOy#nO@d~5^aCj>Kf*b&p8cQ$*KpF(VbR+;yr2wo;u4o8w);x5g zeLZ2IUY?6hRcAB~g6B>5K>VS-X|hTu%G}HkQXvW@F=% zc`*RB%qZ+XAUL83jzm0>N@PJq&HM`-6&C~H$rK2}5h(;Rj?5u)hy)UuUU0sV~>5~PLhq*MPy_WWVSet0y;A;l%$KdtYt<66nGXpLT zxO*B5o}tK7Rn z*MekD_x&L);fsnbYupe(EQlKw13=m>RcWPOLtxyHp=e%_&=k`;k$7;{-U}}{xk1cR z%Ul?YvHaMc$?kmH?**n9D&L{*L9pNGE{|1Klqa1(<|Mo|TNs|z(%lhavI2mq*%^E@ zEtf5l;dMK_46DSWDnx&q0;}Egz>y{Y6l>(8>fGP5L3Z5Kr1bP(=EkVCV24o9E?u$D z6*wQ?H=(T-b<{`XV&G5X3$7L0hr?ewxXIeu1}hVyA32{)caH_0o@!IpW%8e*D#mmaJ9@wqYY09ze#F~i4oajq&eduL46 z$ax?CSiP@{eaxRvMeUY#)!168ec(rzBB6`%<(QZ4h3VmgTfA2aPE|^bjLxvxS8Hqs z6En6Jdc~FN0HH3;ZM2@$M0Ig76YWB`B;N}gH!_;pBmv1aZy8+fgR$8QlK#Q!OyxTT zEwujrb?bse>LyWz!_F+V>`h;+jZKMaq;LG=628ojXtyr|@ zJ`Z1;DRMCgE~!gW4E5hgh~GXuWDC+_|i9|Y_dQ&RRD>KkNW^CRr8dhY!dz8!d z^;JDTK*k_TrElgk^78YChiL|d!OmOV%v8$x4OWf*#U;wuuX=q;ie?qHw2k_28qAQ| z-!){+eOc0lEprxs)9&(vPr#QeEBA;k`-s^OYo?30H8wOjC*6`tLk8!?V)3|@zy4S1 z5J5{J_V#y2JYRSHdDFI2XmS!heB}1syTq}Ev>W%29)wJY^gZH|1^eY>0 zqrl>a8@CZUI!q?Ls&9Ti?W{w@XmjQfCX*Q&nh?PqD-S9Xf{c`u5AS0yWbdpU8k6$( z81q%iG$ckpU#V0^-~Y-zmrEy8s7&TMKN&#Q)!ooR zeBR>SoSr##FE5rdkZ5dcS!Ns6yx6O|+YS}h@X6PL$}S&}()F%iAL{;iX1gO=;1R}Z zwB99K?5aE0m!0(7O6D#@j2A4v=x0T8j+Q#qwsKUxgCjMw1|jnG8T~cfwo_M9yvrEY zaXEoDXXAqEXO`C3Elm{o{%VVfw>&u6Bcs{GOWRjtfTMaAc??|`9uU~bZSgFh2)14U zkoCx`sdF(A=*`d8@F~VOJ4;hpeZsgqb?xB+uR@$RH=Txa3~Mvklc5yDvtRZ{mT{Tq zdoMjZAkxomwBDTRpo(p)2n`5KxRa|-&la8vZ5=8y1tM}~txB(>c>mcGr8Rs_pKe+1 zQ&tp@?G%&3)*OI`a1=X;XosgVAgU8Ya3U^CCkPUKMqK(&Ad$<8=kWhOpp-t?qzM3T L4}ZAYJ@WY9!BMpg literal 0 HcmV?d00001 From b236c69a6977b15b3d14372ecc8c824baf1b78b7 Mon Sep 17 00:00:00 2001 From: Indra Kurniawan Date: Tue, 2 May 2017 15:56:11 +0700 Subject: [PATCH 17/40] Updated OWL Carousel's site OWL Carousel's site is now https://owlcarousel2.github.io/OwlCarousel2/ was http://owlgraphic.com/owlcarousel (reff: https://github.com/OwlCarousel2/OwlCarousel2/issues/1706 ) --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 210d24223..da3bb6621 100755 --- a/src/apps.json +++ b/src/apps.json @@ -5505,7 +5505,7 @@ "icon": "OWL Carousel.png", "implies": "jQuery", "script": "owl.carousel.*\\.js", - "website": "http://owlgraphic.com/owlcarousel" + "website": "https://owlcarousel2.github.io/OwlCarousel2/" }, "OXID eShop": { "cats": [ From 9472c1570c6cc01c243da544f533848576016275 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Tue, 2 May 2017 17:07:06 +0200 Subject: [PATCH 18/40] Add a missing implies to sonarqubes --- src/apps.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps.json b/src/apps.json index 210d24223..d537497ed 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7474,6 +7474,7 @@ "env": "^Sonar(?:Measures|Request)$", "html": "SonarQube", "icon": "sonar.png", + "implies": "Java", "meta": { "application-name": "^SonarQubes$" }, From cd22a06743738501be6a76a63ad572e2c8990523 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Tue, 2 May 2017 18:05:46 +0200 Subject: [PATCH 19/40] Add version detection for sonarqubes --- src/apps.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 210d24223..9fd30ea01 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7472,7 +7472,11 @@ "47" ], "env": "^Sonar(?:Measures|Request)$", - "html": "SonarQube", + "html": [ + "SonarQube" + ], + "scripts": "^/js/bundles/sonar\\.js?v=([\\d.]+)$\\;version:\\1", "icon": "sonar.png", "meta": { "application-name": "^SonarQubes$" From f02a5981b674fd52b6afe2ee952e09300017bb30 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Wed, 3 May 2017 14:39:29 +0200 Subject: [PATCH 20/40] Fix a typo --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 9fd30ea01..0a33a98ba 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7476,7 +7476,7 @@ "SonarQube" ], - "scripts": "^/js/bundles/sonar\\.js?v=([\\d.]+)$\\;version:\\1", + "script": "^/js/bundles/sonar\\.js?v=([\\d.]+)$\\;version:\\1", "icon": "sonar.png", "meta": { "application-name": "^SonarQubes$" From e9b938aeaa92729d7659fbf8815255f0d9a62876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BC=A1=EF=BD=8E=EF=BD=84=EF=BD=92=EF=BD=85=EF=BD=99?= Date: Thu, 4 May 2017 22:39:06 +0300 Subject: [PATCH 21/40] Update apps.json --- src/apps.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 210d24223..fcb5fcae2 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10221,7 +10221,15 @@ "icon": "xui.png", "script": "[^a-z]xui.*\\.js", "website": "http://xuijs.com" - } + }, + "Moon": { + "cats": [ + "12" + ], + "icon": "moon.png", + "script": "moon(?:\\.min)?\\.js", + "website": "http://moonjs.ga/" + }, }, "categories": { "1": { From ce014dac6915f85f86bd19d1c4c6ed71f81d8206 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BC=A1=EF=BD=8E=EF=BD=84=EF=BD=92=EF=BD=85=EF=BD=99?= Date: Thu, 4 May 2017 22:40:50 +0300 Subject: [PATCH 22/40] Add files via upload --- src/icons/moon.png | Bin 0 -> 2056 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/icons/moon.png diff --git a/src/icons/moon.png b/src/icons/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..2fdae7cc3d4a4e9bc7ee6d0c2da74a5e998fa444 GIT binary patch literal 2056 zcmV+j2>17iP)(_`g8%^e{{R4h=l}px2mk>USO5SzmjD14Z`WEM zkN^M&j!8s8RCwCtnA=m6i5bRU6FY0WZadrUuCvy1nZ3vVTCQ7wz7(Go9^_!%fW2FMC6K&q%BrAj64;W;P_;7I0k7Ky@%9xhF94cq)ahLzt13d*pI_k{5a9YqO6sJ&cK&x>v_@|;^*}OlP*$Q zy#s0+1C^bD+QuO5A%m>DJ{-92N5LgOPMzaWVdVZ=p=YVwuri_rCR{Phk!r?sUmXrs z*%>5T80`ImLC!57@(27V>}GMgjf2L(ovEm2slu=_q6Ma0FPWSpmBrJow)>#AF;LsR zP}>;nnqZK5&xidt{5X2qkCW$Fl$$x9#=x%CG_bT1&NMD1FgZtw7WV=5lW=(C>1P=1 z8E24v+lNEf{5am@M@c&eO(XX^t$`y=!wN8PRBm48Cs13x-$Y)0L?CsNLHd{vc{lxt zs-8hOr)>}@UNnsYRhR_oI4ngAsAfEoi9a73{%Z9?!*`~MLscE0U#aIQUbF_D%1u0t zZjD()DvO6y7SAfRjrn&ZJR*=X#bDok2D!t&`Rbi+IpMgQk%~T_ul(axTG8!BM=_YdET@;^^KYZ{TyamHEfK zKzI&zO)$t9^zA4mKAC_2xgteHclo<>$9zJhs%n9*C(87UV$QMJ z>b)2W_r4syNe1a-%zX7ubcL%|&q1%_VJ;DH_J}yydPt(y{N-smEKzNlNJHCY`kFw$ zT}0salGR(d_e~tCYdJJj2xuu1(0NGw=lL9oI&+uiT%JV6B9Vr-%Je4!Jtxpp#j66h z77FZ~uU_ct6?U;GZR4PA2o0aHRKVF|A};2M=*?Uyp2*XyikQMm9+_^odB1-U-rIk??Tn(gM?NO0;>W zldTJ?7uoym9L^X+)oUyl&~idR=OGcjnG&w1O1QZrfO}hHJX|lECe{V%!G<8&-U@{~ z7lbb>uw#0T5@y^-Ql@yh2hc3!|G)L(Vye&DmSR5Ykqwr$5df~m_R4SnD zn1BoWC0tGq4d1QpGR8K`c(fr1%TIx)Yk=npz^Q;{Wdeh4${ci4#tj$c4f+07(8uCr zCyVmtQ1$9HJj}(R>UHNxxUyTq4OIXmTV;%Ilrgyuu>TlvtOlMb0H+dgD)GXx3O|ZV zAiLK^*}X2x?3tt7e)rzOODsy-Lwmornnz<uI89HcT6J5XE0p&_Pv z1E~^jCdjzAMaF{pB?=-_ zKdTHMr0*)wyHBKRNfO=JD$)1{fz^}mBJIhWXmTns=u~3Nsl=#LiK`AJ8XQXObSj~6 mDnYaH2z>8<(fnTu{BHntTra*ry)JqH0000 Date: Fri, 5 May 2017 13:11:17 +0300 Subject: [PATCH 23/40] Add Select2 icon --- src/apps.json | 3 ++- src/icons/Select2.png | Bin 1268 -> 1776 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index b99c07b5e..3af785805 100755 --- a/src/apps.json +++ b/src/apps.json @@ -7023,6 +7023,7 @@ ], "implies": "jQuery", "script": "select2.*\\.js", + "icon": "Select2.png", "website": "http://select2.github.io" }, "Semantic-ui": { @@ -10380,4 +10381,4 @@ "priority": "9" } } -} \ No newline at end of file +} diff --git a/src/icons/Select2.png b/src/icons/Select2.png index 850ac1368cad4ca9c235fb65bf577c9201d93125..fc1f269f713a22b6e4f06a66fe0700e37d12b51d 100644 GIT binary patch delta 1761 zcmV<71|IqJ3GfY&BYy_BNkltzw~CjRykCrLBpk7F&;cRN0x= z_hx5zhFw%V`X?{{)?c?$vX9A^_fcSbR%IzsBgPny~7Z*1XFRm%7UQjCF zonCvuZGX?6(4u-B{$lZPll6t$tQXv6UEp85e@OM?d@nn~%XM%Mv2v8tPGu@A6gyx? za+aakl%?T(}t!a0oH_5f)-{gsq$b&Tgpb(|>1*qb|h$M+KMs`a^~PXgK2YAsq90 z4~}~ehm+n(aN08os?netk2m20_ZBpAiExp{pkW+bM%inq0}Z-=x=;L^g>&Y3II-GW z%1O0bJ4$mSEbN<-xtoQ2JrRFS2z_Keqfh&bUzv6F=N?mv2tdU{1qE8biw?junc}xn4aGn zGFA9GWD1maodjjU6JdLo2~gf;JnRbk2=^}x3*m<2 zYe!hiI*IAFV7e`Z?T=%VSsqB^rmq?j+<$w?IToG^tb494G;)@Z9+3^}x@E!IZbn!W zrib-m8L%mII(!xKDQpRuf;1Vnp;3GNbWr?i0jSd|f#qD{nZ5y7di`&Gat@4fVp(J? zMi!aP7V+S7%L1R*My*@GX-Xcl?uEcb7q+URtpbZO15+0W1J(Ipip+zh5xKB1{C_jt zvtfC7HmnSv3G2J2!`cWVj2w%kgwBzXYMPT|m1V&K9d4B4?B_M&g zr&Qwk&k`L)s*vai(qZt|9)hlECxB%)*}ZlE%is>s0I zYk^n@Q}b5^^e|SGu=Hjd(|^}e4oN`Fp}5PuJINlqdM)L@26fdVc*B+0?1SSKZLgA; zLT6jNJG*QMK0ZkT7%rYHmpl;cijj9GH*iPJRZ<588BUjJ^ERu+{{yfC%lphKG;^ZY9bFbjH0Cb%QfF1=qbGOVqfw{KwZJ(H z%xG>&$k{j9=`}g^EX%A2*U;P@37-18!<0{zp@zUkL)!Lt6ZZGHow~dY8b^U6`1Aiv zGfT63+T4|#ChO=dmRfP~wiE#yl9cPl>p0=2DP*4ir>5KPbynalPdO3LC8D~m-4QCh2MizNKt-k*NZp3bV!6Md(00000NkvXXu0mjf Ds!3F6 delta 1249 zcmV<71RneF4fF|+BYy1i$7>1vjxm#Q4!d8p41PTc)yM$FD0hCDP z2VfKs<(Ie-BeIIcByiFwcc?xHA5MZ;B4IKl95eF;Xu)~lk;FAgsWcw_cO@0Vc#ei z+mNKG3`2?t_%7rzrVJ*%> zN@;?{Eq{18ZPqh`%Iz=H+-Pr%cG0N10k+ndY$#&WP{=5Fb%+=@NM2$JYX^@ww6oyH zM>(;j3?QNcab5a$Y@htpyTzA6v${5Se^oMvlg&@?&cN?#P*z$p#md6sDG+dX{Z{o0W<;8OwgJKP5RMwMLdL` zKc6FNZA!9k#H5F6{w4#ncJd_o#=g=n$$k|x@zXINbp7FlqS&M_A?k~I5 z<$ww+Ai7>Osn?1alhBALECj#n;y4zEd#AIl-%zUjQQ!u-5dkM)^b~RWhlOl=VO>K3 zr+>$jw={ebjGafL27CywV|#-2(=5BB>iF1zOWQ7Wmsk zdC@oQ&s=2j^qysu`Q}qq1%v>?Lj`E8t`Bs>R+6=%YjhO3y;99x`ymt}B19k%3(Ec3 zV#ssp44D2RUHZ)-c*R01z#?KS3siVJk$)11gG&W#`DNML*C&l#oI%=@vQ`Rsgi6F2-t&hGw`lEWKGNcGXN_fV8;gK$@{Y|LP&F5STPSEg}f^#Q^- zG^XN0EqPfxfc+#5?vF1f2^9n^T8+mKj<1-LTVEpU@psJXD`H*RIS79Vp-s82bCAI*zv|p4zAqCO>k(AE5$+bHfIy6{)v>)={VkQ=nyR<;E4ju zzR2nC=9s%)#HBNrX$FUuC^=ljxxE|BDRGJKJ`7P_M4CV2fdnWk+``@^)66;FLkl=W zfLUXRoUivFI-C24^}*v$xp5l;j#?kQQ5VVGG?y(i7EqdhnFw&W9g2S|;jdlmNgPy3 zZ1PCZK1A1l=gZH3OZLJU=2>TRPZ;%jf1W?Ooq1=^F@EW@w37b-&TnKCqJZv}00000 LNkvXXu0mjfN_SdL From 94aa1fc6ca97c42e87c825715e8b485a90493335 Mon Sep 17 00:00:00 2001 From: Sean Hamlin Date: Fri, 5 May 2017 23:30:39 +1200 Subject: [PATCH 24/40] Add support for detection of govCMS (Drupal distribution). --- src/apps.json | 14 ++++++++++++++ src/icons/govCMS.svg | 1 + 2 files changed, 15 insertions(+) create mode 100644 src/icons/govCMS.svg diff --git a/src/apps.json b/src/apps.json index 210d24223..50d65a951 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3142,6 +3142,20 @@ }, "website": "http://developers.google.com/web-toolkit" }, + "govCMS": { + "cats": [ + "1" + ], + "meta": { + "generator": "Drupal ([\\d]+) \\(http:\\/\\/drupal\\.org\\) \\+ govCMS\\;version:\\1" + }, + "icon": "govCMS.svg", + "implies": [ + "Drupal", + "PHP" + ], + "website": "https://www.govcms.gov.au" + }, "Graffiti CMS": { "cats": [ "1" diff --git a/src/icons/govCMS.svg b/src/icons/govCMS.svg new file mode 100644 index 000000000..6b1f767c6 --- /dev/null +++ b/src/icons/govCMS.svg @@ -0,0 +1 @@ + \ No newline at end of file From 87711e83d6b96e92631e7ba800ff08f57ffd57c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BC=A1=EF=BD=8E=EF=BD=84=EF=BD=92=EF=BD=85=EF=BD=99?= Date: Fri, 5 May 2017 14:49:09 +0300 Subject: [PATCH 25/40] Update apps.json --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index fcb5fcae2..e9366f29c 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10229,7 +10229,7 @@ "icon": "moon.png", "script": "moon(?:\\.min)?\\.js", "website": "http://moonjs.ga/" - }, + } }, "categories": { "1": { From 3de9792f080550e03cb286ae2f9d615b5661c503 Mon Sep 17 00:00:00 2001 From: AlexByte Date: Sat, 6 May 2017 01:35:24 +0300 Subject: [PATCH 26/40] Update Russian translation. --- src/drivers/webextension/_locales/ru/messages.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/drivers/webextension/_locales/ru/messages.json b/src/drivers/webextension/_locales/ru/messages.json index 4f460991d..9b8842c76 100644 --- a/src/drivers/webextension/_locales/ru/messages.json +++ b/src/drivers/webextension/_locales/ru/messages.json @@ -4,6 +4,10 @@ "categoryName3" : { "message" : "Менеджер БД" }, "categoryName4" : { "message" : "Документация" }, "categoryName5" : { "message" : "Виджет" }, + "categoryName6" : { "message" : "Электронная коммерция" }, + "categoryName7" : { "message" : "Фотогалерея" }, + "categoryName8" : { "message" : "Вики" }, + "categoryName9" : { "message" : "Панель управления хостингом" }, "categoryName10" : { "message" : "Аналитика" }, "categoryName11" : { "message" : "Блог" }, "categoryName12" : { "message" : "JS фреймворк" }, @@ -35,7 +39,7 @@ "categoryName38" : { "message" : "Медиа сервер" }, "categoryName39" : { "message" : "Вебкамера" }, "categoryName40" : { "message" : "Принтер" }, - "categoryName41" : { "message" : "Провайдер платежей" }, + "categoryName41" : { "message" : "Платёжная система" }, "categoryName42" : { "message" : "Менеджер тэгов" }, "categoryName43" : { "message" : "Paywall" }, "categoryName44" : { "message" : "Система непрерывной интеграции" }, @@ -47,12 +51,13 @@ "categoryName50" : { "message" : "Управление документами" }, "categoryName51" : { "message": "Генератор лендингов" }, "categoryName52" : { "message": "Live Chat" }, - "categoryName53" : { "message": "CRM" }, + "categoryName53" : { "message": "CRM" }, "github" : { "message" : "Форкнуть на GitHub!" }, "noAppsDetected" : { "message" : "Нет данных о сайте" }, "nothingToDo" : { "message" : "Тут нечего искать" }, - "optionTracking" : { "message" : "Анонимно отправлять статистику распознанных данных на сервер (для улучшения расширения)" }, - "optionUpgradeMessage" : { "message" : "Оповещать меня о новых обновлениях" }, + "optionTracking" : { "message" : "Анонимно отправлять статистику распознанных данных на сервер (для исследований)" }, + "optionDynamicIcon" : { "message": "Использовать значок приложения вместо логотипа Wappalyzer" }, + "optionUpgradeMessage" : { "message" : "Оповещать меня об обновлениях" }, "options" : { "message" : "Настройки" }, "optionsSave" : { "message" : "Сохранить" }, "optionsSaved" : { "message" : "Успешно сохранено!" }, From c3e0d595351eb0e2da84d9cb63d65f0da885e593 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20Re=CC=81mond?= Date: Wed, 3 May 2017 16:44:08 +0200 Subject: [PATCH 27/40] Add Play Framework --- src/apps.json | 11 +++++++++++ src/icons/Play.svg | 1 + 2 files changed, 12 insertions(+) create mode 100644 src/icons/Play.svg diff --git a/src/apps.json b/src/apps.json index 210d24223..565a3c1f4 100755 --- a/src/apps.json +++ b/src/apps.json @@ -4365,6 +4365,17 @@ "implies": "Scala", "website": "http://liftweb.net" }, + "Play": { + "cats": [ + "18" + ], + "headers": { + "Set-Cookie": "PLAY_SESSION" + }, + "icon": "Play.svg", + "implies": "Scala", + "website": "https://www.playframework.com" + }, "LightMon Engine": { "cats": [ "1" diff --git a/src/icons/Play.svg b/src/icons/Play.svg new file mode 100644 index 000000000..10925d767 --- /dev/null +++ b/src/icons/Play.svg @@ -0,0 +1 @@ + \ No newline at end of file From 34b52b6f3a47bc7564ebfb044bbc838f695953c8 Mon Sep 17 00:00:00 2001 From: Elbert Filius Date: Mon, 8 May 2017 11:14:15 +1000 Subject: [PATCH 28/40] Rename Demandware to Salesforce Commerce Cloud --- src/apps.json | 4 ++-- src/icons/Demandware.png | Bin 154 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 src/icons/Demandware.png diff --git a/src/apps.json b/src/apps.json index ab78bd338..499ce3354 100755 --- a/src/apps.json +++ b/src/apps.json @@ -1910,7 +1910,7 @@ "icon": "Dell.png", "website": "http://dell.com" }, - "Demandware": { + "Salesforce Commerce Cloud": { "cats": [ "6" ], @@ -1919,7 +1919,7 @@ "Server": "Demandware eCommerce Server" }, "html": "<[^>]+demandware\\.edgesuite", - "icon": "Demandware.png", + "icon": "Salesforce.svg", "website": "http://demandware.com" }, "Deployd": { diff --git a/src/icons/Demandware.png b/src/icons/Demandware.png deleted file mode 100644 index c2ef8d545edcf75527a8d064d2aa6ce8c03576bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?b1=2v!(9m$;z=8k&|JPJ( zn+W7HmIV0)GdMiEkp|>gdb&7)t=8FD?DBOT-G@yGywoxn=Lf} From d434b82240e57ce4fa05f87ef330e01047dc8eb9 Mon Sep 17 00:00:00 2001 From: AlexByte Date: Mon, 8 May 2017 05:09:43 +0300 Subject: [PATCH 29/40] Use SVG icon for AngularJS. --- src/apps.json | 2 +- src/icons/AngularJS.png | Bin 1618 -> 0 bytes src/icons/AngularJS.svg | 74 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 1 deletion(-) delete mode 100644 src/icons/AngularJS.png create mode 100644 src/icons/AngularJS.svg diff --git a/src/apps.json b/src/apps.json index 210d24223..4341a141e 100755 --- a/src/apps.json +++ b/src/apps.json @@ -510,7 +510,7 @@ "12" ], "env": "^angular$", - "icon": "AngularJS.png", + "icon": "AngularJS.svg", "script": [ "angular(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1", "/([\\d.]+(?:\\-?rc[.\\d]*)*)/angular(?:\\.min)?\\.js\\;version:\\1", diff --git a/src/icons/AngularJS.png b/src/icons/AngularJS.png deleted file mode 100644 index 6dc0783e13bbb623f837859f8e7c14ede7aa41aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1618 zcmV-Y2CeytP)u@<_pACVmqI`?e(-i+S^$y*!#PsQnF(P#*s<}fUQzgw0qMEjM? z&}>a{5RfB3&cNl5T}7X?9nP_2qb*`Wh4>-B=jBcfeSpt)-QUewdA?u^QD zHaZ+VKXswAvy-PQL+OUK?g{*ZjACvG%5#ni0v8+v=n{4H?lg~#H-`D6?QjPA`}-vV zB1Q~_3gpl7@rZ;XED-wR$3&1?NMOob|8xme%DL(g*% zuv)DX1cAE6bB9g6uBr-~`|sVwmCT)}44i_3Kwp#}&XPzNH5w>CUgDkrwL#5{;o2J{ z;O!uwR4T`kKyU4e7}o?SJm=z~(cjyP0R~@BM?0G421*1Zw^E92UNA7%54t5#5abW- zj%{M?RUZ0vc@~Tzf!33st#+GwH`GNo_xJRmT~&a3K9>lHjc5Bw?w7ovE=BR;DAxq$ z1fc9-rdW50cwQcaV_0oWHQQ3$2u~RLZr`@K|Lz@J+PoGmF;O_hD=Ul)M$x=bsMjUh zf{|*f+qcJ!2F!v!_n4@fr=02m34BqVx!d{lp?+vPk|i0JL+C&UrFc-|hrn2(LSa<6 zGl2+dKxv66PAXRf)_t9m?HqjX&qB|Q>!TtdijOvJy9*5n6&ldTH5twXSfQ*eyF*jY z7njqw+Kkd*cl$MT8nhBR^cu7(70~TXXD_e|+VnKKez&9tk{6W4lIl4!Km_YYk_OzP ztz=hyfVYKRj=c0XhE2zv)^BYm?(W9b1COsr9)u1ftOuIyTL$I144N$|G7XqQ4Tu;2 z{XznZToHKHY%-!gDtIvUe9*dXwZrATtbWb*|J)GB^P7yKg^`jd2@-~)LMTE49OTp+ zlEw3zBoN@LDH%rsf7Hb+a0K7awKcZWGyiYW?egn!NnkJ~2klM8IS+ zJ;MNLt4)ZLuHk(ABI(|3%6AVJ*DUvlfVgX+hEhO^B9)&<1@uKhh|qxj;OVbWgvPsU z%Pb~S&B={PHsy<5Am#ga8`q#U`4gw?a7Vy?-=a5Eu_aT+$3PJ})20Dmasg$~YW>p&s!@@zM|21s$kXP z3^t>h4|pA8317Z^R-{!`RwnAABSzGL()CFkP&C4@XuI + + +image/svg+xml \ No newline at end of file From 4fc6ed3a6d1fff97d1429e36791c19c65361fce4 Mon Sep 17 00:00:00 2001 From: AlexByte Date: Mon, 8 May 2017 05:40:23 +0300 Subject: [PATCH 30/40] Make AngularJS.svg square. --- src/icons/AngularJS.svg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/icons/AngularJS.svg b/src/icons/AngularJS.svg index db879ab4f..649c9f92f 100644 --- a/src/icons/AngularJS.svg +++ b/src/icons/AngularJS.svg @@ -12,7 +12,7 @@ id="svg2" version="1.1" inkscape:version="0.48.4 r9939" - width="335.88126" + width="355.80875" height="355.80875" xml:space="preserve" sodipodi:docname="AngularJS-Shield.svg" @@ -49,7 +49,7 @@ id="g10" inkscape:groupmode="layer" inkscape:label="ink_ext_XXXXXX" - transform="matrix(1.25,0,0,-1.25,-188.84625,636.71875)"> Date: Mon, 8 May 2017 12:33:52 +0530 Subject: [PATCH 31/40] changes done. --- src/apps.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/apps.json b/src/apps.json index a5828e2a5..9b4764405 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10020,13 +10020,13 @@ "icon": "swift.engine.png", "website": "http://mittec.ru/default" }, - “WEBXPAY”: { + "WEBXPAY": { "cats": [ "6" ], "env": "^WEBXPAY$", - "html": "Powered by WEBXPAY<", - "icon": “WEBXPAY.png”, + "html": "Powered by WEBXPAY<", + "icon": "WEBXPAY.png", "website": "https://webxpay.com" }, "three.js": { From 79f4890d911d84b0ac8fa3b8965d013be9c35db1 Mon Sep 17 00:00:00 2001 From: Sean Hamlin Date: Tue, 9 May 2017 18:09:54 +1200 Subject: [PATCH 32/40] Drupal implies PHP. --- src/apps.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/apps.json b/src/apps.json index 50d65a951..49b2bf842 100755 --- a/src/apps.json +++ b/src/apps.json @@ -3151,8 +3151,7 @@ }, "icon": "govCMS.svg", "implies": [ - "Drupal", - "PHP" + "Drupal" ], "website": "https://www.govcms.gov.au" }, From 87d853a922f923143912269b2c7b075aac53e865 Mon Sep 17 00:00:00 2001 From: MicroDreamIT Date: Tue, 9 May 2017 22:15:51 +0600 Subject: [PATCH 33/40] Create Shapecss.svg --- src/icons/Shapecss.svg | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/icons/Shapecss.svg diff --git a/src/icons/Shapecss.svg b/src/icons/Shapecss.svg new file mode 100644 index 000000000..b682180ee --- /dev/null +++ b/src/icons/Shapecss.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + From 2d888e0298121bd85ef4726fc56467b760b78265 Mon Sep 17 00:00:00 2001 From: MicroDreamIT Date: Tue, 9 May 2017 22:20:37 +0600 Subject: [PATCH 34/40] adding shapecss --- src/apps.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/apps.json b/src/apps.json index 8524860b1..dd7d3a058 100755 --- a/src/apps.json +++ b/src/apps.json @@ -4320,6 +4320,15 @@ "implies": "PHP", "website": "http://laravel.com" }, + "Shapecss": { + "cats":[ + "18" + ], + "html":"]* href=\"[^\"]*shapecss(?:\\.min)?\\.css", + "script":"shapecss(?:\\.min)?\\.js", + "icon":"Shapecss.svg", + "website":"https://shapecss.com" + }, "Lazy.js": { "cats": [ "12" From 755319a9471b931d3d399ab71977e6137d01aad9 Mon Sep 17 00:00:00 2001 From: MicroDreamIT Date: Tue, 9 May 2017 22:25:26 +0600 Subject: [PATCH 35/40] adding Shapecss logo adding Shapecss logo --- src/icons/Shapecss.svg | 55 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/src/icons/Shapecss.svg b/src/icons/Shapecss.svg index b682180ee..8d577bec6 100644 --- a/src/icons/Shapecss.svg +++ b/src/icons/Shapecss.svg @@ -1,28 +1,27 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + From e49df57b2bc88b8151c84ba38b711b39cb4d0be2 Mon Sep 17 00:00:00 2001 From: MicroDreamIT Date: Wed, 10 May 2017 08:32:04 +0600 Subject: [PATCH 36/40] updating shapecss updating shapecss --- src/apps.json | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/apps.json b/src/apps.json index dd7d3a058..492a4849d 100755 --- a/src/apps.json +++ b/src/apps.json @@ -4309,6 +4309,16 @@ "icon": "LabVIEW.png", "website": "http://ni.com/labview" }, + "Shapecss": { + "cats":[ + "18" + ], + "env": "^Shapecss$", + "html":"]* href=\"[^\"]*shapecss(?:\\.min)?\\.css", + "script":"shapecss(?:\\.min)?\\.js", + "icon":"Shapecss.svg", + "website":"https://shapecss.com" + }, "Laravel": { "cats": [ "18" @@ -4320,15 +4330,6 @@ "implies": "PHP", "website": "http://laravel.com" }, - "Shapecss": { - "cats":[ - "18" - ], - "html":"]* href=\"[^\"]*shapecss(?:\\.min)?\\.css", - "script":"shapecss(?:\\.min)?\\.js", - "icon":"Shapecss.svg", - "website":"https://shapecss.com" - }, "Lazy.js": { "cats": [ "12" From 7e3e72303d46cbb1ec68cdb43c2dcc4d7c9c5d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BC=A1=EF=BD=8E=EF=BD=84=EF=BD=92=EF=BD=85=EF=BD=99?= Date: Wed, 10 May 2017 18:13:35 +0300 Subject: [PATCH 37/40] Update apps.json --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index e9366f29c..625e447bf 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10227,7 +10227,7 @@ "12" ], "icon": "moon.png", - "script": "moon(?:\\.min)?\\.js", + "script": "moon(?:\\.min)?.js", "website": "http://moonjs.ga/" } }, From 2eca2a59860d9e4e54b6a1da33daed0a6a6a1167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BC=A1=EF=BD=8E=EF=BD=84=EF=BD=92=EF=BD=85=EF=BD=99?= Date: Wed, 10 May 2017 18:14:36 +0300 Subject: [PATCH 38/40] Update apps.json --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 625e447bf..d31c0579f 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10227,7 +10227,7 @@ "12" ], "icon": "moon.png", - "script": "moon(?:\\.min)?.js", + "script": "moon(?:\.min)?.js", "website": "http://moonjs.ga/" } }, From 69b7faf279cd69c2630092ebb49767583ce19728 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BC=A1=EF=BD=8E=EF=BD=84=EF=BD=92=EF=BD=85=EF=BD=99?= Date: Wed, 10 May 2017 18:14:59 +0300 Subject: [PATCH 39/40] Update apps.json --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index d31c0579f..625e447bf 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10227,7 +10227,7 @@ "12" ], "icon": "moon.png", - "script": "moon(?:\.min)?.js", + "script": "moon(?:\\.min)?.js", "website": "http://moonjs.ga/" } }, From 1246520f77e814a92790140231d832819eeea1e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EF=BC=A1=EF=BD=8E=EF=BD=84=EF=BD=92=EF=BD=85=EF=BD=99?= Date: Thu, 11 May 2017 15:24:14 +0300 Subject: [PATCH 40/40] Update apps.json --- src/apps.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps.json b/src/apps.json index 625e447bf..8ab8eb71f 100755 --- a/src/apps.json +++ b/src/apps.json @@ -10227,7 +10227,7 @@ "12" ], "icon": "moon.png", - "script": "moon(?:\\.min)?.js", + "script": "/moon(?:\\.min)?\\.js$", "website": "http://moonjs.ga/" } },