mirror of
https://github.com/transatoshi-mw/grin-web-wallet.git
synced 2025-10-07 00:02:47 +00:00
contents of zip
This commit is contained in:
228
scripts/tor_proxy.js
Executable file
228
scripts/tor_proxy.js
Executable file
@@ -0,0 +1,228 @@
|
||||
// Use strict
|
||||
"use strict";
|
||||
|
||||
|
||||
// Classes
|
||||
|
||||
// TorProxy class
|
||||
class TorProxy {
|
||||
|
||||
// Public
|
||||
|
||||
// Constructor
|
||||
constructor(settings) {
|
||||
|
||||
// Set settings
|
||||
this.settings = settings;
|
||||
|
||||
// Set use custom Tor proxy to setting's default value
|
||||
this.useCustomTorProxy = TorProxy.SETTINGS_USE_CUSTOM_TOR_PROXY_DEFAULT_VALUE;
|
||||
|
||||
// Set custom Tor proxy address to setting's default value
|
||||
this.customTorProxyAddress = TorProxy.SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_DEFAULT_VALUE;
|
||||
|
||||
// Set self
|
||||
var self = this;
|
||||
|
||||
// Once database is initialized
|
||||
Database.onceInitialized(function() {
|
||||
|
||||
// Return promise
|
||||
return new Promise(function(resolve, reject) {
|
||||
|
||||
// Return creating settings
|
||||
return Promise.all([
|
||||
|
||||
// Use custom Tor proxy setting
|
||||
self.settings.createValue(TorProxy.SETTINGS_USE_CUSTOM_TOR_PROXY_NAME, TorProxy.SETTINGS_USE_CUSTOM_TOR_PROXY_DEFAULT_VALUE),
|
||||
|
||||
// Custom Tor proxy address setting
|
||||
self.settings.createValue(TorProxy.SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_NAME, TorProxy.SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_DEFAULT_VALUE)
|
||||
|
||||
]).then(function() {
|
||||
|
||||
// Initialize settings
|
||||
var settings = [
|
||||
|
||||
// Use custom Tor proxy setting
|
||||
TorProxy.SETTINGS_USE_CUSTOM_TOR_PROXY_NAME,
|
||||
|
||||
// Custom Tor proxy address setting
|
||||
TorProxy.SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_NAME
|
||||
];
|
||||
|
||||
// Return getting settings' values
|
||||
return Promise.all(settings.map(function(setting) {
|
||||
|
||||
// Return getting setting's value
|
||||
return self.settings.getValue(setting);
|
||||
|
||||
})).then(function(settingValues) {
|
||||
|
||||
// Set use custom Tor proxy to setting's value
|
||||
self.useCustomTorProxy = settingValues[settings.indexOf(TorProxy.SETTINGS_USE_CUSTOM_TOR_PROXY_NAME)];
|
||||
|
||||
// Set custom Tor proxy address to setting's value
|
||||
self.customTorProxyAddress = settingValues[settings.indexOf(TorProxy.SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_NAME)];
|
||||
|
||||
// Resolve
|
||||
resolve();
|
||||
|
||||
// Catch errors
|
||||
}).catch(function(error) {
|
||||
|
||||
// Reject
|
||||
reject();
|
||||
});
|
||||
|
||||
// Catch errors
|
||||
}).catch(function(error) {
|
||||
|
||||
// Reject
|
||||
reject();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Settings change event
|
||||
$(this.settings).on(Settings.CHANGE_EVENT, function(event, setting) {
|
||||
|
||||
// Initialize Tor proxy setting changes
|
||||
var torProxySettingChanged = false;
|
||||
|
||||
// Check what setting was changes
|
||||
switch(setting[Settings.DATABASE_SETTING_NAME]) {
|
||||
|
||||
// Use custom Tor proxy setting
|
||||
case TorProxy.SETTINGS_USE_CUSTOM_TOR_PROXY_NAME:
|
||||
|
||||
// Set use custom Tor proxy to setting's value
|
||||
self.useCustomTorProxy = setting[Settings.DATABASE_VALUE_NAME];
|
||||
|
||||
// Set Tor Proxy settings changed
|
||||
torProxySettingChanged = true;
|
||||
|
||||
// Break
|
||||
break;
|
||||
|
||||
// Custom Tor proxy address setting
|
||||
case TorProxy.SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_NAME:
|
||||
|
||||
// Set custom Tor proxy address to setting's value
|
||||
self.customTorProxyAddress = setting[Settings.DATABASE_VALUE_NAME];
|
||||
|
||||
// Set Tor Proxy settings changed
|
||||
torProxySettingChanged = true;
|
||||
|
||||
// Break
|
||||
break;
|
||||
}
|
||||
|
||||
// Check if a Tor proxy setting was changed
|
||||
if(torProxySettingChanged === true) {
|
||||
|
||||
// Trigger settings change event
|
||||
$(self).trigger(TorProxy.SETTINGS_CHANGE_EVENT);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Using custom Tor proxy
|
||||
usingCustomTorProxy() {
|
||||
|
||||
// Return if using a custom Tor proxy
|
||||
return this.useCustomTorProxy === true;
|
||||
}
|
||||
|
||||
// Get address
|
||||
getAddress() {
|
||||
|
||||
// Check if not using a custom Tor proxy
|
||||
if(this.usingCustomTorProxy() === false) {
|
||||
|
||||
// Return default Tor Proxy address
|
||||
return TorProxy.DEFAULT_TOR_PROXY_ADDRESS;
|
||||
}
|
||||
|
||||
// Otherwise
|
||||
else {
|
||||
|
||||
// Get custom Tor proxy address
|
||||
var customTorProxyAddress = this.customTorProxyAddress.trim();
|
||||
|
||||
// Check if custom Tor proxy address isn't set
|
||||
if(customTorProxyAddress["length"] === 0) {
|
||||
|
||||
// Return custom Tor proxy address
|
||||
return customTorProxyAddress;
|
||||
}
|
||||
|
||||
// Otherwise
|
||||
else {
|
||||
|
||||
// Check if custom Tor proxy address doesn't have a protocol
|
||||
if(Common.urlContainsProtocol(customTorProxyAddress) === false) {
|
||||
|
||||
// Add protocol to custom Tor proxy address
|
||||
customTorProxyAddress = Common.HTTP_PROTOCOL + "//" + customTorProxyAddress;
|
||||
}
|
||||
|
||||
// Return custom Tor proxy address upgraded if applicable and with a trailing slash
|
||||
return Common.removeTrailingSlashes(Common.upgradeApplicableInsecureUrl(customTorProxyAddress)) + "/";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Settings change event
|
||||
static get SETTINGS_CHANGE_EVENT() {
|
||||
|
||||
// Return settings change event
|
||||
return "TorProxySettingsChangeEvent";
|
||||
}
|
||||
|
||||
// Private
|
||||
|
||||
// Settings use custom Tor proxy name
|
||||
static get SETTINGS_USE_CUSTOM_TOR_PROXY_NAME() {
|
||||
|
||||
// Return settings use custom Tor proxy name
|
||||
return "Use Custom Tor Proxy";
|
||||
}
|
||||
|
||||
// Settings use custom Tor proxy default value
|
||||
static get SETTINGS_USE_CUSTOM_TOR_PROXY_DEFAULT_VALUE() {
|
||||
|
||||
// Return settings use custom Tor proxy default value
|
||||
return false;
|
||||
}
|
||||
|
||||
// Settings custom Tor proxy address name
|
||||
static get SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_NAME() {
|
||||
|
||||
// Return settings custom Tor proxy address name
|
||||
return "Custom Tor Proxy Address";
|
||||
}
|
||||
|
||||
// Settings custom Tor proxy address default value
|
||||
static get SETTINGS_CUSTOM_TOR_PROXY_ADDRESS_DEFAULT_VALUE() {
|
||||
|
||||
// Return settings custom Tor proxy address default value
|
||||
return "";
|
||||
}
|
||||
|
||||
// Default Tor proxy address
|
||||
static get DEFAULT_TOR_PROXY_ADDRESS() {
|
||||
|
||||
// Set server
|
||||
var server = (Common.isExtension() === true || location["protocol"] === Common.FILE_PROTOCOL) ? new URL(HTTPS_SERVER_ADDRESS) : location;
|
||||
|
||||
// Return default Tor proxy address
|
||||
return ((server["protocol"] === Common.HTTPS_PROTOCOL) ? Common.HTTPS_PROTOCOL : Common.HTTP_PROTOCOL) + "//" + server["hostname"] + "/tor/";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Main function
|
||||
|
||||
// Set global object's Tor proxy
|
||||
globalThis["TorProxy"] = TorProxy;
|
Reference in New Issue
Block a user