Commit 1a09f8d1 authored by Max Lv's avatar Max Lv

bypass system dns

parent 3aaad221
......@@ -45,4 +45,5 @@ public class System {
public static native void exec(String cmd);
public static native String getABI();
public static native String getDNS1();
}
......@@ -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)
}
}
\ No newline at end of file
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment