Commit 6b9b7b67 authored by Mygod's avatar Mygod

Migrate to Android 6.0 (1)

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