From a5fa9d8801defb8c587b45db77f76e6f4280e583 Mon Sep 17 00:00:00 2001 From: Mygod Date: Wed, 9 May 2018 15:59:17 -0700 Subject: [PATCH] Separate NoisySu.kt --- .../java/be/mygod/vpnhotspot/util/NoisySu.kt | 51 +++++++++++++++++++ .../java/be/mygod/vpnhotspot/util/Utils.kt | 43 ---------------- 2 files changed, 51 insertions(+), 43 deletions(-) create mode 100644 mobile/src/main/java/be/mygod/vpnhotspot/util/NoisySu.kt diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/util/NoisySu.kt b/mobile/src/main/java/be/mygod/vpnhotspot/util/NoisySu.kt new file mode 100644 index 00000000..a41cd31f --- /dev/null +++ b/mobile/src/main/java/be/mygod/vpnhotspot/util/NoisySu.kt @@ -0,0 +1,51 @@ +package be.mygod.vpnhotspot.util + +import android.util.Log +import be.mygod.vpnhotspot.App +import be.mygod.vpnhotspot.R +import java.io.IOException +import java.io.InputStream + +private const val NOISYSU_TAG = "NoisySU" +private const val NOISYSU_SUFFIX = "SUCCESS\n" + +fun loggerSuStream(command: String): InputStream? { + val process = try { + ProcessBuilder("su", "-c", command) + .redirectErrorStream(true) + .directory(App.app.deviceContext.cacheDir) + .start() + } catch (e: IOException) { + e.printStackTrace() + return null + } + thread("LoggerSU-error") { + val err = process.errorStream.bufferedReader().readText() + if (err.isNotBlank()) { + Log.e(NOISYSU_TAG, err) + App.app.toast(R.string.noisy_su_failure) + } + } + return process.inputStream +} + +fun loggerSu(command: String): String? { + val stream = loggerSuStream(command) ?: return null + return try { + stream.bufferedReader().readText() + } catch (e: IOException) { + e.printStackTrace() + null + } +} + +fun noisySu(commands: Iterable): Boolean? { + var out = loggerSu("""function noisy() { "$@" || echo "$@" exited with $?; } +${commands.joinToString("\n") { if (it.startsWith("quiet ")) it.substring(6) else "noisy $it" }} +echo $NOISYSU_SUFFIX""") + val result = if (out == null) null else out == NOISYSU_SUFFIX + out = out?.removeSuffix(NOISYSU_SUFFIX) + if (!out.isNullOrBlank()) Log.i(NOISYSU_TAG, out) + return result +} +fun noisySu(vararg commands: String) = noisySu(commands.asIterable()) diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt b/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt index 9dd1db86..d8ea31b0 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/util/Utils.kt @@ -11,8 +11,6 @@ import android.widget.ImageView import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.BuildConfig import be.mygod.vpnhotspot.R -import java.io.IOException -import java.io.InputStream import java.net.NetworkInterface import java.net.SocketException @@ -55,44 +53,3 @@ fun thread(name: String? = null, start: Boolean = true, isDaemon: Boolean = fals if (start) thread.start() return thread } - -private const val NOISYSU_TAG = "NoisySU" -private const val NOISYSU_SUFFIX = "SUCCESS\n" -fun loggerSuStream(command: String): InputStream? { - val process = try { - ProcessBuilder("su", "-c", command) - .redirectErrorStream(true) - .directory(app.deviceContext.cacheDir) - .start() - } catch (e: IOException) { - e.printStackTrace() - return null - } - thread("LoggerSU-error") { - val err = process.errorStream.bufferedReader().readText() - if (err.isNotBlank()) { - Log.e(NOISYSU_TAG, err) - app.toast(R.string.noisy_su_failure) - } - } - return process.inputStream -} -fun loggerSu(command: String): String? { - val stream = loggerSuStream(command) ?: return null - return try { - stream.bufferedReader().readText() - } catch (e: IOException) { - e.printStackTrace() - null - } -} -fun noisySu(commands: Iterable): Boolean? { - var out = loggerSu("""function noisy() { "$@" || echo "$@" exited with $?; } -${commands.joinToString("\n") { if (it.startsWith("quiet ")) it.substring(6) else "noisy $it" }} -echo $NOISYSU_SUFFIX""") - val result = if (out == null) null else out == NOISYSU_SUFFIX - out = out?.removeSuffix(NOISYSU_SUFFIX) - if (!out.isNullOrBlank()) Log.i(NOISYSU_TAG, out) - return result -} -fun noisySu(vararg commands: String) = noisySu(commands.asIterable())