Hide connection test in NAT mode

This commit is contained in:
Max Lv
2015-12-16 16:13:22 +08:00
parent 0b6fe8a4da
commit ce023bf49b
3 changed files with 8 additions and 3 deletions
@@ -209,7 +209,11 @@ class Shadowsocks
def updateTraffic(): Unit = if (trafficCache == null) callback.trafficUpdated(TrafficMonitor.getTxRate,
TrafficMonitor.getRxRate, TrafficMonitor.getTxTotal, TrafficMonitor.getRxTotal) else {
if (connectionTestResult == null) connectionTestResult = getString(R.string.connection_test_pending)
preferences.stat.setSummary(connectionTestResult + "\n" + trafficCache)
if (preferences.natSwitch.isChecked) {
preferences.stat.setSummary(trafficCache)
} else {
preferences.stat.setSummary(connectionTestResult + "\n" + trafficCache)
}
}
def attachService: Unit = attachService(callback)
@@ -364,10 +364,11 @@ class ShadowsocksNatService extends BaseService {
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-d " + config.proxy))
}
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-d 127.0.0.1"))
init_sb.append(cmd_bypass.replace("-p tcp -d 0.0.0.0", "-m owner --uid-owner " + myUid))
init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "--dport 53"))
init_sb.append(Utils.getIptables
+ " -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:" + 8153)
+ " -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:8153")
if (!config.isProxyApps || config.isBypassApps) {
http_sb.append(Utils.getIptables + CMD_IPTABLES_DNAT_ADD_SOCKS)
@@ -38,7 +38,7 @@ class ShadowsocksSettings extends PreferenceFragment with OnSharedPreferenceChan
}
ThrowableFuture {
// Based on: https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/connectivity/NetworkMonitor.java#640
autoDisconnect(new URL("https", "www.google.com", "/generate_204").openConnection
autoDisconnect(new URL("https", "www.google.com", "/generate_204").openConnection()
.asInstanceOf[HttpURLConnection]) { conn =>
conn.setConnectTimeout(5 * 1000)
conn.setReadTimeout(5 * 1000)