[tor-commits] [snowflake/master] Update proxy config to take proxy type
cohosh at torproject.org
cohosh at torproject.org
Thu Nov 28 18:54:16 UTC 2019
commit 8ab81fc6cdbd34083a567429b51375ca5512fd50
Author: Cecylia Bocovich <cohosh at torproject.org>
Date: Wed Nov 20 13:09:11 2019 -0500
Update proxy config to take proxy type
This allows badge and standalone proxies to tell the broker what proxy
type they are.
---
proxy/broker.js | 7 ++++---
proxy/config.js | 2 ++
proxy/init-badge.js | 3 ++-
proxy/init-node.js | 2 +-
proxy/init-testing.js | 2 +-
proxy/init-webext.js | 3 ++-
proxy/spec/broker.spec.js | 24 ++++++++++++++++++------
7 files changed, 30 insertions(+), 13 deletions(-)
diff --git a/proxy/broker.js b/proxy/broker.js
index 551110b..42293ae 100644
--- a/proxy/broker.js
+++ b/proxy/broker.js
@@ -14,11 +14,12 @@ class Broker {
// ID so the Broker can keep track of each proxy's signalling channels.
// On construction, this Broker object does not do anything until
// |getClientOffer| is called.
- constructor(url) {
+ constructor(config) {
this.getClientOffer = this.getClientOffer.bind(this);
this._postRequest = this._postRequest.bind(this);
- this.url = url;
+ this.config = config
+ this.url = config.brokerUrl;
this.clients = 0;
if (0 === this.url.indexOf('localhost', 0)) {
// Ensure url has the right protocol + trailing slash.
@@ -63,7 +64,7 @@ class Broker {
}
};
this._xhr = xhr; // Used by spec to fake async Broker interaction
- var data = {"Version": "1.0", "Sid": id}
+ var data = {"Version": "1.1", "Sid": id, "Type": this.config.proxyType}
return this._postRequest(xhr, 'proxy', JSON.stringify(data));
});
}
diff --git a/proxy/config.js b/proxy/config.js
index 9564f82..2b698a6 100644
--- a/proxy/config.js
+++ b/proxy/config.js
@@ -24,6 +24,8 @@ Config.prototype.defaultBrokerPollInterval = 300.0 * 1000;
Config.prototype.maxNumClients = 1;
+Config.prototype.proxyType = "";
+
// TODO: Different ICE servers.
Config.prototype.pcConfig = {
iceServers: [
diff --git a/proxy/init-badge.js b/proxy/init-badge.js
index 2cc5b07..2e0a261 100644
--- a/proxy/init-badge.js
+++ b/proxy/init-badge.js
@@ -170,10 +170,11 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific
}
config = new Config;
+ config.proxyType = "badge";
if ('off' !== query.get('ratelimit')) {
config.rateLimitBytes = Params.getByteCount(query, 'ratelimit', config.rateLimitBytes);
}
- broker = new Broker(config.brokerUrl);
+ broker = new Broker(config);
snowflake = new Snowflake(config, ui, broker);
log('== snowflake proxy ==');
update();
diff --git a/proxy/init-node.js b/proxy/init-node.js
index 789e6e3..73c25dc 100644
--- a/proxy/init-node.js
+++ b/proxy/init-node.js
@@ -8,7 +8,7 @@ var config = new Config;
var ui = new UI();
-var broker = new Broker(config.brokerUrl);
+var broker = new Broker(config);
var snowflake = new Snowflake(config, ui, broker);
diff --git a/proxy/init-testing.js b/proxy/init-testing.js
index 90026a9..f553f12 100644
--- a/proxy/init-testing.js
+++ b/proxy/init-testing.js
@@ -89,7 +89,7 @@ var snowflake, query, debug, ui, silenceNotifications, log, dbg, init;
} else {
ui = new UI();
}
- broker = new Broker(config.brokerUrl);
+ broker = new Broker(config);
snowflake = new Snowflake(config, ui, broker);
log('== snowflake proxy ==');
if (Util.snowflakeIsDisabled(config.cookieName)) {
diff --git a/proxy/init-webext.js b/proxy/init-webext.js
index ad345fa..afa9aee 100644
--- a/proxy/init-webext.js
+++ b/proxy/init-webext.js
@@ -172,8 +172,9 @@ var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotific
init = function() {
config = new Config;
+ config.proxyType = "webext";
ui = new WebExtUI();
- broker = new Broker(config.brokerUrl);
+ broker = new Broker(config);
snowflake = new Snowflake(config, ui, broker);
log('== snowflake proxy ==');
ui.initToggle();
diff --git a/proxy/spec/broker.spec.js b/proxy/spec/broker.spec.js
index 6ab9691..28a66c4 100644
--- a/proxy/spec/broker.spec.js
+++ b/proxy/spec/broker.spec.js
@@ -22,7 +22,9 @@ describe('Broker', function() {
it('can be created', function() {
var b;
- b = new Broker('fake');
+ var config = new Config;
+ config.brokerUrl = 'fake';
+ b = new Broker(config);
expect(b.url).toEqual('https://fake/');
expect(b.id).not.toBeNull();
});
@@ -31,7 +33,9 @@ describe('Broker', function() {
it('polls and promises a client offer', function(done) {
var b, poll;
- b = new Broker('fake');
+ var config = new Config;
+ config.brokerUrl = 'fake';
+ b = new Broker(config);
// fake successful request and response from broker.
spyOn(b, '_postRequest').and.callFake(function() {
b._xhr.readyState = b._xhr.DONE;
@@ -53,7 +57,9 @@ describe('Broker', function() {
it('rejects if the broker timed-out', function(done) {
var b, poll;
- b = new Broker('fake');
+ var config = new Config;
+ config.brokerUrl = 'fake';
+ b = new Broker(config);
// fake timed-out request from broker
spyOn(b, '_postRequest').and.callFake(function() {
b._xhr.readyState = b._xhr.DONE;
@@ -75,7 +81,9 @@ describe('Broker', function() {
it('rejects on any other status', function(done) {
var b, poll;
- b = new Broker('fake');
+ var config = new Config;
+ config.brokerUrl = 'fake';
+ b = new Broker(config);
// fake timed-out request from broker
spyOn(b, '_postRequest').and.callFake(function() {
b._xhr.readyState = b._xhr.DONE;
@@ -99,14 +107,18 @@ describe('Broker', function() {
});
it('responds to the broker with answer', function() {
- var b = new Broker('fake');
+ var config = new Config;
+ config.brokerUrl = 'fake';
+ var b = new Broker(config);
spyOn(b, '_postRequest');
b.sendAnswer('fake id', 123);
expect(b._postRequest).toHaveBeenCalledWith(jasmine.any(Object), 'answer', '{"Version":"1.0","Sid":"fake id","Answer":"123"}');
});
it('POST XMLHttpRequests to the broker', function() {
- var b = new Broker('fake');
+ var config = new Config;
+ config.brokerUrl = 'fake';
+ var b = new Broker(config);
b._xhr = new XMLHttpRequest();
spyOn(b._xhr, 'open');
spyOn(b._xhr, 'setRequestHeader');
More information about the tor-commits
mailing list