Commit cefe9b17 authored by Max Lv's avatar Max Lv

refine the iptables setup

parent c65baf03
......@@ -70,10 +70,10 @@ class ShadowsocksNatService extends Service with BaseService {
val TAG = "ShadowsocksNatService"
val CMD_IPTABLES_RETURN = " -t nat -A OUTPUT -p tcp -d 0.0.0.0 -j RETURN\n"
val CMD_IPTABLES_REDIRECT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " + "-j REDIRECT --to 8123\n"
val CMD_IPTABLES_RETURN = " -t nat -A OUTPUT -p tcp -d 0.0.0.0 -j RETURN"
val CMD_IPTABLES_REDIRECT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " + "-j REDIRECT --to 8123"
val CMD_IPTABLES_DNAT_ADD_SOCKS = " -t nat -A OUTPUT -p tcp " +
"-j DNAT --to-destination 127.0.0.1:8123\n"
"-j DNAT --to-destination 127.0.0.1:8123"
val DNS_PORT = 8153
private val mStartForegroundSignature = Array[Class[_]](classOf[Int], classOf[Notification])
......@@ -298,9 +298,9 @@ class ShadowsocksNatService extends Service with BaseService {
}
def setupIptables: Boolean = {
val init_sb = new StringBuilder
val http_sb = new StringBuilder
init_sb.append(Utils.getIptables).append(" -t nat -F OUTPUT\n")
val init_sb = new ArrayBuffer[String]
val http_sb = new ArrayBuffer[String]
init_sb.append(Utils.getIptables + " -t nat -F OUTPUT")
val cmd_bypass = Utils.getIptables + CMD_IPTABLES_RETURN
if (!InetAddressUtils.isIPv6Address(config.proxy.toUpperCase)) {
init_sb.append(cmd_bypass.replace("-d 0.0.0.0", "-d " + config.proxy))
......@@ -308,16 +308,13 @@ class ShadowsocksNatService extends Service with BaseService {
init_sb.append(cmd_bypass.replace("0.0.0.0", "127.0.0.1"))
if (hasRedirectSupport) {
init_sb
.append(Utils.getIptables)
.append(" -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to ")
.append(DNS_PORT)
.append("\n")
.append(Utils.getIptables + " -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to "
+ DNS_PORT)
} else {
init_sb
.append(Utils.getIptables)
.append(" -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:")
.append(DNS_PORT)
.append("\n")
.append(Utils.getIptables
+ " -t nat -A OUTPUT -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:"
+ DNS_PORT)
}
if (config.isGFWList) {
val chn_list: Array[String] = getResources.getStringArray(R.array.chn_list)
......@@ -354,10 +351,8 @@ class ShadowsocksNatService extends Service with BaseService {
}
}
}
val init_rules: String = init_sb.toString()
Console.runRootCommand(init_rules)
val redt_rules: String = http_sb.toString()
Console.runRootCommand(redt_rules)
Console.runRootCommand(init_sb.toArray)
Console.runRootCommand(http_sb.toArray)
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