From 0ef8524f5273089b7908017574d912172f04a83c Mon Sep 17 00:00:00 2001 From: fosse <matt.cfosse@gmail.com> Date: Fri, 26 Jan 2024 19:37:21 -0500 Subject: [PATCH] potential fixes --- cw_core/lib/node.dart | 21 +++++++-------------- lib/view_model/settings/tor_view_model.dart | 19 ++++++++++--------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/cw_core/lib/node.dart b/cw_core/lib/node.dart index d7f37e4af..4c5b107a7 100644 --- a/cw_core/lib/node.dart +++ b/cw_core/lib/node.dart @@ -62,7 +62,7 @@ class Node extends HiveObject with Keyable { @HiveField(6) String? socksProxyAddress; - + bool get isSSL => useSSL ?? false; bool get useSocksProxy => socksProxyAddress == null ? false : socksProxyAddress!.isNotEmpty; @@ -159,9 +159,6 @@ class Node extends HiveObject with Keyable { } Future<bool> requestMoneroNode() async { - if (uri.toString().contains(".onion") || useSocksProxy) { - return await requestNodeWithProxy(); - } final path = '/json_rpc'; final rpcUri = isSSL ? Uri.https(uri.authority, path) : Uri.http(uri.authority, path); final realm = 'monero-rpc'; @@ -179,17 +176,13 @@ class Node extends HiveObject with Keyable { HttpClientDigestCredentials(login ?? '', password ?? ''), ); - final http.Client client = ioc.IOClient(authenticatingClient); + final request = await authenticatingClient.postUrl(rpcUri); + request.headers.add("'Content-Type'", "application/json"); + request.add(utf8.encode(json.encode(body))); + final response = await request.close(); + final responseBody = await utf8.decodeStream(response); - final response = await client.post( - rpcUri, - headers: {'Content-Type': 'application/json'}, - body: json.encode(body), - ); - - client.close(); - - final resBody = json.decode(response.body) as Map<String, dynamic>; + final resBody = json.decode(responseBody) as Map<String, dynamic>; return !(resBody['result']['offline'] as bool); } catch (_) { return false; diff --git a/lib/view_model/settings/tor_view_model.dart b/lib/view_model/settings/tor_view_model.dart index bf477ff45..1035c542f 100644 --- a/lib/view_model/settings/tor_view_model.dart +++ b/lib/view_model/settings/tor_view_model.dart @@ -27,6 +27,8 @@ abstract class TorViewModelBase with Store { }); } + bool torStarted = false; + final SettingsStore _settingsStore; @action @@ -54,10 +56,11 @@ abstract class TorViewModelBase with Store { } bool torOnly = _settingsStore.torConnectionMode == TorConnectionMode.torOnly; - if ([WalletType.bitcoin, WalletType.litecoin, WalletType.bitcoinCash].contains(appStore.wallet!.type)) { + if ([WalletType.bitcoin, WalletType.litecoin, WalletType.bitcoinCash] + .contains(appStore.wallet!.type)) { bitcoin!.setTorOnly(appStore.wallet!, torOnly); } - + await appStore.wallet!.connectToNode(node: node); } } @@ -67,17 +70,13 @@ abstract class TorViewModelBase with Store { try { torConnectionStatus = TorConnectionStatus.connecting; - await Tor.init(); - - // start only if not already running: - if (Tor.instance.port == -1) { - await Tor.instance.enable(); + if (!torStarted) { + torStarted = true; + await Tor.init(); } _settingsStore.shouldStartTorOnLaunch = true; - torConnectionStatus = TorConnectionStatus.connected; - SocksTCPClient.setProxy(proxies: [ ProxySettings( InternetAddress.loopbackIPv4, @@ -86,6 +85,8 @@ abstract class TorViewModelBase with Store { ), ]); + torConnectionStatus = TorConnectionStatus.connected; + // connect to node through the proxy: await connectOrDisconnectNodeToProxy(connect: true); } catch (e) {