Commit b10c848e authored by Max Lv's avatar Max Lv

trim strings

parent b77a599e
......@@ -192,7 +192,7 @@ class ShadowVpnService extends VpnService {
if (config.proxy == "198.199.101.152") {
val container = getApplication.asInstanceOf[ShadowsocksApplication].tagContainer
try {
config = Config.getPublicConfig(container, config)
config = Config.getPublicConfig(getBaseContext, container, config)
} catch {
case ex: Exception => {
notifyAlert(getString(R.string.forward_fail), getString(R.string.service_failed))
......
......@@ -228,7 +228,7 @@ class ShadowsocksService extends Service {
if (config.proxy == "198.199.101.152") {
val container = getApplication.asInstanceOf[ShadowsocksApplication].tagContainer
try {
config = Config.getPublicConfig(container, config)
config = Config.getPublicConfig(getBaseContext, container, config)
} catch {
case ex: Exception => {
notifyAlert(getString(R.string.forward_fail), getString(R.string.service_failed))
......
......@@ -42,7 +42,7 @@ import android.content.{Intent, SharedPreferences, Context}
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.graphics.drawable.{BitmapDrawable, Drawable}
import android.util.Log
import android.util.{Base64, Log}
import java.io._
import java.net.{UnknownHostException, InetAddress, NetworkInterface}
import org.apache.http.conn.util.InetAddressUtils
......@@ -55,6 +55,7 @@ import android.provider.Settings
import scala.Some
import scalaj.http.{Http, HttpOptions}
import com.google.tagmanager.Container
import java.security.MessageDigest
object Config {
val SHADOWSOCKS = "{\"server\": [%s], \"server_port\": %d, \"local_port\": %d, \"password\": %s, \"timeout\": %d}"
......@@ -117,16 +118,21 @@ object Config {
if (container != null) container.refresh()
}
def getPublicConfig(container: Container, config: Config): Config = {
def getPublicConfig(context: Context, container: Container, config: Config): Config = {
val url = container.getString("proxy_url")
val list = Http(url).option(HttpOptions.connTimeout(1000)).option(HttpOptions.readTimeout(5000)).asString
val sig = Utils.getSignature(context)
val list = Http(url)
.params("sig" -> sig)
.option(HttpOptions.connTimeout(1000))
.option(HttpOptions.readTimeout(5000))
.asString
val proxies = util.Random.shuffle(list.split('|').toSeq).toSeq
val proxy = proxies(0).split(':')
val host = proxy(0)
val port = proxy(1).toInt
val password = proxy(2)
val method = proxy(3)
val host = proxy(0).trim
val port = proxy(1).trim.toInt
val password = proxy(2).trim
val method = proxy(3).trim
new Config(config.isGlobalProxy, config.isGFWList, config.isBypassApps, config.isTrafficStat,
config.profileName, host, password, method, port, config.localPort, config.proxiedAppString)
......@@ -287,6 +293,15 @@ object Utils {
var data_path: String = null
var rootTries = 0
def getSignature(context: Context): String = {
val info = context
.getPackageManager
.getPackageInfo(context.getPackageName, PackageManager.GET_SIGNATURES)
val mdg = MessageDigest.getInstance("SHA-1")
mdg.update(info.signatures(0).toByteArray)
new String(Base64.encode(mdg.digest, 0))
}
/*
* round or floor depending on whether you are using offsets(floor) or
* widths(round)
......
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