MCPcopy Index your code
hub / github.com/samyk/evercookie / Evercookie

Function Evercookie

js/evercookie.js:290–1283  ·  view source on GitHub ↗

* @class Evercookie * @param {Object} options * @param {Boolean} options.history CSS history knocking or not .. can be network intensive * @param {Boolean} options.java Java applet on/off... may prompt users for permission to run. * @param {Number} options.tests * @param {Boolean} opt

(options)

Source from the content-addressed store, hash-verified

288 * @param {Array} options.hsts_domains The domains used for the hsts cookie. 1 Domain = one bit (8 domains => 8 bit => values up to 255)
289 */
290 function Evercookie(options) {
291 options = options || {};
292 var opts = {};
293 for (var key in defaultOptionMap) {
294 var optValue = options[key];
295 if(typeof optValue !== 'undefined') {
296 opts[key] = optValue
297 } else {
298 opts[key] = defaultOptionMap[key];
299 }
300 }
301 if(typeof opts.domain === 'function'){
302 opts.domain = opts.domain(window);
303 }
304 var _ec_history = opts.history,
305 _ec_java = opts.java,
306 _ec_tests = opts.tests,
307 _ec_baseurl = opts.baseurl,
308 _ec_asseturi = opts.asseturi,
309 _ec_phpuri = opts.phpuri,
310 _ec_domain = opts.domain,
311 _ec_swf_file_name = opts.swfFileName,
312 _ec_xap_file_name = opts.xapFileName,
313 _ec_jnlp_file_name = opts.jnlpFileName,
314 _ec_hsts = opts.hsts;
315
316 // private property
317 var self = this;
318 this._ec = {};
319 if (_ec_hsts){
320 if(opts.hsts_domains.length <= 8){
321 // TODO: warn on some more prominent place ?
322 console.log('HSTS cookie with '+opts.hsts_domains.length+' can only save values up to ' + Math.pow(2, opts.hsts_domains.length) - 1);
323 }
324 this.hsts_cookie = HSTS_Cookie(opts.hsts_domains);
325 }
326
327 this.get = function (name, cb, dont_reset) {
328 self._evercookie(name, cb, undefined, undefined, dont_reset);
329 };
330
331 this.set = function (name, value) {
332 self._evercookie(name, function () {}, value);
333 };
334
335 this._evercookie = function (name, cb, value, i, dont_reset) {
336 if (self._evercookie === undefined) {
337 self = this;
338 }
339 if (i === undefined) {
340 i = 0;
341 }
342 // first run
343 if (i === 0) {
344 if (opts.db) {
345 self.evercookie_database_storage(name, value);
346 }
347 if (opts.idb) {

Callers

nothing calls this directly

Calls 5

HSTS_CookieFunction · 0.85
idbFunction · 0.85
_ec_replaceFunction · 0.85
newImageFunction · 0.85
doSetOrGetFunction · 0.85

Tested by

no test coverage detected