From a24d29196f7989db16eab6e11140ec0c6baa6e7e Mon Sep 17 00:00:00 2001 From: chentao Date: Wed, 24 Feb 2016 23:57:38 +0800 Subject: [PATCH] Add ProcessUtils --- .../shadowsocks/utils/ProcessUtils.scala | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/main/scala/com/github/shadowsocks/utils/ProcessUtils.scala diff --git a/src/main/scala/com/github/shadowsocks/utils/ProcessUtils.scala b/src/main/scala/com/github/shadowsocks/utils/ProcessUtils.scala new file mode 100644 index 00000000..8de7939c --- /dev/null +++ b/src/main/scala/com/github/shadowsocks/utils/ProcessUtils.scala @@ -0,0 +1,46 @@ +package com.github.shadowsocks.utils + +import java.io.{BufferedReader, FileInputStream, InputStreamReader} + +import com.github.shadowsocks.utils.IOUtils._ + +/** + * @author chentaov5@gmail.com + */ +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 = { + inSafe { + val inputStream = new FileInputStream("/proc/self/cmdline") + val reader = new BufferedReader(new InputStreamReader(inputStream)) + autoClose(reader) { + reader.readLine() match { + case name: String => name + case _ => "" + } + } + } match { + case Some(name: String) => name + case None => "" + } + } + + def inShadowsocks[A](fun: => A): Unit = + if(getCurrentProcessName startsWith SHADOWNSOCKS) fun + + def inVpn[A](fun: => A): Unit = + if (getCurrentProcessName startsWith SHADOWNSOCKS_VPN) fun + + + def inNat[A](fun: => A): Unit = + if (getCurrentProcessName startsWith SHADOWNSOCKS_NAT) fun + +}