diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt
index a5d6dbdc..09e3a9d5 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/AppConfig.kt
@@ -56,6 +56,7 @@ object AppConfig {
const val PREF_DNS_HOSTS = "pref_dns_hosts"
const val PREF_DELAY_TEST_URL = "pref_delay_test_url"
const val PREF_LOGLEVEL = "pref_core_loglevel"
+ const val PREF_OUTBOUND_DOMAIN_RESOLVE_METHOD = "pref_outbound_domain_resolve_method"
const val PREF_MODE = "pref_mode"
const val PREF_IS_BOOTED = "pref_is_booted"
const val PREF_CHECK_UPDATE_PRE_RELEASE = "pref_check_update_pre_release"
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/FmtBase.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/FmtBase.kt
index ec2d7801..73cdf958 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/FmtBase.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/fmt/FmtBase.kt
@@ -4,6 +4,7 @@ import com.v2ray.ang.AppConfig
import com.v2ray.ang.dto.NetworkType
import com.v2ray.ang.dto.ProfileItem
import com.v2ray.ang.extension.isNotNullEmpty
+import com.v2ray.ang.handler.MmkvManager
import com.v2ray.ang.util.HttpUtil
import com.v2ray.ang.util.Utils
import java.net.URI
@@ -151,7 +152,19 @@ open class FmtBase {
}
fun getServerAddress(profileItem: ProfileItem): String {
- return HttpUtil.toIdnDomain(profileItem.server.orEmpty())
- }
+ if (Utils.isPureIpAddress(profileItem.server.orEmpty())) {
+ return profileItem.server.orEmpty()
+ }
+ val domain = HttpUtil.toIdnDomain(profileItem.server.orEmpty())
+ if (MmkvManager.decodeSettingsString(AppConfig.PREF_OUTBOUND_DOMAIN_RESOLVE_METHOD, "1") != "2") {
+ return domain
+ }
+ //Resolve and replace domain
+ val resolvedIps = HttpUtil.resolveHostToIP(domain, MmkvManager.decodeSettingsBool(AppConfig.PREF_PREFER_IPV6))
+ if (resolvedIps.isNullOrEmpty()) {
+ return domain
+ }
+ return resolvedIps.first()
+ }
}
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt
index ddbc78a3..fc77271e 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/handler/V2rayConfigManager.kt
@@ -131,7 +131,10 @@ object V2rayConfigManager {
v2rayConfig.policy = null
}
- resolveOutboundDomainsToHosts(v2rayConfig)
+ //Resolve and add to DNS Hosts
+ if (MmkvManager.decodeSettingsString(AppConfig.PREF_OUTBOUND_DOMAIN_RESOLVE_METHOD, "1") == "1") {
+ resolveOutboundDomainsToHosts(v2rayConfig)
+ }
result.status = true
result.content = JsonUtil.toJsonPretty(v2rayConfig) ?: ""
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt
index 515bc65f..6af64e3a 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt
@@ -257,6 +257,7 @@ class SettingsActivity : BaseActivity() {
AppConfig.PREF_LANGUAGE,
AppConfig.PREF_UI_MODE_NIGHT,
AppConfig.PREF_LOGLEVEL,
+ AppConfig.PREF_OUTBOUND_DOMAIN_RESOLVE_METHOD,
AppConfig.PREF_MODE
).forEach { key ->
if (MmkvManager.decodeSettingsString(key) != null) {
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt
index e12a56e5..7ac5d60f 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt
@@ -49,6 +49,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
AppConfig.PREF_LOCAL_DNS_PORT,
AppConfig.PREF_SOCKS_PORT,
AppConfig.PREF_LOGLEVEL,
+ AppConfig.PREF_OUTBOUND_DOMAIN_RESOLVE_METHOD,
AppConfig.PREF_LANGUAGE,
AppConfig.PREF_UI_MODE_NIGHT,
AppConfig.PREF_ROUTING_DOMAIN_STRATEGY,
diff --git a/V2rayNG/app/src/main/res/values-ar/strings.xml b/V2rayNG/app/src/main/res/values-ar/strings.xml
index ba499e3d..d74011e9 100644
--- a/V2rayNG/app/src/main/res/values-ar/strings.xml
+++ b/V2rayNG/app/src/main/res/values-ar/strings.xml
@@ -241,6 +241,7 @@
فاصل التحديث التلقائي (بالدقائق، الحد الأدنى للقيمة 15)
مستوى السجل
+ Outbound domain pre-resolve method
الوضع
انقر هنا للحصول على مزيد من المساعدة
اللغة
@@ -357,4 +358,10 @@
- Not Bypass
+
+ - Do not resolve
+ - Resolve and add to DNS Hosts
+ - Resolve and replace domain
+
+
diff --git a/V2rayNG/app/src/main/res/values-bn/strings.xml b/V2rayNG/app/src/main/res/values-bn/strings.xml
index e71fe170..f36c9d3a 100644
--- a/V2rayNG/app/src/main/res/values-bn/strings.xml
+++ b/V2rayNG/app/src/main/res/values-bn/strings.xml
@@ -241,6 +241,7 @@
অটো আপডেট ইন্টারভ্যাল (মিনিট, সর্বনিম্ন মান ১৫)
লগ স্তর
+ Outbound domain pre-resolve method
মোড
আরো সাহায্যের জন্য ক্লিক করুন
ভাষা
@@ -362,4 +363,10 @@
- Not Bypass
+
+ - Do not resolve
+ - Resolve and add to DNS Hosts
+ - Resolve and replace domain
+
+
\ No newline at end of file
diff --git a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml
index 002d64df..1af31c90 100644
--- a/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml
+++ b/V2rayNG/app/src/main/res/values-bqi-rIR/strings.xml
@@ -241,6 +241,7 @@
فاسله ورۊ کردن خوتکار (اقلن وا 15 دؽقه بۊ)
سئت داسووا
+ Outbound domain pre-resolve method
هالت
سی دووسمندیا وو هیاری بیشتر، ری ای هؽل بزݩ
زۉݩ
@@ -372,4 +373,10 @@
- دور زیڌه نبۊ
+
+ - Do not resolve
+ - Resolve and add to DNS Hosts
+ - Resolve and replace domain
+
+
diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml
index b0a1bd8d..081571a3 100644
--- a/V2rayNG/app/src/main/res/values-fa/strings.xml
+++ b/V2rayNG/app/src/main/res/values-fa/strings.xml
@@ -238,6 +238,7 @@
اشتراک های خود را به طور خودکار با فاصله زمانی در پس زمینه به روز کنید. بسته به دستگاه، این ویژگی ممکن است همیشه کار نکند.
فاصله به روزرسانی خودکار ( حداقل مقدار ، 15 دقیقه )
سطح گزارشات
+ Outbound domain pre-resolve method
حالت
برای اطلاعات و راهنمایی بیشتر، روی این متن کلیک کنید
زبان
@@ -371,4 +372,10 @@
- دور زده نشود
+
+ - Do not resolve
+ - Resolve and add to DNS Hosts
+ - Resolve and replace domain
+
+
diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml
index 4dcbdfdd..c71054a0 100644
--- a/V2rayNG/app/src/main/res/values-ru/strings.xml
+++ b/V2rayNG/app/src/main/res/values-ru/strings.xml
@@ -240,6 +240,7 @@
Интервал автообновления (минут, не менее 15)
Подробность ведения журнала
+ Outbound domain pre-resolve method
Режим
Нажмите для получения дополнительной информации
Язык
@@ -371,4 +372,10 @@
- Не пропускает
+
+ - Do not resolve
+ - Resolve and add to DNS Hosts
+ - Resolve and replace domain
+
+
diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml
index e7685ab0..86238b79 100644
--- a/V2rayNG/app/src/main/res/values-vi/strings.xml
+++ b/V2rayNG/app/src/main/res/values-vi/strings.xml
@@ -241,6 +241,7 @@
Thời gian cập nhật tự động (Phút, giá trị tối thiểu là 15)
Cấp độ nhật ký
+ Outbound domain pre-resolve method
Chế độ kết nối
Nhấn vào đây nếu bạn cần trợ giúp!
Ngôn ngữ
@@ -359,4 +360,10 @@
- Not Bypass
+
+ - Do not resolve
+ - Resolve and add to DNS Hosts
+ - Resolve and replace domain
+
+
diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
index 659cb45d..a8eec856 100644
--- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
@@ -238,6 +238,7 @@
自动更新间隔(分钟,最小值 15)
日志级别
+ Outbound 域名预解析方式
模式
点此查看更多帮助
语言
@@ -363,4 +364,10 @@
- 不绕过
+
+ - 不解析
+ - 解析后添加至 DNS Hosts
+ - 解析后替换原域名
+
+
diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
index bd066a5b..f8b938c5 100644
--- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
@@ -239,6 +239,7 @@
自動更新間隔(分鐘,最小值 15)
記錄層級
+ Outbound 網域預解析方式
模式
輕觸以檢視說明
語言
@@ -363,5 +364,10 @@
- 不繞過
+
+ - 不解析
+ - 解析後加入 DNS Hosts
+ - 解析後替換原網域名稱
+
diff --git a/V2rayNG/app/src/main/res/values/arrays.xml b/V2rayNG/app/src/main/res/values/arrays.xml
index 2f03ac86..27f0846e 100644
--- a/V2rayNG/app/src/main/res/values/arrays.xml
+++ b/V2rayNG/app/src/main/res/values/arrays.xml
@@ -202,4 +202,10 @@
- 192.168.100.x
+
+ - 0
+ - 1
+ - 2
+
+
\ No newline at end of file
diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml
index 3d298755..57106306 100644
--- a/V2rayNG/app/src/main/res/values/strings.xml
+++ b/V2rayNG/app/src/main/res/values/strings.xml
@@ -242,6 +242,7 @@
Auto Update Interval (Minutes, Min value 15)
Log Level
+ Outbound domain pre-resolve method
Mode
Click me for more help
Language
@@ -373,4 +374,10 @@
- Not Bypass
+
+ - Do not resolve
+ - Resolve and add to DNS Hosts
+ - Resolve and replace domain
+
+
diff --git a/V2rayNG/app/src/main/res/xml/pref_settings.xml b/V2rayNG/app/src/main/res/xml/pref_settings.xml
index 4a648ed8..b5ee7aab 100644
--- a/V2rayNG/app/src/main/res/xml/pref_settings.xml
+++ b/V2rayNG/app/src/main/res/xml/pref_settings.xml
@@ -222,6 +222,14 @@
android:summary="%s"
android:title="@string/title_core_loglevel" />
+
+