From 62523c815ecfdbbf1f13f89a2c919aa5f3ce6d88 Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Fri, 30 Sep 2016 10:41:40 +0800 Subject: [PATCH] Add Shell logging --- app/build.gradle | 2 +- .../main/java/com/topjohnwu/magisk/utils/Logger.java | 8 ++++++++ .../main/java/com/topjohnwu/magisk/utils/Shell.java | 4 +++- .../java/com/topjohnwu/magisk/utils/StreamGobbler.java | 10 ++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index a4903422e..0b96b8f81 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -2,7 +2,7 @@ apply plugin: 'com.android.application' android { compileSdkVersion 24 - buildToolsVersion "24.0.3" + buildToolsVersion "24.0.2" defaultConfig { applicationId "com.topjohnwu.magisk" diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Logger.java b/app/src/main/java/com/topjohnwu/magisk/utils/Logger.java index 118387104..066abb5af 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Logger.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Logger.java @@ -9,6 +9,8 @@ public class Logger { private static final String LOG_TAG = "Magisk: DEV"; + private static final boolean logShell = true; + public static void dev(String msg, Object... args) { Context context = null; try { @@ -37,6 +39,12 @@ public class Logger { } } + public static void shell(boolean root, String msg) { + if (logShell) { + Log.d(root ? "SU" : "SH", msg); + } + } + private static Application getApplicationUsingReflection() throws Exception { return (Application) Class.forName("android.app.AppGlobals") .getMethod("getInitialApplication").invoke(null, (Object[]) null); diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java b/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java index c93cc02c7..e625da01f 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/Shell.java @@ -42,7 +42,7 @@ public class Shell { } rootSTDIN = new DataOutputStream(rootShell.getOutputStream()); - rootSTDOUT = new StreamGobbler(rootShell.getInputStream(), rootOutList); + rootSTDOUT = new StreamGobbler(rootShell.getInputStream(), rootOutList, true); rootSTDOUT.start(); List ret = su("echo -BOC-", "id"); @@ -82,6 +82,7 @@ public class Shell { for (String write : commands) { STDIN.write((write + "\n").getBytes("UTF-8")); STDIN.flush(); + Logger.shell(false, write); } STDIN.write("exit\n".getBytes("UTF-8")); STDIN.flush(); @@ -149,6 +150,7 @@ public class Shell { for (String write : commands) { STDIN.write((write + "\n").getBytes("UTF-8")); STDIN.flush(); + Logger.shell(true, write); } if (newShell) { STDIN.write("exit\n".getBytes("UTF-8")); diff --git a/app/src/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java b/app/src/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java index 8b40775ab..917cf1f5e 100644 --- a/app/src/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java +++ b/app/src/main/java/com/topjohnwu/magisk/utils/StreamGobbler.java @@ -14,6 +14,7 @@ public class StreamGobbler extends Thread { private BufferedReader reader = null; private List writer = null; + private boolean isRoot = false; /** *

StreamGobbler constructor

@@ -30,6 +31,12 @@ public class StreamGobbler extends Thread { writer = outputList; } + public StreamGobbler(InputStream inputStream, List outputList, boolean root) { + reader = new BufferedReader(new InputStreamReader(inputStream)); + writer = outputList; + isRoot = root; + } + @Override public void run() { // keep reading the InputStream until it ends (or an error occurs) @@ -37,6 +44,9 @@ public class StreamGobbler extends Thread { String line; while ((line = reader.readLine()) != null) { writer.add(line); + if (!line.equals("-root-done-") && !line.isEmpty()) { + Logger.shell(isRoot, "OUT: " + line); + } } } catch (IOException e) { // reader probably closed, expected exit condition