Yurik has uploaded a new change for review.
https://gerrit.wikimedia.org/r/247921
Change subject: Add an ability to whitelist URLs
......................................................................
Add an ability to whitelist URLs
We might want to add some whitelisting capability
to the external URLs. This patch would allow for such capability.
Change-Id: I78fb9ae42fa9fdc3b016b9e5c20185205dbd6dd9
---
M Graph.body.php
M extension.json
M js/graph.js
3 files changed, 23 insertions(+), 13 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Graph
refs/changes/21/247921/1
diff --git a/Graph.body.php b/Graph.body.php
index f7a9bdd..fce31d4 100644
--- a/Graph.body.php
+++ b/Graph.body.php
@@ -54,12 +54,13 @@
if ( $specs !== null ) {
global $wgGraphImgServiceAlways, $wgGraphImgServiceUrl;
if ( $isPreview || !$wgGraphImgServiceUrl ||
!$wgGraphImgServiceAlways ) {
- global $wgGraphDataDomains,
$wgGraphUrlBlacklist, $wgGraphIsTrusted;
+ global $wgGraphDataDomains,
$wgGraphUrlBlacklist, $wgGraphUrlWhitelist, $wgGraphIsTrusted;
$output->addModules( 'ext.graph' );
$output->addJsConfigVars( 'wgGraphSpecs',
$specs );
- // TODO: these 3 js vars should be per domain
if 'ext.graph' is added, not per page
+ // TODO: these 4 js vars should be per domain
if 'ext.graph' is added, not per page
$output->addJsConfigVars( 'wgGraphDataDomains',
$wgGraphDataDomains );
$output->addJsConfigVars(
'wgGraphUrlBlacklist', $wgGraphUrlBlacklist );
+ $output->addJsConfigVars(
'wgGraphUrlWhitelist', $wgGraphUrlWhitelist );
$output->addJsConfigVars( 'wgGraphIsTrusted',
$wgGraphIsTrusted );
}
$output->setProperty( 'graph_specs',
diff --git a/extension.json b/extension.json
index d2621b9..18a709f 100644
--- a/extension.json
+++ b/extension.json
@@ -75,6 +75,7 @@
"config": {
"GraphDataDomains": [],
"GraphUrlBlacklist": false,
+ "GraphUrlWhitelist": false,
"GraphIsTrusted": false,
"GraphImgServiceAlways": false,
"GraphImgServiceUrl": false
diff --git a/js/graph.js b/js/graph.js
index e99c273..2fc24af 100644
--- a/js/graph.js
+++ b/js/graph.js
@@ -9,6 +9,7 @@
// Make sure we only initialize graphs once
vg.config.domainWhiteList = mw.config.get(
'wgGraphDataDomains' );
vg.config.urlBlackList = mw.config.get(
'wgGraphUrlBlacklist' );
+ vg.config.urlWhiteList = mw.config.get(
'wgGraphUrlWhitelist' );
if ( !mw.config.get( 'wgGraphIsTrusted' ) ) {
vg.config.dataHeaders = { 'Treat-as-Untrusted':
1 };
}
@@ -27,19 +28,26 @@
if ( !url ) {
return false;
}
- if ( !vg.config.urlBlackListRe ) {
- // Lazy initialize urlBlackListRe
- if ( vg.config.urlBlackList ) {
- vg.config.urlBlackListRe =
vg.config.urlBlackList.map( function ( s ) {
+ if ( !vg.config.urlBlackListTest ) {
+ // Lazy initialize urlBlackListTest &
urlWhiteListTest
+ var makeTesterFunc = function ( reList,
passIfFound ) {
+ if ( !reList ) {
+ return function() {
return true; };
+ }
+ var reList2 =
reList.map(function ( s ) {
return new RegExp( s );
- } );
- } else {
- vg.config.urlBlackListRe = [];
- }
+ });
+ return function( url ) {
+ var found =
reList2.some( function ( re ) {
+ return re.test(
url );
+ } );
+ return passIfFound ?
found : !found;
+ };
+ };
+ vg.config.urlBlackListTest =
makeTesterFunc( vg.config.urlBlackList, false );
+ vg.config.urlWhiteListTest =
makeTesterFunc( vg.config.urlWhiteList, true );
}
- if ( vg.config.urlBlackListRe.some( function (
re ) {
- return re.test( url );
- } ) ) {
+ if ( !vg.config.urlBlackListTest( url ) ||
!vg.config.urlWhiteListTest( url ) ) {
return false;
}
return url;
--
To view, visit https://gerrit.wikimedia.org/r/247921
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I78fb9ae42fa9fdc3b016b9e5c20185205dbd6dd9
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Graph
Gerrit-Branch: master
Gerrit-Owner: Yurik <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits