Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Synzvato/decentraleyes
  • gkrishnaks/decentraleyes
  • ExE-Boss/decentraleyes
  • whtsky/decentraleyes
  • grtgarrett/decentraleyes
  • An_dz/decentraleyes
  • Alaska/decentraleyes
  • finn/decentraleyes
  • klippy/decentraleyes
9 results
Show changes
Showing
with 0 additions and 836 deletions
images/icons/action/default/32.png

1.15 KiB

images/icons/action/default/36.png

1.27 KiB

images/icons/action/default/38.png

1.33 KiB

images/icons/action/default/64.png

2.14 KiB

images/icons/action/disabled/16.png

540 B

images/icons/action/disabled/18.png

596 B

images/icons/action/disabled/19.png

629 B

images/icons/action/disabled/32.png

1 KiB

images/icons/action/disabled/36.png

1.12 KiB

images/icons/action/disabled/38.png

1.16 KiB

images/icons/action/disabled/64.png

1.88 KiB

images/icons/extension/128.png

7.67 KiB

images/icons/extension/16.png

608 B

images/icons/extension/48.png

2.77 KiB

images/icons/extension/96.png

5.6 KiB

/**
* Data Handler
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2014-05-30
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
'use strict';
/**
* Imports
*/
var { Cc, Ci } = require('chrome');
var self = require('sdk/self');
var resourceData = self.data;
var version = self.version;
//noinspection JSUnresolvedFunction
var ioService = Cc['@mozilla.org/network/io-service;1']
.getService(Ci.nsIIOService);
/**
* Absolute resource file paths.
* @var {object} files
*/
var files = require('./files');
/**
* Public Methods
*/
function getRedirectionURI(targetPath, characterSet, type) {
var data, dataURI, redirectionURI;
data = loadResource(targetPath);
dataURI = buildDataURI(type, characterSet, data);
redirectionURI = ioService.newURI(dataURI, null, null);
return redirectionURI;
}
/**
* Exports
*/
exports.getRedirectionURI = getRedirectionURI;
/**
* Private Methods
*/
function loadResource(targetPath) {
var resource;
// Find the result inside a static path index.
if (files.indexOf(targetPath) == -1) {
throw 'The requested resource is missing.';
}
// Attempt to load resource contents.
try {
resource = resourceData.load(targetPath);
} catch (exception) {
throw exception;
}
return resource;
}
function buildDataURI(type, characterSet, data) {
var addNotice, dataURI, notice;
//noinspection JSUnresolvedVariable
addNotice = require('sdk/simple-prefs').prefs.addNotice;
dataURI = 'data:' + type + ';charset=' + characterSet + ',';
notice = '/**\n * Local delivery by Decentraleyes (' + version + ').\n */\n\n';
if (!addNotice) {
dataURI = dataURI + encodeURIComponent(data);
} else {
dataURI = dataURI + encodeURIComponent(notice + data);
}
return dataURI;
}
/**
* Files
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2014-07-24
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
'use strict';
/**
* Files
*/
var files = [
// AngularJS
'resources/angularjs/1.0.1/angular.min.js.dec',
'resources/angularjs/1.0.2/angular.min.js.dec',
'resources/angularjs/1.0.3/angular.min.js.dec',
'resources/angularjs/1.0.4/angular.min.js.dec',
'resources/angularjs/1.0.5/angular.min.js.dec',
'resources/angularjs/1.0.6/angular.min.js.dec',
'resources/angularjs/1.0.8/angular.min.js.dec',
'resources/angularjs/1.2.0/angular.min.js.dec',
'resources/angularjs/1.2.1/angular.min.js.dec',
'resources/angularjs/1.2.10/angular.min.js.dec',
'resources/angularjs/1.2.15/angular.min.js.dec',
'resources/angularjs/1.2.16/angular.min.js.dec',
'resources/angularjs/1.2.20/angular.min.js.dec',
'resources/angularjs/1.2.23/angular.min.js.dec',
'resources/angularjs/1.2.26/angular.min.js.dec',
'resources/angularjs/1.2.28/angular.min.js.dec',
'resources/angularjs/1.2.29/angular.min.js.dec',
'resources/angularjs/1.3.0/angular.min.js.dec',
'resources/angularjs/1.3.3/angular.min.js.dec',
'resources/angularjs/1.3.8/angular.min.js.dec',
'resources/angularjs/1.3.10/angular.min.js.dec',
'resources/angularjs/1.3.11/angular.min.js.dec',
'resources/angularjs/1.3.14/angular.min.js.dec',
'resources/angularjs/1.3.15/angular.min.js.dec',
'resources/angularjs/1.4.0/angular.min.js.dec',
'resources/angularjs/1.4.2/angular.min.js.dec',
'resources/angularjs/1.4.8/angular.min.js.dec',
// Backbone.js
'resources/backbone.js/0.9.0/backbone-min.js.dec',
'resources/backbone.js/0.9.1/backbone-min.js.dec',
'resources/backbone.js/0.9.2/backbone-min.js.dec',
'resources/backbone.js/0.9.9/backbone-min.js.dec',
'resources/backbone.js/0.9.10/backbone-min.js.dec',
'resources/backbone.js/1.0.0/backbone-min.js.dec',
'resources/backbone.js/1.1.0/backbone-min.js.dec',
'resources/backbone.js/1.1.1/backbone-min.js.dec',
'resources/backbone.js/1.1.2/backbone-min.js.dec',
'resources/backbone.js/1.2.0/backbone-min.js.dec',
'resources/backbone.js/1.2.1/backbone-min.js.dec',
'resources/backbone.js/1.2.2/backbone-min.js.dec',
'resources/backbone.js/1.2.3/backbone-min.js.dec',
// Dojo
'resources/dojo/1.4.1/dojo/dojo.js.dec',
'resources/dojo/1.4.5/dojo/dojo.js.dec',
'resources/dojo/1.5.0/dojo/dojo.js.dec',
'resources/dojo/1.6.1/dojo/dojo.js.dec',
'resources/dojo/1.7.5/dojo/dojo.js.dec',
'resources/dojo/1.8.3/dojo/dojo.js.dec',
'resources/dojo/1.8.7/dojo/dojo.js.dec',
'resources/dojo/1.8.9/dojo/dojo.js.dec',
'resources/dojo/1.9.1/dojo/dojo.js.dec',
'resources/dojo/1.9.3/dojo/dojo.js.dec',
'resources/dojo/1.9.7/dojo/dojo.js.dec',
'resources/dojo/1.10.4/dojo/dojo.js.dec',
// Ember.js
'resources/ember.js/1.0.1/ember.min.js.dec',
'resources/ember.js/1.1.3/ember.min.js.dec',
'resources/ember.js/1.2.2/ember.min.js.dec',
'resources/ember.js/1.3.2/ember.min.js.dec',
'resources/ember.js/1.4.0/ember.min.js.dec',
'resources/ember.js/1.5.1/ember.min.js.dec',
'resources/ember.js/2.0.0/ember.min.js.dec',
'resources/ember.js/2.0.2/ember.min.js.dec',
'resources/ember.js/2.1.0/ember.min.js.dec',
// Ext Core
'resources/ext-core/3.0.0/ext-core.js.dec',
'resources/ext-core/3.1.0/ext-core.js.dec',
// jQuery
'resources/jquery/1.2.3/jquery.min.js.dec',
'resources/jquery/1.2.6/jquery.min.js.dec',
'resources/jquery/1.3.0/jquery.min.js.dec',
'resources/jquery/1.3.1/jquery.min.js.dec',
'resources/jquery/1.3.2/jquery.min.js.dec',
'resources/jquery/1.4.0/jquery.min.js.dec',
'resources/jquery/1.4.1/jquery.min.js.dec',
'resources/jquery/1.4.2/jquery.min.js.dec',
'resources/jquery/1.4.3/jquery.min.js.dec',
'resources/jquery/1.4.4/jquery.min.js.dec',
'resources/jquery/1.5.0/jquery.min.js.dec',
'resources/jquery/1.5.1/jquery.min.js.dec',
'resources/jquery/1.5.2/jquery.min.js.dec',
'resources/jquery/1.6.0/jquery.min.js.dec',
'resources/jquery/1.6.1/jquery.min.js.dec',
'resources/jquery/1.6.2/jquery.min.js.dec',
'resources/jquery/1.6.3/jquery.min.js.dec',
'resources/jquery/1.6.4/jquery.min.js.dec',
'resources/jquery/1.7.0/jquery.min.js.dec',
'resources/jquery/1.7.1/jquery.min.js.dec',
'resources/jquery/1.7.2/jquery.min.js.dec',
'resources/jquery/1.8.0/jquery.min.js.dec',
'resources/jquery/1.8.1/jquery.min.js.dec',
'resources/jquery/1.8.2/jquery.min.js.dec',
'resources/jquery/1.8.3/jquery.min.js.dec',
'resources/jquery/1.9.0/jquery.min.js.dec',
'resources/jquery/1.9.1/jquery.min.js.dec',
'resources/jquery/1.10.0/jquery.min.js.dec',
'resources/jquery/1.10.1/jquery.min.js.dec',
'resources/jquery/1.10.2/jquery.min.js.dec',
'resources/jquery/1.11.0/jquery.min.js.dec',
'resources/jquery/1.11.1/jquery.min.js.dec',
'resources/jquery/1.11.2/jquery.min.js.dec',
'resources/jquery/1.11.3/jquery.min.js.dec',
'resources/jquery/2.0.0/jquery.min.js.dec',
'resources/jquery/2.0.1/jquery.min.js.dec',
'resources/jquery/2.0.2/jquery.min.js.dec',
'resources/jquery/2.0.3/jquery.min.js.dec',
'resources/jquery/2.1.0/jquery.min.js.dec',
'resources/jquery/2.1.1/jquery.min.js.dec',
'resources/jquery/2.1.3/jquery.min.js.dec',
'resources/jquery/2.1.4/jquery.min.js.dec',
// jQuery UI
'resources/jqueryui/1.5.3/jquery-ui.min.js.dec',
'resources/jqueryui/1.6.0/jquery-ui.min.js.dec',
'resources/jqueryui/1.7.3/jquery-ui.min.js.dec',
'resources/jqueryui/1.8.24/jquery-ui.min.js.dec',
'resources/jqueryui/1.9.2/jquery-ui.min.js.dec',
'resources/jqueryui/1.10.4/jquery-ui.min.js.dec',
'resources/jqueryui/1.11.0/jquery-ui.min.js.dec',
'resources/jqueryui/1.11.1/jquery-ui.min.js.dec',
'resources/jqueryui/1.11.2/jquery-ui.min.js.dec',
'resources/jqueryui/1.11.3/jquery-ui.min.js.dec',
'resources/jqueryui/1.11.4/jquery-ui.min.js.dec',
// Modernizr
'resources/modernizr/2.6.2/modernizr.min.js.dec',
'resources/modernizr/2.7.1/modernizr.min.js.dec',
'resources/modernizr/2.7.2/modernizr.min.js.dec',
'resources/modernizr/2.8.2/modernizr.min.js.dec',
'resources/modernizr/2.8.3/modernizr.min.js.dec',
// MooTools
'resources/mootools/1.1.1/mootools-yui-compressed.js.dec',
'resources/mootools/1.1.2/mootools-yui-compressed.js.dec',
'resources/mootools/1.2.1/mootools-yui-compressed.js.dec',
'resources/mootools/1.2.3/mootools-yui-compressed.js.dec',
'resources/mootools/1.2.4/mootools-yui-compressed.js.dec',
'resources/mootools/1.2.5/mootools-yui-compressed.js.dec',
'resources/mootools/1.3.0/mootools-yui-compressed.js.dec',
'resources/mootools/1.3.1/mootools-yui-compressed.js.dec',
'resources/mootools/1.3.2/mootools-yui-compressed.js.dec',
'resources/mootools/1.4.1/mootools-yui-compressed.js.dec',
'resources/mootools/1.4.5/mootools-yui-compressed.js.dec',
'resources/mootools/1.5.0/mootools-yui-compressed.js.dec',
'resources/mootools/1.5.1/mootools-yui-compressed.js.dec',
// Prototype
'resources/prototype/1.6.0.2/prototype.js.dec',
'resources/prototype/1.6.0.3/prototype.js.dec',
'resources/prototype/1.6.1.0/prototype.js.dec',
'resources/prototype/1.7.0.0/prototype.js.dec',
'resources/prototype/1.7.1.0/prototype.js.dec',
'resources/prototype/1.7.2.0/prototype.js.dec',
'resources/prototype/1.7.3.0/prototype.js.dec',
// Scriptaculous
'resources/scriptaculous/1.8.1/scriptaculous.js.dec',
'resources/scriptaculous/1.8.2/scriptaculous.js.dec',
'resources/scriptaculous/1.8.3/scriptaculous.js.dec',
'resources/scriptaculous/1.9.0/scriptaculous.js.dec',
// SWFObject
'resources/swfobject/2.1/swfobject.js.dec',
'resources/swfobject/2.2/swfobject.js.dec',
// Underscore.js
'resources/underscore.js/1.3.0/underscore-min.js.dec',
'resources/underscore.js/1.3.1/underscore-min.js.dec',
'resources/underscore.js/1.3.3/underscore-min.js.dec',
'resources/underscore.js/1.4.0/underscore-min.js.dec',
'resources/underscore.js/1.4.1/underscore-min.js.dec',
'resources/underscore.js/1.4.2/underscore-min.js.dec',
'resources/underscore.js/1.4.3/underscore-min.js.dec',
'resources/underscore.js/1.4.4/underscore-min.js.dec',
'resources/underscore.js/1.5.0/underscore-min.js.dec',
'resources/underscore.js/1.5.1/underscore-min.js.dec',
'resources/underscore.js/1.5.2/underscore-min.js.dec',
'resources/underscore.js/1.6.0/underscore-min.js.dec',
'resources/underscore.js/1.7.0/underscore-min.js.dec',
'resources/underscore.js/1.8.0/underscore-min.js.dec',
'resources/underscore.js/1.8.1/underscore-min.js.dec',
'resources/underscore.js/1.8.2/underscore-min.js.dec',
'resources/underscore.js/1.8.3/underscore-min.js.dec',
// Web Font Loader
'resources/webfont/1.0.0/webfont.js.dec',
'resources/webfont/1.0.1/webfont.js.dec',
'resources/webfont/1.0.2/webfont.js.dec',
'resources/webfont/1.0.3/webfont.js.dec',
'resources/webfont/1.0.4/webfont.js.dec',
'resources/webfont/1.0.5/webfont.js.dec',
'resources/webfont/1.0.6/webfont.js.dec',
'resources/webfont/1.0.9/webfont.js.dec',
'resources/webfont/1.0.10/webfont.js.dec',
'resources/webfont/1.0.11/webfont.js.dec',
'resources/webfont/1.0.12/webfont.js.dec',
'resources/webfont/1.0.13/webfont.js.dec',
'resources/webfont/1.0.14/webfont.js.dec',
'resources/webfont/1.0.15/webfont.js.dec',
'resources/webfont/1.0.16/webfont.js.dec',
'resources/webfont/1.0.17/webfont.js.dec',
'resources/webfont/1.0.18/webfont.js.dec',
'resources/webfont/1.0.19/webfont.js.dec',
'resources/webfont/1.0.21/webfont.js.dec',
'resources/webfont/1.0.22/webfont.js.dec',
'resources/webfont/1.0.23/webfont.js.dec',
'resources/webfont/1.0.24/webfont.js.dec',
'resources/webfont/1.0.25/webfont.js.dec',
'resources/webfont/1.0.26/webfont.js.dec',
'resources/webfont/1.0.27/webfont.js.dec',
'resources/webfont/1.0.28/webfont.js.dec',
'resources/webfont/1.0.29/webfont.js.dec',
'resources/webfont/1.0.30/webfont.js.dec',
'resources/webfont/1.0.31/webfont.js.dec',
'resources/webfont/1.1.0/webfont.js.dec',
'resources/webfont/1.1.1/webfont.js.dec',
'resources/webfont/1.1.2/webfont.js.dec',
'resources/webfont/1.3.0/webfont.js.dec',
'resources/webfont/1.4.2/webfont.js.dec',
'resources/webfont/1.4.6/webfont.js.dec',
'resources/webfont/1.4.7/webfont.js.dec',
'resources/webfont/1.4.8/webfont.js.dec',
'resources/webfont/1.4.10/webfont.js.dec',
'resources/webfont/1.5.0/webfont.js.dec',
'resources/webfont/1.5.2/webfont.js.dec',
'resources/webfont/1.5.3/webfont.js.dec',
'resources/webfont/1.5.6/webfont.js.dec',
'resources/webfont/1.5.10/webfont.js.dec',
'resources/webfont/1.5.18/webfont.js.dec'
];
/**
* Exports
*/
module.exports = files;
/**
* Interceptor
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2014-05-30
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
'use strict';
/**
* Imports
*/
var { Class } = require('sdk/core/heritage');
var { Unknown } = require('sdk/platform/xpcom');
var { Cc, Ci, Cr } = require('chrome');
//noinspection JSUnresolvedFunction
var observerService = Cc['@mozilla.org/observer-service;1']
.getService(Ci.nsIObserverService);
var requestAnalyzer = require('./request-analyzer');
var dataHandler = require('./data-handler');
/**
* Interceptor Class
*/
var Interceptor = new Class({
extends: Unknown,
interfaces: ['nsIObserver'],
topic: 'http-on-modify-request',
register: function () {
observerService.addObserver(this, this.topic, false);
},
unregister: function () {
observerService.removeObserver(this, this.topic);
},
observe: function (httpChannel) {
var validCandidate, target, characterSet, redirectionURI;
// Enable runtime discovery.
httpChannel.QueryInterface(Ci.nsIHttpChannel);
// Determine the validity of the candidate.
validCandidate = requestAnalyzer.isValidCandidate(httpChannel);
if (!validCandidate) {
return;
}
// Remove referer header from request.
httpChannel.setRequestHeader('Referer', null, false);
// Convert the original request URI to a local target.
target = requestAnalyzer.getLocalTarget(httpChannel.URI.host, httpChannel.URI.path);
if (!target) {
this.handleMissingCandidate(httpChannel);
return;
}
characterSet = httpChannel.URI.originCharset;
// Fetch local data and create a redirection URI.
try {
redirectionURI = dataHandler.getRedirectionURI(target.path, characterSet, target.type);
} catch (exception) {
this.handleMissingCandidate(httpChannel);
return;
}
httpChannel.redirectTo(redirectionURI);
//noinspection JSUnresolvedVariable
require('sdk/simple-prefs').prefs.amountInjected++;
},
handleMissingCandidate: function (httpChannel) {
//noinspection JSUnresolvedVariable
var blockMissing = require('sdk/simple-prefs').prefs.blockMissing;
if (blockMissing) {
httpChannel.cancel(Cr.NS_ERROR_NOT_AVAILABLE);
}
}
});
/**
* Exports
*/
module.exports = Interceptor;
/**
* Mappings
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2014-05-30
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
'use strict';
/**
* Imports
*/
var resources = require('./resources');
/**
* Mappings
*/
var mappings = {
// Google Hosted Libraries
'ajax.googleapis.com': {
'/ajax/libs/': {
'angularjs/{version}/angular.': resources.angular,
'dojo/{version}/dojo/dojo.': resources.dojo,
'ext-core/{version}/ext-core.': resources.extCore,
'ext-core/{version}/ext-core-debug.': resources.extCore,
'jquery/{version}/jquery.': resources.jQuery,
'jqueryui/{version}/jquery-ui.js': resources.jQueryUI,
'jqueryui/{version}/jquery-ui.min.js': resources.jQueryUI,
'mootools/{version}/mootools-yui-compressed.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'webfont/{version}/webfont.': resources.webfont,
// Common Shorthand Notations
'dojo/1/dojo/dojo.': {
path: 'resources/dojo/1.6.1/dojo/dojo.js.dec',
type: 'application/javascript'
},
'jquery/1/jquery.': {
path: 'resources/jquery/1.11.1/jquery.min.js.dec',
type: 'application/javascript'
},
'jqueryui/1/jquery-ui.js': {
path: 'resources/jqueryui/1.10.4/jquery-ui.min.js.dec',
type: 'application/javascript'
},
'jqueryui/1/jquery-ui.min.js': {
path: 'resources/jqueryui/1.10.4/jquery-ui.min.js.dec',
type: 'application/javascript'
},
'mootools/1/mootools-yui-compressed.': {
path: 'resources/mootools/1.1.2/mootools-yui-compressed.js.dec',
type: 'application/javascript'
},
'prototype/1/prototype.': {
path: 'resources/prototype/1.7.1.0/prototype.js.dec',
type: 'application/javascript'
},
'scriptaculous/1/scriptaculous.': {
path: 'resources/scriptaculous/1.9.0/scriptaculous.js.dec',
type: 'application/javascript'
},
'swfobject/2/swfobject.': {
path: 'resources/swfobject/2.2/swfobject.js.dec',
type: 'application/javascript'
},
'webfont/1/webfont.': {
path: 'resources/webfont/1.5.18/webfont.js.dec',
type: 'application/javascript'
}
}
},
// Microsoft Ajax CDN
'ajax.aspnetcdn.com': {
'/ajax/': {
'jQuery/jquery-{version}.': resources.jQuery,
'modernizr/modernizr-{version}.': resources.modernizr
}
},
// Microsoft Ajax CDN [Deprecated]
'ajax.microsoft.com': {
'/ajax/': {
'jQuery/jquery-{version}.': resources.jQuery,
'modernizr/modernizr-{version}.': resources.modernizr
}
},
// CDNJS (Cloudflare)
'cdnjs.cloudflare.com': {
'/ajax/libs/': {
'angular.js/{version}/angular.': resources.angular,
'backbone.js/{version}/backbone.': resources.backbone,
'backbone.js/{version}/backbone-min.': resources.backbone,
'dojo/{version}/dojo.': resources.dojo,
'ember.js/{version}/ember.': resources.ember,
'ext-core/{version}/ext-core.': resources.extCore,
'jquery/{version}/jquery.': resources.jQuery,
'jqueryui/{version}/jquery-ui.js': resources.jQueryUI,
'jqueryui/{version}/jquery-ui.min.js': resources.jQueryUI,
'modernizr/{version}/modernizr.': resources.modernizr,
'mootools/{version}/mootools-core': resources.mootools,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore.js/{version}/underscore.': resources.underscore,
'underscore.js/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont': resources.webfont
}
},
// jQuery CDN (MaxCDN)
'code.jquery.com': {
'/': {
'jquery-{version}.': resources.jQuery,
'ui/{version}/jquery-ui.js': resources.jQueryUI,
'ui/{version}/jquery-ui.min.js': resources.jQueryUI,
// Common Shorthand Notations
'jquery-latest.': {
path: 'resources/jquery/1.11.1/jquery.min.js.dec',
type: 'application/javascript'
},
'jquery.': {
path: 'resources/jquery/1.11.1/jquery.min.js.dec',
type: 'application/javascript'
}
}
},
// jsDelivr (MaxCDN)
'cdn.jsdelivr.net': {
'/': {
'angularjs/{version}/angular.': resources.angular,
'backbonejs/{version}/backbone.': resources.backbone,
'backbonejs/{version}/backbone-min.': resources.backbone,
'dojo/{version}/dojo.': resources.dojo,
'emberjs/{version}/ember.': resources.ember,
'jquery/{version}/jquery.': resources.jQuery,
'jquery.ui/{version}/jquery-ui.js': resources.jQueryUI,
'jquery.ui/{version}/jquery-ui.min.js': resources.jQueryUI,
'mootools/{version}/mootools-': resources.mootools,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscorejs/{version}/underscore.': resources.underscore,
'underscorejs/{version}/underscore-min.': resources.underscore,
'webfontloader/{version}/webfont': resources.webfont
}
},
// Yandex CDN
'yandex.st': {
'/': {
'angularjs/{version}/angular.': resources.angular,
'backbone/{version}/backbone.': resources.backbone,
'backbone/{version}/backbone-min.': resources.backbone,
'dojo/{version}/dojo/dojo.': resources.dojo,
'ext-core/{version}/ext-core.': resources.extCore,
'jquery/{version}/jquery.': resources.jQuery,
'jquery-ui/{version}/jquery-ui.js': resources.jQueryUI,
'jquery-ui/{version}/jquery-ui.min.js': resources.jQueryUI,
'modernizr/{version}/modernizr.': resources.modernizr,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore/{version}/underscore.': resources.underscore,
'underscore/{version}/underscore-min.': resources.underscore
}
},
// Baidu CDN
'libs.baidu.com': {
'/': {
'backbone/{version}/backbone.': resources.backbone,
'backbone/{version}/backbone-min.': resources.backbone,
'dojo/{version}/dojo.': resources.dojo,
'ext-core/{version}/ext-core.': resources.extCore,
'jquery/{version}/jquery.': resources.jQuery,
'jqueryui/{version}/jquery-ui.js': resources.jQueryUI,
'jqueryui/{version}/jquery-ui.min.js': resources.jQueryUI,
'mootools/{version}/mootools-yui-compressed.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore/{version}/underscore.': resources.underscore,
'underscore/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont.': resources.webfont,
'webfont/{version}/webfont_debug.': resources.webfont
}
},
// Sina Public Resources
'lib.sinaapp.com': {
'/js/': {
'angular.js/angular-{version}/angular.': resources.angular,
'backbone/{version}/backbone.': resources.backbone,
'dojo/{version}/dojo.': resources.dojo,
'ext-core/{version}/ext-core.': resources.extCore,
'ext-core/{version}/ext-core-debug.': resources.extCore,
'jquery/{version}/jquery.': resources.jQuery,
'jquery-ui/{version}/jquery-ui.js': resources.jQueryUI,
'jquery-ui/{version}/jquery-ui.min.js': resources.jQueryUI,
'mootools/{version}/mootools.': resources.mootools,
'prototype/{version}/prototype.': resources.prototypeJS,
'scriptaculous/{version}/scriptaculous.': resources.scriptaculous,
'swfobject/{version}/swfobject.': resources.swfobject,
'underscore/{version}/underscore.': resources.underscore,
'underscore/{version}/underscore-min.': resources.underscore,
'webfont/{version}/webfont.': resources.webfont,
'webfont/{version}/webfont_debug.': resources.webfont
}
},
// UpYun Library
'upcdn.b0.upaiyun.com': {
'/libs/': {
'dojo/dojo-{version}.': resources.dojo,
'emberjs/emberjs-{version}.': resources.ember,
'jquery/jquery-{version}.': resources.jQuery,
'jqueryui/jquery.ui-{version}.js': resources.jQueryUI,
'jqueryui/jquery.ui-{version}.min.js': resources.jQueryUI,
'modernizr/modernizr-{version}.': resources.modernizr,
'mootoolscore/mootools.core-{version}.': resources.mootools
}
}
};
/**
* Exports
*/
module.exports = mappings;
/**
* Request Analyzer
* Belongs to Decentraleyes.
*
* @author Thomas Rientjes
* @since 2014-05-30
* @license MPL 2.0
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
'use strict';
/**
* Imports
*/
/**
* Resource version mappings.
* @var {object} mappings
*/
var mappings = require('./mappings');
/**
* Public Methods
*/
function isValidCandidate(httpChannel) {
if (mappings[httpChannel.URI.host] === undefined) {
return false;
}
//noinspection JSUnresolvedVariable
var whitelistedDomains = require('sdk/simple-prefs').prefs.domainWhitelist.split(";");
for (var domain in whitelistedDomains) {
if (whitelistedDomains[domain] === httpChannel.referrer.host) {
// Remove referer header from request.
httpChannel.setRequestHeader('Referer', null, false);
return false;
}
}
return httpChannel.requestMethod === 'GET';
}
function getLocalTarget(channelHost, channelPath) {
var basePath, hostMappings, resourceMappings, localTarget;
hostMappings = mappings[channelHost];
// Ignore mapping files.
if (channelPath.indexOf('.min.js.map') > -1) {
return false;
}
if (channelPath.indexOf('.min.map') > -1) {
return false;
}
basePath = matchBasePath(hostMappings, channelPath);
if (!basePath) {
return false;
}
resourceMappings = hostMappings[basePath];
localTarget = matchResourcePath(resourceMappings, basePath, channelPath);
if (!localTarget) {
return false;
}
return localTarget;
}
/**
* Exports
*/
exports.isValidCandidate = isValidCandidate;
exports.getLocalTarget = getLocalTarget;
/**
* Private Methods
*/
function matchBasePath(hostMappings, channelPath) {
for (var basePath in hostMappings) {
if (hostMappings.hasOwnProperty(basePath)) {
if (channelPath.indexOf(basePath) === 0) {
return basePath;
}
}
}
return false;
}
function matchResourcePath(resourceMappings, basePath, channelPath) {
var resourcePath, versionNumber, resourcePattern;
resourcePath = channelPath.replace(basePath, '');
versionNumber = resourcePath.match(/(?:\d{1,2}\.){1,3}\d{1,2}/);
resourcePattern = resourcePath.replace(versionNumber, '{version}');
for (var resourceMold in resourceMappings) {
if (resourceMappings.hasOwnProperty(resourceMold)) {
if (resourcePattern.indexOf(resourceMold) === 0) {
var localTarget = {
path: resourceMappings[resourceMold].path,
type: resourceMappings[resourceMold].type
};
// Fill in the appropriate version number.
localTarget.path = localTarget.path.replace('{version}', versionNumber);
return localTarget;
}
}
}
return false;
}