From 6229a0ad63af9ce0f8b327406be9abaffb397be0 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 26 Sep 2024 10:41:36 -0400 Subject: [PATCH] making sure to only use .onion urls if the option is active --- .../vitorpamplona/amethyst/model/Account.kt | 32 +++++++++++++------ amethyst/src/main/res/values/strings.xml | 4 +-- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index ba1e1e63c..5dd029430 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -3393,15 +3393,15 @@ class Account( fun shouldUseTorForVideoDownload(url: String) = when (settings.torSettings.torType.value) { TorType.OFF -> false - TorType.INTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.videosViaTor.value) - TorType.EXTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.videosViaTor.value) + TorType.INTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.videosViaTor.value) + TorType.EXTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.videosViaTor.value) } fun shouldUseTorForPreviewUrl(url: String) = when (settings.torSettings.torType.value) { TorType.OFF -> false - TorType.INTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.urlPreviewsViaTor.value) - TorType.EXTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.urlPreviewsViaTor.value) + TorType.INTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.urlPreviewsViaTor.value) + TorType.EXTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.urlPreviewsViaTor.value) } fun shouldUseTorForTrustedRelays() = @@ -3420,6 +3420,18 @@ class Account( TorType.EXTERNAL -> shouldUseTor(normalizedUrl) } + private fun checkLocalHostOnionAndThen( + normalizedUrl: String, + final: Boolean, + ): Boolean = + if (isLocalHost(normalizedUrl)) { + false + } else if (isOnionUrl(normalizedUrl)) { + settings.torSettings.onionRelaysViaTor.value + } else { + final + } + private fun shouldUseTor(normalizedUrl: String): Boolean = if (isLocalHost(normalizedUrl)) { false @@ -3436,22 +3448,22 @@ class Account( fun shouldUseTorForMoneyOperations(url: String) = when (settings.torSettings.torType.value) { TorType.OFF -> false - TorType.INTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.moneyOperationsViaTor.value) - TorType.EXTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.moneyOperationsViaTor.value) + TorType.INTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.moneyOperationsViaTor.value) + TorType.EXTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.moneyOperationsViaTor.value) } fun shouldUseTorForNIP05(url: String) = when (settings.torSettings.torType.value) { TorType.OFF -> false - TorType.INTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.nip05VerificationsViaTor.value) - TorType.EXTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.nip05VerificationsViaTor.value) + TorType.INTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.nip05VerificationsViaTor.value) + TorType.EXTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.nip05VerificationsViaTor.value) } fun shouldUseTorForNIP96(url: String) = when (settings.torSettings.torType.value) { TorType.OFF -> false - TorType.INTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.nip96UploadsViaTor.value) - TorType.EXTERNAL -> !isLocalHost(url) && (isOnionUrl(url) || settings.torSettings.nip96UploadsViaTor.value) + TorType.INTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.nip96UploadsViaTor.value) + TorType.EXTERNAL -> checkLocalHostOnionAndThen(url, settings.torSettings.nip96UploadsViaTor.value) } fun isLocalHost(url: String) = url.contains("//127.0.0.1") || url.contains("//localhost") diff --git a/amethyst/src/main/res/values/strings.xml b/amethyst/src/main/res/values/strings.xml index f69c77c35..f6f03077b 100644 --- a/amethyst/src/main/res/values/strings.xml +++ b/amethyst/src/main/res/values/strings.xml @@ -430,8 +430,8 @@ Active Tor Engine Use the internal version or Orbot - Onion Relays - Enables .onion urls from your relay list + Onion Url/Relays + Use Tor for any .onion url DM Relays Force Tor to send and receive DMs