bypass system dns
This commit is contained in:
@@ -45,4 +45,5 @@ public class System {
|
||||
|
||||
public static native void exec(String cmd);
|
||||
public static native String getABI();
|
||||
public static native String getDNS1();
|
||||
}
|
||||
|
||||
+10
-1
@@ -6,11 +6,18 @@
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <cpu-features.h>
|
||||
#include <sys/system_properties.h>
|
||||
|
||||
#define LOGI(...) do { __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__); } while(0)
|
||||
#define LOGW(...) do { __android_log_print(ANDROID_LOG_WARN, LOG_TAG, __VA_ARGS__); } while(0)
|
||||
#define LOGE(...) do { __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__); } while(0)
|
||||
|
||||
jstring Java_com_github_shadowsocks_system_getdns1(JNIEnv *env, jobject thiz) {
|
||||
char dns1[PROP_VALUE_MAX];
|
||||
__system_property_get("net.dns1", dns1);
|
||||
return env->NewStringUTF(dns1);
|
||||
}
|
||||
|
||||
jstring Java_com_github_shadowsocks_system_getabi(JNIEnv *env, jobject thiz) {
|
||||
AndroidCpuFamily family = android_getCpuFamily();
|
||||
uint64_t features = android_getCpuFeatures();
|
||||
@@ -45,7 +52,9 @@ static JNINativeMethod method_table[] = {
|
||||
{ "exec", "(Ljava/lang/String;)V",
|
||||
(void*) Java_com_github_shadowsocks_system_exec },
|
||||
{ "getABI", "()Ljava/lang/String;",
|
||||
(void*) Java_com_github_shadowsocks_system_getabi }
|
||||
(void*) Java_com_github_shadowsocks_system_getabi },
|
||||
{ "getDNS1", "()Ljava/lang/String;",
|
||||
(void*) Java_com_github_shadowsocks_system_getdns1 }
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
@@ -120,7 +120,7 @@ class ShadowsocksNatService extends Service with BaseService {
|
||||
} else {
|
||||
val conf = {
|
||||
if (config.isGFWList)
|
||||
ConfigUtils.PDNSD_BYPASS.format("127.0.0.1", getString(R.string.exclude))
|
||||
ConfigUtils.PDNSD_BYPASS.format("127.0.0.1", System.getDNS1, getString(R.string.exclude))
|
||||
else
|
||||
ConfigUtils.PDNSD.format("127.0.0.1")
|
||||
}
|
||||
@@ -313,8 +313,8 @@ class ShadowsocksNatService extends Service with BaseService {
|
||||
init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1"))
|
||||
if (config.isGFWList) {
|
||||
// Bypass DNS in China
|
||||
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-d " + System.getDNS1))
|
||||
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-d 114.114.114.114"))
|
||||
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-d 114.114.115.115"))
|
||||
}
|
||||
if (hasRedirectSupport) {
|
||||
init_sb
|
||||
|
||||
@@ -77,7 +77,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
||||
|
||||
def isByass(net: SubnetUtils): Boolean = {
|
||||
val info = net.getInfo
|
||||
info.isInRange(config.proxy) || info.isInRange("114.114.114.114") || info.isInRange("114.114.115.115")
|
||||
info.isInRange(config.proxy) || info.isInRange("114.114.114.114") || info.isInRange(System.getDNS1)
|
||||
}
|
||||
|
||||
def startShadowsocksDaemon() {
|
||||
@@ -92,7 +92,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
|
||||
def startDnsDaemon() {
|
||||
val conf = {
|
||||
if (config.isGFWList)
|
||||
ConfigUtils.PDNSD_BYPASS.format("0.0.0.0", getString(R.string.exclude))
|
||||
ConfigUtils.PDNSD_BYPASS.format("0.0.0.0", System.getDNS1, getString(R.string.exclude))
|
||||
else
|
||||
ConfigUtils.PDNSD.format("0.0.0.0")
|
||||
}
|
||||
|
||||
@@ -110,12 +110,12 @@ object ConfigUtils {
|
||||
|
|
||||
|server {
|
||||
| label = "china-servers";
|
||||
| ip = 114.114.114.114, 114.114.115.115;
|
||||
| ip = %s, 114.114.114.114;
|
||||
| uptest = none;
|
||||
| preset = on;
|
||||
| include = %s;
|
||||
| policy = excluded;
|
||||
| timeout = 3;
|
||||
| timeout = 2;
|
||||
|}
|
||||
|
|
||||
|server {
|
||||
@@ -197,4 +197,4 @@ object ConfigUtils {
|
||||
new Config(isGlobalProxy, isGFWList, isBypassApps, isTrafficStat, isUdpDns, profileName, proxy,
|
||||
sitekey, encMethod, proxiedAppString, remotePort, localPort)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user