Commit bbdcb440 authored by Max Lv's avatar Max Lv

add dns proxy option

parent 1e2b3c8d
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.shadowsocks" package="com.github.shadowsocks"
android:installLocation="auto" android:installLocation="auto"
android:versionCode="5" android:versionCode="6"
android:versionName="1.1.1"> android:versionName="1.1.2">
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.github.shadowsocks</groupId> <groupId>com.github.shadowsocks</groupId>
<artifactId>shadowsocks</artifactId> <artifactId>shadowsocks</artifactId>
<version>1.1.1</version> <version>1.1.2</version>
<packaging>apk</packaging> <packaging>apk</packaging>
<name>Shadowsocks</name> <name>Shadowsocks</name>
......
...@@ -160,6 +160,9 @@ ...@@ -160,6 +160,9 @@
only works for Wifi on Android 4.0 and above.</string> only works for Wifi on Android 4.0 and above.</string>
<string name="remote_port">Remote Port</string> <string name="remote_port">Remote Port</string>
<string name="remote_port_summary">Remote port of shadowsocks server</string> <string name="remote_port_summary">Remote port of shadowsocks server.</string>
<string name="dns_proxy">DNS Proxy</string>
<string name="dns_proxy_summary">Redirect DNS queries to remote server.</string>
</resources> </resources>
...@@ -41,6 +41,13 @@ ...@@ -41,6 +41,13 @@
</EditTextPreference> </EditTextPreference>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/fearute_cat"> <PreferenceCategory android:title="@string/fearute_cat">
<CheckBoxPreference
android:dependency="isRunning"
android:defaultValue="true"
android:key="isDNSProxy"
android:summary="@string/dns_proxy_summary"
android:title="@string/dns_proxy">
</CheckBoxPreference>
<CheckBoxPreference <CheckBoxPreference
android:dependency="isRunning" android:dependency="isRunning"
android:defaultValue="true" android:defaultValue="true"
......
...@@ -163,6 +163,7 @@ public class ShadowsocksService extends Service { ...@@ -163,6 +163,7 @@ public class ShadowsocksService extends Service {
private boolean isGlobalProxy = false; private boolean isGlobalProxy = false;
private boolean isGFWList = false; private boolean isGFWList = false;
private boolean isBypassApps = false; private boolean isBypassApps = false;
private boolean isDNSProxy = false;
private ProxyedApp apps[]; private ProxyedApp apps[];
private Method mSetForeground; private Method mSetForeground;
private Method mStartForeground; private Method mStartForeground;
...@@ -251,6 +252,7 @@ public class ShadowsocksService extends Service { ...@@ -251,6 +252,7 @@ public class ShadowsocksService extends Service {
isGlobalProxy = settings.getBoolean("isGlobalProxy", false); isGlobalProxy = settings.getBoolean("isGlobalProxy", false);
isGFWList = settings.getBoolean("isGFWList", false); isGFWList = settings.getBoolean("isGFWList", false);
isBypassApps = settings.getBoolean("isBypassApps", false); isBypassApps = settings.getBoolean("isBypassApps", false);
isDNSProxy = settings.getBoolean("isDNSProxy", false);
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
...@@ -258,6 +260,7 @@ public class ShadowsocksService extends Service { ...@@ -258,6 +260,7 @@ public class ShadowsocksService extends Service {
boolean resolved = false; boolean resolved = false;
if (isDNSProxy) {
if (appHost != null) { if (appHost != null) {
InetAddress addr = null; InetAddress addr = null;
try { try {
...@@ -269,6 +272,9 @@ public class ShadowsocksService extends Service { ...@@ -269,6 +272,9 @@ public class ShadowsocksService extends Service {
resolved = true; resolved = true;
} }
} }
} else {
resolved = true;
}
handler.sendEmptyMessage(MSG_CONNECT_START); handler.sendEmptyMessage(MSG_CONNECT_START);
...@@ -519,17 +525,17 @@ public class ShadowsocksService extends Service { ...@@ -519,17 +525,17 @@ public class ShadowsocksService extends Service {
StringBuilder http_sb = new StringBuilder(); StringBuilder http_sb = new StringBuilder();
StringBuilder https_sb = new StringBuilder();
init_sb.append(Utils.getIptables()).append(" -t nat -F OUTPUT\n"); init_sb.append(Utils.getIptables()).append(" -t nat -F OUTPUT\n");
String cmd_bypass = Utils.getIptables() + CMD_IPTABLES_RETURN; String cmd_bypass = Utils.getIptables() + CMD_IPTABLES_RETURN;
init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "--dport " + remotePort)); init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "--dport " + remotePort));
//init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "--dport " + 53));
init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1")); init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1"));
//init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-m owner --uid-owner " if (!isDNSProxy) {
//+ getApplicationInfo().uid)); init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "--dport " + 53));
init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-m owner --uid-owner "
+ getApplicationInfo().uid));
}
if (hasRedirectSupport) { if (hasRedirectSupport) {
init_sb.append(Utils.getIptables()).append(" -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to ").append(DNS_PORT).append("\n"); init_sb.append(Utils.getIptables()).append(" -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to ").append(DNS_PORT).append("\n");
...@@ -577,8 +583,6 @@ public class ShadowsocksService extends Service { ...@@ -577,8 +583,6 @@ public class ShadowsocksService extends Service {
String redt_rules = http_sb.toString(); String redt_rules = http_sb.toString();
redt_rules += https_sb.toString();
Utils.runRootCommand(redt_rules); Utils.runRootCommand(redt_rules);
return true; return true;
......
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