Merge branch 'master' of github.com:shadowsocks/shadowsocks-android

Conflicts:
	src/main/scala/com/github/shadowsocks/ShadowsocksNatService.scala
This commit is contained in:
Max Lv
2014-12-06 11:30:07 +08:00
7 changed files with 70 additions and 48 deletions
@@ -42,7 +42,7 @@ package com.github.shadowsocks.utils
import android.content.{SharedPreferences, Context}
import com.github.shadowsocks.ShadowsocksApplication
import com.google.android.gms.tagmanager.Container
import scalaj.http.{HttpOptions, Http}
import com.github.kevinsawicki.http.HttpRequest
import com.github.shadowsocks.aidl.Config
object ConfigUtils {
@@ -183,12 +183,12 @@ object ConfigUtils {
def getPublicConfig(context: Context, container: Container, config: Config): Config = {
val url = container.getString("proxy_url")
val sig = Utils.getSignature(context)
val list = Http
val list = HttpRequest
.post(url)
.params("sig" -> sig)
.option(HttpOptions.connTimeout(1000))
.option(HttpOptions.readTimeout(5000))
.asString
.connectTimeout(2000)
.readTimeout(2000)
.send("sig="+sig)
.body
val proxies = util.Random.shuffle(list.split('|').toSeq).toSeq
val proxy = proxies(0).split(':')
@@ -181,20 +181,24 @@ object Utils {
}
def resolve(host: String, addrType: Int): Option[String] = {
val lookup = new Lookup(host, addrType)
val resolver = new SimpleResolver("114.114.114.114")
resolver.setTimeout(5)
lookup.setResolver(resolver)
val result = lookup.run()
if (result == null) return None
val records = scala.util.Random.shuffle(result.toList)
for (r <- records) {
addrType match {
case Type.A =>
return Some(r.asInstanceOf[ARecord].getAddress.getHostAddress)
case Type.AAAA =>
return Some(r.asInstanceOf[AAAARecord].getAddress.getHostAddress)
try {
val lookup = new Lookup(host, addrType)
val resolver = new SimpleResolver("114.114.114.114")
resolver.setTimeout(5)
lookup.setResolver(resolver)
val result = lookup.run()
if (result == null) return None
val records = scala.util.Random.shuffle(result.toList)
for (r <- records) {
addrType match {
case Type.A =>
return Some(r.asInstanceOf[ARecord].getAddress.getHostAddress)
case Type.AAAA =>
return Some(r.asInstanceOf[AAAARecord].getAddress.getHostAddress)
}
}
} catch {
case e: Exception => None
}
None
}