mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2025-03-12 09:32:33 +00:00
fixes
This commit is contained in:
parent
f37125efbe
commit
2cc21fce6b
4 changed files with 17 additions and 30 deletions
|
@ -6,7 +6,6 @@ import 'package:hive/hive.dart';
|
|||
import 'package:cw_core/hive_type_ids.dart';
|
||||
import 'package:cw_core/wallet_type.dart';
|
||||
import 'package:http/io_client.dart' as ioc;
|
||||
import 'package:tor/tor.dart';
|
||||
|
||||
part 'node.g.dart';
|
||||
|
||||
|
@ -220,16 +219,6 @@ class Node extends HiveObject with Keyable {
|
|||
|
||||
String? proxy = socksProxyAddress;
|
||||
|
||||
// we have to be careful here because if Tor.instance.port is called and Tor isn't enabled
|
||||
// we'll create a new tor instance that just eats up memory
|
||||
// we initialize tor in the tor view model first so that this doesn't happen
|
||||
if (Tor.instance.port == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((proxy?.isEmpty ?? true)) {
|
||||
proxy = "${InternetAddress.loopbackIPv4.address}:${Tor.instance.port}";
|
||||
}
|
||||
if (proxy == null) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -724,7 +724,10 @@ Future<void> setup({
|
|||
getIt.registerFactory(() => TrocadorProvidersViewModel(getIt.get<SettingsStore>()));
|
||||
|
||||
getIt.registerSingleton(TorViewModel(getIt.get<SettingsStore>()));
|
||||
getIt.registerSingleton(ProxyWrapper(settingsStore: getIt.get<SettingsStore>()));
|
||||
getIt.registerSingleton(ProxyWrapper(
|
||||
settingsStore: getIt.get<SettingsStore>(),
|
||||
torViewModel: getIt.get<TorViewModel>(),
|
||||
));
|
||||
|
||||
if (DeviceInfo.instance.isMobile && settingsStore.shouldStartTorOnLaunch) {
|
||||
getIt.get<TorViewModel>().startTor();
|
||||
|
|
|
@ -2,6 +2,7 @@ import 'dart:io';
|
|||
|
||||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:cake_wallet/view_model/settings/tor_connection.dart';
|
||||
import 'package:cake_wallet/view_model/settings/tor_view_model.dart';
|
||||
import 'package:socks5_proxy/socks.dart';
|
||||
import 'package:tor/tor.dart';
|
||||
|
||||
|
@ -18,35 +19,28 @@ class NullOverrides extends HttpOverrides {
|
|||
class ProxyWrapper {
|
||||
ProxyWrapper({
|
||||
this.settingsStore,
|
||||
this.torViewModel,
|
||||
});
|
||||
|
||||
SettingsStore? settingsStore;
|
||||
TorViewModel? torViewModel;
|
||||
|
||||
HttpClient? _torClient;
|
||||
|
||||
// static int get port {
|
||||
// if (settingsStore?.torConnectionMode == TorConnectionMode.disabled) {
|
||||
// return -1;
|
||||
// }
|
||||
// return Tor.instance.port;
|
||||
// }
|
||||
// }
|
||||
|
||||
int getPort() {
|
||||
TorConnectionMode mode = settingsStore?.torConnectionMode ?? TorConnectionMode.disabled;
|
||||
if (mode == TorConnectionMode.disabled) {
|
||||
return -1;
|
||||
}
|
||||
return Tor.instance.port;
|
||||
return torViewModel?.torInstance.port ?? -1;
|
||||
}
|
||||
|
||||
// static bool get enabled => Tor.instance.enabled;
|
||||
|
||||
bool started = false;
|
||||
|
||||
// Method to get or create the Tor proxy instance
|
||||
Future<HttpClient> getProxyHttpClient({int? portOverride}) async {
|
||||
portOverride = (portOverride == -1 || portOverride == null) ? Tor.instance.port : portOverride;
|
||||
if (portOverride == -1 || portOverride == null) {
|
||||
portOverride = torViewModel?.torInstance.port ?? -1;
|
||||
}
|
||||
|
||||
if (!started) {
|
||||
started = true;
|
||||
|
|
|
@ -29,7 +29,7 @@ abstract class TorViewModelBase with Store {
|
|||
|
||||
bool torStarted = false;
|
||||
final SettingsStore _settingsStore;
|
||||
Tor tor = Tor.instance;
|
||||
Tor torInstance = Tor.instance;
|
||||
|
||||
@action
|
||||
Future<void> updateStartOnLaunch(bool value) async {
|
||||
|
@ -72,16 +72,17 @@ abstract class TorViewModelBase with Store {
|
|||
|
||||
if (!torStarted) {
|
||||
torStarted = true;
|
||||
tor = await Tor.init();
|
||||
await Tor.instance.enable();
|
||||
torInstance = await Tor.init();
|
||||
}
|
||||
|
||||
await torInstance.enable();
|
||||
|
||||
_settingsStore.shouldStartTorOnLaunch = true;
|
||||
|
||||
SocksTCPClient.setProxy(proxies: [
|
||||
ProxySettings(
|
||||
InternetAddress.loopbackIPv4,
|
||||
tor.port,
|
||||
torInstance.port,
|
||||
password: null,
|
||||
),
|
||||
]);
|
||||
|
@ -97,7 +98,7 @@ abstract class TorViewModelBase with Store {
|
|||
|
||||
@action
|
||||
Future<void> stopTor() async {
|
||||
// Tor.instance.disable();// removed because we don't want to have to start tor again
|
||||
torInstance.disable();
|
||||
// setting the torConnectionMode to disabled will prevent anything from actually using the proxy
|
||||
_settingsStore.shouldStartTorOnLaunch = false;
|
||||
torConnectionStatus = TorConnectionStatus.disconnected;
|
||||
|
|
Loading…
Reference in a new issue