Commit bbdcb440 authored by Max Lv's avatar Max Lv

add dns proxy option

parent 1e2b3c8d
......@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.github.shadowsocks"
android:installLocation="auto"
android:versionCode="5"
android:versionName="1.1.1">
android:versionCode="6"
android:versionName="1.1.2">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
......
......@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.shadowsocks</groupId>
<artifactId>shadowsocks</artifactId>
<version>1.1.1</version>
<version>1.1.2</version>
<packaging>apk</packaging>
<name>Shadowsocks</name>
......
......@@ -160,6 +160,9 @@
only works for Wifi on Android 4.0 and above.</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>
......@@ -41,6 +41,13 @@
</EditTextPreference>
</PreferenceCategory>
<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
android:dependency="isRunning"
android:defaultValue="true"
......
......@@ -163,6 +163,7 @@ public class ShadowsocksService extends Service {
private boolean isGlobalProxy = false;
private boolean isGFWList = false;
private boolean isBypassApps = false;
private boolean isDNSProxy = false;
private ProxyedApp apps[];
private Method mSetForeground;
private Method mStartForeground;
......@@ -203,7 +204,7 @@ public class ShadowsocksService extends Service {
new Thread() {
@Override
public void run() {
final String cmd = String.format(BASE +
final String cmd = String.format(BASE +
"shadowsocks -s \"%s\" -p \"%d\" -l \"%d\" -k \"%s\"",
appHost, remotePort, port, sitekey);
Node.exec(cmd);
......@@ -251,6 +252,7 @@ public class ShadowsocksService extends Service {
isGlobalProxy = settings.getBoolean("isGlobalProxy", false);
isGFWList = settings.getBoolean("isGFWList", false);
isBypassApps = settings.getBoolean("isBypassApps", false);
isDNSProxy = settings.getBoolean("isDNSProxy", false);
new Thread(new Runnable() {
@Override
......@@ -258,16 +260,20 @@ public class ShadowsocksService extends Service {
boolean resolved = false;
if (appHost != null) {
InetAddress addr = null;
try {
addr = InetAddress.getByName(appHost);
} catch (UnknownHostException ignored) {
}
if (addr != null) {
appHost = addr.getHostAddress();
resolved = true;
if (isDNSProxy) {
if (appHost != null) {
InetAddress addr = null;
try {
addr = InetAddress.getByName(appHost);
} catch (UnknownHostException ignored) {
}
if (addr != null) {
appHost = addr.getHostAddress();
resolved = true;
}
}
} else {
resolved = true;
}
handler.sendEmptyMessage(MSG_CONNECT_START);
......@@ -519,17 +525,17 @@ public class ShadowsocksService extends Service {
StringBuilder http_sb = new StringBuilder();
StringBuilder https_sb = new StringBuilder();
init_sb.append(Utils.getIptables()).append(" -t nat -F OUTPUT\n");
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 " + 53));
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 "
//+ getApplicationInfo().uid));
if (!isDNSProxy) {
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) {
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 {
String redt_rules = http_sb.toString();
redt_rules += https_sb.toString();
Utils.runRootCommand(redt_rules);
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