Commit 76108ec4 authored by Max Lv's avatar Max Lv

Merge pull request #585 from JLLK/master

Fix a issue in ProcessUtils
parents 6558f275 5b9a0d06
...@@ -17,7 +17,7 @@ class ShadowsocksDeathRecipient(val mContext: ServiceBoundContext) ...@@ -17,7 +17,7 @@ class ShadowsocksDeathRecipient(val mContext: ServiceBoundContext)
mContext match { mContext match {
case ss: Shadowsocks => case ss: Shadowsocks =>
inShadowsocks { inShadowsocks(mContext) {
ss.unregisterCallback ss.unregisterCallback
ss.bindToService() ss.bindToService()
} }
......
...@@ -2,6 +2,7 @@ package com.github.shadowsocks.utils ...@@ -2,6 +2,7 @@ package com.github.shadowsocks.utils
import java.io.{BufferedReader, FileInputStream, InputStreamReader} import java.io.{BufferedReader, FileInputStream, InputStreamReader}
import android.content.Context
import com.github.shadowsocks.utils.IOUtils._ import com.github.shadowsocks.utils.IOUtils._
/** /**
...@@ -9,23 +10,16 @@ import com.github.shadowsocks.utils.IOUtils._ ...@@ -9,23 +10,16 @@ import com.github.shadowsocks.utils.IOUtils._
*/ */
object ProcessUtils { object ProcessUtils {
val SHADOWNSOCKS = "com.github.shadowsocks"
val SHADOWNSOCKS_VPN = "com.github.shadowsocks:vpn"
val SHADOWNSOCKS_NAT = "com.github.shadowsocks:nat"
val TUN2SOCKS = "/data/data/com.github.shadowsocks/tun2socks"
val SS_LOCAL = "/data/data/com.github.shadowsocks/ss-local"
val SS_TUNNEL = "/data/data/com.github.shadowsocks/ss-tunnel"
val PDNSD = "/data/data/com.github.shadowsocks/pdnsd"
def getCurrentProcessName: String = { def getCurrentProcessName: String = {
inSafe { inSafe {
val inputStream = new FileInputStream("/proc/self/cmdline") val inputStream = new FileInputStream("/proc/self/cmdline")
val reader = new BufferedReader(new InputStreamReader(inputStream)) val reader = new BufferedReader(new InputStreamReader(inputStream))
autoClose(reader) { autoClose(reader) {
reader.readLine() match { val sb = new StringBuilder
case name: String => name var c: Int = 0
case _ => "" while({c = reader.read(); c > 0})
} sb.append(c.asInstanceOf[Char])
sb.toString()
} }
} match { } match {
case Some(name: String) => name case Some(name: String) => name
...@@ -33,14 +27,18 @@ object ProcessUtils { ...@@ -33,14 +27,18 @@ object ProcessUtils {
} }
} }
def inShadowsocks[A](fun: => A): Unit = def inShadowsocks[A](context: Context)(fun: => A): Unit = {
if(getCurrentProcessName startsWith SHADOWNSOCKS) fun if (context != null && getCurrentProcessName.equals(context.getPackageName)) fun
}
def inVpn[A](fun: => A): Unit = def inVpn[A](context: Context)(fun: => A): Unit = {
if (getCurrentProcessName startsWith SHADOWNSOCKS_VPN) fun if (context != null && getCurrentProcessName.equals(context.getPackageName + ":vpn")) fun
}
def inNat[A](fun: => A): Unit = def inNat[A](context: Context)(fun: => A): Unit = {
if (getCurrentProcessName startsWith SHADOWNSOCKS_NAT) fun if (context != null && getCurrentProcessName.equals(context.getPackageName + ":nat")) fun
}
} }
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