Date: Fri, 9 Feb 2018 02:38:59 +0100
Subject: [PATCH 009/175] Add a way to get modernizr version via "js" (#2074)
This can be verified [here](https://www.spip.net/en_rubrique25.html)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index 6e6c20c65..005e775b4 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -6003,7 +6003,7 @@
12
],
"js": {
- "Modernizr": ""
+ "Modernizr._version": "(.*)\\;version:\\1"
},
"icon": "Modernizr.svg",
"script": [
From 484d2e3ce77921eca9b165c4124d204131a62aca Mon Sep 17 00:00:00 2001
From: Camille Barneaud <1693643+gadcam@users.noreply.github.com>
Date: Fri, 9 Feb 2018 02:39:55 +0100
Subject: [PATCH 010/175] Update js patterns & add version detection -
MediaElement.js --> Plesk + Some removed apps (#2070)
---
src/apps.json | 182 ++++++++++++++-------------------------
src/icons/Nedstat.png | Bin 331 -> 0 bytes
src/icons/Neonclear.png | Bin 4372 -> 0 bytes
src/icons/Penguin.svg | 1 -
src/icons/Petrojs.png | Bin 480 -> 0 bytes
src/icons/Piano Solo.png | Bin 1626 -> 0 bytes
6 files changed, 67 insertions(+), 116 deletions(-)
delete mode 100644 src/icons/Nedstat.png
delete mode 100644 src/icons/Neonclear.png
delete mode 100644 src/icons/Penguin.svg
delete mode 100644 src/icons/Petrojs.png
delete mode 100644 src/icons/Piano Solo.png
diff --git a/src/apps.json b/src/apps.json
index 005e775b4..7f10550db 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -5787,7 +5787,7 @@
],
"js": {
"Meteor": "",
- "METEOR_VERSION": ""
+ "Meteor.release": "^METEOR@([\\d.]+)\\;version:\\1"
},
"html": "]+__meteor-css__",
"icon": "Meteor.png",
@@ -5795,15 +5795,12 @@
"MongoDB",
"Node.js"
],
- "website": "http://meteor.com"
+ "website": "https://www.meteor.com"
},
"Methode": {
"cats": [
1
],
- "js": {
- "eidosBase": ""
- },
"html": "",
"icon": "Methode.png",
"meta": {
@@ -5813,7 +5810,7 @@
"eomportal-loid": "[\\d.]+",
"eomportal-uuid": "[a-f\\d]+"
},
- "website": "http://www.eidosmedia.com/solutions"
+ "website": "https://www.eidosmedia.com/"
},
"Microsoft ASP.NET": {
"cats": [
@@ -5881,7 +5878,8 @@
1
],
"js": {
- "_spBodyOnLoadCalled": ""
+ "_spBodyOnLoadCalled": "",
+ "SPDesignerProgID": ""
},
"headers": {
"MicrosoftSharePointTeamServices": "(.*)\\;version:\\1",
@@ -5893,7 +5891,7 @@
"meta": {
"generator": "Microsoft SharePoint"
},
- "website": "http://sharepoint.microsoft.com"
+ "website": "https://sharepoint.microsoft.com"
},
"Microsoft Word": {
"cats": [
@@ -5954,18 +5952,18 @@
},
"icon": "Mint.png",
"script": "mint/\\?js",
- "website": "http://haveamint.com"
+ "website": "https://haveamint.com"
},
"Mixpanel": {
"cats": [
10
],
"js": {
- "Mixpanel": ""
+ "mixpanel": ""
},
"icon": "Mixpanel.png",
"script": "api\\.mixpanel\\.com/track",
- "website": "http://mixpanel.com"
+ "website": "https://mixpanel.com"
},
"Mobify": {
"cats": [
@@ -5975,19 +5973,20 @@
"Mobify": ""
},
"icon": "Mobify.png",
- "script": "mobify\\.com",
- "website": "http://www.mobify.com"
+ "script": "//cdn\\.mobify\\.com/",
+ "website": "https://www.mobify.com"
},
"MochiKit": {
"cats": [
12
],
"js": {
- "MochiKit": ""
+ "MochiKit": "",
+ "MochiKit.MochiKit.VERSION": "(.*)\\;version:\\1"
},
"icon": "MochiKit.png",
"script": "MochiKit(?:\\.min)?\\.js",
- "website": "http://mochikit.com"
+ "website": "https://mochi.github.io/mochikit/"
},
"MochiWeb": {
"cats": [
@@ -6010,7 +6009,7 @@
"modernizr(?:-([\\d.]*[\\d]))?.*\\.js\\;version:\\1",
"/([\\d.]+)/modernizr(?:\\.min)?\\.js\\;version:\\1"
],
- "website": "http://www.modernizr.com"
+ "website": "https://modernizr.com"
},
"Modified": {
"cats": [
@@ -6042,7 +6041,7 @@
"icon": "MoinMoin.png",
"implies": "Python",
"script": "moin(?:_static(\\d)(\\d)(\\d)|.+)/common/js/common\\.js\\;version:\\1.\\2.\\3",
- "website": "http://moinmo.in"
+ "website": "https://moinmo.in"
},
"Mojolicious": {
"cats": [
@@ -6079,11 +6078,12 @@
12
],
"js": {
- "moment": ""
+ "moment": "",
+ "moment.version": "(.*)\\;version:\\1"
},
"icon": "Moment.js.svg",
"script": "moment(?:\\.min)?\\.js",
- "website": "http://momentjs.com"
+ "website": "https://momentjs.com"
},
"Mondo Media": {
"cats": [
@@ -6151,25 +6151,27 @@
"icon": "Mono.net.png",
"implies": "Piwik",
"script": "monotracker(?:\\.min)?\\.js",
- "website": "http://www.mono.net"
+ "website": "https://www.mono.net/en"
},
"MooTools": {
"cats": [
12
],
"js": {
- "MooTools": ""
+ "MooTools": "",
+ "MooTools.version": "(.*)\\;version:\\1"
},
"icon": "MooTools.png",
"script": "mootools.*\\.js",
- "website": "http://mootools.net"
+ "website": "https://mootools.net"
},
"Moodle": {
"cats": [
21
],
"js": {
- "moodle": ""
+ "Y.Moodle": "",
+ "M.core": ""
},
"headers": {
"Set-Cookie": "(?:MoodleSession|MOODLEID_)"
@@ -6262,11 +6264,12 @@
12
],
"js": {
- "Mustache": ""
+ "Mustache": "",
+ "Mustache.version": "(.*)\\;version:\\1"
},
"icon": "Mustache.png",
"script": "mustache(?:\\.min)?\\.js",
- "website": "http://mustache.github.com"
+ "website": "https://mustache.github.io"
},
"MyBB": {
"cats": [
@@ -6281,7 +6284,7 @@
"PHP",
"MySQL"
],
- "website": "http://www.mybb.com"
+ "website": "https://mybb.com"
},
"MyBlogLog": {
"cats": [
@@ -6321,7 +6324,8 @@
25
],
"js": {
- "nv": "\\;confidence:20"
+ "nv.addGraph": "",
+ "nv.version": "(.*)\\;confidence:0\\;version:\\1"
},
"html": "]* href=[^>]+nv\\.d3(?:\\.min)?\\.css",
"icon": "NVD3.png",
@@ -6337,16 +6341,6 @@
"script": "tag\\.navdmp\\.com",
"website": "https://www.navegg.com/"
},
- "Nedstat": {
- "cats": [
- 10
- ],
- "js": {
- "sitestat": ""
- },
- "icon": "Nedstat.png",
- "website": "http://www.nedstat.com"
- },
"NEO - Omnichannel Commerce Platform": {
"cats": [
6
@@ -6357,17 +6351,6 @@
"icon": "Plataforma NEO.svg",
"website": "http://www.jetecommerce.com.br/"
},
- "Neonclear": {
- "cats": [
- 12
- ],
- "icon": "Neonclear.png",
- "js": {
- "neon": ""
- },
- "script": "/neonclear(?:\\.min|\\.dev)?\\.js",
- "website": "http://neon.atm.re"
- },
"Neos CMS": {
"cats": [
1
@@ -6434,7 +6417,7 @@
},
"icon": "Neto.svg",
"script": "jquery\\.neto.*\\.js",
- "website": "http://www.neto.com.au"
+ "website": "https://www.neto.com.au"
},
"Netsuite": {
"cats": [
@@ -6451,7 +6434,8 @@
18
],
"js": {
- "Nette": ""
+ "Nette": "",
+ "Nette.version": "(.*)\\;version:\\1"
},
"headers": {
"Set-Cookie": "nette-browser=",
@@ -6464,17 +6448,18 @@
],
"icon": "Nette Framework.png",
"implies": "PHP",
- "website": "http://nette.org"
+ "website": "https://nette.org"
},
"New Relic": {
"cats": [
10
],
"js": {
- "NREUM": ""
+ "NREUM": "",
+ "newrelic": ""
},
"icon": "New Relic.png",
- "website": "http://newrelic.com"
+ "website": "https://newrelic.com"
},
"NextGEN Gallery": {
"cats": [
@@ -6507,7 +6492,7 @@
"webpack",
"Node.js"
],
- "website": "https://zeit.co/next"
+ "website": "https://github.com/zeit/next.js"
},
"Nginx": {
"cats": [
@@ -6566,11 +6551,12 @@
"oxTopMenu": "",
"oxModalPopup": "",
"oxLoginBox": "",
- "oxInputValidator": ""
+ "oxInputValidator": "",
+ "oxCookieNote": ""
},
"html": "",
"icon": "Open Web Analytics.png",
- "website": "http://openwebanalytics.com"
+ "website": "http://www.openwebanalytics.com"
},
"Open eShop": {
"cats": [
@@ -6761,11 +6748,12 @@
35
],
"js": {
- "OpenLayers": ""
+ "ol.CanvasMap": "",
+ "OpenLayers.VERSION_NUMBER": "([\\d.]+)\\;version:\\1"
},
"icon": "OpenLayers.png",
"script": "openlayers",
- "website": "http://openlayers.org"
+ "website": "https://openlayers.org"
},
"OpenNemas": {
"cats": [
@@ -6890,7 +6878,7 @@
},
"icon": "Optimizely.png",
"script": "optimizely\\.com.*\\.js",
- "website": "http://optimizely.com"
+ "website": "https://www.optimizely.com"
},
"Oracle Application Server": {
"cats": [
@@ -6979,11 +6967,11 @@
],
"js": {
"OutbrainPermaLink": "",
- "OB_releaseVer": ""
+ "OB_releaseVer": "(.*)\\;version:\\1"
},
"icon": "Outbrain.png",
"script": "widgets\\.outbrain\\.com/outbrain\\.js",
- "website": "http://outbrain.com"
+ "website": "https://www.outbrain.com"
},
"Outlook Web App": {
"cats": [
@@ -7013,12 +7001,13 @@
19
],
"js": {
- "PDFJS": ""
+ "PDFJS": "",
+ "PDFJS.version": "(.*)\\;version:\\1"
},
"html": "<\\/div>\\s*\\s*<\\/div>",
"icon": "PDF.js.svg",
"url": "/web/viewer\\.html?file=[^&]\\.pdf",
- "website": "http://mozilla.github.io/pdf.js/"
+ "website": "https://mozilla.github.io/pdf.js/"
},
"PHP": {
"cats": [
@@ -7081,7 +7070,7 @@
"X-Pardot-Rsp": ""
},
"icon": "Pardot.png",
- "website": "http://pardot.com"
+ "website": "https://www.pardot.com"
},
"Parse.ly": {
"cats": [
@@ -7091,21 +7080,22 @@
"PARSELY": ""
},
"icon": "Parse.ly.png",
- "website": "http://parse.ly"
+ "website": "https://www.parse.ly"
},
"Paths.js": {
"cats": [
25
],
"script": "paths(?:\\.min)?\\.js",
- "website": "http://github.com/andreaferretti/paths-js"
+ "website": "https://github.com/andreaferretti/paths-js"
},
"Braintree": {
"cats": [
41
],
"js": {
- "braintree": ""
+ "Braintree": "",
+ "Braintree.version": "(.*)\\;version:\\1"
},
"icon": "Braintree.svg",
"website": "https://www.braintreepayments.com"
@@ -7115,7 +7105,7 @@
41
],
"js": {
- "adyen.encrypt.version": "(.*)\\;version:\\1\\;confidence:50"
+ "adyen.encrypt.version": "(.*)\\;version:\\1"
},
"icon": "Adyen.svg",
"website": "https://www.adyen.com"
@@ -7130,7 +7120,7 @@
"html": "
]+_s-xclick",
"icon": "PayPal.svg",
"script": "paypalobjects\\.com/js",
- "website": "http://paypal.com"
+ "website": "https://paypal.com"
},
"PencilBlue": {
"cats": [
@@ -7144,18 +7134,6 @@
"implies": "Node.js",
"website": "http://pencilblue.org"
},
- "Penguin": {
- "cats": [
- 18
- ],
- "js": {
- "penguin": ""
- },
- "html": "
]+?href=\"[^\"]+penguin(?:\\.min)?\\.css",
- "icon": "Penguin.svg",
- "script": "penguin(?:\\.min)?\\.js",
- "website": "http://penguin.docs.bqws.io"
- },
"Percussion": {
"cats": [
1
@@ -7187,20 +7165,6 @@
"icon": "Perl.png",
"website": "http://perl.org"
},
- "Petrojs": {
- "cats": [
- 12
- ],
- "js": {
- "petrojs": ""
- },
- "icon": "Petrojs.png",
- "script": [
- "petrojs(?:\\-|\\.)([\\d.]*\\d)[^/]*\\.js\\;version:\\1",
- "(?:/([\\d.]+)/)?petrojs(?:\\.min)?\\.js\\;version:\\1"
- ],
- "website": "http://petrojs.thepetronics.com"
- },
"Phabricator": {
"cats": [
13,
@@ -7222,10 +7186,11 @@
12
],
"js": {
- "Phaser": ""
+ "Phaser": "",
+ "Phaser.VERSION": "(.*)\\;version:\\1"
},
"icon": "Phaser.png",
- "website": "http://phaser.io"
+ "website": "https://phaser.io"
},
"Phenomic": {
"cats": [
@@ -7264,19 +7229,6 @@
"icon": "Phusion Passenger.png",
"website": "http://phusionpassenger.com"
},
- "Piano Solo": {
- "cats": [
- 43
- ],
- "js": {
- "PianoMedia": ""
- },
- "headers": {
- "Set-Cookie": "pianovisitkey"
- },
- "icon": "Piano Solo.png",
- "website": "http://www.pianomedia.com/products"
- },
"Pimcore": {
"cats": [
1,
diff --git a/src/icons/Nedstat.png b/src/icons/Nedstat.png
deleted file mode 100644
index 2ffb430b5445f88f5894318e261d484fc1ada30b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 331
zcmV-R0kr;!P)
ueqh>tvD>N5l
zMA^Ffdf$@u{s4i+15-nvd<+mDIJ?nntl`RWeRnCr
zF_vt~Cjp41M9)T~bozR_Q3LXsV-3wCl*|&5zU(|@6Ny(-!W8Am?|!UO-6@xQV1agE
z)|)@OCg;oh4XGc=Oqbwu`+etTwo`J1e-TZ0y1k)1r{;G%x(K0`%27fuo#UjJbUz0d
dSpEmD7AO9lLuQRP?^pl;002ovPDHLkV1j6ZlP>@O
diff --git a/src/icons/Neonclear.png b/src/icons/Neonclear.png
deleted file mode 100644
index 0e0dcc59c4933292d8afb1564c8e7250c0cc1691..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 4372
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
diff --git a/src/icons/Penguin.svg b/src/icons/Penguin.svg
deleted file mode 100644
index edf330b32..000000000
--- a/src/icons/Penguin.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/icons/Petrojs.png b/src/icons/Petrojs.png
deleted file mode 100644
index a44eaa35c08f864e125ba0e4d6626cc3eb967b9c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 480
zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyivoN?T%DGi{r~?TNKy+qFE@u6
z<-7vQKsDLiX@wb3jmruP|FzE1n*(Du2bJv0X*^QdcdBjHg(=IgE!=!({eee&Zoa+#
z>E|b)+vcq0)C0O!r6kBNn1O+li&sL@+SM;8udus!!lY^Q<}X;ZYW1c)drx1wa^>oq
z51+n>@BY#ZRDaUb#WBR<^wi7Og_;ZmSTA(!HFr7Kq$=RbD*EGp{AAW<)ySrDHaWBO
zvLH`a!9{FKmffDTCVX~kH^YiP&1tdB4$m8yZZR7;u*tf;zglV^Cx2
zaE>z)5csY2VM0^LotLIR-I)sR%FJ2V$}y>5wA5kR!N$+rOs?%GwAn7UK2qRedS5Gd
zsrJX2`3kd{INVuhaLKqHI8`#?$d6q`kr8(8$2MtS*MG5qIpcld1=a<;7eD6O)>hp*
lvBk%8jqBtoReQQ@7>zELl`Z|Z^E}W~44$rjF6*2Ung9WH%U%Eg
diff --git a/src/icons/Piano Solo.png b/src/icons/Piano Solo.png
deleted file mode 100644
index 1d4be842cde8d77a0c49d91804b574ff91e6e92f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1626
zcmV-g2BrClP)onUmy>if{B6*pxJbJwCM*`D;db!V6g|So_?Pm5bhgH)-Z^
zPqi6vNUD(=ZU#6=t4*U(VowsHj)Z84Al%5@uLMHOj1YA=QB|iJaUz&~FxD%{V3$$q
z`rLz>p(-R6)JzrQ%KSw@xQIX3EpsIKb*Ir^nS?DV`rfY%o
zd5We*5JBYnP*8(tN`gi#MpOg?qDBU#!B;;~=FxlaAjy)>YwtMoZj~oqo92(x5RxM9
zBL=aIBq}7T5seY&gk~PNv(#eW?vF7#Q08y%EHH7g$zm(Awl`(#a4$c8XcJGrewH5{
zt`gGHM{_QnoH`tchN)5y#*l0B{rlE&OS!<$U!7q8sRd5g!Fx~MZZlGLe0%#Sk8B;`
z^g^9qoobP0=?BPr4Yju}m!c;zRWt@dE9WztGPaNP^TR(+a(rfiAAI&U*7PKR;hg8i
z6Bl^$&?J3D&)2t&@|)x1%r*Nky*AM>gMxQtzS9M!N@6h*^2q8`*)mk%&o*q^dxxQ_$l)1151VAt)d`PBN@
zsq0k|cy;!xiV062ndR*hO=6OvF_LK1P8Y;TJ1BXGm_|Zw1XXsA3WY+8Rl@~#ZLILi
z!*f(yfjmYEiI64!eTN1jh7*Vet{a6eBakMfVpxnoL{&Q+FpJb$frjKSO
zh^BmV=X#t7QI!{tO!LBI=je5D^qear|ZeR@NQc%v-HNra}wB$ng}*AkGm(
zj&^-ojL7GnI+P!sX(UbraYDVBGgel%uP?EAw8Dm=GN~78&A^GNDsP;r@%J+=qA%j)
zYL%nIX`!SOAAY+X@;tD*Sb>Z4k85si%?7)rx%Uc@g-h)
zyG|)Fyn}XxYFn6Z7(Pw$8qxpJ?>#HI_-Js74UM
z%sNndA(-dflA>zwFO^>Ki9;+B^}{D$VOjY^ND9S{*oAJ%%+R>phB0E7EhNiB#RL9w
z#Z$%f+V>{=Ki^1K3p#V4GZ3zNbR!qC<>91p83Dy^;zqbUnoX4iGfbCDU^i
Date: Fri, 9 Feb 2018 02:41:56 +0100
Subject: [PATCH 011/175] Add a way to get mustachejs version (#2072)
This can be tested [here](https://en.wikipedia.org/wiki/Token_bucket).
---
src/apps.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/apps.json b/src/apps.json
index 7f10550db..fdd5bf26b 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -6269,6 +6269,9 @@
},
"icon": "Mustache.png",
"script": "mustache(?:\\.min)?\\.js",
+ "js": {
+ "Mustache.version": "(.*)\\;version:\\1"
+ },
"website": "https://mustache.github.io"
},
"MyBB": {
From ffc7538116a62eb8504cc24e712033a3a1545397 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Fri, 9 Feb 2018 02:42:13 +0100
Subject: [PATCH 012/175] Simplify mediawiki version detection (#2071)
Mediawiki versions can contain a lot of different letters, like
[`1.31.0-wmf.17`](view-source:https://en.wikipedia.org/wiki/Token_bucket),
so there is no need to check for numbers specifically.
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index fdd5bf26b..1736f26d4 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -5745,7 +5745,7 @@
"icon": "MediaWiki.png",
"implies": "PHP",
"meta": {
- "generator": "^MediaWiki ?([\\d.]+)$\\;version:\\1"
+ "generator": "^MediaWiki ?(.+)$\\;version:\\1"
},
"website": "http://www.mediawiki.org"
},
From 0a63ef2ddd3efbf2fee4d3cf6f980792f065dd57 Mon Sep 17 00:00:00 2001
From: Elbert Alias <77259+AliasIO@users.noreply.github.com>
Date: Fri, 9 Feb 2018 12:48:57 +1100
Subject: [PATCH 013/175] Build v5.4.7
---
src/apps.json | 46 ++++++++++++--------------
src/drivers/npm/package.json | 2 +-
src/drivers/webextension/js/driver.js | 10 +++---
src/drivers/webextension/manifest.json | 2 +-
4 files changed, 28 insertions(+), 32 deletions(-)
diff --git a/src/apps.json b/src/apps.json
index 1736f26d4..bb76aa837 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -656,7 +656,7 @@
22
],
"headers": {
- "Server": "(?:Apache(?:$|/([\\d.]+)|[^/-])|(?:^|\\b)HTTPD)\\;version:\\1"
+ "Server": "(?:Apache(?:$|/([\\d.]+)|[^/-])|(?:^|\b)HTTPD)\\;version:\\1"
},
"icon": "Apache.svg",
"website": "http://apache.org"
@@ -695,7 +695,7 @@
],
"headers": {
"Server": "^Apache-Coyote(/1\\.1)?$\\;version:\\1?4.1+:",
- "X-Powered-By": "\\bTomcat\\b(?:-([\\d.]+))?\\;version:\\1"
+ "X-Powered-By": "\bTomcat\b(?:-([\\d.]+))?\\;version:\\1"
},
"icon": "Apache Tomcat.svg",
"implies": "Java",
@@ -1244,7 +1244,7 @@
],
"html": [
"(?:",
+ "
Date: Thu, 15 Feb 2018 23:09:34 +0100
Subject: [PATCH 027/175] Add Koha (#2093)
* Add Koha
This should close #2048
* Add a js patterns potted by @gadcam
---
src/apps.json | 18 ++++++++++++++++++
src/icons/koha.png | Bin 0 -> 1744 bytes
2 files changed, 18 insertions(+)
create mode 100644 src/icons/koha.png
diff --git a/src/apps.json b/src/apps.json
index decf33854..307bdad32 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -5005,6 +5005,24 @@
},
"website": "https://www.kobimaster.com.tr"
},
+ "Koha": {
+ "cats": [
+ 21
+ ],
+ "meta": {
+ "generator": "^Koha ([\\d.]+)$\\;version:\\1"
+ },
+ "js": {
+ "KOHA": ""
+ },
+ "html": [
+ "",
+ "1~2)EP)#0LmJXm{JvZMTnobc@kMCD9*7B@r-cFfkF0n&1NzNQ6*Z$1^*-bi2HEckWDQ
z2sb&|+1Z^t_xtXdbI&>V3`N~-ciV)vWo4<+r;;0n*v$Gtc9GSC3+w@Qk!1k0aDLJq
z1w1P+g|hi^_^YPI$yfpGX^>HnkGhfFCZW!aUfAiu9|AZo
z9;x@U=is`QC8aZy`F?h|u=2rfY7%CvwvE_obfH!*3cEW}(F44Eqt7Qj&f_o_VX?6qnz{G(M$vJ*3
z%b!n`mxP@@<{1Tm=VjE~i;FqVD1(EuTX1k{9L!>cfDekLA3OMQE!`}W7Qi$Ahmr{3
zZII-kjhzfNIX!8T&4<5K6!?%pfc2zg;LBSC)wlGb8YO}cdWSyjl2ikBbfSey1uwYA
z?DsItB;vqVl%-OJb~*)a@U4;w06A;-vonZ--?&Rq{kk4hK9SB&jCq5L)vYult^oy)
zPo1XlnGegbZ3sU=6#PpE848#^tP%ovS-7esg%&3st`PH0MF#F
znVOt1@TH-h+npZ#nHmWI`JBY#uTdrVp`a7AM>KkCKU<;F+2;)HNW2#a9et!$0z`w~
zx;H}$&d*P31aBR{9|)T@3EIFpIVqIUg=iq)f{20q7ZTYCFm@rmsM%jzcOUQiX2+WK
z0Y_=r=Ep;D<3@-X%D@Oc1?Sg-Ji#A>L8`FyV`qH;%MnTso4u%D!z&r$9)XItb3F%`k3X$#ryskn_$gvrs<0w0+OMbpVt`v^sU*m09>r@f+=*8vpTM$gEB$LB1;R5+K0HB(5%|NiJ3
zn7Wy5{BOs&d@3_nD>A?mGR*W`jn+np1n^q@!OE0Z36#*8y3zaNRLg_k3T}yYk*mlG
z*A(cF=;np$0mTvE!zJCv=M&od>q5sOI{#DZy+*x*DHTb;MY4sAJ?OpgbEQ8_=Sm6Q
zJb=TAm#-483~}gI5*?JK5Bov{oC5XN%+AwFtpq>-+n8AL1D`zj-GZcNcN44!fVH}n
z?;O_ceUuEX7{YI}8?Q-(0COKIBVY6oVE2U9)kozjvw{2NBryBm2)>Aw>|nOJbX9zH
zCmc?ek$}87D?x@$E|e8a;FM1%JDAG-x|QLua>Igb$-x(aCkckPB)+s4cJtS=`5H-P
zV}5vPA^rLKkkacdfZmgf{(^4Co#`f#>j2E~(=|?}u)0-OX!Ek`
zOkVT`oEwQ_pYL>)1I-a0Ev>Q%FuR$luzLJ@gJi`>JfI`Oa9?c)3Zl-;nM|po8N1OV
zeA&9F>`nk*s`sEuN^Omg8Xf27Q5E|$rhz7$N~GK!EPa5wQyRFpD`4F|Z1dv3$0b3d
zjx7V|Yf$$_QxCpY*0OBNz3L}`<65pAuP8}j8;;K2YILDph7QyWj+Uv~Nso&*i^`@`
mcVx3WZe6QzgBPhKZ~p_Nkuu>Kj|QLs0000
Date: Thu, 15 Feb 2018 23:09:43 +0100
Subject: [PATCH 028/175] Change webpack's category (#2094)
This should close #1586
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index 307bdad32..23317dce8 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -12077,7 +12077,7 @@
},
"webpack": {
"cats": [
- 44
+ 19
],
"js": {
"webpackJsonp": ""
From c5bb9bc12c6edc10c0560886b6389b809db3ba1b Mon Sep 17 00:00:00 2001
From: TotPeRo
Date: Fri, 16 Feb 2018 00:10:02 +0200
Subject: [PATCH 029/175] fix analyzeMeta duplicate line (#2096)
in analyzeMeta function the r const is declared but never used and in next if is the same code.
---
src/wappalyzer.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/wappalyzer.js b/src/wappalyzer.js
index df7e3bd1e..7efe8cc7e 100644
--- a/src/wappalyzer.js
+++ b/src/wappalyzer.js
@@ -450,7 +450,7 @@ class Wappalyzer {
const r = new RegExp('(?:name|property)=["\']' + meta + '["\']', 'i');
- if ( new RegExp('(?:name|property)=["\']' + meta + '["\']', 'i').test(matches[0]) ) {
+ if (r.test(matches[0]) ) {
content = matches[0].match(/content=("|')([^"']+)("|')/i);
patterns[meta].forEach(pattern => {
From ccdb6949f7210db64cbd4053c0cf1fb3e8befec5 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Thu, 15 Feb 2018 23:10:17 +0100
Subject: [PATCH 030/175] Add mkdocs detection (#2097)
This can be verified [here](http://archerysec.info). It's a [pretty
popular]( https://github.com/mkdocs/mkdocs ) software.
---
src/apps.json | 10 ++++++++++
src/icons/mkdocs.png | Bin 0 -> 271 bytes
2 files changed, 10 insertions(+)
create mode 100644 src/icons/mkdocs.png
diff --git a/src/apps.json b/src/apps.json
index 23317dce8..9b34e7ee3 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -5525,6 +5525,16 @@
"icon": "mhonarc.png",
"website": "http://www.mhonarc.at"
},
+ "MkDocs": {
+ "cats": [
+ 4
+ ],
+ "meta": {
+ "generator": "^mkdocs-([\\d.]+)\\;version:\\1"
+ },
+ "icon": "mkdocs.png",
+ "website": "http://www.mkdocs.org/"
+ },
"MOBOTIX": {
"cats": [
39
diff --git a/src/icons/mkdocs.png b/src/icons/mkdocs.png
new file mode 100644
index 0000000000000000000000000000000000000000..279d831ff9ac7510f12dd7229dcaa48d83698b1d
GIT binary patch
literal 271
zcmV+q0r38bP)tAi~qK~0e~=~AMBXv=%>
zxV+b0y>R&8p6{IR@Lew3c=}jklY?LM{u8&cDiEi*&kA+}gA0^!hn)cDNzW5b^QQ0N
zB{F@D1B_BpIb(2!7QU0Fd4{Xt6;m8ymS@mSY7IXHJG#L&9zvpwMI`
Date: Fri, 16 Feb 2018 14:33:00 +1100
Subject: [PATCH 031/175] Asynchronous regex execution
---
src/drivers/npm/driver.js | 17 +--
src/drivers/webextension/js/content.js | 9 +-
src/drivers/webextension/js/driver.js | 8 +-
src/drivers/webextension/js/inject.js | 2 +-
src/wappalyzer.js | 172 +++++++++++++------------
5 files changed, 112 insertions(+), 96 deletions(-)
diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js
index 651b6d9c7..7b66838a1 100644
--- a/src/drivers/npm/driver.js
+++ b/src/drivers/npm/driver.js
@@ -131,15 +131,16 @@ class Driver {
html,
scripts,
js
- });
-
- const links = Array.from(browser.document.getElementsByTagName('a'))
- .filter(link => link.protocol === 'http:' || link.protocol === 'https:')
- .filter(link => link.hostname === this.origPageUrl.hostname)
- .filter(link => extensions.test(link.pathname))
- .map(link => { link.hash = ''; return url.parse(link.href) });
+ })
+ .then(() => {
+ const links = Array.from(browser.document.getElementsByTagName('a'))
+ .filter(link => link.protocol === 'http:' || link.protocol === 'https:')
+ .filter(link => link.hostname === this.origPageUrl.hostname)
+ .filter(link => extensions.test(link.pathname))
+ .map(link => { link.hash = ''; return url.parse(link.href) });
- return resolve(links);
+ return resolve(links);
+ });
});
}
diff --git a/src/drivers/webextension/js/content.js b/src/drivers/webextension/js/content.js
index e60df6894..36d920175 100644
--- a/src/drivers/webextension/js/content.js
+++ b/src/drivers/webextension/js/content.js
@@ -3,11 +3,12 @@
if ( typeof browser !== 'undefined' && typeof document.body !== 'undefined' ) {
try {
- var html = new XMLSerializer().serializeToString(document);
+ var html = new XMLSerializer().serializeToString(document).split('\n');
- if ( html.length > 100 * 1024 ) {
- html = html.substring(0, 50 * 1024) + html.substring(html.length - 50 * 1024, html.length);
- }
+ html = html
+ .slice(0, 1000).concat(html.slice(html.length - 1000))
+ .map(line => line.substring(0, 1000))
+ .join('\n');
const scripts = Array.prototype.slice
.apply(document.scripts)
diff --git a/src/drivers/webextension/js/driver.js b/src/drivers/webextension/js/driver.js
index bce13cb97..c81f154c5 100644
--- a/src/drivers/webextension/js/driver.js
+++ b/src/drivers/webextension/js/driver.js
@@ -103,10 +103,10 @@ getOption('version')
getOption('upgradeMessage', true)
.then(upgradeMessage => {
if ( upgradeMessage ) {
- // openTab({
- // url: wappalyzer.config.websiteURL + 'upgraded?v' + version,
- // background: true
- // });
+ openTab({
+ url: wappalyzer.config.websiteURL + 'upgraded?v' + version,
+ background: true
+ });
}
});
}
diff --git a/src/drivers/webextension/js/inject.js b/src/drivers/webextension/js/inject.js
index 26fc00de6..55ac2be4d 100644
--- a/src/drivers/webextension/js/inject.js
+++ b/src/drivers/webextension/js/inject.js
@@ -20,7 +20,7 @@
for ( let index in patterns[appName][chain] ) {
const value = detectJs(chain);
- if ( value ) {
+ if ( value && patterns[appName][chain].hasOwnProperty(index) ) {
js[appName][chain][index] = value;
}
}
diff --git a/src/wappalyzer.js b/src/wappalyzer.js
index df7e3bd1e..54e2afcb3 100644
--- a/src/wappalyzer.js
+++ b/src/wappalyzer.js
@@ -38,7 +38,13 @@ class Wappalyzer {
this.driver.log(message, source || '', type || 'debug');
}
+ asyncForEach(iterable, iterator) {
+ return Promise.all(iterable.map(item => new Promise(resolve => setTimeout(() => resolve(iterator(item)), 1))));
+ }
+
analyze(url, data, context) {
+ const promises = [];
+
var apps = {};
if ( typeof data.html !== 'string' ) {
@@ -62,52 +68,55 @@ class Wappalyzer {
this.analyzeUrl(app, url);
if ( data.html ) {
- this.analyzeHtml(app, data.html);
- this.analyzeMeta(app, data.html);
+ promises.push(this.analyzeHtml(app, data.html));
+ promises.push(this.analyzeMeta(app, data.html));
}
if ( data.scripts ) {
- this.analyzeScripts(app, data.scripts);
+ promises.push(this.analyzeScripts(app, data.scripts));
}
if ( data.headers ) {
- this.analyzeHeaders(app, data.headers);
+ promises.push(this.analyzeHeaders(app, data.headers));
}
if ( data.env ) {
- this.analyzeEnv(app, data.env);
- }
-
- if ( data.robotsTxt ) {
- this.analyzeRobotsTxt(app, data.robotsTxt);
+ promises.push(this.analyzeEnv(app, data.env));
}
})
if ( data.js ) {
Object.keys(data.js).forEach(appName => {
- this.analyzeJs(apps[appName], data.js[appName]);
+ promises.push(this.analyzeJs(apps[appName], data.js[appName]));
});
}
- Object.keys(apps).forEach(appName => {
- var app = apps[appName];
+ return new Promise(resolve => {
+ Promise.all(promises)
+ .then(() => {
+ Object.keys(apps).forEach(appName => {
+ var app = apps[appName];
- if ( !app.detected || !app.getConfidence() ) {
- delete apps[app.name];
- }
- });
+ if ( !app.detected || !app.getConfidence() ) {
+ delete apps[app.name];
+ }
+ });
- this.resolveExcludes(apps);
- this.resolveImplies(apps, url.canonical);
+ this.resolveExcludes(apps);
+ this.resolveImplies(apps, url.canonical);
- this.cacheDetectedApps(apps, url.canonical);
- this.trackDetectedApps(apps, url, language);
+ this.cacheDetectedApps(apps, url.canonical);
+ this.trackDetectedApps(apps, url, language);
- if ( Object.keys(apps).length ) {
- this.log(Object.keys(apps).length + ' apps detected: ' + Object.keys(apps).join(', ') + ' on ' + url.canonical, 'core');
- }
+ if ( Object.keys(apps).length ) {
+ this.log(Object.keys(apps).length + ' apps detected: ' + Object.keys(apps).join(', ') + ' on ' + url.canonical, 'core');
+ }
+
+ this.driver.displayApps(this.detected[url.canonical], { language }, context);
- this.driver.displayApps(this.detected[url.canonical], { language }, context);
+ resolve();
+ });
+ });
}
/**
@@ -393,13 +402,15 @@ class Wappalyzer {
analyzeUrl(app, url) {
var patterns = this.parsePatterns(app.props.url);
- if ( patterns.length ) {
- patterns.forEach(pattern => {
- if ( pattern.regex.test(url.canonical) ) {
- this.addDetected(app, pattern, 'url', url.canonical);
- }
- });
+ if ( !patterns.length ) {
+ return Promise.resolve();
}
+
+ return this.asyncForEach(patterns, pattern => {
+ if ( pattern.regex.test(url.canonical) ) {
+ this.addDetected(app, pattern, 'url', url.canonical);
+ }
+ });
}
/**
@@ -408,13 +419,15 @@ class Wappalyzer {
analyzeHtml(app, html) {
var patterns = this.parsePatterns(app.props.html);
- if ( patterns.length ) {
- patterns.forEach(pattern => {
- if ( pattern.regex.test(html) ) {
- this.addDetected(app, pattern, 'html', html);
- }
- });
+ if ( !patterns.length ) {
+ return Promise.resolve();
}
+
+ return this.asyncForEach(patterns, pattern => {
+ if ( pattern.regex.test(html) ) {
+ this.addDetected(app, pattern, 'html', html);
+ }
+ });
}
/**
@@ -423,67 +436,75 @@ class Wappalyzer {
analyzeScripts(app, scripts) {
var patterns = this.parsePatterns(app.props.script);
- if ( patterns.length ) {
- patterns.forEach(pattern => {
- var match;
+ if ( !patterns.length ) {
+ return Promise.resolve();
+ }
- scripts.forEach(uri => {
- if ( pattern.regex.test(uri) ) {
- this.addDetected(app, pattern, 'script', uri);
- }
- });
+ return this.asyncForEach(patterns, pattern => {
+ var match;
+
+ scripts.forEach(uri => {
+ if ( pattern.regex.test(uri) ) {
+ this.addDetected(app, pattern, 'script', uri);
+ }
});
- }
+ });
}
/**
* Analyze meta tag
*/
analyzeMeta(app, html) {
- var regex = /]+>/ig;
- var patterns = this.parsePatterns(app.props.meta);
+ const regex = /]+>/ig;
+ const patterns = this.parsePatterns(app.props.meta);
+ const promises = [];
+
var content = '';
var matches = [];
while ( patterns && ( matches = regex.exec(html) ) ) {
for ( var meta in patterns ) {
-
const r = new RegExp('(?:name|property)=["\']' + meta + '["\']', 'i');
- if ( new RegExp('(?:name|property)=["\']' + meta + '["\']', 'i').test(matches[0]) ) {
+ if ( r.test(matches[0]) ) {
content = matches[0].match(/content=("|')([^"']+)("|')/i);
- patterns[meta].forEach(pattern => {
+ promises.push(this.asyncForEach(patterns[meta], pattern => {
if ( content && content.length === 4 && pattern.regex.test(content[2]) ) {
this.addDetected(app, pattern, 'meta', content[2], meta);
}
- });
+ }));
}
}
}
+
+ return promises ? Promise.all(promises) : Promise.resolve();
}
/**
* analyze response headers
*/
analyzeHeaders(app, headers) {
- var patterns = this.parsePatterns(app.props.headers);
+ const patterns = this.parsePatterns(app.props.headers);
+ const promises = [];
if ( headers ) {
Object.keys(patterns).forEach(headerName => {
- patterns[headerName].forEach(pattern => {
+ this.asyncForEach(patterns[headerName], pattern => {
headerName = headerName.toLowerCase();
if ( headerName in headers ) {
- headers[headerName].forEach(headerValue => {
+ promises.push(headers[headerName].forEach(headerValue => {
if ( pattern.regex.test(headerValue) ) {
this.addDetected(app, pattern, 'headers', headerValue, headerName);
}
- });
+ }));
}
});
});
}
+
+ return promises ? Promise.all(promises) : Promise.resolve();
}
/**
@@ -493,45 +514,36 @@ class Wappalyzer {
var patterns = this.parsePatterns(app.props.env);
if ( patterns.length ) {
- patterns.forEach(pattern => {
- Object.keys(envs).forEach(env => {
- if ( pattern.regex.test(envs[env]) ) {
- this.addDetected(app, pattern, 'env', envs[env]);
- }
- })
- });
+ return Promise.resolve();
}
+
+ return this.asyncForEach(patterns, pattern => {
+ Object.keys(envs).forEach(env => {
+ if ( pattern.regex.test(envs[env]) ) {
+ this.addDetected(app, pattern, 'env', envs[env]);
+ }
+ })
+ });
}
/**
* Analyze JavaScript variables
*/
analyzeJs(app, results) {
+ const promises = [];
+
Object.keys(results).forEach(string => {
- Object.keys(results[string]).forEach(index => {
+ promises.push(this.asyncForEach(Object.keys(results[string]), index => {
const pattern = this.jsPatterns[app.name][string][index];
const value = results[string][index];
- if ( pattern.regex.test(value) ) {
+ if ( pattern && pattern.regex.test(value) ) {
this.addDetected(app, pattern, 'js', value);
}
- });
+ }));
});
- }
-
- /**
- * Analyze robots.txt
- */
- analyzeRobotsTxt(app, robotsTxt) {
- var patterns = this.parsePatterns(app.props.robotsTxt);
- if ( patterns.length ) {
- patterns.forEach(pattern => {
- if ( pattern.regex.test(robotsTxt) ) {
- this.addDetected(app, pattern, 'robotsTxt', robotsTxt);
- }
- });
- }
+ return promises ? Promise.all(promises) : Promise.resolve();
}
/**
@@ -540,6 +552,8 @@ class Wappalyzer {
addDetected(app, pattern, type, value, key) {
app.detected = true;
+ console.log(app);
+
// Set confidence level
app.confidence[type + ' ' + ( key ? key + ' ' : '' ) + pattern.regex] = pattern.confidence || 100;
From f35c7ff3e721c445e66f61b74b046ba506024cb4 Mon Sep 17 00:00:00 2001
From: Elbert Alias <77259+AliasIO@users.noreply.github.com>
Date: Fri, 23 Feb 2018 14:34:45 +1100
Subject: [PATCH 032/175] Add robots.txt queuing
---
src/drivers/npm/package.json | 2 +-
src/drivers/webextension/js/driver.js | 56 ++++++++++++++------------
src/drivers/webextension/js/iframe.js | 2 +-
src/drivers/webextension/manifest.json | 2 +-
src/wappalyzer.js | 9 ++---
5 files changed, 37 insertions(+), 34 deletions(-)
diff --git a/src/drivers/npm/package.json b/src/drivers/npm/package.json
index f6b5cf37c..473839445 100644
--- a/src/drivers/npm/package.json
+++ b/src/drivers/npm/package.json
@@ -2,7 +2,7 @@
"name": "wappalyzer",
"description": "Uncovers the technologies used on websites",
"homepage": "https://github.com/AliasIO/Wappalyzer",
- "version": "5.4.7",
+ "version": "5.4.8",
"author": "Elbert Alias",
"license": "GPL-3.0",
"repository": {
diff --git a/src/drivers/webextension/js/driver.js b/src/drivers/webextension/js/driver.js
index 198d67074..c7d550537 100644
--- a/src/drivers/webextension/js/driver.js
+++ b/src/drivers/webextension/js/driver.js
@@ -11,6 +11,7 @@ var tabCache = {};
var headersCache = {};
var categoryOrder = [];
var options = {};
+var robotsTxtQueue = {};
browser.tabs.onRemoved.addListener(tabId => {
tabCache[tabId] = null;
@@ -287,7 +288,13 @@ wappalyzer.driver.displayApps = (detected, meta, context) => {
* Fetch and cache robots.txt for host
*/
wappalyzer.driver.getRobotsTxt = (host, secure = false) => {
- return new Promise((resolve, reject) => {
+ if ( robotsTxtQueue.hasOwnProperty(host) ) {
+ wappalyzer.log('robotTxt fetch already in queue');
+
+ return robotsTxtQueue[host];
+ }
+
+ robotsTxtQueue[host] = new Promise((resolve, reject) => {
getOption('tracking', true)
.then(tracking => {
if ( !tracking ) {
@@ -299,34 +306,31 @@ wappalyzer.driver.getRobotsTxt = (host, secure = false) => {
robotsTxtCache = robotsTxtCache || {};
if ( host in robotsTxtCache ) {
- resolve(robotsTxtCache[host]);
- } else {
- const url = 'http' + ( secure ? 's' : '' ) + '://' + host + '/robots.txt';
-
- fetch('http' + ( secure ? 's' : '' ) + '://' + host + '/robots.txt')
- .then(response => {
- if ( !response.ok ) {
- if ( response.status === 404 ) {
- return '';
- } else {
- throw 'GET ' + response.url + ' was not ok';
- }
- }
-
- return response.text();
- })
- .then(robotsTxt => {
- robotsTxtCache[host] = wappalyzer.parseRobotsTxt(robotsTxt);
-
- setOption('robotsTxtCache', robotsTxtCache);
-
- resolve(robotsTxtCache[host]);
- })
- .catch(reject);
+ return resolve(robotsTxtCache[host]);
}
+
+ const timeout = setTimeout(() => resolve([]), 3000);
+
+ fetch('http' + ( secure ? 's' : '' ) + '://' + host + '/robots.txt', { redirect: 'follow' })
+ .then(response => {
+ clearTimeout(timeout);
+
+ return response.ok ? response.text() : '';
+ })
+ .then(robotsTxt => {
+ robotsTxtCache[host] = wappalyzer.parseRobotsTxt(robotsTxt);
+
+ setOption('robotsTxtCache', robotsTxtCache);
+
+ resolve(robotsTxtCache[host]);
+ })
+ .catch(err => resolve([]));
});
});
- });
+ })
+ .finally(() => delete robotsTxtQueue[host]);
+
+ return robotsTxtQueue[host];
};
/**
diff --git a/src/drivers/webextension/js/iframe.js b/src/drivers/webextension/js/iframe.js
index 2370a3eda..883ebea71 100644
--- a/src/drivers/webextension/js/iframe.js
+++ b/src/drivers/webextension/js/iframe.js
@@ -890,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 = '1511804838-25881-9878-26947-14879';
+ var POST_MSG_ID = '1519242200-10756-12873-1462-13403';
var AD_SERVER_RE = new RegExp('^(google_ads_iframe|oas_frame|atwAdFrame)');
function getPageTags(doc) {
diff --git a/src/drivers/webextension/manifest.json b/src/drivers/webextension/manifest.json
index de6e15489..6accf3520 100644
--- a/src/drivers/webextension/manifest.json
+++ b/src/drivers/webextension/manifest.json
@@ -4,7 +4,7 @@
"author": "Elbert Alias",
"homepage_url": "https://www.wappalyzer.com",
"description": "Identify web technologies",
- "version": "5.4.7",
+ "version": "5.4.8",
"default_locale": "en",
"manifest_version": 2,
"icons": {
diff --git a/src/wappalyzer.js b/src/wappalyzer.js
index d2937d212..d95f90154 100644
--- a/src/wappalyzer.js
+++ b/src/wappalyzer.js
@@ -19,7 +19,6 @@ class Wappalyzer {
this.categories = {};
this.driver = {};
this.jsPatterns = {};
-
this.detected = {};
this.hostnameCache = {};
this.adCache = [];
@@ -139,12 +138,12 @@ class Wappalyzer {
this.driver.getRobotsTxt(parsed.host, parsed.protocol === 'https:')
.then(robotsTxt => {
- if (robotsTxt.some(disallowedPath => parsed.pathname.indexOf(disallowedPath) === 0)) {
+ if ( robotsTxt.some(disallowedPath => parsed.pathname.indexOf(disallowedPath) === 0) ) {
return reject();
- } else {
- return resolve();
}
- });
+
+ return resolve();
+ }, () => resolve());
});
};
From 8e1bfb4e453a4a5a37265e6cbf5719f2eef9036b Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:03:22 +0100
Subject: [PATCH 033/175] Add a category for static site generators (#2092)
---
src/apps.json | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/src/apps.json b/src/apps.json
index 9b34e7ee3..4a83bc73b 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -4037,7 +4037,7 @@
},
"Hexo": {
"cats": [
- 11
+ 57
],
"icon": "Hexo.png",
"html": [
@@ -4163,8 +4163,7 @@
},
"Hugo": {
"cats": [
- 1,
- 11
+ 57
],
"icon": "Hugo.png",
"meta": {
@@ -4660,8 +4659,7 @@
},
"Jekyll": {
"cats": [
- 1,
- 11
+ 57
],
"icon": "Jekyll.png",
"html": [
@@ -7247,8 +7245,7 @@
},
"Phenomic": {
"cats": [
- 1,
- 11
+ 57
],
"html": [
"<[^>]+id=\"phenomic(?:root)?\""
@@ -7262,8 +7259,7 @@
},
"PHPoole": {
"cats": [
- 1,
- 11
+ 57
],
"icon": "PHPoole.png",
"meta": {
@@ -12511,6 +12507,10 @@
"56": {
"name": "Cryptominer",
"priority": 8
+ },
+ "57": {
+ "name": "Static Site Generator",
+ "priority": 1
}
}
}
From 32b5408aa5319203c9886b665d79310f35490706 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:03:32 +0100
Subject: [PATCH 034/175] Add a way to get polymer's version (#2101)
This can be tested [here](https://www.youtube.com/watch?v=-8cOWt7lvUQ)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index 4a83bc73b..a64350ee1 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -7434,7 +7434,7 @@
12
],
"js": {
- "Polymer": ""
+ "Polymer.version": "(.*)\\;version:\\1"
},
"html": "(?:]+|]+rel=\"import\"[^>]+/polymer\\.html\")",
"icon": "Polymer.png",
From 89ed918bc0b039c10d1f76b393d0dbc12ad56edd Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:03:41 +0100
Subject: [PATCH 035/175] Tighten a bit the ExpressionEngine regexp (#2102)
This can be tested [here](http://shamelessmag.com/blog/entry/adversary-making-a-statement-in-the-industrial-mu/)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index a64350ee1..c151205b0 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -2911,7 +2911,7 @@
1
],
"headers": {
- "Set-Cookie": "(?:exp_last_activity|exp_tracker)"
+ "Set-Cookie": "^exp_(?:last_activity|tracker|csrf_token)"
},
"icon": "ExpressionEngine.png",
"implies": "PHP",
From 687dedce1be661f3950870fa7a8366b1b1a031af Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:03:49 +0100
Subject: [PATCH 036/175] Add a way to get algolia's version (#2103)
This can be tested [here](https://blog.heroku.com/ruby-2-4-features-hashes-integers-rounding#better-hashes).
Please note that `algoliasearch` and `AlgoliaSearch` are both present on
the webpage
---
src/apps.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index c151205b0..7b6182483 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -519,7 +519,8 @@
29
],
"js": {
- "AlgoliaSearch": ""
+ "AlgoliaSearch": "",
+ "algoliasearch.version": "(.*)\\;version:\\1"
},
"icon": "Algolia Realtime Search.svg",
"website": "http://www.algolia.com"
From ed81e2a634c9eae6bd7a96d3339386ca99ff6ece Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:04:03 +0100
Subject: [PATCH 037/175] Add awesomplete (#2105)
This can be tested [here](https://leaverou.github.io/awesomplete/) or [here](https://links.imirhil.fr/)
The library is [pretty popular](https://github.com/LeaVerou/awesomplete), with almost 6000 stars
---
src/apps.json | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/apps.json b/src/apps.json
index 7b6182483..6c145e8a2 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -952,6 +952,17 @@
"script": "^https?://edge\\.avangate\\.net/",
"website": "http://avangate.com"
},
+ "Awesomplete": {
+ "cats": [
+ 29
+ ],
+ "js": {
+ "awesomplete": ""
+ },
+ "html": "]+href=\"[^>]*awesomplete(?:\\.min)?\\.css",
+ "script": "/awesomplete\\.js(?:$|\\?)",
+ "website": "https://leaverou.github.io/awesomplete/"
+ },
"BEM": {
"cats": [
12
From 8936227e6008b95b6b6a25a3d18a17e85dab637b Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:05:17 +0100
Subject: [PATCH 039/175] Add a way to get socket.io's version (#2111)
This can be tested [here](https://cloud.scaleway.com/#/)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index 6c145e8a2..ef5ad0a3f 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -8880,7 +8880,7 @@
12
],
"js": {
- "io": "\\;confidence:20"
+ "io.version": "(.*)\\;version:\\1\\;confidence:20"
},
"icon": "Socket.io.png",
"implies": "Node.js",
From 0e1dd2986a97ad05309aab8acce334ca605401b0 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:05:24 +0100
Subject: [PATCH 040/175] Add the next stable release of debian (#2112)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index ef5ad0a3f..a6189cbc9 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -2297,7 +2297,7 @@
],
"headers": {
"Server": "Debian",
- "X-Powered-By": "(?:Debian|dotdeb|(potato|woody|sarge|etch|lenny|squeeze|wheezy|jessie|stretch|sid))\\;version:\\1"
+ "X-Powered-By": "(?:Debian|dotdeb|(potato|woody|sarge|etch|lenny|squeeze|wheezy|jessie|stretch|buster|sid))\\;version:\\1"
},
"icon": "Debian.png",
"website": "http://debian.org"
From 7ac29fac536f347cb1fa1b37c8da2cdd22403dd6 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:12:37 +0100
Subject: [PATCH 041/175] Add a way to get requirejs version (#2114)
This can be tested [here](https://rougie.fr/)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index a6189cbc9..0c67cb636 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -7954,7 +7954,7 @@
12
],
"js": {
- "requirejs": ""
+ "requirejs.version": "(.*)\\;version:\\1"
},
"icon": "RequireJS.png",
"script": "require.*\\.js",
From a921a1b8781324ee3b8a9891cf5a70e69af8605a Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:12:49 +0100
Subject: [PATCH 042/175] Add a way to get tweenmax's version (#2115)
This can be tested [here](https://www.kravmagaparis12.com/)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index 0c67cb636..3bfc2aaab 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -9721,7 +9721,7 @@
12
],
"js": {
- "TweenMax": ""
+ "TweenMax.version": "(.*)\\;version:\\1"
},
"icon": "TweenMax.png",
"script": "TweenMax(?:\\.min)?\\.js",
From 93d23283e59f19192e1ee96c055584ff561157fe Mon Sep 17 00:00:00 2001
From: Max Schmitt
Date: Sat, 10 Mar 2018 05:13:02 +0100
Subject: [PATCH 043/175] React: Fixed version detection (#2117)
* React: Fixed version detection
Example sites which are using React:
- Slack
- Dropbox
- Imgur
On all it works fine with PascalCase "React".
* React: Readded old version detection
* React: Removed unnecessary js check
---
src/apps.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/apps.json b/src/apps.json
index 3bfc2aaab..31a18772c 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -7888,8 +7888,8 @@
12
],
"js": {
- "React": "",
- "react.version": "(.*)\\;version:\\1"
+ "react.version": "(.*)\\;version:\\1",
+ "React.version": "(.*)\\;version:\\1"
},
"html": "<[^>]+data-react",
"icon": "React.png",
From d2260af0f2b525c26bca7db9a8a6e1da8b87d125 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:13:37 +0100
Subject: [PATCH 044/175] Add a way to get XRegExp's version (#2120)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index 31a18772c..b8f79af7a 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -10724,7 +10724,7 @@
12
],
"js": {
- "XRegExp": ""
+ "XRegExp.version": "(.*)\\;version:\\1"
},
"icon": "XRegExp.png",
"script": [
From 3a19eeeb0d948fd181e77adf307531c14cab19e2 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:13:50 +0100
Subject: [PATCH 045/175] Improve Concerte5 handling (#2121)
- Better version detection (the `ab` thingy looks like a bug to me)
- Tighten the regexp for the generator
- Tighten the `script` thingy
- The website is using https
---
src/apps.json | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/apps.json b/src/apps.json
index b8f79af7a..101783c49 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -1908,10 +1908,10 @@
"icon": "Concrete5.png",
"implies": "PHP",
"meta": {
- "generator": "concrete5 - ([\\d.ab]+)\\;version:\\1"
+ "generator": "^concrete5 - ([\\d.]+)$\\;version:\\1"
},
- "script": "concrete/js/",
- "website": "http://concrete5.org"
+ "script": "/concrete/js/",
+ "website": "https://concrete5.org"
},
"Connect": {
"cats": [
From 46b6b2975530e2de9f3dcaa265f473ec55be2458 Mon Sep 17 00:00:00 2001
From: toastal
Date: Sat, 10 Mar 2018 11:14:55 +0700
Subject: [PATCH 046/175] Using `reduce` to remove extra iterations (#2122)
* Using `reduce` to not iterate so much
* Remove the Array.from as well
---
src/drivers/npm/driver.js | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/drivers/npm/driver.js b/src/drivers/npm/driver.js
index 7b66838a1..d0a593bc0 100644
--- a/src/drivers/npm/driver.js
+++ b/src/drivers/npm/driver.js
@@ -133,11 +133,17 @@ class Driver {
js
})
.then(() => {
- const links = Array.from(browser.document.getElementsByTagName('a'))
- .filter(link => link.protocol === 'http:' || link.protocol === 'https:')
- .filter(link => link.hostname === this.origPageUrl.hostname)
- .filter(link => extensions.test(link.pathname))
- .map(link => { link.hash = ''; return url.parse(link.href) });
+ const links = Array.prototype.reduce.call(
+ browser.document.getElementsByTagName('a'),
+ (acc, link) => {
+ if (link.protocol.match(/https?:/) || link.hostname === this.origPageUrl.hostname || extensions.test(link.pathname)) {
+ link.hash = '';
+ acc.push(url.parse(link.href));
+ }
+ return acc;
+ },
+ []
+ );
return resolve(links);
});
From 323bd145bd737f3c26f907fa72a52fdbd4631b64 Mon Sep 17 00:00:00 2001
From: Camille Barneaud <1693643+gadcam@users.noreply.github.com>
Date: Sat, 10 Mar 2018 05:15:29 +0100
Subject: [PATCH 047/175] Add guidelines when opening an issue (#2123)
Based on an idea of @Yoginth.
---
issue_template.md | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
create mode 100644 issue_template.md
diff --git a/issue_template.md b/issue_template.md
new file mode 100644
index 000000000..4e55ba0c4
--- /dev/null
+++ b/issue_template.md
@@ -0,0 +1,16 @@
+
+
+**Do you want to request a *feature*, a *new application detection* or report a *bug*?**
+
+**Is your issue about WebExtension driver (Chrome & Firefox), the website, the NPM driver or the bookmarklet ?**
+
+**What is the current behavior ?**
+
+**If the current behavior is a bug, please provide the steps to reproduce and if possible a demo of the problem.**
+
+**What is the expected behavior ?**
+
+**Which versions of Wappalyzer, and which browser / OS are affected by this issue ? Did this work in previous versions ?**
From fb6f1f566527bd3074777f70d78a687268ddad96 Mon Sep 17 00:00:00 2001
From: Gonzalo Rizzo
Date: Sat, 10 Mar 2018 01:16:03 -0300
Subject: [PATCH 048/175] Add Genexus detection (#2124)
* Add Genexus detection
* Fix genexus image size
* Add Miscellaneous category to Genexus
* Use /gxp\\.js as script regexp
* Remove gx js global to detect Genexus
---
src/apps.json | 12 ++++++++++++
src/icons/genexus.png | Bin 0 -> 4522 bytes
2 files changed, 12 insertions(+)
create mode 100644 src/icons/genexus.png
diff --git a/src/apps.json b/src/apps.json
index 101783c49..488f77d95 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -12293,6 +12293,18 @@
},
"icon": "Woosa.png",
"website": "https://woosa.nl"
+ },
+ "Genexus": {
+ "cats": [
+ 18, 19
+ ],
+ "icon": "genexus.png",
+ "website": "https://www.genexus.com",
+ "js": {
+ "gx.evt": ""
+ },
+ "html": "<[^>]+class=\"gxp-page\"",
+ "script": "/gxp\\.js"
}
},
"categories": {
diff --git a/src/icons/genexus.png b/src/icons/genexus.png
new file mode 100644
index 0000000000000000000000000000000000000000..b4525d4cfd322a565e8a660d455e6303eed99755
GIT binary patch
literal 4522
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
IM6N<$f@ZZ{2LJ#7
literal 0
HcmV?d00001
From af9af7d1c83d2ceac6f606321eef1cd040da0abb Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:18:03 +0100
Subject: [PATCH 049/175] Add a way to get Stripe's version (#2125)
This can be tested [here](https://stripe.com/atlas/guides/business-of-saas)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index 488f77d95..893b10e31 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -9183,7 +9183,7 @@
41
],
"js": {
- "Stripe": ""
+ "Stripe.version": "(.*)\\;version:\\1"
},
"html": "]+data-stripe",
"icon": "Stripe.png",
From f38673952246214c0d850d7d04001c59c7a0a2b9 Mon Sep 17 00:00:00 2001
From: wpCache
Date: Sat, 10 Mar 2018 06:20:14 +0200
Subject: [PATCH 050/175] update wpCache (#2110)
* update wpCache
New version 2.0 Fix error browser chrome - firefox
* change implies
"implies": [
"WordPress",
"PHP"
],
---
src/apps.json | 36 ++++++++++++++++++++----------------
1 file changed, 20 insertions(+), 16 deletions(-)
diff --git a/src/apps.json b/src/apps.json
index 893b10e31..c3be3c89d 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -10317,6 +10317,26 @@
"icon": "WHMCS.png",
"website": "http://www.whmcs.com"
},
+ "wpCache": {
+ "cats": [
+ 23
+ ],
+ "headers": {
+ "X-Powered-By": "wpCache(?:/([\\d.]+))?\\;version:\\1"
+ },
+ "html": "
+
+
From 3a3a2a38d5020da88df4f5da8569bdd0828e9fd4 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:35:09 +0100
Subject: [PATCH 068/175] Add a way to get leaflet's version (#2133)
This can be tested [here](http://umap.openstreetmap.fr/en/)
---
src/apps.json | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/apps.json b/src/apps.json
index e2efe05c2..5b224dee1 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -5230,6 +5230,11 @@
"cats": [
35
],
+ "js": {
+ "L.version": "(.*)\\;version:\\1\\;confidence:0",
+ "L.PosAnimation": "",
+ "L.DistanceGrid": ""
+ },
"icon": "Leaflet.png",
"script": "leaflet.*\\.js",
"website": "http://leafletjs.com"
From 4c6df64a4cd5f2d131c1f068d2264503d8bc7e42 Mon Sep 17 00:00:00 2001
From: Cameron Tod
Date: Sat, 10 Mar 2018 17:35:27 +1300
Subject: [PATCH 069/175] Add Acquia Cloud PaaS hosting platform. (#2131)
---
src/apps.json | 11 +++++++++++
src/icons/acquia-cloud.png | Bin 0 -> 2862 bytes
2 files changed, 11 insertions(+)
create mode 100644 src/icons/acquia-cloud.png
diff --git a/src/apps.json b/src/apps.json
index 5b224dee1..766789c3e 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -120,6 +120,17 @@
"icon": "Accelerated-Mobile-Pages.svg",
"website": "https://www.ampproject.org"
},
+ "Acquia Cloud": {
+ "cats": [
+ "22"
+ ],
+ "headers": {
+ "X-AH-Environment": "^\\w+$"
+ },
+ "icon": "acquia-cloud.png",
+ "implies": "Drupal\\;confidence:95",
+ "website": "https://www.acquia.com/"
+ },
"Amber": {
"cats": [
18,
diff --git a/src/icons/acquia-cloud.png b/src/icons/acquia-cloud.png
new file mode 100644
index 0000000000000000000000000000000000000000..d85843e9af6419f0b03c600f0ed8abda7ad3f230
GIT binary patch
literal 2862
zcmZ`)30Mb5LLs8K><5+F)zT}aq*)EJ&
zW{-EqV=x%|P(hFgJOhw>iZvKZ>a(7J2UaCo7Ko|7=F$rSTZLe?3WKqmh1^)ofnrAt
z#=2A*Emn)e!#MGB87($J9w(t`WD0=BV7M9%aAgv8EKws%N>*_+{v;H^0X~wZlZYrp
zy}_R(4i^&na;1dGrY)o~NIX1|NaQLL5;>xvkTE)l{7LK7Y6XW*PfJUqrLkyo<+pU7
z#fuly8B98p=?xIxs!hr2SdDkG%H1OJUMEPRidRY%YNUNaeFMiAMSv8d9;)(9N*SkqdT|6E07X
zCT6r>N+n=>kxk_JaOwY-n~3MjWeTN4r9$xRG5q-4M7&6%k|(7g@+*_2
zY94cpG9f*YwfbY7=lh;BJ~@#f{uE(+avT9U1`fJU;vlI^l8mlp(Lyf$lZA;yzC1~;
zT%m}KmmvFvQpTkwqR}?1Ki6hlVT{P7BX9D!H{0^rpjq(U@bKV7-+zNV{F?pc-(fIT
zhlOF$!RQAH1~bNN#$=)+3}ayPN*II}1AtuwW@Z(&vWm>CR+TZ|>4_Kh
zE^wFgiHEc!H@x7-)RMbjoHTmDU1a!?d$rEJy2q`w)2+6b2RKnKj^eFiiI6bdq$EUQ36BLE;e
z01T=~Q{W>oq!HpEKI)(VKu4C3_8P0A7-Vi1Fd_(ifI)kK&;kG>$d7}4z+1Q|3lTva
zv=?wJT#FR4V-{Idd8`Bk$AeKHog_E{aAcIqZm8-3RP_+52KEU08CVbWb1ziW1J!`>
zF;x4QidY}@IIt(w6Hlop`l%;@4Ny-3dq%B$J|D5c`SpVy7e@%h0|&wDd0s7wSb@P}
zu~t^r*48+1O`0^x#%A)ADYkgKsrC*t33KMmo$Ki2?BYg(sPjD+c+=<%Hrv;CG1q^|
z(!ikLWy_XFibSI5RpK?@#Ky%-rRz5&$rOr>Ds@U~YTBlMWMpRNe4m?}w`=#m4je50
z@$iwO$4bk}wAzZQ>YAF`lc(zH&z-w);o{|An_F71UAunc=FK~8?f35KIy&`wgR#4(
zr}uH+lcxjE24B8>H8k}4&6_uG-@Y9l9)1U|k&%(nQMO|i8~i3KLxYw^J35tI8p^nx
z;4=AH{=OHYblclot*M?3zn)*JOV2#gAoTLgOE6cGc>~;YS2p+t$`319so(
zAuD`hK-=|(<_D#P=N+`$7zDr4(+O*T_{((qOQaVo9z_ku~E=2AI!axvAN|j?eClC9477AZ&Up0p17^1H$&Hw)`4pc
z#BFpM)>ozP4J{Z;cK&t#H_J)H5`=%fGu+w6H|hu;iO*
zWZ~8YT@8s#WC~BO)2#ZL!l(kPzv|X7&y>%6sM%l=MrB#)4qWLi_Ut>}+}>|Tkaz?X
z9_&Btxw$2-i#}jYkX+7M$t#N9a<%yoc6ONi)2y?3++g_B
z9!yrdlI%P~c)h!*nAEk(IBouvqW0rn!B%&Bep5N5zKqd9*hLR${JT58aL4-pG#p7x
z7;ScOcT4K7aG%kzuHnBVx73)2-{F#n!Xn~0JN`36ql?@_Y>L^{xOP)Ww%BNoyD;yh
zK$!MQg}dhxk^Q=H`jnGj72}@sT(eTQ6%zY<&~Rg!eb&IOMYhMkUo+#iAu=R;|NWhf
zCnzO2r_uGeReQzs?Y#?V!G@dqE09}VSMip{+N#xsIgUpUwFb9T1aHY9k8GP!$2EIV
zv3pq!jR{?OH|3#4yNaT+;R
zRgZCoMOn)`T~mPc?6?$1C;G^{&;Tp;ZEIC^2cswdMUm^nX}n8`A?q8xYxm8;ZggUY
zIy1g~-V~F-%~;qK=BOO`W%p43SFV|P0+VMZpDuphbN^tyOh0cGEc{|`xe)|dbQ
literal 0
HcmV?d00001
From 77621bd48b52c08ccf87b759bdcbd8787928cc3d Mon Sep 17 00:00:00 2001
From: Nacim Goura
Date: Sat, 10 Mar 2018 05:35:56 +0100
Subject: [PATCH 070/175] Add Pelican (#2130)
* Add Pelican
python cms
* change http by https and simplify detection
* fix false-positive
---
src/apps.json | 11 ++++++++++-
src/icons/pelican.png | Bin 0 -> 4014 bytes
2 files changed, 10 insertions(+), 1 deletion(-)
create mode 100644 src/icons/pelican.png
diff --git a/src/apps.json b/src/apps.json
index 766789c3e..6e075038b 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -7110,6 +7110,15 @@
},
"website": "http://panvision.de/Produkte/Content_Management/index.asp"
},
+ "Pelican": {
+ "cats": [
+ 1
+ ],
+ "implies": "Python",
+ "icon": "pelican.png",
+ "html": "powered by ]+getpelican\\.com",
+ "website": "https://blog.getpelican.com/"
+ },
"PDF.js": {
"cats": [
19
@@ -12603,4 +12612,4 @@
"priority": 1
}
}
-}
+}
\ No newline at end of file
diff --git a/src/icons/pelican.png b/src/icons/pelican.png
new file mode 100644
index 0000000000000000000000000000000000000000..3fffd485867bd8e31061891a2e50e9bf43ce3416
GIT binary patch
literal 4014
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
Date: Sat, 10 Mar 2018 05:37:18 +0100
Subject: [PATCH 071/175] fancybox: added version detection (#2128)
---
src/apps.json | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/apps.json b/src/apps.json
index 6e075038b..f831cbe5e 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -3017,6 +3017,9 @@
12
],
"icon": "FancyBox.png",
+ "js": {
+ "$.fancybox.version": "(.*)\\;version:\\1"
+ },
"implies": "jQuery",
"script": "jquery\\.fancybox(?:\\.pack|\\.min)?\\.js(?:\\?v=([\\d.]+))?$\\;version:\\1",
"website": "http://fancyapps.com/fancybox"
From 7b5a0ae59bc80ba2b53fe4f3203b7f89da3efef6 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:37:27 +0100
Subject: [PATCH 072/175] Improve a bit quantserve detection (#2127)
This can be tested [here](http://www.slate.com/articles/news_and_politics/crime/2013/12/gun_ownership_causes_higher_suicide_rates_study_shows.html)
---
src/apps.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index f831cbe5e..b27c9c133 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -7743,7 +7743,7 @@
"quantserve": ""
},
"icon": "Quantcast.png",
- "script": "edge\\.quantserve\\.com/quant\\.js",
+ "script": "\\.quantserve\\.com/quant\\.js",
"website": "http://www.quantcast.com"
},
"Question2Answer": {
From 89429b0995d4fbf224b1cdb3d7397cbfe18d52b4 Mon Sep 17 00:00:00 2001
From: jvoisin
Date: Sat, 10 Mar 2018 05:37:35 +0100
Subject: [PATCH 073/175] Add a way to get woocommerce version (#2126)
This can be tested [here](https://puri.sm/products/)
---
src/apps.json | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/apps.json b/src/apps.json
index b27c9c133..e164d3f98 100644
--- a/src/apps.json
+++ b/src/apps.json
@@ -10683,7 +10683,10 @@
"js": {
"woocommerce_params": ""
},
- "html": "
+
+
+