mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-13 11:11:30 -04:00
77 lines
1.8 KiB
JavaScript
77 lines
1.8 KiB
JavaScript
/*
|
|
Entry point.
|
|
*/
|
|
|
|
var debug, snowflake, config, broker, ui, log, dbg, init, update, silenceNotifications;
|
|
|
|
;(function () {
|
|
|
|
silenceNotifications = false;
|
|
debug = false;
|
|
snowflake = null;
|
|
config = null;
|
|
broker = null;
|
|
ui = null;
|
|
|
|
// Log to both console and UI if applicable.
|
|
// Requires that the snowflake and UI objects are hooked up in order to
|
|
// log to console.
|
|
log = function(msg) {
|
|
console.log('Snowflake: ' + msg);
|
|
return snowflake != null ? snowflake.ui.log(msg) : void 0;
|
|
};
|
|
|
|
dbg = function(msg) {
|
|
if (debug) {
|
|
return log(msg);
|
|
}
|
|
};
|
|
|
|
if (!Util.featureDetect()) {
|
|
chrome.runtime.onConnect.addListener(function(port) {
|
|
return port.postMessage({
|
|
missingFeature: true
|
|
});
|
|
});
|
|
return;
|
|
}
|
|
|
|
init = function() {
|
|
config = new Config;
|
|
ui = new WebExtUI();
|
|
broker = new Broker(config.brokerUrl);
|
|
snowflake = new Snowflake(config, ui, broker);
|
|
log('== snowflake proxy ==');
|
|
return ui.initToggle();
|
|
};
|
|
|
|
update = function() {
|
|
if (!ui.enabled) {
|
|
// Do not activate the proxy if any number of conditions are true.
|
|
snowflake.disable();
|
|
log('Currently not active.');
|
|
return;
|
|
}
|
|
// Otherwise, begin setting up WebRTC and acting as a proxy.
|
|
dbg('Contacting Broker at ' + broker.url);
|
|
log('Starting snowflake');
|
|
snowflake.setRelayAddr(config.relayAddr);
|
|
return snowflake.beginWebRTC();
|
|
};
|
|
|
|
// Notification of closing tab with active proxy.
|
|
window.onbeforeunload = function() {
|
|
if (!silenceNotifications && Snowflake.MODE.WEBRTC_READY === snowflake.state) {
|
|
return Snowflake.MESSAGE.CONFIRMATION;
|
|
}
|
|
return null;
|
|
};
|
|
|
|
window.onunload = function() {
|
|
snowflake.disable();
|
|
return null;
|
|
};
|
|
|
|
window.onload = init;
|
|
|
|
}());
|