From a865ee830897993db7d29797f1dfe0d3fde9c522 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Tue, 27 Dec 2016 12:49:26 +0800 Subject: [PATCH] Replace HttpRequest with OkHttp3 --- build.sbt | 5 +- src/main/res/raw/gtm_default_container | Bin 1801 -> 80465 bytes .../com/github/shadowsocks/BaseService.scala | 44 ++++++++++++++---- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/build.sbt b/build.sbt index 726a9ef6..f958a9aa 100644 --- a/build.sbt +++ b/build.sbt @@ -20,6 +20,9 @@ proguardVersion := "5.3.2" proguardCache := Seq() proguardOptions ++= "-keep class com.github.shadowsocks.System { *; }" :: + "-keep class okhttp3.** { *; }" :: + "-keep interface okhttp3.** { *; }" :: + "-dontwarn okio.**" :: "-dontwarn com.google.android.gms.internal.**" :: "-dontwarn com.j256.ormlite.**" :: "-dontwarn org.xbill.**" :: @@ -37,7 +40,7 @@ libraryDependencies ++= "com.android.support" % "preference-v14" % "25.1.0" :: "com.evernote" % "android-job" % "1.1.3" :: "com.github.jorgecastilloprz" % "fabprogresscircle" % "1.01" :: - "com.github.kevinsawicki" % "http-request" % "6.0" :: + "com.squareup.okhttp3" % "okhttp" % "3.5.0" :: "com.google.android.gms" % "play-services-ads" % "10.0.1" :: "com.google.android.gms" % "play-services-analytics" % "10.0.1" :: "com.google.android.gms" % "play-services-gcm" % "10.0.1" :: diff --git a/src/main/res/raw/gtm_default_container b/src/main/res/raw/gtm_default_container index fb2471d103983a3e4a09297bfc8527ef93d057a0..a17ed04377a815c53d83840db2af2c8ce60f6c72 100644 GIT binary patch literal 80465 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�K~1N3q6^E4z;;>Y`= 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 Ba*6-| delta 952 zcmZvYOHUI~6oBW>OsBW+!?d)ALd$JSdG;~%McWmcs0blJ7mBO$D5MpzSV{n0G;yUH zBAEqS-SQ_$`~fEJOIQ>~P2WTN$NU|7Ms!JF2Np_pFUaXi~T zY&QodC!LgmxabqW8L|d-hkBuz$1XjtrHwomVI93pH$lm8V5=QZYA`R$f-D(XvP1)Nl6fKn zi>SgPk;~6wP>>}(_~CM(L6O{ml4O~vK}Gt~_1h|2=)2H`ZsAUH@S`6CB0y%Mi9r!e z`T;SF5kwrrs2EFnA%^2PfiaAWIPE2H5`{>Tr7(d>F-4Zf6i$ihq+7n5#%VD_HH#U{ zirlbfaq+MBF^eTS+^yt9o~(#vtcVhsf(kB)GFb(ySQASH4jegp&`ah+9|DdHTL?#o zHiNTd^Eij|xG-#aw1!r|V%^IX`uo(XbEO|{Md~5Ys=j6aa$qI0K~F1kOiw+;_5V~q zcT|U)gS|TEMwQ-cMOMR=)${%Gg|&XrX`Ho-=SLfBwY|-IPs0z_?`Iz@*3O!1yPMlb ikK4VSM~(d_JIs2i7Dfv1m~;D8v)gGm-!t}!DSrT)z=+EL diff --git a/src/main/scala/com/github/shadowsocks/BaseService.scala b/src/main/scala/com/github/shadowsocks/BaseService.scala index a1b1de52..faa4ad18 100644 --- a/src/main/scala/com/github/shadowsocks/BaseService.scala +++ b/src/main/scala/com/github/shadowsocks/BaseService.scala @@ -21,7 +21,9 @@ package com.github.shadowsocks import java.io.IOException -import java.util.{Timer, TimerTask} +import java.util.concurrent.TimeUnit; +import java.util.{Arrays, List, Timer, TimerTask} +import java.net.InetAddress import android.app.Service import android.content.{BroadcastReceiver, Context, Intent, IntentFilter} @@ -30,12 +32,26 @@ import android.os.{Handler, RemoteCallbackList} import android.text.TextUtils import android.util.Log import android.widget.Toast -import com.github.kevinsawicki.http.HttpRequest import com.github.shadowsocks.ShadowsocksApplication.app import com.github.shadowsocks.aidl.{IShadowsocksService, IShadowsocksServiceCallback} import com.github.shadowsocks.database.Profile import com.github.shadowsocks.utils._ +import okhttp3.Dns +import okhttp3.FormBody +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.Response + +class CustomDns extends Dns { + override def lookup(hostname: String): List[InetAddress] = { + Utils.resolve(hostname, false) match { + case Some(ip) => Arrays.asList(InetAddress.getByName(ip)) + case _ => Dns.SYSTEM.lookup(hostname) + } + } +} + trait BaseService extends Service { @volatile private var state = State.STOPPED @@ -132,12 +148,24 @@ trait BaseService extends Service { val container = holder.getContainer val url = container.getString("proxy_url") val sig = Utils.getSignature(this) - val list = HttpRequest - .post(url) - .connectTimeout(2000) - .readTimeout(2000) - .send("sig="+sig) - .body + + val client = new OkHttpClient.Builder() + .dns(new CustomDns()) + .connectTimeout(10, TimeUnit.SECONDS) + .writeTimeout(10, TimeUnit.SECONDS) + .readTimeout(30, TimeUnit.SECONDS) + .build() + val requestBody = new FormBody.Builder() + .add("sig", sig) + .build() + val request = new Request.Builder() + .url(url) + .post(requestBody) + .build() + + val resposne = client.newCall(request).execute() + val list = resposne.body.string + val proxies = util.Random.shuffle(list.split('|').toSeq) val proxy = proxies.head.split(':') profile.host = proxy(0).trim