diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt
index 70b966b7..5f37e276 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt
@@ -22,6 +22,7 @@ object AppConfig {
const val PREF_VPN_DNS = "pref_vpn_dns"
const val PREF_REMOTE_DNS = "pref_remote_dns"
const val PREF_DOMESTIC_DNS = "pref_domestic_dns"
+ const val PREF_LOCAL_DNS_PORT = "pref_local_dns_port"
const val PREF_FORWARD_IPV6 = "pref_forward_ipv6"
const val PREF_ROUTING_DOMAIN_STRATEGY = "pref_routing_domain_strategy"
const val PREF_ROUTING_MODE = "pref_routing_mode"
diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt
index c374b3b8..786dbc8b 100644
--- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt
+++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt
@@ -4,6 +4,7 @@ import android.arch.lifecycle.ViewModelProviders
import android.content.Intent
import android.os.Bundle
import android.support.v7.preference.*
+import android.text.TextUtils
import android.view.View
import com.v2ray.ang.R
import com.v2ray.ang.AppConfig
@@ -29,6 +30,10 @@ class SettingsActivity : BaseActivity() {
class SettingsFragment : PreferenceFragmentCompat() {
private val perAppProxy by lazy { findPreference(AppConfig.PREF_PER_APP_PROXY) as CheckBoxPreference }
+ private val localDns by lazy { findPreference(AppConfig.PREF_LOCAL_DNS_ENABLED) }
+ private val fakeDns by lazy { findPreference(AppConfig.PREF_FAKE_DNS_ENABLED) }
+ private val localDnsPort by lazy { findPreference(AppConfig.PREF_LOCAL_DNS_PORT) }
+ private val vpnDns by lazy { findPreference(AppConfig.PREF_VPN_DNS) }
private val sppedEnabled by lazy { findPreference(AppConfig.PREF_SPEED_ENABLED) as CheckBoxPreference }
private val sniffingEnabled by lazy { findPreference(AppConfig.PREF_SNIFFING_ENABLED) as CheckBoxPreference }
private val proxySharing by lazy { findPreference(AppConfig.PREF_PROXY_SHARING) as CheckBoxPreference }
@@ -141,9 +146,21 @@ class SettingsActivity : BaseActivity() {
restartProxy()
true
}
-
+ localDns?.setOnPreferenceChangeListener{ _, any ->
+ updateLocalDns(any as Boolean)
+ true
+ }
+ localDnsPort?.setOnPreferenceChangeListener { _, any ->
+ val nval = any as String
+ localDnsPort?.summary = if (TextUtils.isEmpty(nval)) "10807" else nval
+ true
+ }
+ vpnDns?.setOnPreferenceChangeListener { _, any ->
+ vpnDns?.summary = any as String
+ true
+ }
mode.setOnPreferenceChangeListener { _, newValue ->
- updatePerAppProxy(newValue.toString())
+ updateMode(newValue.toString())
true
}
mode.dialogLayoutResource = R.layout.preference_with_help_link
@@ -188,32 +205,43 @@ class SettingsActivity : BaseActivity() {
override fun onStart() {
super.onStart()
val defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity)
- updatePerAppProxy(defaultSharedPreferences.getString(AppConfig.PREF_MODE, "VPN"))
- remoteDns.summary = defaultSharedPreferences.getString(AppConfig.PREF_REMOTE_DNS, "")
+ updateMode(defaultSharedPreferences.getString(AppConfig.PREF_MODE, "VPN"))
+ var remoteDnsString = defaultSharedPreferences.getString(AppConfig.PREF_REMOTE_DNS, "")
domesticDns.summary = defaultSharedPreferences.getString(AppConfig.PREF_DOMESTIC_DNS, "")
- if (remoteDns.summary == "") {
- remoteDns.summary = AppConfig.DNS_AGENT
+ if (TextUtils.isEmpty(remoteDnsString)) {
+ remoteDnsString = AppConfig.DNS_AGENT
}
-
if ( domesticDns.summary == "") {
domesticDns.summary = AppConfig.DNS_DIRECT
}
+ remoteDns.summary = remoteDnsString
+ vpnDns?.summary = defaultSharedPreferences.getString(AppConfig.PREF_VPN_DNS, remoteDnsString)
// socksPort.summary = defaultSharedPreferences.getString(PREF_SOCKS_PORT, "10808")
// lanconnPort.summary = defaultSharedPreferences.getString(PREF_HTTP_PORT, "")
}
- private fun updatePerAppProxy(mode: String?) {
- if (mode == "VPN") {
- perAppProxy.isEnabled = true
- perAppProxy.isChecked = PreferenceManager.getDefaultSharedPreferences(activity)
- .getBoolean(AppConfig.PREF_PER_APP_PROXY, false)
- } else {
- perAppProxy.isEnabled = false
- perAppProxy.isChecked = false
+ private fun updateMode(mode: String?) {
+ val defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(activity)
+ val vpn = mode == "VPN"
+ perAppProxy.isEnabled = vpn
+ perAppProxy.isChecked = PreferenceManager.getDefaultSharedPreferences(activity)
+ .getBoolean(AppConfig.PREF_PER_APP_PROXY, false)
+ localDns?.isEnabled = vpn
+ fakeDns?.isEnabled = vpn
+ localDnsPort?.isEnabled = vpn
+ vpnDns?.isEnabled = vpn
+ if (vpn) {
+ updateLocalDns(defaultSharedPreferences.getBoolean(AppConfig.PREF_LOCAL_DNS_ENABLED, false))
}
}
+
+ private fun updateLocalDns(enabled: Boolean) {
+ fakeDns?.isEnabled = enabled
+ localDnsPort?.isEnabled = enabled
+ vpnDns?.isEnabled = !enabled
+ }
}
fun onModeHelpClicked(view: View) {
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 24d13e72..bfa8a8d7 100644
--- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml
@@ -76,7 +76,7 @@
设置
进阶设置
-
+ VPN 设置
分应用代理
分应用代理仅支持 Android 5.0 Lollipop 及更高
@@ -87,10 +87,13 @@
在通知中显示当前速度\n小图标显示流量的路由情况
启用流量探测
- 流量探测
+ 从流量中探测域名 (默认启用)
启用本地DNS
- DNS由本地设备的v2Ray-core处理(测试)
+ DNS 请求导入 core 由 DNS 模块处理(推荐启用 如果需要路由绕过局域网及大陆地址)
+
+ 启用虚拟DNS
+ 本地返回虚构解析结果 (减低延时 但个别应用可能无法使用)
IPv6 路由
转发 IPv6 流量到远程服务器(测试)
@@ -107,7 +110,9 @@
远程DNS (可选)
DNS
- 境内DNS (可选,本地DNS模式下生效)
+ VPN DNS (仅支持 IPv4/v6)
+
+ 境内DNS (可选)
DNS
SOCKS5代理端口
@@ -116,6 +121,9 @@
HTTP代理端口
HTTP代理端口
+ 本地DNS端口
+ 本地DNS端口
+
反馈
反馈改进或漏洞至 GitHub
加入Telegram Group
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 4c6b7436..416dbf7f 100644
--- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
+++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml
@@ -77,7 +77,7 @@
設定
進階設定
-
+ VPN 設定
Proxy 個別應用程式
Proxy 個別應用程式模式只支援 Android 5.0 (Lollipop) 或更高
@@ -88,10 +88,13 @@
在通知中顯示當前速度\n小圖標顯示流量的路由情況
啟用流量探測
- 流量探測
+ 從流量中探測域名 (默認啟用)
啟用本地DNS
- DNS請求由本地的v2ray core處理(測試)
+ DNS 請求導入 core 由 DNS 模塊處理(推薦啟用 如果需要路由略過局域網及中國大陸)
+
+ 啟用虛擬DNS
+ 本地返回虛構解析結果 (減低延時 但個別應用可能無法使用)
IPv6 路由
向遠端重新導向 IPv6 流量(測試)
@@ -108,7 +111,9 @@
遠端DNS (可選)
DNS
- 境内DNS (可選,僅本地DNS模式下生效)
+ VPN DNS (僅支持 IPv4/v6)
+
+ 境内DNS (可選)
DNS
SOCKS5代理連接埠
@@ -117,6 +122,8 @@
HTTP代理連接埠
HTTP代理連接埠
+ 本地DNS端口
+ 本地DNS端口
回饋
回饋提升或前往 GitHub 回報 Bug
diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml
index f15c8c8b..06782022 100644
--- a/V2rayNG/app/src/main/res/values/strings.xml
+++ b/V2rayNG/app/src/main/res/values/strings.xml
@@ -77,7 +77,7 @@
Settings
Advanced Settings
-
+ VPN Settings
Per-app proxy
Per-app proxy mode only support Android 5.0 Lollipop or higher
@@ -89,10 +89,14 @@
usage.
Enable Sniffing
- Sniffing
+ Try sniff domain from the packet (default on)
Enable local DNS
- DNS processed by v2ray-core (BETA)
+ DNS processed by core‘s DNS module (Recommended, if need routing Bypassing LAN and
+ mainland address)
+
+ Enable fake DNS
+ local DNS returns fake IP address (faster, but it may not work for some apps)
IPv6 Route
Redirect IPv6 traffic to remote (BETA)
@@ -109,7 +113,9 @@
Remote DNS (Optional)
DNS
- Domestic DNS (Optional, effects on LocalDNS mode)
+ VPN DNS (only IPv4/v6)
+
+ Domestic DNS (Optional)
DNS
SOCKS5 proxy port
@@ -118,6 +124,9 @@
HTTP proxy port
HTTP proxy port
+ Local DNS port
+ Local DNS port
+
Feedback
Feedback enhancements or bugs to GitHub
Join Telegram Group
diff --git a/V2rayNG/app/src/main/res/xml/pref_settings.xml b/V2rayNG/app/src/main/res/xml/pref_settings.xml
index 021594a4..7c1fe151 100644
--- a/V2rayNG/app/src/main/res/xml/pref_settings.xml
+++ b/V2rayNG/app/src/main/res/xml/pref_settings.xml
@@ -1,6 +1,17 @@
-
+
+
+
+
+
+
+ android:key="pref_fake_dns_enabled"
+ android:summary="@string/summary_pref_fake_dns_enabled"
+ android:title="@string/title_pref_fake_dns_enabled" />
-
+
-
+
@@ -40,6 +53,11 @@
android:summary="%s"
android:title="@string/title_pref_routing_domain_strategy" />
+
+
-
-
@@ -62,19 +75,11 @@
android:title="@string/title_pref_forward_ipv6" />
-
-
-
-
+ android:defaultValue="false"
+ android:key="pref_proxy_sharing_enabled"
+ android:onClick="proxySharingOnClick"
+ android:summary="@string/summary_pref_proxy_sharing_enabled"
+ android:title="@string/title_pref_proxy_sharing_enabled" />
+
+
+
+