mirror of
https://github.com/transatoshi-mw/grin-web-wallet.git
synced 2025-10-06 15:52:47 +00:00
229 lines
6.1 KiB
JavaScript
Executable File
229 lines
6.1 KiB
JavaScript
Executable File
// 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;
|