mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 11:11:30 -04:00
Lightly massage some of the generated JavaScript
This commit is contained in:
parent
31ad9566e6
commit
1867a3f121
19 changed files with 986 additions and 989 deletions
154
proxy/util.js
154
proxy/util.js
|
@ -1,53 +1,54 @@
|
|||
// Generated by CoffeeScript 2.4.1
|
||||
/*
|
||||
A Coffeescript WebRTC snowflake proxy
|
||||
|
||||
Contains helpers for parsing query strings and other utilities.
|
||||
*/
|
||||
var BucketRateLimit, DummyRateLimit, Params, Parse, Query, Util;
|
||||
|
||||
Util = (function() {
|
||||
class Util {
|
||||
static mightBeTBB() {
|
||||
return Util.TBB_UAS.indexOf(window.navigator.userAgent) > -1 && (window.navigator.mimeTypes && window.navigator.mimeTypes.length === 0);
|
||||
class Util {
|
||||
|
||||
static mightBeTBB() {
|
||||
return Util.TBB_UAS.indexOf(window.navigator.userAgent) > -1 && (window.navigator.mimeTypes && window.navigator.mimeTypes.length === 0);
|
||||
}
|
||||
|
||||
static genSnowflakeID() {
|
||||
return Math.random().toString(36).substring(2);
|
||||
}
|
||||
|
||||
static snowflakeIsDisabled(cookieName) {
|
||||
var cookies;
|
||||
cookies = Parse.cookie(document.cookie);
|
||||
// Do nothing if snowflake has not been opted in by user.
|
||||
if (cookies[cookieName] !== '1') {
|
||||
log('Not opted-in. Please click the badge to change options.');
|
||||
return true;
|
||||
}
|
||||
|
||||
static genSnowflakeID() {
|
||||
return Math.random().toString(36).substring(2);
|
||||
// Also do nothing if running in Tor Browser.
|
||||
if (Util.mightBeTBB()) {
|
||||
log('Will not run within Tor Browser.');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static snowflakeIsDisabled(cookieName) {
|
||||
var cookies;
|
||||
cookies = Parse.cookie(document.cookie);
|
||||
// Do nothing if snowflake has not been opted in by user.
|
||||
if (cookies[cookieName] !== '1') {
|
||||
log('Not opted-in. Please click the badge to change options.');
|
||||
return true;
|
||||
}
|
||||
// Also do nothing if running in Tor Browser.
|
||||
if (Util.mightBeTBB()) {
|
||||
log('Will not run within Tor Browser.');
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
static featureDetect() {
|
||||
return typeof PeerConnection === 'function';
|
||||
}
|
||||
|
||||
static featureDetect() {
|
||||
return typeof PeerConnection === 'function';
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
// It would not be effective for Tor Browser users to run the proxy.
|
||||
// Do we seem to be running in Tor Browser? Check the user-agent string and for
|
||||
// no listing of supported MIME types.
|
||||
Util.TBB_UAS = [
|
||||
'Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0',
|
||||
'Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0',
|
||||
'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0',
|
||||
'Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0'
|
||||
];
|
||||
|
||||
// It would not be effective for Tor Browser users to run the proxy.
|
||||
// Do we seem to be running in Tor Browser? Check the user-agent string and for
|
||||
// no listing of supported MIME types.
|
||||
Util.TBB_UAS = ['Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0', 'Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0', 'Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0', 'Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Firefox/31.0'];
|
||||
|
||||
return Util;
|
||||
class Query {
|
||||
|
||||
}).call(this);
|
||||
|
||||
Query = class Query {
|
||||
/*
|
||||
Parse a URL query string or application/x-www-form-urlencoded body. The
|
||||
return type is an object mapping string keys to string values. By design,
|
||||
|
@ -100,7 +101,9 @@ Query = class Query {
|
|||
|
||||
};
|
||||
|
||||
Parse = class Parse {
|
||||
|
||||
class Parse {
|
||||
|
||||
// Parse a cookie data string (usually document.cookie). The return type is an
|
||||
// object mapping cookies names to values. Returns null on error.
|
||||
// http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-8747038
|
||||
|
@ -202,7 +205,9 @@ Parse = class Parse {
|
|||
|
||||
};
|
||||
|
||||
Params = class Params {
|
||||
|
||||
class Params {
|
||||
|
||||
static getBool(query, param, defaultValue) {
|
||||
var val;
|
||||
val = query[param];
|
||||
|
@ -254,53 +259,52 @@ Params = class Params {
|
|||
|
||||
};
|
||||
|
||||
BucketRateLimit = (function() {
|
||||
class BucketRateLimit {
|
||||
constructor(capacity, time) {
|
||||
this.capacity = capacity;
|
||||
this.time = time;
|
||||
|
||||
class BucketRateLimit {
|
||||
|
||||
constructor(capacity, time) {
|
||||
this.capacity = capacity;
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
age() {
|
||||
var delta, now;
|
||||
now = new Date();
|
||||
delta = (now - this.lastUpdate) / 1000.0;
|
||||
this.lastUpdate = now;
|
||||
this.amount -= delta * this.capacity / this.time;
|
||||
if (this.amount < 0.0) {
|
||||
return this.amount = 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
age() {
|
||||
var delta, now;
|
||||
now = new Date();
|
||||
delta = (now - this.lastUpdate) / 1000.0;
|
||||
this.lastUpdate = now;
|
||||
this.amount -= delta * this.capacity / this.time;
|
||||
if (this.amount < 0.0) {
|
||||
return this.amount = 0.0;
|
||||
}
|
||||
}
|
||||
update(n) {
|
||||
this.age();
|
||||
this.amount += n;
|
||||
return this.amount <= this.capacity;
|
||||
}
|
||||
|
||||
update(n) {
|
||||
this.age();
|
||||
this.amount += n;
|
||||
return this.amount <= this.capacity;
|
||||
}
|
||||
// How many seconds in the future will the limit expire?
|
||||
when() {
|
||||
this.age();
|
||||
return (this.amount - this.capacity) / (this.capacity / this.time);
|
||||
}
|
||||
|
||||
// How many seconds in the future will the limit expire?
|
||||
when() {
|
||||
this.age();
|
||||
return (this.amount - this.capacity) / (this.capacity / this.time);
|
||||
}
|
||||
isLimited() {
|
||||
this.age();
|
||||
return this.amount > this.capacity;
|
||||
}
|
||||
|
||||
isLimited() {
|
||||
this.age();
|
||||
return this.amount > this.capacity;
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
BucketRateLimit.prototype.amount = 0.0;
|
||||
|
||||
BucketRateLimit.prototype.amount = 0.0;
|
||||
BucketRateLimit.prototype.lastUpdate = new Date();
|
||||
|
||||
BucketRateLimit.prototype.lastUpdate = new Date();
|
||||
|
||||
return BucketRateLimit;
|
||||
|
||||
}).call(this);
|
||||
|
||||
// A rate limiter that never limits.
|
||||
DummyRateLimit = class DummyRateLimit {
|
||||
class DummyRateLimit {
|
||||
|
||||
constructor(capacity, time) {
|
||||
this.capacity = capacity;
|
||||
this.time = time;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue