Commit 458f49d3 authored by Max Lv's avatar Max Lv

Merge pull request #376 from Mygod/master

Migrate to Android 6.0 (1)
parents d542bafb 6b9b7b67
import android.Keys._ import android.Keys._
import android.Dependencies.{apklib,aar}
android.Plugin.androidBuild android.Plugin.androidBuild
platformTarget in Android := "android-21" platformTarget in Android := "android-22"
name := "shadowsocks" name := "shadowsocks"
compileOrder in Compile := CompileOrder.JavaThenScala compileOrder in Compile := CompileOrder.JavaThenScala
javacOptions ++= Seq("-source", "1.6", "-target", "1.6")
scalacOptions += "-target:jvm-1.6"
ndkJavah in Android := List() ndkJavah in Android := List()
ndkBuild in Android := List() ndkBuild in Android := List()
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<uses-sdk <uses-sdk
android:minSdkVersion="16" android:minSdkVersion="16"
android:targetSdkVersion="21"/> android:targetSdkVersion="22"/>
<application <application
android:allowBackup="true" android:allowBackup="true"
......
...@@ -41,6 +41,7 @@ package com.github.shadowsocks ...@@ -41,6 +41,7 @@ package com.github.shadowsocks
import java.io.File import java.io.File
import java.lang.reflect.{InvocationTargetException, Method} import java.lang.reflect.{InvocationTargetException, Method}
import java.net.{Inet6Address, InetAddress}
import java.util.Locale import java.util.Locale
import android.app._ import android.app._
...@@ -54,7 +55,6 @@ import android.widget.Toast ...@@ -54,7 +55,6 @@ import android.widget.Toast
import com.github.shadowsocks.aidl.Config import com.github.shadowsocks.aidl.Config
import com.github.shadowsocks.utils._ import com.github.shadowsocks.utils._
import com.google.android.gms.analytics.HitBuilders import com.google.android.gms.analytics.HitBuilders
import org.apache.http.conn.util.InetAddressUtils
import scala.collection._ import scala.collection._
import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer
...@@ -430,7 +430,7 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -430,7 +430,7 @@ class ShadowsocksNatService extends Service with BaseService {
init_sb.append(Utils.getIptables + " -t nat -F OUTPUT") init_sb.append(Utils.getIptables + " -t nat -F OUTPUT")
val cmd_bypass = Utils.getIptables + CMD_IPTABLES_RETURN val cmd_bypass = Utils.getIptables + CMD_IPTABLES_RETURN
if (!InetAddressUtils.isIPv6Address(config.proxy.toUpperCase)) { if (!InetAddress.getByName(config.proxy.toUpperCase).isInstanceOf[Inet6Address]) {
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 " + 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", "-d 127.0.0.1"))
...@@ -576,8 +576,7 @@ class ShadowsocksNatService extends Service with BaseService { ...@@ -576,8 +576,7 @@ class ShadowsocksNatService extends Service with BaseService {
killProcesses() killProcesses()
var resolved: Boolean = false var resolved: Boolean = false
if (!InetAddressUtils.isIPv4Address(config.proxy) && if (!Utils.isNumeric(config.proxy)) {
!InetAddressUtils.isIPv6Address(config.proxy)) {
Utils.resolve(config.proxy, enableIPv6 = true) match { Utils.resolve(config.proxy, enableIPv6 = true) match {
case Some(a) => case Some(a) =>
config.proxy = a config.proxy = a
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
package com.github.shadowsocks package com.github.shadowsocks
import java.io.File import java.io.File
import java.net.InetAddress
import java.util.Locale import java.util.Locale
import android.app._ import android.app._
...@@ -53,7 +54,6 @@ import com.github.shadowsocks.aidl.Config ...@@ -53,7 +54,6 @@ import com.github.shadowsocks.aidl.Config
import com.github.shadowsocks.utils._ import com.github.shadowsocks.utils._
import com.google.android.gms.analytics.HitBuilders import com.google.android.gms.analytics.HitBuilders
import org.apache.commons.net.util.SubnetUtils import org.apache.commons.net.util.SubnetUtils
import org.apache.http.conn.util.InetAddressUtils
import scala.collection.mutable import scala.collection.mutable
import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer
...@@ -238,8 +238,7 @@ class ShadowsocksVpnService extends VpnService with BaseService { ...@@ -238,8 +238,7 @@ class ShadowsocksVpnService extends VpnService with BaseService {
// Resolve the server address // Resolve the server address
var resolved: Boolean = false var resolved: Boolean = false
if (!InetAddressUtils.isIPv4Address(config.proxy) && if (!Utils.isNumeric(config.proxy)) {
!InetAddressUtils.isIPv6Address(config.proxy)) {
Utils.resolve(config.proxy, enableIPv6 = true) match { Utils.resolve(config.proxy, enableIPv6 = true) match {
case Some(addr) => case Some(addr) =>
config.proxy = addr config.proxy = addr
......
...@@ -44,8 +44,7 @@ import android.content.pm.PackageManager ...@@ -44,8 +44,7 @@ import android.content.pm.PackageManager
import android.graphics.drawable.{BitmapDrawable, Drawable} import android.graphics.drawable.{BitmapDrawable, Drawable}
import android.util.{Base64, Log} import android.util.{Base64, Log}
import java.io._ import java.io._
import java.net.{UnknownHostException, InetAddress, NetworkInterface} import java.net._
import org.apache.http.conn.util.InetAddressUtils
import org.xbill.DNS._ import org.xbill.DNS._
import android.graphics._ import android.graphics._
import android.app.ActivityManager import android.app.ActivityManager
...@@ -233,6 +232,9 @@ object Utils { ...@@ -233,6 +232,9 @@ object Utils {
None None
} }
lazy val isNumericMethod = classOf[InetAddress].getMethod("isNumeric", classOf[String])
def isNumeric(address: String): Boolean = isNumericMethod.invoke(null, address).asInstanceOf[Boolean]
/** /**
* Get local IPv4 address * Get local IPv4 address
*/ */
...@@ -245,9 +247,8 @@ object Utils { ...@@ -245,9 +247,8 @@ object Utils {
while (addrs.hasMoreElements) { while (addrs.hasMoreElements) {
val addr = addrs.nextElement() val addr = addrs.nextElement()
if (!addr.isLoopbackAddress && !addr.isLinkLocalAddress) { if (!addr.isLoopbackAddress && !addr.isLinkLocalAddress) {
val sAddr = addr.getHostAddress.toUpperCase if (addr.isInstanceOf[Inet4Address]) {
if (InetAddressUtils.isIPv4Address(sAddr)) { return Some(addr.getHostAddress.toUpperCase)
return Some(sAddr)
} }
} }
} }
...@@ -271,8 +272,7 @@ object Utils { ...@@ -271,8 +272,7 @@ object Utils {
while (addrs.hasMoreElements) { while (addrs.hasMoreElements) {
val addr = addrs.nextElement() val addr = addrs.nextElement()
if (!addr.isLoopbackAddress && !addr.isLinkLocalAddress) { if (!addr.isLoopbackAddress && !addr.isLinkLocalAddress) {
val sAddr = addr.getHostAddress.toUpperCase if (addr.isInstanceOf[Inet6Address]) {
if (InetAddressUtils.isIPv6Address(sAddr)) {
if (BuildConfig.DEBUG) Log.d(TAG, "IPv6 address detected") if (BuildConfig.DEBUG) Log.d(TAG, "IPv6 address detected")
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