added support for tor entry/exit countries

This commit is contained in:
Fabian Freund
2026-01-08 18:42:03 +01:00
parent f23c1fa04f
commit 2741876ed5
9 changed files with 276 additions and 35 deletions
@@ -35,6 +35,8 @@ class TorSettings with FastEquatable {
final TorConnectionConfig config;
final bool requireBridge;
final bool fetchRemoteBridges;
final String? entryNodeCountry;
final String? exitNodeCountry;
TorSettings({
required this.proxyRegularTabsMode,
@@ -42,6 +44,8 @@ class TorSettings with FastEquatable {
required this.config,
required this.requireBridge,
required this.fetchRemoteBridges,
required this.entryNodeCountry,
required this.exitNodeCountry,
});
TorSettings.withDefaults({
@@ -50,6 +54,8 @@ class TorSettings with FastEquatable {
TorConnectionConfig? config,
bool? requireBridge,
bool? fetchRemoteBridges,
this.entryNodeCountry,
this.exitNodeCountry,
}) : proxyRegularTabsMode =
proxyRegularTabsMode ?? TorRegularTabProxyMode.container,
proxyPrivateTabsTor = proxyPrivateTabsTor ?? false,
@@ -69,5 +75,7 @@ class TorSettings with FastEquatable {
config,
requireBridge,
fetchRemoteBridges,
entryNodeCountry,
exitNodeCountry,
];
}
@@ -17,6 +17,10 @@ abstract class _$TorSettingsCWProxy {
TorSettings fetchRemoteBridges(bool fetchRemoteBridges);
TorSettings entryNodeCountry(String? entryNodeCountry);
TorSettings exitNodeCountry(String? exitNodeCountry);
/// Creates a new instance with the provided field values.
/// Passing `null` to a nullable field nullifies it, while `null` for a non-nullable field is ignored. To update a single field use `TorSettings(...).copyWith.fieldName(value)`.
///
@@ -30,6 +34,8 @@ abstract class _$TorSettingsCWProxy {
TorConnectionConfig config,
bool requireBridge,
bool fetchRemoteBridges,
String? entryNodeCountry,
String? exitNodeCountry,
});
}
@@ -60,6 +66,14 @@ class _$TorSettingsCWProxyImpl implements _$TorSettingsCWProxy {
TorSettings fetchRemoteBridges(bool fetchRemoteBridges) =>
call(fetchRemoteBridges: fetchRemoteBridges);
@override
TorSettings entryNodeCountry(String? entryNodeCountry) =>
call(entryNodeCountry: entryNodeCountry);
@override
TorSettings exitNodeCountry(String? exitNodeCountry) =>
call(exitNodeCountry: exitNodeCountry);
@override
/// Creates a new instance with the provided field values.
/// Passing `null` to a nullable field nullifies it, while `null` for a non-nullable field is ignored. To update a single field use `TorSettings(...).copyWith.fieldName(value)`.
@@ -74,6 +88,8 @@ class _$TorSettingsCWProxyImpl implements _$TorSettingsCWProxy {
Object? config = const $CopyWithPlaceholder(),
Object? requireBridge = const $CopyWithPlaceholder(),
Object? fetchRemoteBridges = const $CopyWithPlaceholder(),
Object? entryNodeCountry = const $CopyWithPlaceholder(),
Object? exitNodeCountry = const $CopyWithPlaceholder(),
}) {
return TorSettings(
proxyRegularTabsMode:
@@ -103,6 +119,14 @@ class _$TorSettingsCWProxyImpl implements _$TorSettingsCWProxy {
? _value.fetchRemoteBridges
// ignore: cast_nullable_to_non_nullable
: fetchRemoteBridges as bool,
entryNodeCountry: entryNodeCountry == const $CopyWithPlaceholder()
? _value.entryNodeCountry
// ignore: cast_nullable_to_non_nullable
: entryNodeCountry as String?,
exitNodeCountry: exitNodeCountry == const $CopyWithPlaceholder()
? _value.exitNodeCountry
// ignore: cast_nullable_to_non_nullable
: exitNodeCountry as String?,
);
}
}
@@ -128,6 +152,8 @@ TorSettings _$TorSettingsFromJson(Map<String, dynamic> json) =>
config: $enumDecodeNullable(_$TorConnectionConfigEnumMap, json['config']),
requireBridge: json['requireBridge'] as bool?,
fetchRemoteBridges: json['fetchRemoteBridges'] as bool?,
entryNodeCountry: json['entryNodeCountry'] as String?,
exitNodeCountry: json['exitNodeCountry'] as String?,
);
Map<String, dynamic> _$TorSettingsToJson(TorSettings instance) =>
@@ -138,6 +164,8 @@ Map<String, dynamic> _$TorSettingsToJson(TorSettings instance) =>
'config': _$TorConnectionConfigEnumMap[instance.config]!,
'requireBridge': instance.requireBridge,
'fetchRemoteBridges': instance.fetchRemoteBridges,
'entryNodeCountry': instance.entryNodeCountry,
'exitNodeCountry': instance.exitNodeCountry,
};
const _$TorRegularTabProxyModeEnumMap = {