mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-17 05:41:29 +02:00
feat: CakeTorSocks respect SOCKS_SERVER (#2444)
This commit is contained in:
@@ -100,7 +100,7 @@ class ProxyWrapper {
|
||||
try {
|
||||
switch (method) {
|
||||
case RequestMethod.get:
|
||||
resp = await client. get(
|
||||
resp = await client.get(
|
||||
uri,
|
||||
headers: headers,
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@ import 'dart:io';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
import 'package:cw_core/utils/tor/android.dart';
|
||||
import 'package:cw_core/utils/tor/disabled.dart';
|
||||
import 'package:cw_core/utils/tor/tails.dart';
|
||||
import 'package:cw_core/utils/tor/socks.dart';
|
||||
|
||||
abstract class CakeTorInstance {
|
||||
bool get started;
|
||||
@@ -23,11 +23,24 @@ abstract class CakeTorInstance {
|
||||
}
|
||||
if (Platform.isLinux) {
|
||||
try {
|
||||
String? socksServer;
|
||||
if (Platform.environment["SOCKS_SERVER"] != null) {
|
||||
socksServer = Platform.environment["SOCKS_SERVER"]!;
|
||||
}
|
||||
if (Platform.environment["SOCKS_PROXY"] != null) {
|
||||
socksServer = Platform.environment["SOCKS_PROXY"]!;
|
||||
}
|
||||
if (socksServer != null) {
|
||||
final uri = Uri.tryParse(socksServer);
|
||||
if (uri != null) {
|
||||
return CakeTorSocks(uri.port);
|
||||
}
|
||||
}
|
||||
final os = File("/etc/os-release").readAsLinesSync();
|
||||
for (var line in os) {
|
||||
if (!line.startsWith("ID=")) continue;
|
||||
if (!line.contains("tails")) continue;
|
||||
return CakeTorTails();
|
||||
return CakeTorSocks(9150);
|
||||
}
|
||||
} catch (e) {
|
||||
printV("Failed to identify linux version - /etc/os-release missing");
|
||||
@@ -35,4 +48,15 @@ abstract class CakeTorInstance {
|
||||
}
|
||||
return CakeTorDisabled();
|
||||
}
|
||||
|
||||
String toString() {
|
||||
return """
|
||||
CakeTorInstance(
|
||||
port: $port,
|
||||
started: $started,
|
||||
bootstrapped: $bootstrapped,
|
||||
enabled: $enabled,
|
||||
)
|
||||
""";
|
||||
}
|
||||
}
|
||||
@@ -70,4 +70,17 @@ DataDirectory ${p.join(dir.path, "tor-data")}
|
||||
_proc?.stdout.transform(utf8.decoder).forEach(printV);
|
||||
_proc?.stderr.transform(utf8.decoder).forEach(printV);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return """
|
||||
CakeTorAndroid(
|
||||
port: $port,
|
||||
started: $started,
|
||||
bootstrapped: $bootstrapped,
|
||||
enabled: $enabled,
|
||||
proc: $_proc,
|
||||
)
|
||||
""";
|
||||
}
|
||||
}
|
||||
@@ -18,4 +18,16 @@ class CakeTorDisabled implements CakeTorInstance {
|
||||
|
||||
@override
|
||||
Future<void> stop() => throw UnimplementedError();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return """
|
||||
CakeTorDisabled(
|
||||
port: $port,
|
||||
started: $started,
|
||||
bootstrapped: $bootstrapped,
|
||||
enabled: $enabled,
|
||||
)
|
||||
""";
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:cw_core/utils/tor/abstract.dart';
|
||||
|
||||
class CakeTorTails implements CakeTorInstance {
|
||||
class CakeTorSocks implements CakeTorInstance {
|
||||
CakeTorSocks(this.port);
|
||||
@override
|
||||
bool get bootstrapped => true;
|
||||
|
||||
@@ -8,7 +9,7 @@ class CakeTorTails implements CakeTorInstance {
|
||||
bool get enabled => true;
|
||||
|
||||
@override
|
||||
int get port => 9150;
|
||||
int port;
|
||||
|
||||
@override
|
||||
Future<void> start() async {}
|
||||
@@ -18,4 +19,16 @@ class CakeTorTails implements CakeTorInstance {
|
||||
|
||||
@override
|
||||
Future<void> stop() async {}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return """
|
||||
CakeTorSocks(
|
||||
port: $port,
|
||||
started: $started,
|
||||
bootstrapped: $bootstrapped,
|
||||
enabled: $enabled,
|
||||
)
|
||||
""";
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,11 @@ import 'package:cake_wallet/src/screens/base_page.dart';
|
||||
import 'package:cake_wallet/view_model/dev/network_requests_view_model.dart';
|
||||
import 'package:cw_core/utils/proxy_logger/abstract.dart';
|
||||
import 'package:cw_core/utils/proxy_logger/memory_proxy_logger.dart';
|
||||
import 'package:cw_core/utils/proxy_wrapper.dart';
|
||||
import 'package:cw_core/utils/tor/abstract.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_mobx/flutter_mobx.dart';
|
||||
import 'package:on_chain/solana/solana.dart';
|
||||
|
||||
class DevNetworkRequests extends BasePage {
|
||||
final NetworkRequestsViewModel viewModel = NetworkRequestsViewModel();
|
||||
@@ -120,6 +123,14 @@ class DevRequestDetails extends BasePage {
|
||||
_sectionTitle("Network"),
|
||||
SelectableText(req.network.toString()),
|
||||
|
||||
if (req.network == RequestNetwork.tor)
|
||||
...[
|
||||
_sectionTitle("Tor socks server"),
|
||||
SelectableText(CakeTor.instance.runtimeType.toString()),
|
||||
_sectionTitle("Tor socks details"),
|
||||
SelectableText(CakeTor.instance.toString()),
|
||||
],
|
||||
|
||||
_sectionTitle("Body (as UTF-8)"),
|
||||
SelectableText(_tryDecodeBody(req.body)),
|
||||
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
import 'package:cw_core/utils/proxy_wrapper.dart';
|
||||
import 'package:cw_core/utils/tor/disabled.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'dart:io';
|
||||
|
||||
class FeatureFlag {
|
||||
static const bool isCakePayEnabled = false;
|
||||
static const bool isCakePayRedemptionFlowEnabled = false;
|
||||
static const bool isExolixEnabled = true;
|
||||
static const bool isBackgroundSyncEnabled = true;
|
||||
static final bool isInAppTorEnabled = (Platform.isAndroid);
|
||||
static final bool isInAppTorEnabled = CakeTor.instance is! CakeTorDisabled;
|
||||
static const int verificationWordsCount = kDebugMode ? 0 : 2;
|
||||
static const bool hasDevOptions = bool.fromEnvironment('hasDevOptions', defaultValue: kDebugMode);
|
||||
static const bool hasBitcoinViewOnly = true;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:cw_core/utils/proxy_wrapper.dart';
|
||||
import 'package:cw_core/utils/print_verbose.dart';
|
||||
|
||||
Reference in New Issue
Block a user