diff --git a/.github/workflows/gradle-check.yml b/.github/workflows/gradle-check.yml deleted file mode 100644 index 60335c4..0000000 --- a/.github/workflows/gradle-check.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Gralde check - -on: - push: - branches: - - master - pull_request: - branches: - - master - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Clone repository - uses: actions/checkout@v2 - - name: Build - run: | - ./gradlew :app:assembleDebug diff --git a/NeoLang/build.gradle b/NeoLang/build.gradle index c459fc7..16a73fe 100644 --- a/NeoLang/build.gradle +++ b/NeoLang/build.gradle @@ -19,12 +19,12 @@ repositories { } compileKotlin { kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } } compileTestKotlin { kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "17" } } dependencies { diff --git a/NeoLang/src/main/java/com/offsec/neolang/frontend/abstract-visitors.kt b/NeoLang/src/main/java/com/evolinx/neolang/frontend/abstract-visitors.kt similarity index 96% rename from NeoLang/src/main/java/com/offsec/neolang/frontend/abstract-visitors.kt rename to NeoLang/src/main/java/com/evolinx/neolang/frontend/abstract-visitors.kt index d04a6ec..24ae916 100644 --- a/NeoLang/src/main/java/com/offsec/neolang/frontend/abstract-visitors.kt +++ b/NeoLang/src/main/java/com/evolinx/neolang/frontend/abstract-visitors.kt @@ -1,7 +1,7 @@ -package io.neolang.frontend +package com.evolinx.neolang.frontend -import io.neolang.runtime.NeoLangContext -import io.neolang.runtime.NeoLangValue +import com.evolinx.neolang.runtime.NeoLangContext +import com.evolinx.neolang.runtime.NeoLangValue /** * @author kiva diff --git a/NeoLang/src/main/java/com/offsec/neolang/frontend/frontend.kt b/NeoLang/src/main/java/com/evolinx/neolang/frontend/frontend.kt similarity index 95% rename from NeoLang/src/main/java/com/offsec/neolang/frontend/frontend.kt rename to NeoLang/src/main/java/com/evolinx/neolang/frontend/frontend.kt index c31d513..5cd8de0 100644 --- a/NeoLang/src/main/java/com/offsec/neolang/frontend/frontend.kt +++ b/NeoLang/src/main/java/com/evolinx/neolang/frontend/frontend.kt @@ -1,4 +1,4 @@ -package io.neolang.frontend +package com.evolinx.neolang.frontend /** * @author kiva @@ -36,14 +36,14 @@ class NeoLangLexer { private fun moveToNextChar(eofThrow: Boolean = false): Boolean { val programCode = this.programCode ?: return false currentPosition++ - if (currentPosition >= programCode.length) { + return if (currentPosition >= programCode.length) { if (eofThrow) { throw InvalidTokenException("Unexpected EOF near `$currentChar' in line $lineNumber") } - return false + false } else { currentChar = programCode[currentPosition] - return true + true } } @@ -136,7 +136,7 @@ class NeoLangLexer { } private fun getNextTokenAsNumber(): String { - var numberValue: Double = (currentChar.toInt() - '0'.toInt()).toDouble() + var numberValue: Double = (currentChar.code - '0'.code).toDouble() // Four types of numbers are supported: // Dec(123) Hex(0x123) Oct(017) Bin(0b11) @@ -151,12 +151,16 @@ class NeoLangLexer { } // Hex - if (currentChar == 'x' || currentChar == 'X') { - numberValue = getNextHexNumber(numberValue) - } else if (currentChar == 'b' || currentChar == 'B') { - numberValue = getNextBinaryNumber(numberValue) - } else { - numberValue = getNextOctalNumber(numberValue) + numberValue = when (currentChar) { + 'x', 'X' -> { + getNextHexNumber(numberValue) + } + 'b', 'B' -> { + getNextBinaryNumber(numberValue) + } + else -> { + getNextOctalNumber(numberValue) + } } } @@ -187,7 +191,7 @@ class NeoLangLexer { var value = numberValue var loop = moveToNextChar() // skip 'x' or 'X' while (loop && (currentChar.isHexNumber())) { - value *= 16 + (currentChar.toInt().and(15)) + if (currentChar >= 'A') 9 else 0 + value *= 16 + (currentChar.code.and(15)) + if (currentChar >= 'A') 9 else 0 loop = moveToNextChar() } return value @@ -240,7 +244,7 @@ class NeoLangLexer { private fun Char.toNumber(): Int { return if (isNumber()) { - this.toInt() - '0'.toInt() + this.code - '0'.code } else 0 } diff --git a/NeoLang/src/main/java/com/offsec/neolang/frontend/nodes.kt b/NeoLang/src/main/java/com/evolinx/neolang/frontend/nodes.kt similarity index 96% rename from NeoLang/src/main/java/com/offsec/neolang/frontend/nodes.kt rename to NeoLang/src/main/java/com/evolinx/neolang/frontend/nodes.kt index 63acf5d..1f040d4 100644 --- a/NeoLang/src/main/java/com/offsec/neolang/frontend/nodes.kt +++ b/NeoLang/src/main/java/com/evolinx/neolang/frontend/nodes.kt @@ -1,6 +1,6 @@ -package io.neolang.frontend +package com.evolinx.neolang.frontend -import io.neolang.runtime.NeoLangValue +import com.evolinx.neolang.runtime.NeoLangValue /** * @author kiva diff --git a/NeoLang/src/main/java/com/offsec/neolang/frontend/tokens.kt b/NeoLang/src/main/java/com/evolinx/neolang/frontend/tokens.kt similarity index 95% rename from NeoLang/src/main/java/com/offsec/neolang/frontend/tokens.kt rename to NeoLang/src/main/java/com/evolinx/neolang/frontend/tokens.kt index 214230e..2036987 100644 --- a/NeoLang/src/main/java/com/offsec/neolang/frontend/tokens.kt +++ b/NeoLang/src/main/java/com/evolinx/neolang/frontend/tokens.kt @@ -1,6 +1,6 @@ -package io.neolang.frontend +package com.evolinx.neolang.frontend -import io.neolang.runtime.NeoLangValue +import com.evolinx.neolang.runtime.NeoLangValue /** * @author kiva diff --git a/NeoLang/src/main/java/com/offsec/neolang/frontend/visitors.kt b/NeoLang/src/main/java/com/evolinx/neolang/frontend/visitors.kt similarity index 93% rename from NeoLang/src/main/java/com/offsec/neolang/frontend/visitors.kt rename to NeoLang/src/main/java/com/evolinx/neolang/frontend/visitors.kt index e057110..e2e2303 100644 --- a/NeoLang/src/main/java/com/offsec/neolang/frontend/visitors.kt +++ b/NeoLang/src/main/java/com/evolinx/neolang/frontend/visitors.kt @@ -1,8 +1,8 @@ -package io.neolang.frontend +package com.evolinx.neolang.frontend -import io.neolang.runtime.NeoLangArray -import io.neolang.runtime.NeoLangContext -import io.neolang.runtime.NeoLangValue +import com.evolinx.neolang.runtime.NeoLangArray +import com.evolinx.neolang.runtime.NeoLangContext +import com.evolinx.neolang.runtime.NeoLangValue import java.util.* class ConfigVisitor : IVisitorCallback { diff --git a/NeoLang/src/main/java/com/offsec/neolang/runtime/context.kt b/NeoLang/src/main/java/com/evolinx/neolang/runtime/context.kt similarity index 96% rename from NeoLang/src/main/java/com/offsec/neolang/runtime/context.kt rename to NeoLang/src/main/java/com/evolinx/neolang/runtime/context.kt index 6abaa96..6756c13 100644 --- a/NeoLang/src/main/java/com/offsec/neolang/runtime/context.kt +++ b/NeoLang/src/main/java/com/evolinx/neolang/runtime/context.kt @@ -1,4 +1,4 @@ -package io.neolang.runtime +package com.evolinx.neolang.runtime /** * @author kiva diff --git a/NeoLang/src/main/java/com/offsec/neolang/runtime/types.kt b/NeoLang/src/main/java/com/evolinx/neolang/runtime/types.kt similarity index 98% rename from NeoLang/src/main/java/com/offsec/neolang/runtime/types.kt rename to NeoLang/src/main/java/com/evolinx/neolang/runtime/types.kt index 8cc7095..98d946f 100644 --- a/NeoLang/src/main/java/com/offsec/neolang/runtime/types.kt +++ b/NeoLang/src/main/java/com/evolinx/neolang/runtime/types.kt @@ -1,4 +1,4 @@ -package io.neolang.runtime +package com.evolinx.neolang.runtime /** * @author kiva diff --git a/NeoTermBridge/src/main/aidl/com/offsec/nhterm/bridge/ISessionConnection.aidl b/NeoTermBridge/src/main/aidl/com/evolinx/terminal/bridge/ISessionConnection.aidl similarity index 76% rename from NeoTermBridge/src/main/aidl/com/offsec/nhterm/bridge/ISessionConnection.aidl rename to NeoTermBridge/src/main/aidl/com/evolinx/terminal/bridge/ISessionConnection.aidl index 9387443..481b2ad 100644 --- a/NeoTermBridge/src/main/aidl/com/offsec/nhterm/bridge/ISessionConnection.aidl +++ b/NeoTermBridge/src/main/aidl/com/evolinx/terminal/bridge/ISessionConnection.aidl @@ -1,5 +1,5 @@ // ISessionConnection.aidl -package com.offsec.nhterm.bridge; +package com.evolinx.terminal.bridge; // Declare any non-default types here with import statements diff --git a/NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/Bridge.java b/NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/Bridge.java similarity index 93% rename from NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/Bridge.java rename to NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/Bridge.java index 69c5796..a701358 100644 --- a/NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/Bridge.java +++ b/NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/Bridge.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.bridge; +package com.evolinx.terminal.bridge; import android.annotation.SuppressLint; import android.content.ComponentName; @@ -16,8 +16,8 @@ public class Bridge { public static final String EXTRA_EXECUTABLE = "neoterm.extra.remote.execute.executable"; public static final String EXTRA_SESSION_ID = "neoterm.extra.remote.execute.session"; public static final String EXTRA_FOREGROUND = "neoterm.extra.remote.execute.foreground"; - private static final String NEOTERM_PACKAGE = "com.offsec.nhterm"; - private static final String NEOTERM_REMOTE_INTERFACE = "com.offsec.nhterm.ui.term.NeoTermRemoteInterface"; + private static final String NEOTERM_PACKAGE = "com.evolinx.terminal"; + private static final String NEOTERM_REMOTE_INTERFACE = "com.evolinx.terminal.ui.term.NeoTermRemoteInterface"; private static final ComponentName NEOTERM_COMPONENT = new ComponentName(NEOTERM_PACKAGE, NEOTERM_REMOTE_INTERFACE); private Bridge() throws IllegalAccessException { diff --git a/NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/Runner.java b/NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/Runner.java similarity index 96% rename from NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/Runner.java rename to NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/Runner.java index b216e02..405831c 100644 --- a/NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/Runner.java +++ b/NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/Runner.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.bridge; +package com.evolinx.terminal.bridge; import android.content.Context; import android.content.Intent; diff --git a/NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/SessionId.java b/NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/SessionId.java similarity index 96% rename from NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/SessionId.java rename to NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/SessionId.java index 98516c4..57f2a98 100644 --- a/NeoTermBridge/src/main/java/com/offsec/nhterm/bridge/SessionId.java +++ b/NeoTermBridge/src/main/java/com/evolinx/terminal/bridge/SessionId.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.bridge; +package com.evolinx.terminal.bridge; import java.util.Objects; diff --git a/Xorg/build.gradle b/Xorg/build.gradle index 7278189..1a1cf5a 100644 --- a/Xorg/build.gradle +++ b/Xorg/build.gradle @@ -20,7 +20,7 @@ android { jniLibs.srcDirs = ['src/main/jniLibs'] } } - namespace 'com.offsec.nhterm.xorg' + namespace 'com.evolinx.terminal.xorg' } dependencies { diff --git a/Xorg/src/main/java/com/offsec/nhterm/Accelerometer.java b/Xorg/src/main/java/com/evolinx/terminal/Accelerometer.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/Accelerometer.java rename to Xorg/src/main/java/com/evolinx/terminal/Accelerometer.java index d7c0ad2..8de121b 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/Accelerometer.java +++ b/Xorg/src/main/java/com/evolinx/terminal/Accelerometer.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.Context; import android.hardware.Sensor; diff --git a/Xorg/src/main/java/com/offsec/nhterm/Audio.java b/Xorg/src/main/java/com/evolinx/terminal/Audio.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/Audio.java rename to Xorg/src/main/java/com/evolinx/terminal/Audio.java index ee0aac5..e281fed 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/Audio.java +++ b/Xorg/src/main/java/com/evolinx/terminal/Audio.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.media.AudioFormat; @@ -29,7 +29,7 @@ import android.media.AudioRecord; import android.media.AudioTrack; import android.media.MediaRecorder.AudioSource; import android.util.Log; -import com.offsec.nhterm.xorg.NeoXorgViewClient; +import com.evolinx.terminal.xorg.NeoXorgViewClient; import java.util.concurrent.Semaphore; diff --git a/Xorg/src/main/java/com/offsec/nhterm/Clipboard.java b/Xorg/src/main/java/com/evolinx/terminal/Clipboard.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/Clipboard.java rename to Xorg/src/main/java/com/evolinx/terminal/Clipboard.java index 9d0b6a2..1eea366 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/Clipboard.java +++ b/Xorg/src/main/java/com/evolinx/terminal/Clipboard.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.ClipboardManager; import android.content.ClipboardManager.OnPrimaryClipChangedListener; diff --git a/Xorg/src/main/java/com/offsec/nhterm/GLSurfaceView_SDL.java b/Xorg/src/main/java/com/evolinx/terminal/GLSurfaceView_SDL.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/GLSurfaceView_SDL.java rename to Xorg/src/main/java/com/evolinx/terminal/GLSurfaceView_SDL.java index 067cb87..bdbc9bd 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/GLSurfaceView_SDL.java +++ b/Xorg/src/main/java/com/evolinx/terminal/GLSurfaceView_SDL.java @@ -18,7 +18,7 @@ /* This is GLSurfaceView class ripped out of Android 2.1 sources, fixed with a hammer to work with libSDL port */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.app.KeyguardManager; import android.content.Context; diff --git a/Xorg/src/main/java/com/offsec/nhterm/Globals.java b/Xorg/src/main/java/com/evolinx/terminal/Globals.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/Globals.java rename to Xorg/src/main/java/com/evolinx/terminal/Globals.java index eede6ef..5d85da5 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/Globals.java +++ b/Xorg/src/main/java/com/evolinx/terminal/Globals.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.view.KeyEvent; diff --git a/Xorg/src/main/java/com/offsec/nhterm/Keycodes.java b/Xorg/src/main/java/com/evolinx/terminal/Keycodes.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/Keycodes.java rename to Xorg/src/main/java/com/evolinx/terminal/Keycodes.java index 50d0054..ee0403c 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/Keycodes.java +++ b/Xorg/src/main/java/com/evolinx/terminal/Keycodes.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import java.lang.reflect.Field; import java.util.ArrayList; diff --git a/Xorg/src/main/java/com/offsec/nhterm/MainActivity.java b/Xorg/src/main/java/com/evolinx/terminal/MainActivity.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/MainActivity.java rename to Xorg/src/main/java/com/evolinx/terminal/MainActivity.java index 75101c7..df6334a 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/MainActivity.java +++ b/Xorg/src/main/java/com/evolinx/terminal/MainActivity.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.Manifest; import android.annotation.SuppressLint; @@ -48,8 +48,8 @@ import android.view.View.OnKeyListener; import android.view.inputmethod.InputMethodManager; import android.widget.*; import androidx.appcompat.app.AppCompatActivity; -import com.offsec.nhterm.xorg.NeoXorgViewClient; -import com.offsec.nhterm.xorg.R; +import com.evolinx.terminal.xorg.NeoXorgViewClient; +import com.evolinx.terminal.xorg.R; import java.util.LinkedList; import java.util.TreeSet; diff --git a/Xorg/src/main/java/com/offsec/nhterm/NeoAccelerometerReader.java b/Xorg/src/main/java/com/evolinx/terminal/NeoAccelerometerReader.java similarity index 91% rename from Xorg/src/main/java/com/offsec/nhterm/NeoAccelerometerReader.java rename to Xorg/src/main/java/com/evolinx/terminal/NeoAccelerometerReader.java index 7141647..b67d513 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/NeoAccelerometerReader.java +++ b/Xorg/src/main/java/com/evolinx/terminal/NeoAccelerometerReader.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.Context; diff --git a/Xorg/src/main/java/com/offsec/nhterm/NeoAudioThread.java b/Xorg/src/main/java/com/evolinx/terminal/NeoAudioThread.java similarity index 65% rename from Xorg/src/main/java/com/offsec/nhterm/NeoAudioThread.java rename to Xorg/src/main/java/com/evolinx/terminal/NeoAudioThread.java index af40a08..30a0143 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/NeoAudioThread.java +++ b/Xorg/src/main/java/com/evolinx/terminal/NeoAudioThread.java @@ -1,6 +1,6 @@ -package com.offsec.nhterm; +package com.evolinx.terminal; -import com.offsec.nhterm.xorg.NeoXorgViewClient; +import com.evolinx.terminal.xorg.NeoXorgViewClient; /** * @author kiva diff --git a/Xorg/src/main/java/com/offsec/nhterm/NeoGLView.java b/Xorg/src/main/java/com/evolinx/terminal/NeoGLView.java similarity index 81% rename from Xorg/src/main/java/com/offsec/nhterm/NeoGLView.java rename to Xorg/src/main/java/com/evolinx/terminal/NeoGLView.java index 9b01fae..9827199 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/NeoGLView.java +++ b/Xorg/src/main/java/com/evolinx/terminal/NeoGLView.java @@ -1,6 +1,6 @@ -package com.offsec.nhterm; +package com.evolinx.terminal; -import com.offsec.nhterm.xorg.NeoXorgViewClient; +import com.evolinx.terminal.xorg.NeoXorgViewClient; /** * @author kiva diff --git a/Xorg/src/main/java/com/offsec/nhterm/NeoRenderer.java b/Xorg/src/main/java/com/evolinx/terminal/NeoRenderer.java similarity index 90% rename from Xorg/src/main/java/com/offsec/nhterm/NeoRenderer.java rename to Xorg/src/main/java/com/evolinx/terminal/NeoRenderer.java index c16b4a3..e506dcb 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/NeoRenderer.java +++ b/Xorg/src/main/java/com/evolinx/terminal/NeoRenderer.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm; +package com.evolinx.terminal; /** * @author kiva diff --git a/Xorg/src/main/java/com/offsec/nhterm/NeoTextInput.java b/Xorg/src/main/java/com/evolinx/terminal/NeoTextInput.java similarity index 86% rename from Xorg/src/main/java/com/offsec/nhterm/NeoTextInput.java rename to Xorg/src/main/java/com/evolinx/terminal/NeoTextInput.java index 40da493..686f079 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/NeoTextInput.java +++ b/Xorg/src/main/java/com/evolinx/terminal/NeoTextInput.java @@ -1,6 +1,6 @@ -package com.offsec.nhterm; +package com.evolinx.terminal; -import com.offsec.nhterm.xorg.R; +import com.evolinx.terminal.xorg.R; /** * @author kiva diff --git a/Xorg/src/main/java/com/offsec/nhterm/NeoXorgSettings.java b/Xorg/src/main/java/com/evolinx/terminal/NeoXorgSettings.java similarity index 63% rename from Xorg/src/main/java/com/offsec/nhterm/NeoXorgSettings.java rename to Xorg/src/main/java/com/evolinx/terminal/NeoXorgSettings.java index 8a74d55..3452f62 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/NeoXorgSettings.java +++ b/Xorg/src/main/java/com/evolinx/terminal/NeoXorgSettings.java @@ -1,6 +1,6 @@ -package com.offsec.nhterm; +package com.evolinx.terminal; -import com.offsec.nhterm.xorg.NeoXorgViewClient; +import com.evolinx.terminal.xorg.NeoXorgViewClient; /** * @author kiva diff --git a/Xorg/src/main/java/com/offsec/nhterm/Settings.java b/Xorg/src/main/java/com/evolinx/terminal/Settings.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/Settings.java rename to Xorg/src/main/java/com/evolinx/terminal/Settings.java index 78fd486..3e49f7e 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/Settings.java +++ b/Xorg/src/main/java/com/evolinx/terminal/Settings.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.Context; import android.os.Build; @@ -28,8 +28,8 @@ import android.os.Environment; import android.os.StatFs; import android.util.DisplayMetrics; import android.util.Log; -import com.offsec.nhterm.xorg.NeoXorgViewClient; -import com.offsec.nhterm.xorg.R; +import com.evolinx.terminal.xorg.NeoXorgViewClient; +import com.evolinx.terminal.xorg.R; import java.io.*; import java.util.ArrayList; diff --git a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenu.java b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenu.java similarity index 98% rename from Xorg/src/main/java/com/offsec/nhterm/SettingsMenu.java rename to Xorg/src/main/java/com/evolinx/terminal/SettingsMenu.java index 2a46296..36db90e 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenu.java +++ b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenu.java @@ -20,11 +20,11 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.DialogInterface; import androidx.appcompat.app.AlertDialog; -import com.offsec.nhterm.xorg.R; +import com.evolinx.terminal.xorg.R; import java.util.ArrayList; diff --git a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenuKeyboard.java b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenuKeyboard.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/SettingsMenuKeyboard.java rename to Xorg/src/main/java/com/evolinx/terminal/SettingsMenuKeyboard.java index b2b156d..256f8c8 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenuKeyboard.java +++ b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenuKeyboard.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.DialogInterface; import android.graphics.Bitmap; @@ -35,7 +35,7 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.ImageView; import androidx.appcompat.app.AlertDialog; -import com.offsec.nhterm.xorg.R; +import com.evolinx.terminal.xorg.R; import java.util.Arrays; diff --git a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenuMisc.java b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenuMisc.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/SettingsMenuMisc.java rename to Xorg/src/main/java/com/evolinx/terminal/SettingsMenuMisc.java index a5cbee2..bd8babe 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenuMisc.java +++ b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenuMisc.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.DialogInterface; import android.content.Intent; @@ -32,7 +32,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.*; import androidx.appcompat.app.AlertDialog; -import com.offsec.nhterm.xorg.R; +import com.evolinx.terminal.xorg.R; import java.util.ArrayList; import java.util.Locale; diff --git a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenuMouse.java b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenuMouse.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/SettingsMenuMouse.java rename to Xorg/src/main/java/com/evolinx/terminal/SettingsMenuMouse.java index a72eb1b..e179661 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/SettingsMenuMouse.java +++ b/Xorg/src/main/java/com/evolinx/terminal/SettingsMenuMouse.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.DialogInterface; import android.graphics.Bitmap; @@ -34,7 +34,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import androidx.appcompat.app.AlertDialog; -import com.offsec.nhterm.xorg.R; +import com.evolinx.terminal.xorg.R; import java.util.ArrayList; diff --git a/Xorg/src/main/java/com/offsec/nhterm/Video.java b/Xorg/src/main/java/com/evolinx/terminal/Video.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/Video.java rename to Xorg/src/main/java/com/evolinx/terminal/Video.java index fcaf1f3..d333abf 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/Video.java +++ b/Xorg/src/main/java/com/evolinx/terminal/Video.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import android.content.Context; import android.content.Intent; @@ -31,7 +31,7 @@ import android.util.DisplayMetrics; import android.util.Log; import android.view.*; import android.widget.Toast; -import com.offsec.nhterm.xorg.NeoXorgViewClient; +import com.evolinx.terminal.xorg.NeoXorgViewClient; import javax.microedition.khronos.egl.*; import javax.microedition.khronos.opengles.GL10; diff --git a/Xorg/src/main/java/com/offsec/nhterm/XZInputStream.java b/Xorg/src/main/java/com/evolinx/terminal/XZInputStream.java similarity index 99% rename from Xorg/src/main/java/com/offsec/nhterm/XZInputStream.java rename to Xorg/src/main/java/com/evolinx/terminal/XZInputStream.java index 605f5f6..eebe770 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/XZInputStream.java +++ b/Xorg/src/main/java/com/evolinx/terminal/XZInputStream.java @@ -20,7 +20,7 @@ freely, subject to the following restrictions: 3. This notice may not be removed or altered from any source distribution. */ -package com.offsec.nhterm; +package com.evolinx.terminal; import java.io.IOException; import java.io.InputStream; diff --git a/Xorg/src/main/java/com/offsec/nhterm/xorg/NeoXorgViewClient.java b/Xorg/src/main/java/com/evolinx/terminal/xorg/NeoXorgViewClient.java similarity index 91% rename from Xorg/src/main/java/com/offsec/nhterm/xorg/NeoXorgViewClient.java rename to Xorg/src/main/java/com/evolinx/terminal/xorg/NeoXorgViewClient.java index e513f79..77c10da 100644 --- a/Xorg/src/main/java/com/offsec/nhterm/xorg/NeoXorgViewClient.java +++ b/Xorg/src/main/java/com/evolinx/terminal/xorg/NeoXorgViewClient.java @@ -1,9 +1,9 @@ -package com.offsec.nhterm.xorg; +package com.evolinx.terminal.xorg; import android.content.Context; import android.view.Window; import android.view.WindowManager; -import com.offsec.nhterm.NeoGLView; +import com.evolinx.terminal.NeoGLView; /** * @author kiva diff --git a/build.gradle b/build.gradle index ee8dc02..2ea01d2 100644 --- a/build.gradle +++ b/build.gradle @@ -1,21 +1,19 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.8.10' ext.android = [ - KOTLIN_VERSION : '1.6.10', + KOTLIN_VERSION : '1.8.10', MIN_SDK_VERSION : 21, - COMPILE_SDK_VERSION: 31, - TARGET_SDK_VERSION : 28, + COMPILE_SDK_VERSION: 34, + TARGET_SDK_VERSION : 30, JUNIT_VERSION : "4.12" ] - ext { - //version=YYYYMMVVRR (Either "VV" for stable version OR "RR" for pre-release candidate (e.g. 0001 for rc1)) //noinspection HighAppVersionCode - versionCode=2023040200 - versionName="2024.1-rc2" + versionCode=10000 + versionName="1.0.0" } ext.deps = [ @@ -35,7 +33,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:8.1.0' + classpath 'com.android.tools.build:gradle:8.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath rootProject.ext.deps["kotlin-gradle-plugin"] diff --git a/chrome-tabs/build.gradle b/chrome-tabs/build.gradle index 4a6ec4a..cd85561 100644 --- a/chrome-tabs/build.gradle +++ b/chrome-tabs/build.gradle @@ -20,8 +20,10 @@ dependencies { implementation rootProject.ext.deps["annotations"] testImplementation rootProject.ext.deps["junit"] - implementation 'androidx.appcompat:appcompat:1.2.0' - implementation 'androidx.appcompat:appcompat-resources:1.2.0' + implementation 'androidx.appcompat:appcompat:1.3.0' + implementation 'androidx.appcompat:appcompat-resources:1.3.0' + implementation 'com.google.android.material:material:1.5.0' + implementation "androidx.compose.material:material:1.0.0" } java { diff --git a/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/TabSwitcher.java b/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/TabSwitcher.java index 8d03137..f94ea5b 100644 --- a/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/TabSwitcher.java +++ b/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/TabSwitcher.java @@ -28,8 +28,8 @@ import android.util.AttributeSet; import android.view.*; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.FrameLayout; +import android.widget.Toolbar; import androidx.annotation.*; -import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener; import androidx.core.content.ContextCompat; import androidx.core.util.Pair; @@ -55,6 +55,8 @@ import static de.mrapp.android.util.Condition.ensureNotNull; import static de.mrapp.android.util.DisplayUtil.getDeviceType; import static de.mrapp.android.util.DisplayUtil.getOrientation; +import com.google.android.material.appbar.MaterialToolbar; + /** * A tab switcher, which allows to switch between multiple tabs. It it is designed similar to the * tab switcher of the Google Chrome Android app. @@ -1263,7 +1265,7 @@ public class TabSwitcher extends FrameLayout implements TabSwitcherLayout, Model @Nullable @Override public final CharSequence getToolbarTitle() { - Toolbar[] toolbars = getToolbars(); + MaterialToolbar[] toolbars = getToolbars(); return toolbars != null ? toolbars[0].getTitle() : model.getToolbarTitle(); } @@ -1280,7 +1282,7 @@ public class TabSwitcher extends FrameLayout implements TabSwitcherLayout, Model @Nullable @Override public final Drawable getToolbarNavigationIcon() { - Toolbar[] toolbars = getToolbars(); + MaterialToolbar[] toolbars = getToolbars(); return toolbars != null ? toolbars[0].getNavigationIcon() : model.getToolbarNavigationIcon(); } @@ -1335,7 +1337,7 @@ public class TabSwitcher extends FrameLayout implements TabSwitcherLayout, Model } @Override - public final Toolbar[] getToolbars() { + public final MaterialToolbar[] getToolbars() { return layout != null ? layout.getToolbars() : null; } @@ -1397,4 +1399,4 @@ public class TabSwitcher extends FrameLayout implements TabSwitcherLayout, Model } } -} \ No newline at end of file +} diff --git a/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/TabSwitcherLayout.java b/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/TabSwitcherLayout.java index 194895e..c3ad0d7 100644 --- a/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/TabSwitcherLayout.java +++ b/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/TabSwitcherLayout.java @@ -17,6 +17,7 @@ import android.view.Menu; import android.view.ViewGroup; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; +import com.google.android.material.appbar.MaterialToolbar; import de.mrapp.android.tabswitcher.TabSwitcher; /** @@ -54,7 +55,7 @@ public interface TabSwitcherLayout { * shown, as an array of the type Toolbar or null, if the view has not been laid out yet */ @Nullable - Toolbar[] getToolbars(); + MaterialToolbar[] getToolbars(); /** * Returns the menu of the toolbar, which is shown, when the tab switcher is shown. When using @@ -66,4 +67,4 @@ public interface TabSwitcherLayout { @Nullable Menu getToolbarMenu(); -} \ No newline at end of file +} diff --git a/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/phone/PhoneTabSwitcherLayout.java b/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/phone/PhoneTabSwitcherLayout.java index 27c012d..717b279 100644 --- a/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/phone/PhoneTabSwitcherLayout.java +++ b/chrome-tabs/src/main/java/de/mrapp/android/tabswitcher/layout/phone/PhoneTabSwitcherLayout.java @@ -54,6 +54,8 @@ import java.util.Collections; import static de.mrapp.android.util.Condition.*; +import com.google.android.material.appbar.MaterialToolbar; + /** * A layout, which implements the functionality of a {@link TabSwitcher} on smartphones. * @@ -344,7 +346,7 @@ public class PhoneTabSwitcherLayout extends AbstractTabSwitcherLayout /** * The toolbar, which is shown, when the tab switcher is shown. */ - private Toolbar toolbar; + private MaterialToolbar toolbar; /** * The bottom margin of a view, which visualizes a tab. @@ -3168,9 +3170,9 @@ public class PhoneTabSwitcherLayout extends AbstractTabSwitcherLayout LayoutInflater inflater = LayoutInflater.from(getContext()); if (tabsOnly) { - toolbar = (Toolbar) getTabSwitcher().findViewById(R.id.primary_toolbar); + toolbar = (MaterialToolbar) getTabSwitcher().findViewById(R.id.primary_toolbar); } else { - toolbar = (Toolbar) inflater.inflate(R.layout.phone_toolbar, getTabSwitcher(), false); + toolbar = (MaterialToolbar) inflater.inflate(R.layout.phone_toolbar, getTabSwitcher(), false); toolbar.setVisibility(getModel().areToolbarsShown() ? View.VISIBLE : View.INVISIBLE); getTabSwitcher().addView(toolbar); } @@ -3235,8 +3237,8 @@ public class PhoneTabSwitcherLayout extends AbstractTabSwitcherLayout @Nullable @Override - public final Toolbar[] getToolbars() { - return new Toolbar[]{toolbar}; + public final MaterialToolbar[] getToolbars() { + return new MaterialToolbar[]{toolbar}; } @Override @@ -3527,4 +3529,4 @@ public class PhoneTabSwitcherLayout extends AbstractTabSwitcherLayout (remove ? "" : "not ") + "be removed"); } -} \ No newline at end of file +} diff --git a/chrome-tabs/src/main/res/layout/phone_toolbar.xml b/chrome-tabs/src/main/res/layout/phone_toolbar.xml index 9c31ab4..a142178 100644 --- a/chrome-tabs/src/main/res/layout/phone_toolbar.xml +++ b/chrome-tabs/src/main/res/layout/phone_toolbar.xml @@ -13,7 +13,7 @@ distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, e implied. See the License for the specific language governing permissions and limitations under the License. --> - \ No newline at end of file + app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> diff --git a/gradle.properties b/gradle.properties index a8d1527..0702dbe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,17 @@ -# Project-wide Gradle settings. -# IDE (e.g. Android Studio) users: -# Gradle settings configured through the IDE *will override* -# any settings specified in this file. -# For more details on how to configure your build environment visit +## For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html +# # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx1024m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. For more details, visit +# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects +# org.gradle.parallel=true +#Wed Apr 03 19:30:41 EEST 2024 android.enableJetifier=true android.useAndroidX=true -org.gradle.jvmargs=-Xmx1536m - -# When configured, Gradle will run in incubating parallel mode. -# This option should only be used with decoupled projects. More details, visit -# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true - ndkVersion=25.1.8937393 +org.gradle.jvmargs=-Xmx1024M -Dkotlin.daemon.jvm.options\="-Xmx1024M" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9ec9d1f..1453028 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Apr 20 22:03:06 EEST 2021 +#Tue Apr 09 00:39:40 EEST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip diff --git a/nhterm/nethunter-debug.jks b/nhterm/nethunter-debug.jks deleted file mode 100644 index c6a5f95..0000000 Binary files a/nhterm/nethunter-debug.jks and /dev/null differ diff --git a/nhterm/src/main/assets/bin/android-su b/nhterm/src/main/assets/bin/android-su deleted file mode 100644 index 66eb1fb..0000000 --- a/nhterm/src/main/assets/bin/android-su +++ /dev/null @@ -1,17 +0,0 @@ -#!/data/data/com.offsec.nhterm/files/usr/bin/bash -# Version: 1.0.3 - -# export path for android bins/tools -export PATH="/data/data/com.offsec.nethunter/files/scripts:/data/data/com.offsec.nethunter/files/scripts/bin:/data/data/com.offsec.nhterm/files/home/.nhterm/script:/data/data/com.offsec.nhterm/files/usr/bin:/data/data/com.offsec.nhterm/files/usr/sbin:/sbin:/system/bin:/system/xbin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/odm/bin:/vendor/bin:." -# Remove some exports that break default android binaries from running -unset LD_LIBRARY_PATH -unset LD_PRELOAD -export PS1="\\[\\e[1;32m\\]\\u [ \\[\\e[0m\\]\\w\\[\\e[1;32m\\] ]\$ \\[\\e[0m\\]" -# Find and remember su location -SU1=$(which su) -SU2="$SU1 -mm -s $@" - -# clear out old view -clear - -$SU2 /data/data/com.offsec.nhterm/files/usr/bin/bash diff --git a/nhterm/src/main/assets/bin/bash b/nhterm/src/main/assets/bin/bash deleted file mode 100644 index 9706c13..0000000 Binary files a/nhterm/src/main/assets/bin/bash and /dev/null differ diff --git a/nhterm/src/main/assets/bin/kali b/nhterm/src/main/assets/bin/kali deleted file mode 100644 index ff3ec7b..0000000 --- a/nhterm/src/main/assets/bin/kali +++ /dev/null @@ -1,37 +0,0 @@ -#!/data/data/com.offsec.nhterm/files/usr/bin/bash -# Version: 1.0.2 - -# export path for android bins/tools -export PATH=/data/data/com.offsec.nhterm/files/home/.nhterm/script:/data/data/com.offsec.nhterm/files/usr/bin:/data/data/com.offsec.nhterm/files/usr/sbin:/sbin:/system/bin:/system/xbin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/odm/bin:/vendor/bin:. - -SU1=$(which su) -SU2="$SU1 -c $@" - -# clear out old view -clear - -# unset things and readd chroot things -unset PATH -unset TMP -unset TMPDIR -unset HOME -unset LD_PRELOAD -unset LD_LIBRARY_PATH - -## Combine android $PATH to kali chroot $PATH -export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -export TERM=xterm-256color -export LANG=en_US.UTF-8 -export HOME=/root -export TMP=/tmp -export TMPDIR=/tmp -export USER=root -export MAIL=/var/mail/root -export LOGNAME=root -export SHLVL=1 -# Lets pass a binky export here too ;) -export YOU_KNOW_WHAT=THIS_IS_KALI_LINUX_NETHUNTER_FROM_JAVA_BINKY - -$SU2 /system/bin/chroot /data/local/nhsystem/kalifs su - - diff --git a/nhterm/src/main/assets/colors/Default.nl b/nhterm/src/main/assets/colors/Default.nl deleted file mode 100644 index 1f5b77c..0000000 --- a/nhterm/src/main/assets/colors/Default.nl +++ /dev/null @@ -1,10 +0,0 @@ -color-scheme: { - name: "Default" - version: 1.1 - - colors: { - foreground: #ffffff - cursor: #a9aaa9 - background: #14181c - } -} diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/BasePreferenceActivity.kt b/nhterm/src/main/java/com/offsec/nhterm/ui/settings/BasePreferenceActivity.kt deleted file mode 100644 index 899aa9b..0000000 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/BasePreferenceActivity.kt +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.offsec.nhterm.ui.settings - -import android.content.res.Configuration -import android.content.res.Resources.Theme -import android.os.Bundle -import android.preference.PreferenceActivity -import android.view.MenuInflater -import android.view.View -import android.view.ViewGroup -import androidx.annotation.LayoutRes -import androidx.annotation.StyleRes -import androidx.appcompat.app.ActionBar -import androidx.appcompat.app.AppCompatDelegate -import androidx.core.content.res.ResourcesCompat.ThemeCompat -import androidx.preference.Preference -import androidx.preference.PreferenceScreen -import com.offsec.nhterm.R - -/** - * A [android.preference.PreferenceActivity] which implements and proxies the necessary calls - * to be used with AppCompat. - * - * - * This technique can be used with an [android.app.Activity] class, not just - * [android.preference.PreferenceActivity]. - */ -abstract class BasePreferenceActivity : PreferenceActivity() { - private var mDelegate: AppCompatDelegate? = null - - override fun onCreate(savedInstanceState: Bundle?) { - delegate.installViewFactory() - delegate.onCreate(savedInstanceState) - delegate.setTheme(R.style.AppTheme) - super.onCreate(savedInstanceState) - } - - override fun onPostCreate(savedInstanceState: Bundle?) { - super.onPostCreate(savedInstanceState) - delegate.onPostCreate(savedInstanceState) - } - - val supportActionBar: ActionBar? - get() = delegate.supportActionBar - - override fun getMenuInflater(): MenuInflater { - return delegate.menuInflater - } - - override fun setContentView(@LayoutRes layoutResID: Int) { - delegate.setContentView(layoutResID) - } - - override fun setContentView(view: View) { - delegate.setContentView(view) - } - - override fun setContentView(view: View, params: ViewGroup.LayoutParams) { - delegate.setContentView(view, params) - } - - override fun addContentView(view: View, params: ViewGroup.LayoutParams) { - delegate.addContentView(view, params) - } - - override fun onPostResume() { - super.onPostResume() - delegate.onPostResume() - } - - override fun onTitleChanged(title: CharSequence, color: Int) { - super.onTitleChanged(title, color) - delegate.setTitle(title) - } - - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - delegate.onConfigurationChanged(newConfig) - } - - override fun onStop() { - super.onStop() - delegate.onStop() - } - - override fun onDestroy() { - super.onDestroy() - delegate.onDestroy() - } - - override fun invalidateOptionsMenu() { - delegate.invalidateOptionsMenu() - } - - private val delegate: AppCompatDelegate - get() { - if (mDelegate == null) { - mDelegate = AppCompatDelegate.create(this, null) - } - return mDelegate!! - } -} diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/GeneralSettingsActivity.kt b/nhterm/src/main/java/com/offsec/nhterm/ui/settings/GeneralSettingsActivity.kt deleted file mode 100644 index 81ac909..0000000 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/GeneralSettingsActivity.kt +++ /dev/null @@ -1,30 +0,0 @@ -package com.offsec.nhterm.ui.settings - -import android.os.Bundle -import android.preference.PreferenceActivity -import android.view.MenuItem -import androidx.preference.Preference -import com.offsec.nhterm.R - -/** - * @author kiva - */ -class GeneralSettingsActivity : BasePreferenceActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - supportActionBar?.title = getString(R.string.general_settings) - supportActionBar?.setDisplayHomeAsUpEnabled(true) - addPreferencesFromResource(R.xml.setting_general) - } - - override fun onBuildHeaders(target: MutableList?) { - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item?.itemId) { - android.R.id.home -> finish() - } - return item?.let { super.onOptionsItemSelected(it) } - } -} diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/SettingActivity.kt b/nhterm/src/main/java/com/offsec/nhterm/ui/settings/SettingActivity.kt deleted file mode 100644 index f78c555..0000000 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/SettingActivity.kt +++ /dev/null @@ -1,34 +0,0 @@ -package com.offsec.nhterm.ui.settings - -import android.os.Build -import android.os.Bundle -import android.view.MenuItem -import com.offsec.nhterm.R - -/** - * @author Lody - */ -class SettingActivity : BasePreferenceActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - supportActionBar?.title = getString(R.string.settings) - supportActionBar?.setDisplayHomeAsUpEnabled(true) - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - addPreferencesFromResource(R.xml.settings_main) - } else { - addPreferencesFromResource(R.xml.older_settings_main) - } - } - - override fun onBuildHeaders(target: MutableList
?) { - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item?.itemId) { - android.R.id.home -> - finish() - } - return item?.let { super.onOptionsItemSelected(it) } - } -} diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/UISettingsActivity.kt b/nhterm/src/main/java/com/offsec/nhterm/ui/settings/UISettingsActivity.kt deleted file mode 100644 index d303ae4..0000000 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/settings/UISettingsActivity.kt +++ /dev/null @@ -1,29 +0,0 @@ -package com.offsec.nhterm.ui.settings - -import android.os.Bundle -import android.view.MenuItem -import com.offsec.nhterm.R - -/** - * @author kiva - */ -class UISettingsActivity : BasePreferenceActivity() { - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - supportActionBar?.title = getString(R.string.ui_settings) - supportActionBar?.setDisplayHomeAsUpEnabled(true) - addPreferencesFromResource(R.xml.settings_ui) - } - - override fun onBuildHeaders(target: MutableList
?) { - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item?.itemId) { - android.R.id.home -> - finish() - } - return item?.let { super.onOptionsItemSelected(it) } - } -} diff --git a/settings.gradle b/settings.gradle index c8b9ceb..356194f 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':nhterm', ':chrome-tabs', ':NeoLang', ':Xorg', ':NeoTermBridge' +include ':terminal', ':chrome-tabs', ':NeoLang', ':Xorg', ':NeoTermBridge' diff --git a/nhterm/.gitignore b/terminal/.gitignore similarity index 100% rename from nhterm/.gitignore rename to terminal/.gitignore diff --git a/nhterm/CMakeLists.txt b/terminal/CMakeLists.txt similarity index 100% rename from nhterm/CMakeLists.txt rename to terminal/CMakeLists.txt diff --git a/nhterm/build.gradle b/terminal/build.gradle similarity index 74% rename from nhterm/build.gradle rename to terminal/build.gradle index 8963a4b..71e608b 100644 --- a/nhterm/build.gradle +++ b/terminal/build.gradle @@ -5,7 +5,7 @@ android { compileSdkVersion rootProject.ext.android.COMPILE_SDK_VERSION defaultConfig { - applicationId "com.offsec.nhterm" + applicationId "com.evolinx.terminal" minSdkVersion rootProject.ext.android.MIN_SDK_VERSION targetSdkVersion rootProject.ext.android.TARGET_SDK_VERSION versionCode rootProject.ext.versionCode @@ -18,14 +18,6 @@ android { abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64' } } - signingConfigs { - debug { - storeFile file('nethunter-debug.jks') - keyAlias 'nethunter' - storePassword 'nethunter' - keyPassword 'nethunter' - } - } sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs'] @@ -35,6 +27,11 @@ android { buildTypes { release { zipAlignEnabled true + versionName + "-release" + } + debug { + zipAlignEnabled true + versionName + "-debug" } } externalNativeBuild { @@ -43,17 +40,18 @@ android { } } compileOptions { - targetCompatibility 1.8 - sourceCompatibility 1.8 + targetCompatibility 17 + sourceCompatibility 17 } kotlinOptions { freeCompilerArgs = ["-Xallow-result-return-type"] + jvmTarget = "17" } lint { abortOnError false checkReleaseBuilds false } - namespace 'com.offsec.nhterm' + namespace 'com.evolinx.terminal' } dependencies { @@ -61,7 +59,7 @@ dependencies { testImplementation rootProject.ext.deps["junit"] androidTestImplementation project(path: ':NeoLang') - implementation rootProject.ext.deps["kotlin-stdlib"] + //implementation rootProject.ext.deps["kotlin-stdlib"] implementation 'org.greenrobot:eventbus:3.3.1' implementation 'com.github.wrdlbrnft:modular-adapter:0.3.0.22' @@ -71,14 +69,18 @@ dependencies { implementation 'com.github.GrenderG:Color-O-Matic:1.1.5' implementation 'com.github.topjohnwu.libsu:core:5.2.1' - implementation 'androidx.annotation:annotation:1.3.0' - implementation "androidx.core:core:1.6.0" + // AndroidX + implementation 'androidx.annotation:annotation:1.5.0' + implementation "androidx.core:core:1.8.0" implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.appcompat:appcompat:1.3.0' - implementation 'androidx.appcompat:appcompat-resources:1.3.0' + implementation 'androidx.preference:preference:1.2.1' + //implementation 'androidx.preference:preference-ktx:1.2.1' + + // Themes implementation 'com.google.android.material:material:1.5.0' - implementation 'androidx.preference:preference:1.1.0' - implementation "androidx.compose.material:material:1.0.0" + implementation "androidx.compose.material3:material3:1.1.0" + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'androidx.appcompat:appcompat-resources:1.3.1' // Backports for lower api levels implementation 'com.llamalab.safs:safs-core:0.2.0' diff --git a/nhterm/src/main/AndroidManifest.xml b/terminal/src/main/AndroidManifest.xml similarity index 93% rename from nhterm/src/main/AndroidManifest.xml rename to terminal/src/main/AndroidManifest.xml index 85f2b64..7f05430 100644 --- a/nhterm/src/main/AndroidManifest.xml +++ b/terminal/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + package="com.evolinx.terminal"> - diff --git a/nhterm/src/main/assets/colors/Kali.nl b/terminal/src/main/assets/colors/Default.nl similarity index 96% rename from nhterm/src/main/assets/colors/Kali.nl rename to terminal/src/main/assets/colors/Default.nl index 37ee47b..ee00e44 100644 --- a/nhterm/src/main/assets/colors/Kali.nl +++ b/terminal/src/main/assets/colors/Default.nl @@ -1,5 +1,5 @@ color-scheme: { - name: "Kali" + name: "Default" version: 1.0 colors: { diff --git a/nhterm/src/main/assets/colors/Dracula.nl b/terminal/src/main/assets/colors/Dracula.nl similarity index 100% rename from nhterm/src/main/assets/colors/Dracula.nl rename to terminal/src/main/assets/colors/Dracula.nl diff --git a/nhterm/src/main/assets/colors/Material.nl b/terminal/src/main/assets/colors/Material.nl similarity index 100% rename from nhterm/src/main/assets/colors/Material.nl rename to terminal/src/main/assets/colors/Material.nl diff --git a/nhterm/src/main/assets/colors/SolarizedDark.nl b/terminal/src/main/assets/colors/SolarizedDark.nl similarity index 100% rename from nhterm/src/main/assets/colors/SolarizedDark.nl rename to terminal/src/main/assets/colors/SolarizedDark.nl diff --git a/nhterm/src/main/assets/colors/SolarizedLight.nl b/terminal/src/main/assets/colors/SolarizedLight.nl similarity index 100% rename from nhterm/src/main/assets/colors/SolarizedLight.nl rename to terminal/src/main/assets/colors/SolarizedLight.nl diff --git a/nhterm/src/main/assets/eks/README.txt b/terminal/src/main/assets/eks/README.txt similarity index 100% rename from nhterm/src/main/assets/eks/README.txt rename to terminal/src/main/assets/eks/README.txt diff --git a/nhterm/src/main/assets/eks/default.nl b/terminal/src/main/assets/eks/default.nl similarity index 100% rename from nhterm/src/main/assets/eks/default.nl rename to terminal/src/main/assets/eks/default.nl diff --git a/nhterm/src/main/assets/eks/vim.nl b/terminal/src/main/assets/eks/vim.nl similarity index 100% rename from nhterm/src/main/assets/eks/vim.nl rename to terminal/src/main/assets/eks/vim.nl diff --git a/nhterm/src/main/assets/eks_font.ttf b/terminal/src/main/assets/eks_font.ttf similarity index 100% rename from nhterm/src/main/assets/eks_font.ttf rename to terminal/src/main/assets/eks_font.ttf diff --git a/nhterm/src/main/assets/fonts/FiraCode.ttf b/terminal/src/main/assets/fonts/FiraCode.ttf similarity index 100% rename from nhterm/src/main/assets/fonts/FiraCode.ttf rename to terminal/src/main/assets/fonts/FiraCode.ttf diff --git a/nhterm/src/main/assets/fonts/SourceCodePro.ttf b/terminal/src/main/assets/fonts/SourceCodePro.ttf similarity index 100% rename from nhterm/src/main/assets/fonts/SourceCodePro.ttf rename to terminal/src/main/assets/fonts/SourceCodePro.ttf diff --git a/nhterm/src/main/assets/fonts/UbuntuMono.ttf b/terminal/src/main/assets/fonts/UbuntuMono.ttf similarity index 100% rename from nhterm/src/main/assets/fonts/UbuntuMono.ttf rename to terminal/src/main/assets/fonts/UbuntuMono.ttf diff --git a/nhterm/src/main/assets/fonts/ZedMonoMedium.ttf b/terminal/src/main/assets/fonts/ZedMonoMedium.ttf similarity index 100% rename from nhterm/src/main/assets/fonts/ZedMonoMedium.ttf rename to terminal/src/main/assets/fonts/ZedMonoMedium.ttf diff --git a/nhterm/src/main/assets/scripts/open-bash b/terminal/src/main/assets/scripts/open-bash similarity index 100% rename from nhterm/src/main/assets/scripts/open-bash rename to terminal/src/main/assets/scripts/open-bash diff --git a/nhterm/src/main/cpp/exec.c b/terminal/src/main/cpp/exec.c similarity index 97% rename from nhterm/src/main/cpp/exec.c rename to terminal/src/main/cpp/exec.c index f86c3e4..1a005c7 100644 --- a/nhterm/src/main/cpp/exec.c +++ b/terminal/src/main/cpp/exec.c @@ -7,7 +7,7 @@ #include static const char *rewrite_executable(const char *filename, char *buffer, int buffer_len) { - strcpy(buffer, "/data/data/com.offsec.nhterm/files/usr/bin/"); + strcpy(buffer, "/data/data/com.evolinx.terminal/files/usr/bin/"); char *bin_match = strstr(filename, "/bin/"); if (bin_match == filename || bin_match == (filename + 4)) { // We have either found "/bin/" at the start of the string or at diff --git a/nhterm/src/main/cpp/neoterm.cpp b/terminal/src/main/cpp/neoterm.cpp similarity index 93% rename from nhterm/src/main/cpp/neoterm.cpp rename to terminal/src/main/cpp/neoterm.cpp index 34e3f16..4d94059 100644 --- a/nhterm/src/main/cpp/neoterm.cpp +++ b/terminal/src/main/cpp/neoterm.cpp @@ -10,7 +10,7 @@ #include #include -#define __nhterm_no_return __attribute__((__noreturn__)) +#define __terminal_no_return __attribute__((__noreturn__)) #define TERMUX_UNUSED(x) x __attribute__((__unused__)) #ifdef __APPLE__ @@ -114,7 +114,7 @@ static int create_subprocess(JNIEnv *env, } } -extern "C" JNIEXPORT jint JNICALL Java_com_offsec_nhterm_backend_JNI_createSubprocess( +extern "C" JNIEXPORT jint JNICALL Java_com_evolinx_terminal_backend_JNI_createSubprocess( JNIEnv *env, jclass TERMUX_UNUSED(clazz), jstring cmd, @@ -184,7 +184,7 @@ extern "C" JNIEXPORT jint JNICALL Java_com_offsec_nhterm_backend_JNI_createSubpr } extern "C" JNIEXPORT void JNICALL -Java_com_offsec_nhterm_backend_JNI_setPtyWindowSize(JNIEnv *TERMUX_UNUSED(env), +Java_com_evolinx_terminal_backend_JNI_setPtyWindowSize(JNIEnv *TERMUX_UNUSED(env), jclass TERMUX_UNUSED(clazz), jint fd, jint rows, jint cols) { @@ -193,7 +193,7 @@ Java_com_offsec_nhterm_backend_JNI_setPtyWindowSize(JNIEnv *TERMUX_UNUSED(env), } extern "C" JNIEXPORT void JNICALL -Java_com_offsec_nhterm_backend_JNI_setPtyUTF8Mode(JNIEnv *TERMUX_UNUSED(env), jclass TERMUX_UNUSED(clazz), +Java_com_evolinx_terminal_backend_JNI_setPtyUTF8Mode(JNIEnv *TERMUX_UNUSED(env), jclass TERMUX_UNUSED(clazz), jint fd) { struct termios tios; tcgetattr(fd, &tios); @@ -204,7 +204,7 @@ Java_com_offsec_nhterm_backend_JNI_setPtyUTF8Mode(JNIEnv *TERMUX_UNUSED(env), jc } extern "C" JNIEXPORT int JNICALL -Java_com_offsec_nhterm_backend_JNI_waitFor(JNIEnv *TERMUX_UNUSED(env), jclass TERMUX_UNUSED(clazz), +Java_com_evolinx_terminal_backend_JNI_waitFor(JNIEnv *TERMUX_UNUSED(env), jclass TERMUX_UNUSED(clazz), jint pid) { int status; waitpid(pid, &status, 0); @@ -219,7 +219,7 @@ Java_com_offsec_nhterm_backend_JNI_waitFor(JNIEnv *TERMUX_UNUSED(env), jclass TE } extern "C" JNIEXPORT void JNICALL -Java_com_offsec_nhterm_backend_JNI_close(JNIEnv *TERMUX_UNUSED(env), jclass TERMUX_UNUSED(clazz), +Java_com_evolinx_terminal_backend_JNI_close(JNIEnv *TERMUX_UNUSED(env), jclass TERMUX_UNUSED(clazz), jint fileDescriptor) { close(fileDescriptor); } diff --git a/nhterm/src/main/ic_launcher-playstore.png b/terminal/src/main/ic_launcher-playstore.png similarity index 100% rename from nhterm/src/main/ic_launcher-playstore.png rename to terminal/src/main/ic_launcher-playstore.png diff --git a/nhterm/src/main/java/com/offsec/nhterm/App.kt b/terminal/src/main/java/com/evolinx/terminal/App.kt similarity index 84% rename from nhterm/src/main/java/com/offsec/nhterm/App.kt rename to terminal/src/main/java/com/evolinx/terminal/App.kt index cae977a..f73e702 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/App.kt +++ b/terminal/src/main/java/com/evolinx/terminal/App.kt @@ -1,18 +1,19 @@ -package com.offsec.nhterm +package com.evolinx.terminal import android.annotation.SuppressLint import android.app.Application import android.content.Context import android.content.Intent import android.net.Uri +import android.util.Log import android.view.Gravity import android.widget.Toast import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.component.NeoInitializer -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.ui.other.BonusActivity -import com.offsec.nhterm.utils.CrashHandler -import com.offsec.nhterm.utils.NeoPermission +import com.evolinx.terminal.component.NeoInitializer +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.config.NeoTermPath.BIN_PATH +import com.evolinx.terminal.ui.other.BonusActivity +import com.evolinx.terminal.utils.CrashHandler import com.topjohnwu.superuser.Shell /** @@ -23,8 +24,6 @@ class App : Application() { super.onCreate() app = this - Shell.cmd("setenforce 0").exec() - NeoPreference.init(this) CrashHandler.init() NeoInitializer.init(this) @@ -63,7 +62,7 @@ class App : Application() { if (happyCount == trigger / 2) { @SuppressLint("ShowToast") val toast = Toast.makeText(this, message, Toast.LENGTH_LONG) - toast.setGravity(Gravity.CENTER, 0, 0) + toast.setGravity(Gravity.BOTTOM, 0, 0) toast.show() } else if (happyCount > trigger) { NeoPreference.store(NeoPreference.KEY_HAPPY_EGG, 0) diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/ByteQueue.java b/terminal/src/main/java/com/evolinx/terminal/backend/ByteQueue.java similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/backend/ByteQueue.java rename to terminal/src/main/java/com/evolinx/terminal/backend/ByteQueue.java index 259986b..3f2e545 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/ByteQueue.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/ByteQueue.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; /** * A circular byte buffer allowing one producer and one consumer thread. diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/EmulatorDebug.java b/terminal/src/main/java/com/evolinx/terminal/backend/EmulatorDebug.java similarity index 82% rename from nhterm/src/main/java/com/offsec/nhterm/backend/EmulatorDebug.java rename to terminal/src/main/java/com/evolinx/terminal/backend/EmulatorDebug.java index 53deed5..d4b9c5e 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/EmulatorDebug.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/EmulatorDebug.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import android.util.Log; diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/JNI.java b/terminal/src/main/java/com/evolinx/terminal/backend/JNI.java similarity index 97% rename from nhterm/src/main/java/com/offsec/nhterm/backend/JNI.java rename to terminal/src/main/java/com/evolinx/terminal/backend/JNI.java index 07a393b..cf8f3fc 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/JNI.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/JNI.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; /** * Native methods for creating and managing pseudoterminal subprocesses. C code is in jni/termux.c. diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/KeyHandler.java b/terminal/src/main/java/com/evolinx/terminal/backend/KeyHandler.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/backend/KeyHandler.java rename to terminal/src/main/java/com/evolinx/terminal/backend/KeyHandler.java index e74e64c..d8a9315 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/KeyHandler.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/KeyHandler.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import java.util.HashMap; import java.util.Map; diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalBuffer.java b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalBuffer.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TerminalBuffer.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TerminalBuffer.java index c25c525..b066041 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalBuffer.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalBuffer.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import java.util.Arrays; @@ -399,9 +399,13 @@ public final class TerminalBuffer { throw new IllegalArgumentException( "Illegal arguments! blockSet(" + sx + ", " + sy + ", " + w + ", " + h + ", " + val + ", " + mColumns + ", " + mScreenRows + ")"); } - for (int y = 0; y < h; y++) + for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) setChar(sx + x, sy + y, val, style); + if (sx+w == mColumns && val == ' ') { + clearLineWrap(sy + y); + } + } } public TerminalRow allocateFullLineIfNecessary(int row) { diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalColorScheme.java b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalColorScheme.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TerminalColorScheme.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TerminalColorScheme.java index c9e9795..c595243 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalColorScheme.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalColorScheme.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import java.util.Map; import java.util.Properties; diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalColors.java b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalColors.java similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TerminalColors.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TerminalColors.java index fbf69c7..ac4b8f6 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalColors.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalColors.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; /** * Current terminal colors (if different from default). diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalEmulator.java b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalEmulator.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TerminalEmulator.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TerminalEmulator.java index 4aceda7..6206587 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalEmulator.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalEmulator.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import android.util.Base64; import android.util.Log; diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalOutput.java b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalOutput.java similarity index 96% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TerminalOutput.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TerminalOutput.java index c75a79d..9f06cde 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalOutput.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalOutput.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import java.nio.charset.StandardCharsets; diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalRow.java b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalRow.java similarity index 81% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TerminalRow.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TerminalRow.java index 66e81bf..4c43adf 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalRow.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalRow.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import java.util.Arrays; @@ -10,6 +10,31 @@ import java.util.Arrays; public final class TerminalRow { private static final float SPARE_CAPACITY_FACTOR = 1.5f; + /** + * Max combining characters that can exist in a column, that are separate from the base character + * itself. Any additional combining characters will be ignored and not added to the column. + * + * There does not seem to be limit in unicode standard for max number of combination characters + * that can be combined but such characters are primarily under 10. + * + * "Section 3.6 Combination" of unicode standard contains combining characters info. + * - https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf + * - https://en.wikipedia.org/wiki/Combining_character#Unicode_ranges + * - https://stackoverflow.com/questions/71237212/what-is-the-maximum-number-of-unicode-combined-characters-that-may-be-needed-to + * + * UAX15-D3 Stream-Safe Text Format limits to max 30 combining characters. + * > The value of 30 is chosen to be significantly beyond what is required for any linguistic or technical usage. + * > While it would have been feasible to chose a smaller number, this value provides a very wide margin, + * > yet is well within the buffer size limits of practical implementations. + * - https://unicode.org/reports/tr15/#Stream_Safe_Text_Format + * - https://stackoverflow.com/a/11983435/14686958 + * + * We choose the value 15 because it should be enough for terminal based applications and keep + * the memory usage low for a terminal row, won't affect performance or cause terminal to + * lag or hang, and will keep malicious applications from causing harm. The value can be + * increased if ever needed for legitimate applications. + */ + private static final int MAX_COMBINING_CHARACTERS_PER_COLUMN = 15; /** * The number of columns in this terminal row. @@ -178,18 +203,25 @@ public final class TerminalRow { // Get the number of elements in the mText array this column uses now int oldCharactersUsedForColumn; if (columnToSet + oldCodePointDisplayWidth < mColumns) { - oldCharactersUsedForColumn = findStartOfColumn(columnToSet + oldCodePointDisplayWidth) - oldStartOfColumnIndex; + int oldEndOfColumnIndex = findStartOfColumn(columnToSet + oldCodePointDisplayWidth); + oldCharactersUsedForColumn = oldEndOfColumnIndex - oldStartOfColumnIndex; } else { // Last character. oldCharactersUsedForColumn = mSpaceUsed - oldStartOfColumnIndex; } + // If MAX_COMBINING_CHARACTERS_PER_COLUMN already exist in column, then ignore adding additional combining characters. + if (newIsCombining) { + int combiningCharsCount = WcWidth.zeroWidthCharsCount(mText, oldStartOfColumnIndex, oldStartOfColumnIndex + oldCharactersUsedForColumn); + if (combiningCharsCount >= MAX_COMBINING_CHARACTERS_PER_COLUMN) + return; + } + // Find how many chars this column will need int newCharactersUsedForColumn = Character.charCount(codePoint); if (newIsCombining) { // Combining characters are added to the contents of the column instead of overwriting them, so that they // modify the existing contents. - // FIXME: Put a limit of combining characters. // FIXME: Unassigned characters also get width=0. newCharactersUsedForColumn += oldCharactersUsedForColumn; } @@ -204,7 +236,7 @@ public final class TerminalRow { if (mSpaceUsed + javaCharDifference > text.length) { // We need to grow the array char[] newText = new char[text.length + mColumns]; - System.arraycopy(text, 0, newText, 0, oldStartOfColumnIndex + oldCharactersUsedForColumn); + System.arraycopy(text, 0, newText, 0, oldNextColumnIndex); System.arraycopy(text, oldNextColumnIndex, newText, newNextColumnIndex, oldCharactersAfterColumn); mText = text = newText; } else { diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalSession.java b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalSession.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TerminalSession.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TerminalSession.java index cf1274f..93c4d68 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TerminalSession.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TerminalSession.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; import android.annotation.SuppressLint; import android.os.Handler; diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/TextStyle.java b/terminal/src/main/java/com/evolinx/terminal/backend/TextStyle.java similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/backend/TextStyle.java rename to terminal/src/main/java/com/evolinx/terminal/backend/TextStyle.java index 4b37ff0..862213b 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/TextStyle.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/TextStyle.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; /** *

diff --git a/nhterm/src/main/java/com/offsec/nhterm/backend/WcWidth.java b/terminal/src/main/java/com/evolinx/terminal/backend/WcWidth.java similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/backend/WcWidth.java rename to terminal/src/main/java/com/evolinx/terminal/backend/WcWidth.java index e4408d0..68a0a63 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/backend/WcWidth.java +++ b/terminal/src/main/java/com/evolinx/terminal/backend/WcWidth.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.backend; +package com.evolinx.terminal.backend; /** * Implementation of wcwidth(3) for Unicode 15. @@ -536,4 +536,29 @@ public final class WcWidth { return Character.isHighSurrogate(c) ? width(Character.toCodePoint(c, chars[index + 1])) : width(c); } + /** + * The zero width characters count like combining characters in the `chars` array from start + * index to end index (exclusive). + */ + public static int zeroWidthCharsCount(char[] chars, int start, int end) { + if (start < 0 || start >= chars.length) + return 0; + + int count = 0; + for (int i = start; i < end && i < chars.length;) { + if (Character.isHighSurrogate(chars[i])) { + if (width(Character.toCodePoint(chars[i], chars[i + 1])) <= 0) { + count++; + } + i += 2; + } else { + if (width(chars[i]) <= 0) { + count++; + } + i++; + } + } + return count; + } + } diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/codegen/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/codegen/comp.kt similarity index 77% rename from nhterm/src/main/java/com/offsec/nhterm/component/codegen/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/codegen/comp.kt index 0ca9888..5869c36 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/codegen/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/codegen/comp.kt @@ -1,6 +1,6 @@ -package com.offsec.nhterm.component.codegen +package com.evolinx.terminal.component.codegen -import com.offsec.nhterm.component.NeoComponent +import com.evolinx.terminal.component.NeoComponent class CodeGenComponent : NeoComponent { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/codegen/generators.kt b/terminal/src/main/java/com/evolinx/terminal/component/codegen/generators.kt similarity index 90% rename from nhterm/src/main/java/com/offsec/nhterm/component/codegen/generators.kt rename to terminal/src/main/java/com/evolinx/terminal/component/codegen/generators.kt index 45827f8..81154fb 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/codegen/generators.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/codegen/generators.kt @@ -1,8 +1,8 @@ -package com.offsec.nhterm.component.codegen +package com.evolinx.terminal.component.codegen -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.colorscheme.NeoColorScheme -import com.offsec.nhterm.component.config.ConfigureComponent +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.colorscheme.NeoColorScheme +import com.evolinx.terminal.component.config.ConfigureComponent class NeoColorGenerator(parameter: CodeGenParameter) : CodeGenerator(parameter) { override fun getGeneratorName(): String { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/codegen/interfaces.kt b/terminal/src/main/java/com/evolinx/terminal/component/codegen/interfaces.kt similarity index 85% rename from nhterm/src/main/java/com/offsec/nhterm/component/codegen/interfaces.kt rename to terminal/src/main/java/com/evolinx/terminal/component/codegen/interfaces.kt index 67c92e9..1e0ac99 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/codegen/interfaces.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/codegen/interfaces.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.codegen +package com.evolinx.terminal.component.codegen abstract class CodeGenerator(parameter: CodeGenParameter) { abstract fun getGeneratorName(): String diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/colorscheme/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/colorscheme/comp.kt similarity index 84% rename from nhterm/src/main/java/com/offsec/nhterm/component/colorscheme/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/colorscheme/comp.kt index 1ecef8f..d0177da 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/colorscheme/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/colorscheme/comp.kt @@ -1,18 +1,18 @@ -package com.offsec.nhterm.component.colorscheme +package com.evolinx.terminal.component.colorscheme import android.content.Context import android.os.Build -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.ConfigFileBasedComponent -import com.offsec.nhterm.component.codegen.CodeGenComponent -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView -import com.offsec.nhterm.utils.extractAssetsDir +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.ConfigFileBasedComponent +import com.evolinx.terminal.component.codegen.CodeGenComponent +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.utils.extractAssetsDir import java.io.File import java.nio.file.Files diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/colorscheme/data.kt b/terminal/src/main/java/com/evolinx/terminal/component/colorscheme/data.kt similarity index 87% rename from nhterm/src/main/java/com/offsec/nhterm/component/colorscheme/data.kt rename to terminal/src/main/java/com/evolinx/terminal/component/colorscheme/data.kt index fb20665..85d157e 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/colorscheme/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/colorscheme/data.kt @@ -1,18 +1,18 @@ -package com.offsec.nhterm.component.colorscheme +package com.evolinx.terminal.component.colorscheme import android.os.Build -import com.offsec.nhterm.R -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.backend.TerminalColorScheme -import com.offsec.nhterm.backend.TerminalColors -import com.offsec.nhterm.component.ConfigFileBasedObject -import com.offsec.nhterm.component.codegen.CodeGenObject -import com.offsec.nhterm.component.codegen.CodeGenParameter -import com.offsec.nhterm.component.codegen.CodeGenerator -import com.offsec.nhterm.component.codegen.NeoColorGenerator -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView -import com.offsec.nhterm.utils.NLog +import com.evolinx.terminal.R +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.backend.TerminalColorScheme +import com.evolinx.terminal.backend.TerminalColors +import com.evolinx.terminal.component.ConfigFileBasedObject +import com.evolinx.terminal.component.codegen.CodeGenObject +import com.evolinx.terminal.component.codegen.CodeGenParameter +import com.evolinx.terminal.component.codegen.CodeGenerator +import com.evolinx.terminal.component.codegen.NeoColorGenerator +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.utils.NLog open class NeoColorScheme : CodeGenObject, ConfigFileBasedObject { companion object { @@ -176,7 +176,7 @@ open class NeoColorScheme : CodeGenObject, ConfigFileBasedObject { object DefaultColorScheme : NeoColorScheme() { init { /* NOTE: Keep in sync with assets/colors/Default.nl */ - colorName = "Kali" + colorName = "Default" cursorColor = "#a9aaa9" diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/comp.kt similarity index 77% rename from nhterm/src/main/java/com/offsec/nhterm/component/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/comp.kt index 52a5091..67b5c55 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/comp.kt @@ -1,18 +1,18 @@ -package com.offsec.nhterm.component +package com.evolinx.terminal.component import android.content.Context -import com.offsec.nhterm.component.codegen.CodeGenComponent -import com.offsec.nhterm.component.colorscheme.ColorSchemeComponent -import com.offsec.nhterm.component.completion.CompletionComponent -import com.offsec.nhterm.component.config.ConfigureComponent -import com.offsec.nhterm.component.extrakey.ExtraKeyComponent -import com.offsec.nhterm.component.font.FontComponent -import com.offsec.nhterm.component.pm.PackageComponent -import com.offsec.nhterm.component.profile.ProfileComponent -import com.offsec.nhterm.component.session.SessionComponent -import com.offsec.nhterm.component.session.ShellProfile -import com.offsec.nhterm.component.userscript.UserScriptComponent -import com.offsec.nhterm.utils.NLog +import com.evolinx.terminal.component.codegen.CodeGenComponent +import com.evolinx.terminal.component.colorscheme.ColorSchemeComponent +import com.evolinx.terminal.component.completion.CompletionComponent +import com.evolinx.terminal.component.config.ConfigureComponent +import com.evolinx.terminal.component.extrakey.ExtraKeyComponent +import com.evolinx.terminal.component.font.FontComponent +import com.evolinx.terminal.component.pm.PackageComponent +import com.evolinx.terminal.component.profile.ProfileComponent +import com.evolinx.terminal.component.session.SessionComponent +import com.evolinx.terminal.component.session.ShellProfile +import com.evolinx.terminal.component.userscript.UserScriptComponent +import com.evolinx.terminal.utils.NLog import java.util.concurrent.ConcurrentHashMap interface NeoComponent { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/completion/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/completion/comp.kt similarity index 94% rename from nhterm/src/main/java/com/offsec/nhterm/component/completion/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/completion/comp.kt index e193cfe..6ff9456 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/completion/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/completion/comp.kt @@ -1,6 +1,6 @@ -package com.offsec.nhterm.component.completion +package com.evolinx.terminal.component.completion -import com.offsec.nhterm.component.NeoComponent +import com.evolinx.terminal.component.NeoComponent class CompletionComponent : NeoComponent { override fun onServiceInit() { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/completion/data.kt b/terminal/src/main/java/com/evolinx/terminal/component/completion/data.kt similarity index 88% rename from nhterm/src/main/java/com/offsec/nhterm/component/completion/data.kt rename to terminal/src/main/java/com/evolinx/terminal/component/completion/data.kt index e0cb59a..64fbd2d 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/completion/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/completion/data.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.completion +package com.evolinx.terminal.component.completion class CompletionCandidate(val completeString: String) { var displayName: String = completeString diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/completion/listeners.kt b/terminal/src/main/java/com/evolinx/terminal/component/completion/listeners.kt similarity index 87% rename from nhterm/src/main/java/com/offsec/nhterm/component/completion/listeners.kt rename to terminal/src/main/java/com/evolinx/terminal/component/completion/listeners.kt index 8089373..2c6830a 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/completion/listeners.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/completion/listeners.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.completion +package com.evolinx.terminal.component.completion interface MarkScoreListener { fun onMarkScore(score: Int) diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/completion/providers.kt b/terminal/src/main/java/com/evolinx/terminal/component/completion/providers.kt similarity index 97% rename from nhterm/src/main/java/com/offsec/nhterm/component/completion/providers.kt rename to terminal/src/main/java/com/evolinx/terminal/component/completion/providers.kt index 618ae3e..ceb2a5c 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/completion/providers.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/completion/providers.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.completion +package com.evolinx.terminal.component.completion import java.io.File diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/config/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/config/comp.kt similarity index 93% rename from nhterm/src/main/java/com/offsec/nhterm/component/config/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/config/comp.kt index fc96042..bae84fc 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/config/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/config/comp.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.config +package com.evolinx.terminal.component.config import android.content.Context import android.content.SharedPreferences @@ -7,14 +7,14 @@ import android.preference.PreferenceManager import android.system.ErrnoException import android.system.Os import android.util.TypedValue -import io.neolang.frontend.ConfigVisitor -import io.neolang.frontend.NeoLangParser -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.NeoComponent -import com.offsec.nhterm.services.NeoTermService -import com.offsec.nhterm.utils.NLog +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.neolang.frontend.NeoLangParser +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.NeoComponent +import com.evolinx.terminal.services.NeoTermService +import com.evolinx.terminal.utils.NLog import java.io.File import java.nio.file.Files @@ -225,6 +225,13 @@ object NeoPreference { ) } + fun isPrintFontSizeEnabled(): Boolean { + return loadBoolean( + R.string.key_general_print_font_size, + DefaultValues.enableprintFontSize + ) + } + fun isBellEnabled(): Boolean { return loadBoolean( R.string.key_general_bell, diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/config/defaults.kt b/terminal/src/main/java/com/evolinx/terminal/component/config/defaults.kt similarity index 79% rename from nhterm/src/main/java/com/offsec/nhterm/component/config/defaults.kt rename to terminal/src/main/java/com/evolinx/terminal/component/config/defaults.kt index 3037820..29f2ac2 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/config/defaults.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/config/defaults.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.config +package com.evolinx.terminal.component.config import android.annotation.SuppressLint @@ -7,6 +7,7 @@ object DefaultValues { const val enableBell = false const val enableVibrate = false + const val enableprintFontSize = true const val enableExecveWrapper = true const val enableAutoCompletion = false const val enableFullScreen = false @@ -25,14 +26,16 @@ object DefaultValues { object NeoTermPath { @SuppressLint("SdCardPath") - const val ROOT_PATH = "/data/data/com.offsec.nhterm/files" + const val ROOT_PATH = "/data/data/com.evolinx.terminal/files" const val USR_PATH = "$ROOT_PATH/usr" const val BIN_PATH = "$USR_PATH/bin" - const val HOME_PATH = "/" + const val HOME_PATH = "$USR_PATH/home" const val APT_BIN_PATH = "$USR_PATH/bin/apt" const val LIB_PATH = "$USR_PATH/lib" - const val CUSTOM_PATH = "$ROOT_PATH/usr/home/.nhterm" + const val TERM_APP = "$ROOT_PATH/app" + const val CUSTOM_PATH = "$TERM_APP/.evolinx" + const val TERM_BIN = "$TERM_APP/bin" const val NEOTERM_LOGIN_SHELL_PATH = "$CUSTOM_PATH/shell" const val EKS_PATH = "$CUSTOM_PATH/eks" const val EKS_DEFAULT_FILE = "$EKS_PATH/default.nl" @@ -44,7 +47,7 @@ object NeoTermPath { const val SOURCE_FILE = "$USR_PATH/etc/apt/sources.list" const val PACKAGE_LIST_DIR = "$USR_PATH/var/lib/apt/lists" - private const val SOURCE = "http://http.kali.org/kali" + private const val SOURCE = "https://files.martinvlba.eu" val DEFAULT_MAIN_PACKAGE_SOURCE: String diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/config/loaders.kt b/terminal/src/main/java/com/evolinx/terminal/component/config/loaders.kt similarity index 94% rename from nhterm/src/main/java/com/offsec/nhterm/component/config/loaders.kt rename to terminal/src/main/java/com/evolinx/terminal/component/config/loaders.kt index 343f25e..6dc46be 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/config/loaders.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/config/loaders.kt @@ -1,11 +1,11 @@ -package com.offsec.nhterm.component.config +package com.evolinx.terminal.component.config -import io.neolang.frontend.ConfigVisitor -import io.neolang.runtime.NeoLangValue -import com.offsec.nhterm.component.colorscheme.NeoColorScheme -import com.offsec.nhterm.component.extrakey.NeoExtraKey -import com.offsec.nhterm.frontend.session.view.extrakey.TextButton -import com.offsec.nhterm.utils.NLog +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.neolang.runtime.NeoLangValue +import com.evolinx.terminal.component.colorscheme.NeoColorScheme +import com.evolinx.terminal.component.extrakey.NeoExtraKey +import com.evolinx.terminal.frontend.session.view.extrakey.TextButton +import com.evolinx.terminal.utils.NLog import java.io.BufferedReader import java.io.File import java.io.FileInputStream diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/data.kt b/terminal/src/main/java/com/evolinx/terminal/component/data.kt similarity index 89% rename from nhterm/src/main/java/com/offsec/nhterm/component/data.kt rename to terminal/src/main/java/com/evolinx/terminal/component/data.kt index 8a4880f..663f811 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/data.kt @@ -1,8 +1,8 @@ -package com.offsec.nhterm.component +package com.evolinx.terminal.component -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.component.config.ConfigureComponent -import com.offsec.nhterm.utils.NLog +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.component.config.ConfigureComponent +import com.evolinx.terminal.utils.NLog import java.io.File import java.io.FileFilter diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/extrakey/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/extrakey/comp.kt similarity index 80% rename from nhterm/src/main/java/com/offsec/nhterm/component/extrakey/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/extrakey/comp.kt index 118938f..1267bab 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/extrakey/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/extrakey/comp.kt @@ -1,14 +1,14 @@ -package com.offsec.nhterm.component.extrakey +package com.evolinx.terminal.component.extrakey import android.content.Context import android.os.Build -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.App -import com.offsec.nhterm.component.ConfigFileBasedComponent -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView -import com.offsec.nhterm.utils.NLog -import com.offsec.nhterm.utils.extractAssetsDir +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.App +import com.evolinx.terminal.component.ConfigFileBasedComponent +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.utils.NLog +import com.evolinx.terminal.utils.extractAssetsDir import java.io.File class ExtraKeyComponent : ConfigFileBasedComponent(NeoTermPath.EKS_PATH) { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/extrakey/data.kt b/terminal/src/main/java/com/evolinx/terminal/component/extrakey/data.kt similarity index 86% rename from nhterm/src/main/java/com/offsec/nhterm/component/extrakey/data.kt rename to terminal/src/main/java/com/evolinx/terminal/component/extrakey/data.kt index 68e3ce9..077fc12 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/extrakey/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/extrakey/data.kt @@ -1,10 +1,10 @@ -package com.offsec.nhterm.component.extrakey +package com.evolinx.terminal.component.extrakey -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.component.ConfigFileBasedObject -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView -import com.offsec.nhterm.frontend.session.view.extrakey.IExtraButton -import com.offsec.nhterm.frontend.session.view.extrakey.TextButton +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.component.ConfigFileBasedObject +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.frontend.session.view.extrakey.IExtraButton +import com.evolinx.terminal.frontend.session.view.extrakey.TextButton /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/font/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/font/comp.kt similarity index 85% rename from nhterm/src/main/java/com/offsec/nhterm/component/font/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/font/comp.kt index e5183ec..287b3ee 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/font/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/font/comp.kt @@ -1,16 +1,16 @@ -package com.offsec.nhterm.component.font +package com.evolinx.terminal.component.font import android.content.Context import android.graphics.Typeface -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.component.NeoComponent -import com.offsec.nhterm.component.config.DefaultValues -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView -import com.offsec.nhterm.utils.extractAssetsDir +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.component.NeoComponent +import com.evolinx.terminal.component.config.DefaultValues +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.utils.extractAssetsDir import java.io.File class FontComponent : NeoComponent { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/font/data.kt b/terminal/src/main/java/com/evolinx/terminal/component/font/data.kt similarity index 79% rename from nhterm/src/main/java/com/offsec/nhterm/component/font/data.kt rename to terminal/src/main/java/com/evolinx/terminal/component/font/data.kt index 97307cd..18bc789 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/font/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/font/data.kt @@ -1,8 +1,8 @@ -package com.offsec.nhterm.component.font +package com.evolinx.terminal.component.font import android.graphics.Typeface -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView import java.io.File class NeoFont { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/pm/NeoPackageParser.java b/terminal/src/main/java/com/evolinx/terminal/component/pm/NeoPackageParser.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/component/pm/NeoPackageParser.java rename to terminal/src/main/java/com/evolinx/terminal/component/pm/NeoPackageParser.java index 35bf086..e544a8b 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/pm/NeoPackageParser.java +++ b/terminal/src/main/java/com/evolinx/terminal/component/pm/NeoPackageParser.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.pm; +package com.evolinx.terminal.component.pm; import java.io.BufferedReader; import java.io.IOException; diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/pm/PackageComponent.java b/terminal/src/main/java/com/evolinx/terminal/component/pm/PackageComponent.java similarity index 95% rename from nhterm/src/main/java/com/offsec/nhterm/component/pm/PackageComponent.java rename to terminal/src/main/java/com/evolinx/terminal/component/pm/PackageComponent.java index 7693eca..8d682b1 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/pm/PackageComponent.java +++ b/terminal/src/main/java/com/evolinx/terminal/component/pm/PackageComponent.java @@ -1,8 +1,8 @@ -package com.offsec.nhterm.component.pm; +package com.evolinx.terminal.component.pm; -import com.offsec.nhterm.component.NeoComponent; +import com.evolinx.terminal.component.NeoComponent; -import com.offsec.nhterm.component.NeoComponent; +import com.evolinx.terminal.component.NeoComponent; import java.io.File; import java.io.FileInputStream; diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/pm/Source.java b/terminal/src/main/java/com/evolinx/terminal/component/pm/Source.java similarity index 54% rename from nhterm/src/main/java/com/offsec/nhterm/component/pm/Source.java rename to terminal/src/main/java/com/evolinx/terminal/component/pm/Source.java index a6b8bd7..75a4fd1 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/pm/Source.java +++ b/terminal/src/main/java/com/evolinx/terminal/component/pm/Source.java @@ -1,9 +1,9 @@ -package com.offsec.nhterm.component.pm; +package com.evolinx.terminal.component.pm; -import com.offsec.nhterm.framework.database.annotation.ID; -import com.offsec.nhterm.framework.database.annotation.Table; -import com.offsec.nhterm.framework.database.annotation.ID; -import com.offsec.nhterm.framework.database.annotation.Table; +import com.evolinx.terminal.framework.database.annotation.ID; +import com.evolinx.terminal.framework.database.annotation.Table; +import com.evolinx.terminal.framework.database.annotation.ID; +import com.evolinx.terminal.framework.database.annotation.Table; /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/pm/data.kt b/terminal/src/main/java/com/evolinx/terminal/component/pm/data.kt similarity index 95% rename from nhterm/src/main/java/com/offsec/nhterm/component/pm/data.kt rename to terminal/src/main/java/com/evolinx/terminal/component/pm/data.kt index 51e10e2..90f91a1 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/pm/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/pm/data.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.pm +package com.evolinx.terminal.component.pm enum class Architecture { ALL, ARM, AARCH64, X86, X86_64; diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/pm/helper.kt b/terminal/src/main/java/com/evolinx/terminal/component/pm/helper.kt similarity index 80% rename from nhterm/src/main/java/com/offsec/nhterm/component/pm/helper.kt rename to terminal/src/main/java/com/evolinx/terminal/component/pm/helper.kt index b8c9aab..f4069c8 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/pm/helper.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/pm/helper.kt @@ -1,13 +1,13 @@ -package com.offsec.nhterm.component.pm +package com.evolinx.terminal.component.pm import android.util.Log -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.framework.NeoTermDatabase -import com.offsec.nhterm.utils.NLog +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.framework.NeoTermDatabase +import com.evolinx.terminal.utils.NLog import com.topjohnwu.superuser.Shell import java.io.File import java.net.URL @@ -22,13 +22,14 @@ object SourceHelper { fun syncSource(sourceManager: SourceManager) { val content = buildString { - this.append("# Generated by NetHunter TerminalPreference\n") + this.append("# Generated by Terminal Preference\n") sourceManager.getEnabledSources() .joinTo(this, "\n") { "deb [trusted=yes] ${it.url} ${it.repo}\n" } } kotlin.runCatching { Files.write(Paths.get(NeoTermPath.SOURCE_FILE), content.toByteArray()) } + updateChrootSource() } fun detectSourceFiles(): List { @@ -79,7 +80,7 @@ object SourceHelper { } } - private fun copySourceFromChroot() { + fun copySourceFromChroot() { val APP_MNT = NeoTermPath.USR_PATH val MNT = "/data/local/nhsystem/kalifs" val sources = "$MNT/etc/apt/sources.list" @@ -99,13 +100,19 @@ object SourceHelper { Shell.cmd("cp -f $lists/* $APP_MNT/var/lib/apt/lists/").exec() // Now play with permissions so things are read/writable - Shell.cmd("chmod -R 775 $APP_MNT/etc/apt").exec() - Shell.cmd("chmod -R 775 $APP_MNT/var/lib/apt/lists").exec() + Shell.cmd("chmod -R 777 $APP_MNT/etc/apt").exec() + Shell.cmd("chmod -R 777 $APP_MNT/var/lib/apt/lists").exec() } fun updateChrootSource() { // TODO: ( APT ) Add option for user to edit and update sources.list in Package Manager option - return + + val APP_MNT = NeoTermPath.USR_PATH + val sources = "$APP_MNT/etc/apt/sources.list" + val lists = "$APP_MNT/var/lib/apt/lists" + + // Write changes + Shell.cmd("cp -f $APP_MNT/etc/apt/sources.list $sources").exec() } } @@ -120,7 +127,7 @@ class SourceManager internal constructor() { database.saveBean( Source( it, - "kali-rolling main", + "main main", true ) ) @@ -136,6 +143,8 @@ class SourceManager internal constructor() { enabled ) ) + SourceHelper.updateChrootSource() + SourceHelper.copySourceFromChroot() } fun removeSource(sourceUrl: String) { @@ -145,6 +154,8 @@ class SourceManager internal constructor() { fun updateAll(sources: List) { database.dropAllTable() database.saveBeans(sources) + SourceHelper.updateChrootSource() + SourceHelper.copySourceFromChroot() } fun getAllSources(): List { @@ -158,7 +169,7 @@ class SourceManager internal constructor() { fun getMainPackageSource(): String { return getEnabledSources() .map { it.repo } - .singleOrNull { it.trim() == "kali-rolling main" } + .singleOrNull { it.trim() == "main main" } ?: NeoTermPath.DEFAULT_MAIN_PACKAGE_SOURCE } diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/profile/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/profile/comp.kt similarity index 86% rename from nhterm/src/main/java/com/offsec/nhterm/component/profile/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/profile/comp.kt index 009d2d0..eeb1e52 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/profile/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/profile/comp.kt @@ -1,9 +1,9 @@ -package com.offsec.nhterm.component.profile +package com.evolinx.terminal.component.profile -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.component.ConfigFileBasedComponent -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.utils.NLog +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.component.ConfigFileBasedComponent +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.utils.NLog import java.io.File class ProfileComponent : ConfigFileBasedComponent(NeoTermPath.PROFILE_PATH) { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/profile/data.kt b/terminal/src/main/java/com/evolinx/terminal/component/profile/data.kt similarity index 73% rename from nhterm/src/main/java/com/offsec/nhterm/component/profile/data.kt rename to terminal/src/main/java/com/evolinx/terminal/component/profile/data.kt index 3a56f4a..14579a3 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/profile/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/profile/data.kt @@ -1,15 +1,15 @@ -package com.offsec.nhterm.component.profile +package com.evolinx.terminal.component.profile -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.ConfigFileBasedObject -import com.offsec.nhterm.component.codegen.CodeGenObject -import com.offsec.nhterm.component.codegen.CodeGenParameter -import com.offsec.nhterm.component.codegen.CodeGenerator -import com.offsec.nhterm.component.codegen.NeoProfileGenerator -import com.offsec.nhterm.component.config.ConfigureComponent -import com.offsec.nhterm.component.config.NeoConfigureFile -import com.offsec.nhterm.utils.NLog +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.ConfigFileBasedObject +import com.evolinx.terminal.component.codegen.CodeGenObject +import com.evolinx.terminal.component.codegen.CodeGenParameter +import com.evolinx.terminal.component.codegen.CodeGenerator +import com.evolinx.terminal.component.codegen.NeoProfileGenerator +import com.evolinx.terminal.component.config.ConfigureComponent +import com.evolinx.terminal.component.config.NeoConfigureFile +import com.evolinx.terminal.utils.NLog import org.jetbrains.annotations.TestOnly import java.io.File diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/session/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/session/comp.kt similarity index 92% rename from nhterm/src/main/java/com/offsec/nhterm/component/session/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/session/comp.kt index fd58b6b..7803f16 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/session/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/session/comp.kt @@ -1,13 +1,13 @@ -package com.offsec.nhterm.component.session +package com.evolinx.terminal.component.session import android.annotation.SuppressLint import android.content.Context import androidx.appcompat.app.AppCompatActivity -import com.offsec.nhterm.Globals +import com.evolinx.terminal.Globals -import com.offsec.nhterm.component.NeoComponent -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.utils.NLog +import com.evolinx.terminal.component.NeoComponent +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.utils.NLog class SessionComponent : NeoComponent { companion object { diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/session/shell.kt b/terminal/src/main/java/com/evolinx/terminal/component/session/shell.kt similarity index 89% rename from nhterm/src/main/java/com/offsec/nhterm/component/session/shell.kt rename to terminal/src/main/java/com/evolinx/terminal/component/session/shell.kt index 4b63b45..c2f984f 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/session/shell.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/session/shell.kt @@ -1,19 +1,19 @@ -package com.offsec.nhterm.component.session +package com.evolinx.terminal.component.session import android.content.Context -import io.neolang.frontend.ConfigVisitor -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.bridge.SessionId -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.colorscheme.ColorSchemeComponent -import com.offsec.nhterm.component.config.DefaultValues -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.component.font.FontComponent -import com.offsec.nhterm.component.profile.NeoProfile -import com.offsec.nhterm.frontend.session.terminal.TermSessionCallback +import com.evolinx.neolang.frontend.ConfigVisitor +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.bridge.SessionId +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.colorscheme.ColorSchemeComponent +import com.evolinx.terminal.component.config.DefaultValues +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.component.font.FontComponent +import com.evolinx.terminal.component.profile.NeoProfile +import com.evolinx.terminal.frontend.session.terminal.TermSessionCallback import java.io.File import java.util.concurrent.Executors import java.util.concurrent.ScheduledExecutorService @@ -92,6 +92,7 @@ class ShellProfile : NeoProfile() { private const val LOGIN_SHELL = "login-shell" private const val INITIAL_COMMAND = "init-command" private const val BELL = "bell" + private const val PRINT_FONT_SIZE = "print-font-size" private const val VIBRATE = "vibrate" private const val EXECVE_WRAPPER = "execve-wrapper" private const val SPECIAL_VOLUME_KEYS = "special-volume-keys" @@ -113,6 +114,7 @@ class ShellProfile : NeoProfile() { var initialCommand = DefaultValues.initialCommand var enableBell = DefaultValues.enableBell + var enablePrintFontSize = DefaultValues.enableprintFontSize var enableExecveWrapper = DefaultValues.enableExecveWrapper var enableSpecialVolumeKeys = DefaultValues.enableSpecialVolumeKeys var enableAutoCompletion = DefaultValues.enableAutoCompletion @@ -133,6 +135,7 @@ class ShellProfile : NeoProfile() { loginShell = NeoPreference.getLoginShellPath() initialCommand = NeoPreference.getInitialCommand() enableBell = NeoPreference.isBellEnabled() + enablePrintFontSize = NeoPreference.isPrintFontSizeEnabled() enableExecveWrapper = NeoPreference.isExecveWrapperEnabled() enableSpecialVolumeKeys = NeoPreference.isSpecialVolumeKeysEnabled() enableAutoCompletion = NeoPreference.isAutoCompletionEnabled() @@ -146,6 +149,7 @@ class ShellProfile : NeoProfile() { loginShell = configVisitor.getProfileString(LOGIN_SHELL, loginShell) initialCommand = configVisitor.getProfileString(INITIAL_COMMAND, initialCommand) enableBell = configVisitor.getProfileBoolean(BELL, enableBell) + enablePrintFontSize = configVisitor.getProfileBoolean(PRINT_FONT_SIZE, enablePrintFontSize) enableExecveWrapper = configVisitor.getProfileBoolean(EXECVE_WRAPPER, enableExecveWrapper) enableSpecialVolumeKeys = configVisitor.getProfileBoolean(SPECIAL_VOLUME_KEYS, enableSpecialVolumeKeys) enableAutoCompletion = configVisitor.getProfileBoolean(AUTO_COMPLETION, enableAutoCompletion) @@ -173,18 +177,8 @@ open class ShellTermSession private constructor( override fun initializeEmulator(columns: Int, rows: Int) { super.initializeEmulator(columns, rows) - //// - // As we do bash script trickery to move over from - // System shell -> Kali chroot - // Then lets delay all initial cmd's for 2 seconds - //// - - val backgroundExecutor: ScheduledExecutorService = Executors.newSingleThreadScheduledExecutor() - backgroundExecutor.schedule( - { - sendInitialCommand(shellProfile.initialCommand) - sendInitialCommand(initialCommand) - }, 2, java.util.concurrent.TimeUnit.SECONDS) + sendInitialCommand(shellProfile.initialCommand) + sendInitialCommand(initialCommand) } override fun getExitDescription(exitCode: Int): String { @@ -355,10 +349,11 @@ open class ShellTermSession private constructor( val pwdEnv = "PWD=$selectedCwd" val tmpdirEnv = "TMPDIR=${NeoTermPath.USR_PATH}/tmp" val langEnv = "LANG=en_US.UTF-8" + val extraPath = "/sbin:/system/sbin:/xbin:/system/xbin" val ps1 = "PS1=\\[\\e[1;32m\\]\\u [ \\[\\e[0m\\]\\w\\[\\e[1;32m\\] ]\$ \\[\\e[0m\\]" return if (systemShell) { - val pathEnv = "PATH=" + System.getenv("PATH") + val pathEnv = "PATH=" + extraPath + ":" + System.getenv("PATH") arrayOf( termEnv, pwdEnv, homeEnv, androidRootEnv, androidDataEnv, externalStorageEnv, pathEnv, prefixEnv, @@ -369,7 +364,7 @@ open class ShellTermSession private constructor( } else { val langEnv = "LANG=en_US.UTF-8" - val pathEnv = "PATH=" + buildPathEnv() + System.getenv("PATH") + val pathEnv = "PATH=" + extraPath + ":" + buildPathEnv() + System.getenv("PATH") arrayOf(termEnv, pwdEnv, pathEnv, colorterm, langEnv diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/session/x.kt b/terminal/src/main/java/com/evolinx/terminal/component/session/x.kt similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/component/session/x.kt rename to terminal/src/main/java/com/evolinx/terminal/component/session/x.kt index 3e49d96..5da14cd 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/session/x.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/session/x.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.component.session +package com.evolinx.terminal.component.session import android.app.UiModeManager import android.content.Context @@ -15,9 +15,9 @@ import android.view.inputmethod.InputMethodManager import android.widget.EditText import android.widget.FrameLayout import androidx.appcompat.app.AppCompatActivity -import com.offsec.nhterm.* -import com.offsec.nhterm.xorg.NeoXorgViewClient -import com.offsec.nhterm.xorg.R +import com.evolinx.terminal.* +import com.evolinx.terminal.xorg.NeoXorgViewClient +import com.evolinx.terminal.xorg.R import java.util.* class XParameter diff --git a/nhterm/src/main/java/com/offsec/nhterm/component/userscript/comp.kt b/terminal/src/main/java/com/evolinx/terminal/component/userscript/comp.kt similarity index 73% rename from nhterm/src/main/java/com/offsec/nhterm/component/userscript/comp.kt rename to terminal/src/main/java/com/evolinx/terminal/component/userscript/comp.kt index 874c4e1..42520b3 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/component/userscript/comp.kt +++ b/terminal/src/main/java/com/evolinx/terminal/component/userscript/comp.kt @@ -1,13 +1,13 @@ -package com.offsec.nhterm.component.userscript +package com.evolinx.terminal.component.userscript import android.content.Context import android.system.Os import android.util.Log -import com.offsec.nhterm.App -import com.offsec.nhterm.component.NeoComponent -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.utils.NLog -import com.offsec.nhterm.utils.extractAssetsDir +import com.evolinx.terminal.App +import com.evolinx.terminal.component.NeoComponent +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.utils.NLog +import com.evolinx.terminal.utils.extractAssetsDir import com.topjohnwu.superuser.Shell import java.io.File @@ -17,7 +17,7 @@ class UserScriptComponent : NeoComponent { var userScripts = listOf() var binFiles = listOf() val scriptDir = File(NeoTermPath.USER_SCRIPT_PATH) - val binDir = File(NeoTermPath.BIN_PATH) + val binDir = File(NeoTermPath.TERM_BIN) override fun onServiceInit() = checkForFiles() @@ -27,18 +27,14 @@ class UserScriptComponent : NeoComponent { override fun onServiceObtained() = checkForFiles() fun extractDefaultScript(context: Context) = kotlin.runCatching { - Shell.cmd("mkdir -p /data/data/com.offsec.nhterm/files/usr/").exec() - Shell.cmd("rm -rf /data/data/com.offsec.nhterm/files/usr/bin/*") - // Usual user script extraction context.extractAssetsDir("scripts", NeoTermPath.USER_SCRIPT_PATH) - scriptDir.listFiles()?.forEach { Os.chmod(it.absolutePath, 448 /*Dec of 0700*/) } // Lets also extract the usual binaries too here - context.extractAssetsDir("bin", NeoTermPath.BIN_PATH) + context.extractAssetsDir("bin", NeoTermPath.TERM_BIN) binDir.listFiles()?.forEach { Os.chmod(it.absolutePath, 448 /*Dec of 0700*/) } diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/NeoTermDatabase.java b/terminal/src/main/java/com/evolinx/terminal/framework/NeoTermDatabase.java similarity index 96% rename from nhterm/src/main/java/com/offsec/nhterm/framework/NeoTermDatabase.java rename to terminal/src/main/java/com/evolinx/terminal/framework/NeoTermDatabase.java index 7ac32f0..cacdffd 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/NeoTermDatabase.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/NeoTermDatabase.java @@ -1,23 +1,22 @@ -package com.offsec.nhterm.framework; +package com.evolinx.terminal.framework; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -import com.offsec.nhterm.App; -import com.offsec.nhterm.framework.database.*; +import com.evolinx.terminal.App; -import com.offsec.nhterm.framework.database.DatabaseDataType; -import com.offsec.nhterm.framework.database.NeoTermSQLiteConfig; -import com.offsec.nhterm.framework.database.OnDatabaseUpgradedListener; -import com.offsec.nhterm.framework.database.SQLStatementHelper; -import com.offsec.nhterm.framework.database.SQLTypeParser; -import com.offsec.nhterm.framework.database.TableHelper; -import com.offsec.nhterm.framework.database.ValueHelper; -import com.offsec.nhterm.framework.database.bean.TableInfo; -import com.offsec.nhterm.framework.reflection.Reflect; -import com.offsec.nhterm.utils.NLog; +import com.evolinx.terminal.framework.database.DatabaseDataType; +import com.evolinx.terminal.framework.database.NeoTermSQLiteConfig; +import com.evolinx.terminal.framework.database.OnDatabaseUpgradedListener; +import com.evolinx.terminal.framework.database.SQLStatementHelper; +import com.evolinx.terminal.framework.database.SQLTypeParser; +import com.evolinx.terminal.framework.database.TableHelper; +import com.evolinx.terminal.framework.database.ValueHelper; +import com.evolinx.terminal.framework.database.bean.TableInfo; +import com.evolinx.terminal.framework.reflection.Reflect; +import com.evolinx.terminal.utils.NLog; import java.io.File; import java.io.IOException; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/DatabaseDataType.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/DatabaseDataType.java similarity index 89% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/DatabaseDataType.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/DatabaseDataType.java index 38bc536..cdeb4e9 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/DatabaseDataType.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/DatabaseDataType.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database; +package com.evolinx.terminal.framework.database; /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/NeoTermSQLiteConfig.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/NeoTermSQLiteConfig.java similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/NeoTermSQLiteConfig.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/NeoTermSQLiteConfig.java index 84ae9cc..1b2b5a3 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/NeoTermSQLiteConfig.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/NeoTermSQLiteConfig.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database; +package com.evolinx.terminal.framework.database; import java.io.Serializable; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/OnDatabaseUpgradedListener.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/OnDatabaseUpgradedListener.java similarity index 86% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/OnDatabaseUpgradedListener.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/OnDatabaseUpgradedListener.java index 10e4d56..98bd5fb 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/OnDatabaseUpgradedListener.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/OnDatabaseUpgradedListener.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database; +package com.evolinx.terminal.framework.database; import android.database.sqlite.SQLiteDatabase; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/SQLStatementHelper.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/SQLStatementHelper.java similarity index 95% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/SQLStatementHelper.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/SQLStatementHelper.java index 2147528..4544f92 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/SQLStatementHelper.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/SQLStatementHelper.java @@ -1,8 +1,8 @@ -package com.offsec.nhterm.framework.database; +package com.evolinx.terminal.framework.database; -import com.offsec.nhterm.framework.database.bean.TableInfo; -import com.offsec.nhterm.framework.database.annotation.ID; -import com.offsec.nhterm.framework.database.bean.TableInfo; +import com.evolinx.terminal.framework.database.bean.TableInfo; +import com.evolinx.terminal.framework.database.annotation.ID; +import com.evolinx.terminal.framework.database.bean.TableInfo; import java.lang.reflect.Field; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/SQLTypeParser.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/SQLTypeParser.java similarity index 93% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/SQLTypeParser.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/SQLTypeParser.java index b514eaa..c1ecea8 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/SQLTypeParser.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/SQLTypeParser.java @@ -1,7 +1,7 @@ -package com.offsec.nhterm.framework.database; +package com.evolinx.terminal.framework.database; -import com.offsec.nhterm.framework.database.annotation.Ignore; -import com.offsec.nhterm.framework.database.annotation.NotNull; +import com.evolinx.terminal.framework.database.annotation.Ignore; +import com.evolinx.terminal.framework.database.annotation.NotNull; import java.lang.reflect.Field; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/TableHelper.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/TableHelper.java similarity index 90% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/TableHelper.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/TableHelper.java index 945b850..f683178 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/TableHelper.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/TableHelper.java @@ -1,10 +1,10 @@ -package com.offsec.nhterm.framework.database; +package com.evolinx.terminal.framework.database; -import com.offsec.nhterm.framework.NeoTermDatabase; -import com.offsec.nhterm.framework.NeoTermDatabase; -import com.offsec.nhterm.framework.database.annotation.ID; -import com.offsec.nhterm.framework.database.annotation.Table; -import com.offsec.nhterm.framework.database.bean.TableInfo; +import com.evolinx.terminal.framework.NeoTermDatabase; +import com.evolinx.terminal.framework.NeoTermDatabase; +import com.evolinx.terminal.framework.database.annotation.ID; +import com.evolinx.terminal.framework.database.annotation.Table; +import com.evolinx.terminal.framework.database.bean.TableInfo; import java.lang.reflect.Field; import java.lang.reflect.Method; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/ValueHelper.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/ValueHelper.java similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/ValueHelper.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/ValueHelper.java index 028005d..3d44314 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/ValueHelper.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/ValueHelper.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database; +package com.evolinx.terminal.framework.database; import android.database.Cursor; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/ID.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/ID.java similarity index 87% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/ID.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/ID.java index 777ff1f..f6fbab5 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/ID.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/ID.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database.annotation; +package com.evolinx.terminal.framework.database.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/Ignore.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/Ignore.java similarity index 82% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/Ignore.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/Ignore.java index 2118013..8d9b9d5 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/Ignore.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/Ignore.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database.annotation; +package com.evolinx.terminal.framework.database.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/NotNull.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/NotNull.java similarity index 82% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/NotNull.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/NotNull.java index d6bc1bb..a76c09f 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/NotNull.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/NotNull.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database.annotation; +package com.evolinx.terminal.framework.database.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/Table.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/Table.java similarity index 88% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/Table.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/Table.java index 2c49733..be26ed0 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/annotation/Table.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/annotation/Table.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.database.annotation; +package com.evolinx.terminal.framework.database.annotation; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/database/bean/TableInfo.java b/terminal/src/main/java/com/evolinx/terminal/framework/database/bean/TableInfo.java similarity index 83% rename from nhterm/src/main/java/com/offsec/nhterm/framework/database/bean/TableInfo.java rename to terminal/src/main/java/com/evolinx/terminal/framework/database/bean/TableInfo.java index 83bbce1..954725a 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/database/bean/TableInfo.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/database/bean/TableInfo.java @@ -1,7 +1,7 @@ -package com.offsec.nhterm.framework.database.bean; +package com.evolinx.terminal.framework.database.bean; -import com.offsec.nhterm.framework.database.DatabaseDataType; +import com.evolinx.terminal.framework.database.DatabaseDataType; import java.lang.reflect.Field; import java.lang.reflect.Method; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/reflection/NullPointer.java b/terminal/src/main/java/com/evolinx/terminal/framework/reflection/NullPointer.java similarity index 64% rename from nhterm/src/main/java/com/offsec/nhterm/framework/reflection/NullPointer.java rename to terminal/src/main/java/com/evolinx/terminal/framework/reflection/NullPointer.java index 7d53dcc..0f2ee01 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/reflection/NullPointer.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/reflection/NullPointer.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.reflection; +package com.evolinx.terminal.framework.reflection; /** * class representing null pointer. diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/reflection/Reflect.java b/terminal/src/main/java/com/evolinx/terminal/framework/reflection/Reflect.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/framework/reflection/Reflect.java rename to terminal/src/main/java/com/evolinx/terminal/framework/reflection/Reflect.java index 2cc4db0..b5a0b57 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/reflection/Reflect.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/reflection/Reflect.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.reflection; +package com.evolinx.terminal.framework.reflection; import java.lang.reflect.*; import java.util.Arrays; diff --git a/nhterm/src/main/java/com/offsec/nhterm/framework/reflection/ReflectionException.java b/terminal/src/main/java/com/evolinx/terminal/framework/reflection/ReflectionException.java similarity index 74% rename from nhterm/src/main/java/com/offsec/nhterm/framework/reflection/ReflectionException.java rename to terminal/src/main/java/com/evolinx/terminal/framework/reflection/ReflectionException.java index 4ba0922..dc48f5a 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/framework/reflection/ReflectionException.java +++ b/terminal/src/main/java/com/evolinx/terminal/framework/reflection/ReflectionException.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.framework.reflection; +package com.evolinx.terminal.framework.reflection; /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/completion/CandidatePopupWindow.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/completion/CandidatePopupWindow.kt similarity index 90% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/completion/CandidatePopupWindow.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/completion/CandidatePopupWindow.kt index 275f67a..0ce02d1 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/completion/CandidatePopupWindow.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/completion/CandidatePopupWindow.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.completion +package com.evolinx.terminal.frontend.completion import android.content.Context import android.view.Gravity @@ -9,13 +9,13 @@ import android.widget.BaseAdapter import android.widget.ListView import android.widget.PopupWindow import android.widget.TextView -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalColors -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.colorscheme.ColorSchemeComponent -import com.offsec.nhterm.component.completion.CompletionCandidate -import com.offsec.nhterm.component.completion.OnCandidateSelectedListener -import com.offsec.nhterm.frontend.session.view.TerminalView +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalColors +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.colorscheme.ColorSchemeComponent +import com.evolinx.terminal.component.completion.CompletionCandidate +import com.evolinx.terminal.component.completion.OnCandidateSelectedListener +import com.evolinx.terminal.frontend.session.view.TerminalView /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/completion/MaxHeightView.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/completion/MaxHeightView.kt similarity index 96% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/completion/MaxHeightView.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/completion/MaxHeightView.kt index c43e3ca..14f732a 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/completion/MaxHeightView.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/completion/MaxHeightView.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.completion +package com.evolinx.terminal.frontend.completion import android.content.Context import android.util.AttributeSet diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/floating/dialog.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/floating/dialog.kt similarity index 80% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/floating/dialog.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/floating/dialog.kt index 99e21a9..2388b59 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/floating/dialog.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/floating/dialog.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.floating +package com.evolinx.terminal.frontend.floating import android.annotation.SuppressLint import android.content.Context @@ -7,22 +7,23 @@ import android.view.LayoutInflater import android.view.View import androidx.appcompat.app.AlertDialog import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.config.DefaultValues.initialCommand -import com.offsec.nhterm.component.session.ShellParameter -import com.offsec.nhterm.component.session.ShellTermSession -import com.offsec.nhterm.frontend.session.terminal.BasicSessionCallback -import com.offsec.nhterm.frontend.session.terminal.BasicViewClient -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.TerminalViewClient -import com.offsec.nhterm.utils.Terminals +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.config.DefaultValues.initialCommand +import com.evolinx.terminal.component.session.ShellParameter +import com.evolinx.terminal.component.session.ShellTermSession +import com.evolinx.terminal.frontend.session.terminal.BasicSessionCallback +import com.evolinx.terminal.frontend.session.terminal.BasicViewClient +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.TerminalViewClient +import com.evolinx.terminal.utils.Terminals typealias DialogSessionFinished = (TerminalDialog, TerminalSession?) -> Unit class TerminalDialog(val context: Context) { private val termWindowView = WindowTermView(context) private val terminalSessionCallback: BasicSessionCallback + // Do not change it to MaterialAlertDialogBuilder, as Material dialog only extends on AndroidX AlertDialog private var dialog: AlertDialog? = null private var terminalSession: TerminalSession? = null private var sessionFinishedCallback: DialogSessionFinished? = null @@ -51,7 +52,7 @@ class TerminalDialog(val context: Context) { } .create() - val cmd = listOf(arguments + " " + extraarg + " && exit 0") + val cmd = listOf("$arguments $extraarg && exit 0") val parameter = ShellParameter() .executablePath(executablePath) @@ -85,7 +86,7 @@ class TerminalDialog(val context: Context) { fun show(title: String?) { dialog?.setTitle(title) - dialog?.setCanceledOnTouchOutside(false) + dialog?.setCancelable(false) dialog?.show() } diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/data.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/data.kt similarity index 79% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/data.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/data.kt index 97f8bad..27fb464 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/data.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/data.kt @@ -1,11 +1,11 @@ -package com.offsec.nhterm.frontend.session.terminal +package com.evolinx.terminal.frontend.session.terminal -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.completion.OnAutoCompleteListener -import com.offsec.nhterm.component.session.ShellProfile -import com.offsec.nhterm.component.session.ShellTermSession -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.completion.OnAutoCompleteListener +import com.evolinx.terminal.component.session.ShellProfile +import com.evolinx.terminal.component.session.ShellTermSession +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView class TermSessionData { var termSession: TerminalSession? = null diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/events.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/events.kt similarity index 72% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/events.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/events.kt index 00dd85f..a9340c8 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/events.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/events.kt @@ -1,6 +1,6 @@ -package com.offsec.nhterm.frontend.session.terminal +package com.evolinx.terminal.frontend.session.terminal -import com.offsec.nhterm.ui.term.TermTab +import com.evolinx.terminal.ui.term.TermTab class CreateNewSessionEvent class SwitchIndexedSessionEvent(val index: Int) diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/term-basic.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/term-basic.kt similarity index 86% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/term-basic.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/term-basic.kt index 431a984..004be9a 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/term-basic.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/term-basic.kt @@ -1,13 +1,13 @@ -package com.offsec.nhterm.frontend.session.terminal +package com.evolinx.terminal.frontend.session.terminal import android.content.Context import android.view.KeyEvent import android.view.MotionEvent import android.view.inputmethod.InputMethodManager -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.TerminalViewClient +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.TerminalViewClient open class BasicSessionCallback(var terminalView: TerminalView) : TerminalSession.SessionChangedCallback { override fun onTextChanged(changedSession: TerminalSession?) { @@ -36,7 +36,7 @@ open class BasicSessionCallback(var terminalView: TerminalView) : TerminalSessio } class BasicViewClient(val terminalView: TerminalView) : - com.offsec.nhterm.frontend.session.view.TerminalViewClient { + TerminalViewClient { override fun onScale(scale: Float): Float { if (scale < 0.9f || scale > 1.1f) { val increase = scale > 1f diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/term-standard.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/term-standard.kt similarity index 93% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/term-standard.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/term-standard.kt index b27900b..220214b 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/terminal/term-standard.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/terminal/term-standard.kt @@ -1,26 +1,27 @@ -package com.offsec.nhterm.frontend.session.terminal +package com.evolinx.terminal.frontend.session.terminal import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.media.AudioManager import android.media.SoundPool +import android.util.Log import android.view.InputDevice import android.view.KeyEvent import android.view.MotionEvent import android.view.View import android.view.inputmethod.InputMethodManager -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.KeyHandler -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.completion.* -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.extrakey.ExtraKeyComponent -import com.offsec.nhterm.component.session.ShellTermSession -import com.offsec.nhterm.frontend.completion.CandidatePopupWindow -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.TerminalViewClient +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.KeyHandler +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.completion.* +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.extrakey.ExtraKeyComponent +import com.evolinx.terminal.component.session.ShellTermSession +import com.evolinx.terminal.frontend.completion.CandidatePopupWindow +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.TerminalViewClient import java.util.* /** @@ -107,7 +108,7 @@ class TermViewClient(val context: Context) : } // Use Alt + num to switch sessions - val sessionIndex = unicodeChar.toInt() - '0'.toInt() + val sessionIndex = unicodeChar.code - '0'.code termUI?.requireSwitchTo(sessionIndex) // 当要触发 NeoTerm 快捷键时,屏蔽所有终端处理key @@ -160,14 +161,14 @@ class TermViewClient(val context: Context) : // Some special keys: 't' -> resultingKeyCode = KeyEvent.KEYCODE_TAB 'i' -> resultingKeyCode = KeyEvent.KEYCODE_INSERT - 'h' -> resultingCodePoint = '~'.toInt() + 'h' -> resultingCodePoint = '~'.code // Special characters to input. - 'u' -> resultingCodePoint = '_'.toInt() - 'l' -> resultingCodePoint = '|'.toInt() + 'u' -> resultingCodePoint = '_'.code + 'l' -> resultingCodePoint = '|'.code // Function keys. - '1', '2', '3', '4', '5', '6', '7', '8', '9' -> resultingKeyCode = codePoint - '1'.toInt() + KeyEvent.KEYCODE_F1 + '1', '2', '3', '4', '5', '6', '7', '8', '9' -> resultingKeyCode = codePoint - '1'.code + KeyEvent.KEYCODE_F1 '0' -> resultingKeyCode = KeyEvent.KEYCODE_F10 // Other special keys. diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/GestureAndScaleRecognizer.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/GestureAndScaleRecognizer.kt similarity index 94% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/GestureAndScaleRecognizer.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/view/GestureAndScaleRecognizer.kt index 2c2b2d2..5dd3a28 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/GestureAndScaleRecognizer.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/GestureAndScaleRecognizer.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.session.view +package com.evolinx.terminal.frontend.session.view import android.content.Context import android.view.GestureDetector @@ -38,11 +38,11 @@ internal class GestureAndScaleRecognizer(context: Context, val mListener: Listen init { mGestureDetector = GestureDetector(context, object : GestureDetector.SimpleOnGestureListener() { - override fun onScroll(e1: MotionEvent, e2: MotionEvent, dx: Float, dy: Float): Boolean { + override fun onScroll(e1: MotionEvent?, e2: MotionEvent, dx: Float, dy: Float): Boolean { return mListener.onScroll(e2, dx, dy) } - override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean { + override fun onFling(e1: MotionEvent?, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean { return mListener.onFling(e2, velocityX, velocityY) } diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalRenderer.java b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalRenderer.java similarity index 96% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalRenderer.java rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalRenderer.java index e5be655..ba6b3b3 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalRenderer.java +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalRenderer.java @@ -1,17 +1,17 @@ -package com.offsec.nhterm.frontend.session.view; +package com.evolinx.terminal.frontend.session.view; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; import android.graphics.Typeface; -import com.offsec.nhterm.backend.TerminalBuffer; -import com.offsec.nhterm.backend.TerminalEmulator; -import com.offsec.nhterm.backend.TerminalRow; -import com.offsec.nhterm.backend.TextStyle; -import com.offsec.nhterm.backend.WcWidth; +import com.evolinx.terminal.backend.TerminalBuffer; +import com.evolinx.terminal.backend.TerminalEmulator; +import com.evolinx.terminal.backend.TerminalRow; +import com.evolinx.terminal.backend.TextStyle; +import com.evolinx.terminal.backend.WcWidth; -import com.offsec.nhterm.backend.*; +import com.evolinx.terminal.backend.*; /** * Renderer of a {@link TerminalEmulator} into a {@link Canvas}. diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalView.java b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalView.java similarity index 97% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalView.java rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalView.java index d05b02e..8dd4a0e 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalView.java +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalView.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.session.view; +package com.evolinx.terminal.frontend.session.view; import android.annotation.SuppressLint; import android.annotation.TargetApi; @@ -10,8 +10,6 @@ import android.graphics.Rect; import android.graphics.Typeface; import android.graphics.drawable.BitmapDrawable; import android.os.Build; -import android.os.VibrationEffect; -import android.os.Vibrator; import android.text.Editable; import android.text.InputType; import android.text.TextUtils; @@ -25,16 +23,17 @@ import android.view.inputmethod.InputConnection; import android.widget.Scroller; import android.widget.Toast; -import com.offsec.nhterm.backend.EmulatorDebug; -import com.offsec.nhterm.backend.KeyHandler; -import com.offsec.nhterm.backend.TerminalBuffer; -import com.offsec.nhterm.backend.TerminalEmulator; -import com.offsec.nhterm.backend.TerminalSession; -import com.offsec.nhterm.component.completion.OnAutoCompleteListener; +import com.evolinx.terminal.backend.EmulatorDebug; +import com.evolinx.terminal.backend.KeyHandler; +import com.evolinx.terminal.backend.TerminalBuffer; +import com.evolinx.terminal.backend.TerminalEmulator; +import com.evolinx.terminal.backend.TerminalSession; +import com.evolinx.terminal.component.completion.OnAutoCompleteListener; -import com.offsec.nhterm.R; -import com.offsec.nhterm.backend.*; -import com.offsec.nhterm.component.completion.OnAutoCompleteListener; +import com.evolinx.terminal.R; +import com.evolinx.terminal.component.config.NeoPreference; +import com.evolinx.terminal.component.session.ShellProfile; +import com.evolinx.terminal.component.session.ShellTermSession; /** * View displaying and interacting with a {@link TerminalSession}. @@ -542,9 +541,12 @@ public final class TerminalView extends View { if (toast != null) toast.cancel(); - toast = Toast.makeText(getContext(), "" + getTextSize() + "", Toast.LENGTH_SHORT); - toast.setDuration(Toast.LENGTH_SHORT); - toast.show(); + + if (NeoPreference.INSTANCE.isPrintFontSizeEnabled() == true) { + toast = Toast.makeText(getContext(), "" + getTextSize() + "", Toast.LENGTH_SHORT); + toast.setDuration(Toast.LENGTH_SHORT); + toast.show(); + } } public void setTypeface(Typeface newTypeface) { diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalViewClient.java b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalViewClient.java similarity index 86% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalViewClient.java rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalViewClient.java index 04e0267..b169994 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/TerminalViewClient.java +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/TerminalViewClient.java @@ -1,11 +1,11 @@ -package com.offsec.nhterm.frontend.session.view; +package com.evolinx.terminal.frontend.session.view; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.ScaleGestureDetector; -import com.offsec.nhterm.backend.TerminalSession; -import com.offsec.nhterm.backend.TerminalSession; +import com.evolinx.terminal.backend.TerminalSession; +import com.evolinx.terminal.backend.TerminalSession; /** * Input and scale listener which may be set on a {@link TerminalView} through diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/CombinedSequence.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/CombinedSequence.kt similarity index 90% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/CombinedSequence.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/CombinedSequence.kt index 240e567..d9589ae 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/CombinedSequence.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/CombinedSequence.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.session.view.extrakey +package com.evolinx.terminal.frontend.session.view.extrakey /** * diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/ExtraKeysView.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/ExtraKeysView.kt similarity index 94% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/ExtraKeysView.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/ExtraKeysView.kt index 469528f..984166d 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/ExtraKeysView.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/ExtraKeysView.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.session.view.extrakey +package com.evolinx.terminal.frontend.session.view.extrakey import android.content.Context import android.graphics.Typeface @@ -9,12 +9,12 @@ import android.util.AttributeSet import android.view.* import android.widget.GridLayout import android.widget.LinearLayout -import com.offsec.nhterm.R -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.component.extrakey.ExtraKeyComponent -import com.offsec.nhterm.frontend.session.terminal.ToggleImeEvent +import com.evolinx.terminal.R +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.component.extrakey.ExtraKeyComponent +import com.evolinx.terminal.frontend.session.terminal.ToggleImeEvent import org.greenrobot.eventbus.EventBus import java.io.File diff --git a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/buttons.kt b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/buttons.kt similarity index 97% rename from nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/buttons.kt rename to terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/buttons.kt index edf8f17..473a712 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/frontend/session/view/extrakey/buttons.kt +++ b/terminal/src/main/java/com/evolinx/terminal/frontend/session/view/extrakey/buttons.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.frontend.session.view.extrakey +package com.evolinx.terminal.frontend.session.view.extrakey import android.content.Context import android.os.Handler @@ -10,8 +10,8 @@ import android.view.View import android.widget.Button import android.widget.ToggleButton import androidx.appcompat.widget.AppCompatButton -import com.offsec.nhterm.R -import com.offsec.nhterm.frontend.session.view.TerminalView +import com.evolinx.terminal.R +import com.evolinx.terminal.frontend.session.view.TerminalView /** * @author kiva @@ -105,7 +105,6 @@ abstract class IExtraButton : View.OnClickListener { "―" -> chars = "-" // Function keys - KEY_FN -> keyCode = KeyEvent.KEYCODE_FUNCTION KEY_F1 -> keyCode = KeyEvent.KEYCODE_F1 KEY_F2 -> keyCode = KeyEvent.KEYCODE_F2 KEY_F3 -> keyCode = KeyEvent.KEYCODE_F3 diff --git a/nhterm/src/main/java/com/offsec/nhterm/services/NeoTermService.kt b/terminal/src/main/java/com/evolinx/terminal/services/NeoTermService.kt similarity index 74% rename from nhterm/src/main/java/com/offsec/nhterm/services/NeoTermService.kt rename to terminal/src/main/java/com/evolinx/terminal/services/NeoTermService.kt index 96709b7..557e046 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/services/NeoTermService.kt +++ b/terminal/src/main/java/com/evolinx/terminal/services/NeoTermService.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.services +package com.evolinx.terminal.services import android.annotation.SuppressLint import android.app.* @@ -10,19 +10,20 @@ import android.net.wifi.WifiManager import android.os.* import androidx.appcompat.app.AppCompatActivity import androidx.core.app.NotificationCompat -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.EmulatorDebug -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.component.session.ShellParameter -import com.offsec.nhterm.component.session.XParameter -import com.offsec.nhterm.component.session.XSession -import com.offsec.nhterm.setup.SetupHelper -import com.offsec.nhterm.ui.other.AboutActivity -import com.offsec.nhterm.ui.term.NeoTermActivity -import com.offsec.nhterm.utils.NLog -import com.offsec.nhterm.utils.Terminals -import com.offsec.nhterm.utils.extractAssetsDir +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.EmulatorDebug +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.component.session.ShellParameter +import com.evolinx.terminal.component.session.XParameter +import com.evolinx.terminal.component.session.XSession +import com.evolinx.terminal.setup.SetupHelper +import com.evolinx.terminal.ui.other.AboutActivity +import com.evolinx.terminal.ui.term.NeoTermActivity +import com.evolinx.terminal.utils.NLog +import com.evolinx.terminal.utils.Terminals +import com.evolinx.terminal.utils.extractAssetsDir +import com.topjohnwu.superuser.Shell import java.io.BufferedReader import java.io.File import java.io.InputStreamReader @@ -49,12 +50,6 @@ class NeoTermService : Service() { override fun onCreate() { super.onCreate() - // Check whather we need to populate initial boot scripts or not - // By simply checking */usr folder of ours - if (!checkPrefix()) { - resetApp() - } - createNotificationChannel() startForeground(NOTIFICATION_ID, createNotification()) } @@ -63,39 +58,6 @@ class NeoTermService : Service() { return serviceBinder } - fun resetApp() { - // Manual way of resetting required assets - Runtime.getRuntime().exec("mkdir -p "+" "+"/data/data/com.offsec.nhterm/files/usr/").waitFor() - Executer("/system/bin/rm -rf /data/data/com.offsec.nhterm/files/usr/bin") - Thread.sleep(1200) - extractAssetsDir("bin", "/data/data/com.offsec.nhterm/files/usr/bin/") - Thread.sleep(800) - Executer("/system/bin/chmod +x /data/data/com.offsec.nhterm/files/usr/bin/bash") // Static bash for arm ( works for *64 too ) - Executer("/system/bin/chmod +x /data/data/com.offsec.nhterm/files/usr/bin/kali") // Kali chroot scriptlet - Executer("/system/bin/chmod +x /data/data/com.offsec.nhterm/files/usr/bin/android-su") // Android su scriptlet - } - - fun Executer(command: String?): String? { - val output = StringBuilder() - val p: Process - try { - p = Runtime.getRuntime().exec(command) - p.waitFor() - val reader = BufferedReader(InputStreamReader(p.inputStream)) - var line: String? - while (reader.readLine().also { line = it } != null) { - output.append(line).append('\n') - } - } catch (e: Exception) { - e.printStackTrace() - } - return output.toString() - } - fun checkPrefix(): Boolean { - val PREFIX_FILE = File(NeoTermPath.USR_PATH) - return !PREFIX_FILE.isDirectory - } - override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { val action = intent.action when (action) { @@ -110,7 +72,7 @@ class NeoTermService : Service() { ACTION_RELEASE_LOCK -> releaseLock() } - return Service.START_NOT_STICKY + return START_NOT_STICKY } override fun onDestroy() { @@ -230,8 +192,8 @@ class NeoTermService : Service() { private fun createNotificationChannel() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return - val channel = NotificationChannel(DEFAULT_CHANNEL_ID, "NetHunter", NotificationManager.IMPORTANCE_LOW) - channel.description = "NetHunter notifications" + val channel = NotificationChannel(DEFAULT_CHANNEL_ID, "Evolinx", NotificationManager.IMPORTANCE_LOW) + channel.description = "Evolinx notifications" val manager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager manager.createNotificationChannel(channel) } diff --git a/nhterm/src/main/java/com/offsec/nhterm/setup/SetupThread.java b/terminal/src/main/java/com/evolinx/terminal/setup/SetupThread.java similarity index 91% rename from nhterm/src/main/java/com/offsec/nhterm/setup/SetupThread.java rename to terminal/src/main/java/com/evolinx/terminal/setup/SetupThread.java index c52d794..8bad163 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/setup/SetupThread.java +++ b/terminal/src/main/java/com/evolinx/terminal/setup/SetupThread.java @@ -1,14 +1,18 @@ -package com.offsec.nhterm.setup; +package com.evolinx.terminal.setup; + +import static androidx.core.app.ActivityCompat.startActivityForResult; import android.app.ProgressDialog; +import android.content.Intent; import android.system.Os; import android.util.Pair; import androidx.appcompat.app.AppCompatActivity; -import com.offsec.nhterm.utils.NLog; -import com.offsec.nhterm.backend.EmulatorDebug; -import com.offsec.nhterm.component.config.NeoTermPath; -import com.offsec.nhterm.utils.NLog; +import com.evolinx.terminal.ui.term.NeoTermActivity; +import com.evolinx.terminal.utils.NLog; +import com.evolinx.terminal.backend.EmulatorDebug; +import com.evolinx.terminal.component.config.NeoTermPath; +import com.evolinx.terminal.utils.NLog; import java.io.*; import java.util.ArrayList; @@ -40,7 +44,7 @@ final class SetupThread extends Thread { @Override public void run() { try { - final String stagingPrefixPath = NeoTermPath.ROOT_PATH + "/usr-staging"; + final String stagingPrefixPath = NeoTermPath.ROOT_PATH + "/staging"; final File stagingPrefixFile = new File(stagingPrefixPath); if (stagingPrefixFile.exists()) { @@ -58,7 +62,7 @@ final class SetupThread extends Thread { int totalBytes = sourceConnection.getSize(); while ((zipEntry = zipInput.getNextEntry()) != null) { - totalReadBytes += zipEntry.getCompressedSize(); + totalReadBytes += (int) zipEntry.getCompressedSize(); final int totalReadBytesFinal = totalReadBytes; final int totalBytesFinal = totalBytes; @@ -135,6 +139,7 @@ final class SetupThread extends Thread { activity.runOnUiThread(() -> { try { progressDialog.dismiss(); + activity.finish(); } catch (RuntimeException e) { // Activity already dismissed - ignore. } diff --git a/nhterm/src/main/java/com/offsec/nhterm/setup/SourceConnection.java b/terminal/src/main/java/com/evolinx/terminal/setup/SourceConnection.java similarity index 85% rename from nhterm/src/main/java/com/offsec/nhterm/setup/SourceConnection.java rename to terminal/src/main/java/com/evolinx/terminal/setup/SourceConnection.java index ef48ef7..eb19c25 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/setup/SourceConnection.java +++ b/terminal/src/main/java/com/evolinx/terminal/setup/SourceConnection.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.setup; +package com.evolinx.terminal.setup; import java.io.IOException; import java.io.InputStream; diff --git a/nhterm/src/main/java/com/offsec/nhterm/setup/connections.kt b/terminal/src/main/java/com/evolinx/terminal/setup/connections.kt similarity index 94% rename from nhterm/src/main/java/com/offsec/nhterm/setup/connections.kt rename to terminal/src/main/java/com/evolinx/terminal/setup/connections.kt index 69c9ea1..646f471 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/setup/connections.kt +++ b/terminal/src/main/java/com/evolinx/terminal/setup/connections.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.setup +package com.evolinx.terminal.setup import android.content.Context import android.net.Uri @@ -54,7 +54,7 @@ class NetworkConnection(private val sourceUrl: String) : private fun openHttpConnection(): HttpURLConnection { val arch = SetupHelper.determineArchName() - return URL("$sourceUrl/boot/$arch.zip").openConnection() as HttpURLConnection + return URL("$sourceUrl/port/$arch/android/bootstrap-$arch.zip").openConnection() as HttpURLConnection } } diff --git a/nhterm/src/main/java/com/offsec/nhterm/setup/setup.kt b/terminal/src/main/java/com/evolinx/terminal/setup/setup.kt similarity index 84% rename from nhterm/src/main/java/com/offsec/nhterm/setup/setup.kt rename to terminal/src/main/java/com/evolinx/terminal/setup/setup.kt index bfca056..569c57d 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/setup/setup.kt +++ b/terminal/src/main/java/com/evolinx/terminal/setup/setup.kt @@ -1,14 +1,13 @@ -package com.offsec.nhterm.setup +package com.evolinx.terminal.setup import android.app.ProgressDialog import android.content.Context import android.os.Build -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.component.config.NeoTermPath +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.component.config.NeoTermPath import java.io.File import java.util.* @@ -24,7 +23,7 @@ interface ResultListener { */ object SetupHelper { fun needSetup(): Boolean { - val PREFIX_FILE = File(NeoTermPath.USR_PATH) + val PREFIX_FILE = File(NeoTermPath.USR_PATH + "/bin") return !PREFIX_FILE.isDirectory } @@ -65,17 +64,16 @@ object SetupHelper { return dialog } - fun makeErrorDialog(context: Context, messageId: Int): AlertDialog { + fun makeErrorDialog(context: Context, messageId: Int): MaterialAlertDialogBuilder { return makeErrorDialog(context, context.getString(messageId)) } - fun makeErrorDialog(context: Context, message: String): AlertDialog { + fun makeErrorDialog(context: Context, message: String): MaterialAlertDialogBuilder { return MaterialAlertDialogBuilder(context, R.style.DialogStyle) .setTitle(R.string.error) .setMessage(message) .setPositiveButton(android.R.string.yes, null) .setNeutralButton(R.string.show_help) { _, _ -> App.get().openHelpLink() } - .create() } fun determineArchName(): String { diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/BaseCustomizeActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/customize/BaseCustomizeActivity.kt similarity index 69% rename from nhterm/src/main/java/com/offsec/nhterm/ui/customize/BaseCustomizeActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/customize/BaseCustomizeActivity.kt index 5156940..68400b1 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/BaseCustomizeActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/customize/BaseCustomizeActivity.kt @@ -1,18 +1,17 @@ -package com.offsec.nhterm.ui.customize +package com.evolinx.terminal.ui.customize import android.annotation.SuppressLint import android.view.MenuItem import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.component.session.ShellParameter -import com.offsec.nhterm.frontend.session.terminal.BasicSessionCallback -import com.offsec.nhterm.frontend.session.terminal.BasicViewClient -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView -import com.offsec.nhterm.utils.Terminals +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.session.ShellParameter +import com.evolinx.terminal.frontend.session.terminal.BasicSessionCallback +import com.evolinx.terminal.frontend.session.terminal.BasicViewClient +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.utils.Terminals /** * @author kiva @@ -25,6 +24,7 @@ open class BaseCustomizeActivity : AppCompatActivity() { lateinit var session: TerminalSession lateinit var extraKeysView: ExtraKeysView + @SuppressLint("ResourceType") fun initCustomizationComponent(layoutId: Int) { setContentView(layoutId) @@ -40,20 +40,21 @@ open class BaseCustomizeActivity : AppCompatActivity() { Terminals.setupExtraKeysView(extraKeysView) val script = resources.getStringArray(R.array.custom_preview_script_colors) + val parameter = ShellParameter() + .callback(sessionCallback) .executablePath("/system/bin/echo") .arguments(arrayOf("echo", "-e", *script)) - .callback(sessionCallback) - .systemShell(false) + .systemShell(true) session = Terminals.createSession(this, parameter) terminalView.attachSession(session) } override fun onOptionsItemSelected(item: MenuItem): Boolean { - when (item?.itemId) { + when (item.itemId) { android.R.id.home -> finish() } - return item?.let { super.onOptionsItemSelected(it) } + return item.let { super.onOptionsItemSelected(it) } } } diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/ColorSchemeActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/customize/ColorSchemeActivity.kt similarity index 92% rename from nhterm/src/main/java/com/offsec/nhterm/ui/customize/ColorSchemeActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/customize/ColorSchemeActivity.kt index 7449045..0311fa9 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/ColorSchemeActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/customize/ColorSchemeActivity.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.customize +package com.evolinx.terminal.ui.customize import android.os.Bundle import android.text.Editable @@ -10,21 +10,19 @@ import android.view.MenuItem import android.widget.EditText import android.widget.TextView import android.widget.Toast -import androidx.appcompat.app.AlertDialog import androidx.recyclerview.widget.LinearLayoutManager import com.github.wrdlbrnft.sortedlistadapter.SortedListAdapter import com.google.android.material.dialog.MaterialAlertDialogBuilder import es.dmoral.coloromatic.ColorOMaticDialog import es.dmoral.coloromatic.IndicatorMode import es.dmoral.coloromatic.colormode.ColorMode -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalColors -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.colorscheme.ColorSchemeComponent -import com.offsec.nhterm.component.colorscheme.NeoColorScheme -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.utils.Terminals - +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalColors +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.colorscheme.ColorSchemeComponent +import com.evolinx.terminal.component.colorscheme.NeoColorScheme +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.utils.Terminals /** * @author kiva @@ -73,7 +71,7 @@ class ColorSchemeActivity : BaseCustomizeActivity() { android.R.id.home -> finish() R.id.action_done -> applyColorScheme(editingColorScheme) } - return item?.let { super.onOptionsItemSelected(it) } + return item.let { super.onOptionsItemSelected(it) } } override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/CustomizeActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/customize/CustomizeActivity.kt similarity index 87% rename from nhterm/src/main/java/com/offsec/nhterm/ui/customize/CustomizeActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/customize/CustomizeActivity.kt index 41e97f9..3f4968b 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/CustomizeActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/customize/CustomizeActivity.kt @@ -1,6 +1,7 @@ -package com.offsec.nhterm.ui.customize +package com.evolinx.terminal.ui.customize import android.content.Intent +import android.os.Build import android.os.Bundle import android.view.MenuItem import android.view.View @@ -8,12 +9,13 @@ import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.Spinner import android.widget.Toast -import com.offsec.nhterm.R -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.colorscheme.ColorSchemeComponent -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.component.font.FontComponent -import com.offsec.nhterm.utils.getPathOfMediaUri +import androidx.annotation.RequiresApi +import com.evolinx.terminal.R +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.colorscheme.ColorSchemeComponent +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.component.font.FontComponent +import com.evolinx.terminal.utils.getPathOfMediaUri import java.io.File import java.nio.file.Files import java.nio.file.Paths @@ -112,10 +114,11 @@ class CustomizeActivity : BaseCustomizeActivity() { session.finishIfRunning() } + @RequiresApi(Build.VERSION_CODES.O) override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { if (resultCode == RESULT_OK && data != null) { val selected = this.getPathOfMediaUri( data.data) - if (selected != null && selected.isNotEmpty()) { + if (!selected.isNullOrEmpty()) { when (requestCode) { REQUEST_SELECT_FONT -> installFont(selected) REQUEST_SELECT_COLOR -> installColor(selected) @@ -125,16 +128,19 @@ class CustomizeActivity : BaseCustomizeActivity() { super.onActivityResult(requestCode, resultCode, data) } + @RequiresApi(Build.VERSION_CODES.O) private fun installColor(selected: String) { installFileTo(selected, NeoTermPath.COLORS_PATH) setupSpinners() } + @RequiresApi(Build.VERSION_CODES.O) private fun installFont(selected: String) { installFileTo(selected, NeoTermPath.FONT_PATH) setupSpinners() } + @RequiresApi(Build.VERSION_CODES.O) private fun installFileTo(file: String, targetDir: String) { kotlin.runCatching { val source = File(file) @@ -148,6 +154,6 @@ class CustomizeActivity : BaseCustomizeActivity() { when (item?.itemId) { android.R.id.home -> finish() } - return item?.let { super.onOptionsItemSelected(it) } + return item.let { super.onOptionsItemSelected(it) } } } diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/model.kt b/terminal/src/main/java/com/evolinx/terminal/ui/customize/model.kt similarity index 87% rename from nhterm/src/main/java/com/offsec/nhterm/ui/customize/model.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/customize/model.kt index 17dc722..0f8da46 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/customize/model.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/customize/model.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.customize +package com.evolinx.terminal.ui.customize import android.content.Context import android.view.LayoutInflater @@ -7,16 +7,17 @@ import android.view.ViewGroup import android.widget.TextView import com.github.wrdlbrnft.sortedlistadapter.SortedListAdapter import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalColors -import com.offsec.nhterm.component.colorscheme.NeoColorScheme +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalColors +import com.evolinx.terminal.component.colorscheme.NeoColorScheme /** * @author kiva */ class ColorItem(var colorType: Int, var colorValue: String) : SortedListAdapter.ViewModel { - override fun isSameModelAs(t: T): Boolean { + + override fun isSameModelAs(t: T): Boolean { if (t is ColorItem) { return t.colorName == colorName && t.colorValue == colorValue @@ -25,7 +26,7 @@ class ColorItem(var colorType: Int, var colorValue: String) : SortedListAdapter. return false } - override fun isContentTheSameAs(t: T): Boolean { + override fun isContentTheSameAs(t: T): Boolean { return isSameModelAs(t) } @@ -40,7 +41,7 @@ class ColorItemAdapter( context: Context, initColorScheme: NeoColorScheme, comparator: Comparator, - private val listener: ColorItemAdapter.Listener + private val listener: Listener ) : SortedListAdapter(context, ColorItem::class.java, comparator), FastScrollRecyclerView.SectionedAdapter { val colorList = mutableListOf() diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/other/AboutActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/other/AboutActivity.kt similarity index 84% rename from nhterm/src/main/java/com/offsec/nhterm/ui/other/AboutActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/other/AboutActivity.kt index 8a250a4..45a397f 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/other/AboutActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/other/AboutActivity.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.other +package com.evolinx.terminal.ui.other import android.content.Context import android.content.Intent @@ -9,7 +9,6 @@ import android.system.Os import android.view.MenuItem import android.view.View import android.widget.TextView -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import de.psdev.licensesdialog.LicensesDialog @@ -18,17 +17,14 @@ import de.psdev.licensesdialog.licenses.GnuGeneralPublicLicense30 import de.psdev.licensesdialog.licenses.MITLicense import de.psdev.licensesdialog.model.Notice import de.psdev.licensesdialog.model.Notices -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.frontend.floating.TerminalDialog -import com.offsec.nhterm.utils.extractAssetsDir +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.component.userscript.UserScript +import com.evolinx.terminal.utils.extractAssetsDir import com.topjohnwu.superuser.Shell import de.psdev.licensesdialog.licenses.SILOpenFontLicense11 -import java.io.BufferedReader import java.io.File -import java.io.InputStreamReader - /** * @author kiva @@ -164,7 +160,7 @@ class AboutActivity : AppCompatActivity() { } findViewById(R.id.about_source_code_view).setOnClickListener { - openUrl("https://gitlab.com/kalilinux/nethunter/apps/kali-nethunter-term") + openUrl("TODO:") } findViewById(R.id.about_reset_app_view).setOnClickListener { @@ -189,17 +185,20 @@ class AboutActivity : AppCompatActivity() { } private fun resetApp(context: Context) { - val binDir = File(NeoTermPath.BIN_PATH) - //// - // As some roms act weird and cause issues like no assets are extracted on fresh run then we need to force - // assets extraction - //// - Shell.cmd("mkdir -p /data/data/com.offsec.nhterm/files/usr/").exec() - Shell.cmd("rm -rf /data/data/com.offsec.nhterm/files/usr/bin/*").exec() + val scriptDir = File(NeoTermPath.USER_SCRIPT_PATH) + val binDir = File(NeoTermPath.TERM_BIN) - extractAssetsDir("bin", "/data/data/com.offsec.nhterm/files/usr/bin/") + Runtime.getRuntime().exec("/system/bin/rm -f " + NeoTermPath.USER_SCRIPT_PATH + "/*").waitFor() + Runtime.getRuntime().exec("/system/bin/rm -f " + NeoTermPath.TERM_BIN + "/sys_bash").waitFor() + Runtime.getRuntime().exec("/system/bin/rm -f " + NeoTermPath.TERM_BIN + "/android-su").waitFor() - context.extractAssetsDir("bin", NeoTermPath.BIN_PATH) + context.extractAssetsDir("scripts", NeoTermPath.USER_SCRIPT_PATH) + scriptDir.listFiles()?.forEach { + Os.chmod(it.absolutePath, 448 /*Dec of 0700*/) + } + + // Lets also extract the usual binaries too here + context.extractAssetsDir("bin", NeoTermPath.TERM_BIN) binDir.listFiles()?.forEach { Os.chmod(it.absolutePath, 448 /*Dec of 0700*/) } @@ -216,6 +215,6 @@ class AboutActivity : AppCompatActivity() { android.R.id.home -> finish() } - return item?.let { super.onOptionsItemSelected(it) } + return item.let { super.onOptionsItemSelected(it) } } } diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/other/BonusActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/other/BonusActivity.kt similarity index 98% rename from nhterm/src/main/java/com/offsec/nhterm/ui/other/BonusActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/other/BonusActivity.kt index 88c4b72..7de3527 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/other/BonusActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/other/BonusActivity.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.other +package com.evolinx.terminal.ui.other import android.animation.ObjectAnimator import android.content.res.ColorStateList @@ -17,7 +17,7 @@ import android.view.animation.PathInterpolator import android.widget.FrameLayout import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity -import com.offsec.nhterm.R +import com.evolinx.terminal.R /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/other/CrashActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/other/CrashActivity.kt similarity index 96% rename from nhterm/src/main/java/com/offsec/nhterm/ui/other/CrashActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/other/CrashActivity.kt index 22799f4..ecca390 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/other/CrashActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/other/CrashActivity.kt @@ -1,10 +1,10 @@ -package com.offsec.nhterm.ui.other +package com.evolinx.terminal.ui.other import android.os.Build import android.os.Bundle import android.widget.TextView import androidx.appcompat.app.AppCompatActivity -import com.offsec.nhterm.R +import com.evolinx.terminal.R import java.io.ByteArrayOutputStream import java.io.PrintStream diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/other/SetupActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/other/SetupActivity.kt similarity index 95% rename from nhterm/src/main/java/com/offsec/nhterm/ui/other/SetupActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/other/SetupActivity.kt index 411aaa1..e5fc9ff 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/other/SetupActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/other/SetupActivity.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.other +package com.evolinx.terminal.ui.other import android.content.ActivityNotFoundException import android.content.Intent @@ -7,16 +7,15 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.widget.* -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.component.pm.SourceHelper -import com.offsec.nhterm.setup.* -import com.offsec.nhterm.utils.getPathOfMediaUri -import com.offsec.nhterm.utils.runApt +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.component.pm.SourceHelper +import com.evolinx.terminal.setup.* +import com.evolinx.terminal.utils.getPathOfMediaUri +import com.evolinx.terminal.utils.runApt import java.io.File @@ -211,7 +210,6 @@ class SetupActivity : AppCompatActivity(), View.OnClickListener, ResultListener if (error == null) { setResult(RESULT_OK) SourceHelper.syncSource() - executeAptUpdate() } else { MaterialAlertDialogBuilder(this, R.style.DialogStyle) diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/pm/PackageManagerActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/pm/PackageManagerActivity.kt similarity index 89% rename from nhterm/src/main/java/com/offsec/nhterm/ui/pm/PackageManagerActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/pm/PackageManagerActivity.kt index 9e5e97b..277b28d 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/pm/PackageManagerActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/pm/PackageManagerActivity.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.pm +package com.evolinx.terminal.ui.pm import android.annotation.SuppressLint import android.os.Bundle @@ -8,7 +8,6 @@ import android.view.MenuItem import android.widget.EditText import android.widget.TextView import android.widget.Toast -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.Toolbar @@ -16,14 +15,13 @@ import androidx.core.view.MenuItemCompat import androidx.recyclerview.widget.LinearLayoutManager import com.github.wrdlbrnft.sortedlistadapter.SortedListAdapter import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.R -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.pm.* -import com.offsec.nhterm.utils.StringDistance -import com.offsec.nhterm.utils.runApt -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch +import com.evolinx.terminal.R +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.pm.* +import com.evolinx.terminal.utils.NLog +import com.evolinx.terminal.utils.StringDistance +import com.evolinx.terminal.utils.runApt import java.util.* /** @@ -72,6 +70,7 @@ class PackageManagerActivity : AppCompatActivity(), SearchView.OnQueryTextListen private fun installPackage(packageName: String?) = packageName?.let { it -> runApt("apt install", "-y", it, autoClose = true) { it -> + Toast.makeText(this, R.string.apt_install_ok, Toast.LENGTH_SHORT).show() it.onSuccess { it.setTitle(getString(R.string.done)) } } } @@ -106,9 +105,9 @@ class PackageManagerActivity : AppCompatActivity(), SearchView.OnQueryTextListen .setMultiChoiceItems(items, selection) { _, which, isChecked -> sourceList[which].enabled = isChecked } - .setPositiveButton(android.R.string.yes) { _, _ -> changeSourceInternal(sourceManager, sourceList) } .setNeutralButton(R.string.new_source) { _, _ -> changeSourceToUserInput(sourceManager) } - .setNegativeButton(android.R.string.no, null) + .setNegativeButton("Delete") { _, _ -> removeSourceInternal(sourceManager, sourceList) } + .setPositiveButton(android.R.string.yes) { _, _ -> changeSourceInternal(sourceManager, sourceList) } .show() } @@ -120,7 +119,7 @@ class PackageManagerActivity : AppCompatActivity(), SearchView.OnQueryTextListen val urlEditor = view.findViewById(R.id.dialog_edit_text_editor) val repoEditor = view.findViewById(R.id.dialog_edit_text2_editor) - repoEditor.setText("kali-rolling main") + repoEditor.setText("main main") MaterialAlertDialogBuilder(this, R.style.DialogStyle) .setTitle(R.string.pref_package_source) @@ -153,6 +152,18 @@ class PackageManagerActivity : AppCompatActivity(), SearchView.OnQueryTextListen postChangeSource(sourceManager) } + private fun removeSourceInternal(sourceManager: SourceManager, source: List) { + sourceManager.updateAll(source) + + val enabled = sourceManager.getEnabledSources() + val repos = enabled.map { "${it.url}" }.toTypedArray() + + for (loopyloop in repos) { + NLog.e("NOTICE", loopyloop) + sourceManager.removeSource(loopyloop) + } + } + private fun postChangeSource(sourceManager: SourceManager) { sourceManager.applyChanges() NeoPreference.store(R.string.key_package_source, sourceManager.getMainPackageSource()) diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/pm/model.kt b/terminal/src/main/java/com/evolinx/terminal/ui/pm/model.kt similarity index 93% rename from nhterm/src/main/java/com/offsec/nhterm/ui/pm/model.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/pm/model.kt index 01f927f..05c209f 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/pm/model.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/pm/model.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.pm +package com.evolinx.terminal.ui.pm import android.content.Context import android.view.LayoutInflater @@ -6,9 +6,9 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import com.github.wrdlbrnft.sortedlistadapter.SortedListAdapter -import com.offsec.nhterm.R -import com.offsec.nhterm.component.pm.NeoPackageInfo -import com.offsec.nhterm.utils.formatSizeInKB +import com.evolinx.terminal.R +import com.evolinx.terminal.component.pm.NeoPackageInfo +import com.evolinx.terminal.utils.formatSizeInKB import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView class PackageAdapter( diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/pm/view/RecyclerTabLayout.java b/terminal/src/main/java/com/evolinx/terminal/ui/pm/view/RecyclerTabLayout.java similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/ui/pm/view/RecyclerTabLayout.java rename to terminal/src/main/java/com/evolinx/terminal/ui/pm/view/RecyclerTabLayout.java index 987a10a..db5be39 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/pm/view/RecyclerTabLayout.java +++ b/terminal/src/main/java/com/evolinx/terminal/ui/pm/view/RecyclerTabLayout.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.offsec.nhterm.ui.pm.view; +package com.evolinx.terminal.ui.pm.view; import android.animation.ValueAnimator; import android.content.Context; @@ -34,7 +34,7 @@ import androidx.core.view.ViewCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.viewpager.widget.ViewPager; -import com.offsec.nhterm.R; +import com.evolinx.terminal.R; import java.util.Objects; diff --git a/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceActivity.kt new file mode 100644 index 0000000..5b9ebdc --- /dev/null +++ b/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceActivity.kt @@ -0,0 +1,21 @@ +package com.evolinx.terminal.ui.settings + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.evolinx.terminal.R + +//// +// Simple activity that redirects to preference fragment +//// + +class BasePreferenceActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.ui_settings) + + supportFragmentManager.beginTransaction() + .replace(R.id.content, BasePreferenceFragment(), "Settings") + .commit() + } +} diff --git a/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceGeneralActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceGeneralActivity.kt new file mode 100644 index 0000000..b94e93f --- /dev/null +++ b/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceGeneralActivity.kt @@ -0,0 +1,21 @@ +package com.evolinx.terminal.ui.settings + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.evolinx.terminal.R + +//// +// Simple activity that redirects to preference fragment +//// + +class BasePreferenceGeneralActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.ui_settings) + + supportFragmentManager.beginTransaction() + .replace(R.id.content, BasePreferenceGeneralFragment(), "General Settings") + .commit() + } +} diff --git a/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceUIActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceUIActivity.kt new file mode 100644 index 0000000..d0a3a83 --- /dev/null +++ b/terminal/src/main/java/com/evolinx/terminal/ui/settings/activity/BasePreferenceUIActivity.kt @@ -0,0 +1,21 @@ +package com.evolinx.terminal.ui.settings + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import com.evolinx.terminal.R + +//// +// Simple activity that redirects to preference fragment +//// + +class BasePreferenceUIActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.ui_settings) + + supportFragmentManager.beginTransaction() + .replace(R.id.content, BasePreferenceUIFragment(), "UI Settings") + .commit() + } +} diff --git a/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceFragment.kt b/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceFragment.kt new file mode 100644 index 0000000..dcc5140 --- /dev/null +++ b/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceFragment.kt @@ -0,0 +1,36 @@ +package com.evolinx.terminal.ui.settings + +import android.os.Bundle +import android.view.View +import androidx.preference.ListPreference +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.PreferenceManager +import com.evolinx.terminal.R + +class BasePreferenceFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener { + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.settings_main) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + val stringValue = newValue.toString() + + if (preference is ListPreference) { + val listPreferene = preference + val prefIndex = listPreferene.findIndexOfValue(stringValue) + if (prefIndex >= 0) { + preference.setSummary(listPreferene.entries[prefIndex]) + } + } else { + preference.summary = stringValue + } + + return true + } +} diff --git a/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceGeneralFragment.kt b/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceGeneralFragment.kt new file mode 100644 index 0000000..0da827c --- /dev/null +++ b/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceGeneralFragment.kt @@ -0,0 +1,44 @@ +package com.evolinx.terminal.ui.settings + +import android.os.Bundle +import android.view.View +import androidx.preference.ListPreference +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.PreferenceManager +import com.evolinx.terminal.R + +class BasePreferenceGeneralFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.settings_general) + } + + private fun bindPreferenceSummaryToValue(preference: Preference) { + preference.onPreferenceChangeListener = this + + onPreferenceChange(preference, + PreferenceManager + .getDefaultSharedPreferences(preference.context) + .getString(preference.key, "")) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + val stringValue = newValue.toString() + + if (preference is ListPreference) { + val listPreferene = preference + val prefIndex = listPreferene.findIndexOfValue(stringValue) + if (prefIndex >= 0) { + preference.setSummary(listPreferene.entries[prefIndex]) + } + } else { + preference.summary = stringValue + } + + return true + } +} diff --git a/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceUIFragment.kt b/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceUIFragment.kt new file mode 100644 index 0000000..60c0c76 --- /dev/null +++ b/terminal/src/main/java/com/evolinx/terminal/ui/settings/fragments/BasePreferenceUIFragment.kt @@ -0,0 +1,44 @@ +package com.evolinx.terminal.ui.settings + +import android.os.Bundle +import android.view.View +import androidx.preference.ListPreference +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat +import androidx.preference.PreferenceManager +import com.evolinx.terminal.R + +class BasePreferenceUIFragment: PreferenceFragmentCompat(), Preference.OnPreferenceChangeListener { + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + addPreferencesFromResource(R.xml.settings_ui) + } + + private fun bindPreferenceSummaryToValue(preference: Preference) { + preference.onPreferenceChangeListener = this + + onPreferenceChange(preference, + PreferenceManager + .getDefaultSharedPreferences(preference.context) + .getString(preference.key, "")) + } + + override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean { + val stringValue = newValue.toString() + + if (preference is ListPreference) { + val listPreferene = preference + val prefIndex = listPreferene.findIndexOfValue(stringValue) + if (prefIndex >= 0) { + preference.setSummary(listPreferene.entries[prefIndex]) + } + } else { + preference.summary = stringValue + } + + return true + } +} diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/term/NeoTermActivity.kt b/terminal/src/main/java/com/evolinx/terminal/ui/term/NeoTermActivity.kt similarity index 89% rename from nhterm/src/main/java/com/offsec/nhterm/ui/term/NeoTermActivity.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/term/NeoTermActivity.kt index 0f64072..7de7dab 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/term/NeoTermActivity.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/term/NeoTermActivity.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.term +package com.evolinx.terminal.ui.term import android.Manifest import android.annotation.SuppressLint @@ -9,12 +9,10 @@ import android.os.Build import android.os.Bundle import android.os.Handler import android.os.IBinder -import android.util.Log import android.view.* import android.view.inputmethod.InputMethodManager import android.widget.ImageButton import androidx.annotation.RequiresApi -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.Toolbar import androidx.core.app.ActivityCompat @@ -22,31 +20,32 @@ import androidx.core.content.ContextCompat import androidx.core.view.OnApplyWindowInsetsListener import androidx.core.view.ViewCompat import androidx.preference.PreferenceManager +import com.google.android.material.appbar.MaterialToolbar import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.profile.ProfileComponent -import com.offsec.nhterm.component.session.ShellParameter -import com.offsec.nhterm.component.session.ShellProfile -import com.offsec.nhterm.component.session.XParameter -import com.offsec.nhterm.component.session.XSession -import com.offsec.nhterm.frontend.session.terminal.* -import com.offsec.nhterm.services.NeoTermService -import com.offsec.nhterm.ui.pm.PackageManagerActivity -import com.offsec.nhterm.ui.settings.SettingActivity -import com.offsec.nhterm.utils.FullScreenHelper -import com.offsec.nhterm.utils.NeoPermission -import com.offsec.nhterm.utils.RangedInt -import com.topjohnwu.superuser.Shell +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.profile.ProfileComponent +import com.evolinx.terminal.component.session.ShellParameter +import com.evolinx.terminal.component.session.ShellProfile +import com.evolinx.terminal.component.session.XParameter +import com.evolinx.terminal.component.session.XSession +import com.evolinx.terminal.frontend.session.terminal.* +import com.evolinx.terminal.services.NeoTermService +import com.evolinx.terminal.setup.SetupHelper +import com.evolinx.terminal.ui.other.SetupActivity +import com.evolinx.terminal.ui.pm.PackageManagerActivity +import com.evolinx.terminal.ui.settings.BasePreferenceActivity +import com.evolinx.terminal.ui.settings.BasePreferenceFragment +import com.evolinx.terminal.utils.FullScreenHelper +import com.evolinx.terminal.utils.NeoPermission +import com.evolinx.terminal.utils.RangedInt import de.mrapp.android.tabswitcher.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode -import java.lang.System.`in` -import java.lang.System.out class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreferences.OnSharedPreferenceChangeListener { @@ -57,7 +56,7 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference lateinit var tabSwitcher: TabSwitcher private lateinit var fullScreenHelper: FullScreenHelper - lateinit var toolbar: Toolbar + lateinit var toolbar: MaterialToolbar var addSessionListener = createAddSessionListener() private var termService: NeoTermService? = null @@ -169,32 +168,28 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference } override fun onOptionsItemSelected(item: MenuItem): Boolean { - return when (item?.itemId) { + return when (item.itemId) { R.id.menu_item_settings -> { - startActivity(Intent(this, SettingActivity::class.java)) + startActivity(Intent(this, BasePreferenceActivity::class.java)) true } R.id.menu_item_new_session -> { - addNewNetHunterSession("Kali Shell") + addNewEvolinxSession(getString(R.string.shell)) true } R.id.menu_item_new_emergency_session -> { - addNewEmergencySession("Emergency Shell") - true - } - R.id.menu_item_new_bash_session -> { - addNewAndroidSession("Android Shell") + addNewEmergencySession(getString(R.string.emergency_shell)) true } R.id.menu_item_new_root_session -> { - addNewRootSession("Root Shell") + addNewRootSession(getString(R.string.root_shell)) true } R.id.menu_item_package_settings -> { startActivity(Intent(this, PackageManagerActivity::class.java)) true } - else -> item?.let { super.onOptionsItemSelected(it) } + else -> item.let { super.onOptionsItemSelected(it) } } } @@ -363,6 +358,12 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference } if (!isRecreating()) { + if (SetupHelper.needSetup()) { + val intent = Intent(this, SetupActivity::class.java) + startActivityForResult(intent, REQUEST_SETUP) + + return + } enterMain() update_colors() } @@ -499,11 +500,11 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference } private fun addNewSession() { - addNewNetHunterSession("Kali Shell") + addNewEvolinxSession(getString(R.string.shell)) } private fun addNewSession(sessionName: String?, systemShell: Boolean, animation: Animation) { - addNewNetHunterSession("Kali Shell") + addNewEvolinxSession(getString(R.string.shell)) } private fun addNewSessionWithProfile(profile: ShellProfile) { @@ -529,7 +530,7 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference .profile(profile) val session = termService!!.createTermSession(parameter) - session.mSessionName = sessionName ?: generateSessionName("Kali Shell") + session.mSessionName = sessionName ?: generateSessionName(getString(R.string.shell)) val tab = createTab(session.mSessionName) as TermTab tab.termData.initializeSessionWith(session, sessionCallback, viewClient) @@ -550,7 +551,7 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference val session = termService!!.createTermSession(parameter) - session.mSessionName = sessionName ?: generateSessionName("Emergency Shell") + session.mSessionName = sessionName ?: generateSessionName(getString(R.string.emergency_shell)) val tab = createTab(session.mSessionName) as TermTab tab.termData.initializeSessionWith(session, sessionCallback, viewClient) @@ -558,38 +559,18 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference addNewTab(tab, createRevealAnimation()) switchToSession(tab) } - - @SuppressLint("SdCardPath") - private fun addNewAndroidSession(sessionName: String?) { + + private fun addNewEvolinxSession(sessionName: String?) { val sessionCallback = TermSessionCallback() val viewClient = TermViewClient(this) val parameter = ShellParameter() .callback(sessionCallback) - .executablePath("/data/data/com.offsec.nhterm/files/usr/bin/bash") .systemShell(true) - + .executablePath("/data/data/com.evolinx.terminal/files/usr/bin/bash") val session = termService!!.createTermSession(parameter) - session.mSessionName = sessionName ?: generateSessionName("Android Shell") - - val tab = createTab(session.mSessionName) as TermTab - tab.termData.initializeSessionWith(session, sessionCallback, viewClient) - - addNewTab(tab, createRevealAnimation()) - switchToSession(tab) - } - - private fun addNewNetHunterSession(sessionName: String?) { - val sessionCallback = TermSessionCallback() - val viewClient = TermViewClient(this) - - val parameter = ShellParameter() - .callback(sessionCallback) - .executablePath("/data/data/com.offsec.nhterm/files/usr/bin/kali") - val session = termService!!.createTermSession(parameter) - - session.mSessionName = sessionName ?: generateSessionName("Kali Shell") + session.mSessionName = sessionName ?: generateSessionName(getString(R.string.shell)) val tab = createTab(session.mSessionName) as TermTab tab.termData.initializeSessionWith(session, sessionCallback, viewClient) @@ -605,13 +586,13 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference val parameter = ShellParameter() .callback(sessionCallback) - .executablePath("/data/data/com.offsec.nhterm/files/usr/bin/android-su") + .executablePath("/data/data/com.evolinx.terminal/files/app/bin/android-su") .systemShell(true) val session = termService!!.createTermSession(parameter) - generateSessionName("Android") + generateSessionName("Root Shell") - session.mSessionName = sessionName ?: generateSessionName("Root Shell") + session.mSessionName = sessionName ?: generateSessionName(getString(R.string.root_shell)) val tab = createTab(session.mSessionName) as TermTab tab.termData.initializeSessionWith(session, sessionCallback, viewClient) @@ -726,11 +707,11 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference } private fun createTab(tabTitle: String?): Tab { - return postTabCreated(TermTab(tabTitle ?: "Android")) + return postTabCreated(TermTab(tabTitle ?: getString(R.string.shell))) } private fun createXTab(tabTitle: String?): Tab { - return postTabCreated(XSessionTab(tabTitle ?: "Kali Shell")) + return postTabCreated(XSessionTab(tabTitle ?: getString(R.string.new_x_session))) } private fun postTabCreated(tab: T): T { @@ -877,7 +858,7 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference switchToSession(tabSwitcher.getTab(nextIndex)) } - @Suppress("unused", "UNUSED_PARAMETER") + @Suppress("unused") @Subscribe(threadMode = ThreadMode.MAIN) fun onSwitchIndexedSessionEvent(switchIndexedSessionEvent: SwitchIndexedSessionEvent) { val nextIndex = switchIndexedSessionEvent.index - 1 @@ -891,16 +872,13 @@ class NeoTermActivity : AppCompatActivity(), ServiceConnection, SharedPreference // Simple fix to bug on custom color Handler().postDelayed( { - if (tabSwitcher.count > 0) { val tab = tabSwitcher.selectedTab if (tab is TermTab) { tab.updateColorScheme() } } - - }, - 100, + }, 100, ) } diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/term/NeoTermRemoteInterface.kt b/terminal/src/main/java/com/evolinx/terminal/ui/term/NeoTermRemoteInterface.kt similarity index 91% rename from nhterm/src/main/java/com/offsec/nhterm/ui/term/NeoTermRemoteInterface.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/term/NeoTermRemoteInterface.kt index 8411eb9..7757326 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/term/NeoTermRemoteInterface.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/term/NeoTermRemoteInterface.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.term +package com.evolinx.terminal.ui.term import android.content.ComponentName import android.content.Intent @@ -8,22 +8,21 @@ import android.os.Bundle import android.os.IBinder import android.widget.ArrayAdapter import android.widget.ListView -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.App -import com.offsec.nhterm.R -import com.offsec.nhterm.bridge.Bridge.* -import com.offsec.nhterm.bridge.SessionId -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.session.ShellParameter -import com.offsec.nhterm.component.userscript.UserScript -import com.offsec.nhterm.component.userscript.UserScriptComponent -import com.offsec.nhterm.frontend.session.terminal.TermSessionCallback -import com.offsec.nhterm.services.NeoTermService -import com.offsec.nhterm.utils.Terminals -import com.offsec.nhterm.utils.getPathOfMediaUri +import com.evolinx.terminal.App +import com.evolinx.terminal.R +import com.evolinx.terminal.bridge.Bridge.* +import com.evolinx.terminal.bridge.SessionId +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.session.ShellParameter +import com.evolinx.terminal.component.userscript.UserScript +import com.evolinx.terminal.component.userscript.UserScriptComponent +import com.evolinx.terminal.frontend.session.terminal.TermSessionCallback +import com.evolinx.terminal.services.NeoTermService +import com.evolinx.terminal.utils.Terminals +import com.evolinx.terminal.utils.getPathOfMediaUri import java.io.File /** diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/term/SessionRemover.kt b/terminal/src/main/java/com/evolinx/terminal/ui/term/SessionRemover.kt similarity index 81% rename from nhterm/src/main/java/com/offsec/nhterm/ui/term/SessionRemover.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/term/SessionRemover.kt index 58c8236..59e2800 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/term/SessionRemover.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/term/SessionRemover.kt @@ -1,8 +1,8 @@ -package com.offsec.nhterm.ui.term +package com.evolinx.terminal.ui.term -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.session.XSession -import com.offsec.nhterm.services.NeoTermService +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.session.XSession +import com.evolinx.terminal.services.NeoTermService /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/ui/term/tabs.kt b/terminal/src/main/java/com/evolinx/terminal/ui/term/tabs.kt similarity index 93% rename from nhterm/src/main/java/com/offsec/nhterm/ui/term/tabs.kt rename to terminal/src/main/java/com/evolinx/terminal/ui/term/tabs.kt index 9883375..e2286a0 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/ui/term/tabs.kt +++ b/terminal/src/main/java/com/evolinx/terminal/ui/term/tabs.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.ui.term +package com.evolinx.terminal.ui.term import android.content.Context import android.content.res.Configuration @@ -12,18 +12,18 @@ import android.view.ViewGroup import android.view.inputmethod.InputMethodManager import android.widget.FrameLayout import androidx.appcompat.widget.Toolbar -import com.offsec.nhterm.NeoGLView -import com.offsec.nhterm.R -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.colorscheme.ColorSchemeComponent -import com.offsec.nhterm.component.completion.OnAutoCompleteListener -import com.offsec.nhterm.component.config.DefaultValues -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.session.XSession -import com.offsec.nhterm.frontend.session.terminal.* -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView -import com.offsec.nhterm.utils.Terminals +import com.evolinx.terminal.NeoGLView +import com.evolinx.terminal.R +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.colorscheme.ColorSchemeComponent +import com.evolinx.terminal.component.completion.OnAutoCompleteListener +import com.evolinx.terminal.component.config.DefaultValues +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.session.XSession +import com.evolinx.terminal.frontend.session.terminal.* +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.utils.Terminals import de.mrapp.android.tabswitcher.Tab import de.mrapp.android.tabswitcher.TabSwitcher import de.mrapp.android.tabswitcher.TabSwitcherDecorator diff --git a/nhterm/src/main/java/com/offsec/nhterm/utils/CrashHandler.kt b/terminal/src/main/java/com/evolinx/terminal/utils/CrashHandler.kt similarity index 84% rename from nhterm/src/main/java/com/offsec/nhterm/utils/CrashHandler.kt rename to terminal/src/main/java/com/evolinx/terminal/utils/CrashHandler.kt index c87443b..3a4dfde 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/utils/CrashHandler.kt +++ b/terminal/src/main/java/com/evolinx/terminal/utils/CrashHandler.kt @@ -1,8 +1,8 @@ -package com.offsec.nhterm.utils +package com.evolinx.terminal.utils import android.content.Intent -import com.offsec.nhterm.App -import com.offsec.nhterm.ui.other.CrashActivity +import com.evolinx.terminal.App +import com.evolinx.terminal.ui.other.CrashActivity /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/utils/FullScreenHelper.kt b/terminal/src/main/java/com/evolinx/terminal/utils/FullScreenHelper.kt similarity index 93% rename from nhterm/src/main/java/com/offsec/nhterm/utils/FullScreenHelper.kt rename to terminal/src/main/java/com/evolinx/terminal/utils/FullScreenHelper.kt index 0bfc7cf..d4c8c96 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/utils/FullScreenHelper.kt +++ b/terminal/src/main/java/com/evolinx/terminal/utils/FullScreenHelper.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.utils +package com.evolinx.terminal.utils import android.graphics.Rect import android.view.View @@ -95,12 +95,12 @@ class FullScreenHelper private constructor( if (usableHeightNow != usableHeightPrevious) { val usableHeightSansKeyboard = mChildOfContent.rootView.height val heightDifference = usableHeightSansKeyboard - usableHeightNow - if (heightDifference > usableHeightSansKeyboard / 4) { + currentHeightLayoutHeight = if (heightDifference > usableHeightSansKeyboard / 4) { // screenKeyboard probably just became visible - currentHeightLayoutHeight = usableHeightSansKeyboard - heightDifference + usableHeightSansKeyboard - heightDifference } else { // screenKeyboard probably just became hidden - currentHeightLayoutHeight = usableHeightSansKeyboard + usableHeightSansKeyboard } frameLayoutParams.height = currentHeightLayoutHeight mChildOfContent.requestLayout() diff --git a/nhterm/src/main/java/com/offsec/nhterm/utils/NLog.kt b/terminal/src/main/java/com/evolinx/terminal/utils/NLog.kt similarity index 99% rename from nhterm/src/main/java/com/offsec/nhterm/utils/NLog.kt rename to terminal/src/main/java/com/evolinx/terminal/utils/NLog.kt index 2d04470..64e5ae6 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/utils/NLog.kt +++ b/terminal/src/main/java/com/evolinx/terminal/utils/NLog.kt @@ -1,4 +1,4 @@ -package com.offsec.nhterm.utils +package com.evolinx.terminal.utils import android.content.Context import android.util.Log diff --git a/nhterm/src/main/java/com/offsec/nhterm/utils/NeoPermission.kt b/terminal/src/main/java/com/evolinx/terminal/utils/NeoPermission.kt similarity index 92% rename from nhterm/src/main/java/com/offsec/nhterm/utils/NeoPermission.kt rename to terminal/src/main/java/com/evolinx/terminal/utils/NeoPermission.kt index 49cd8fb..b287b1a 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/utils/NeoPermission.kt +++ b/terminal/src/main/java/com/evolinx/terminal/utils/NeoPermission.kt @@ -1,16 +1,14 @@ -package com.offsec.nhterm.utils +package com.evolinx.terminal.utils import android.Manifest import android.content.ActivityNotFoundException import android.content.DialogInterface import android.content.pm.PackageManager -import android.os.Build -import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.offsec.nhterm.R +import com.evolinx.terminal.R /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/utils/StringDistance.java b/terminal/src/main/java/com/evolinx/terminal/utils/StringDistance.java similarity index 96% rename from nhterm/src/main/java/com/offsec/nhterm/utils/StringDistance.java rename to terminal/src/main/java/com/evolinx/terminal/utils/StringDistance.java index 805b856..f9e9f21 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/utils/StringDistance.java +++ b/terminal/src/main/java/com/evolinx/terminal/utils/StringDistance.java @@ -1,4 +1,4 @@ -package com.offsec.nhterm.utils; +package com.evolinx.terminal.utils; /** * @author kiva diff --git a/nhterm/src/main/java/com/offsec/nhterm/utils/Terminals.kt b/terminal/src/main/java/com/evolinx/terminal/utils/Terminals.kt similarity index 68% rename from nhterm/src/main/java/com/offsec/nhterm/utils/Terminals.kt rename to terminal/src/main/java/com/evolinx/terminal/utils/Terminals.kt index c1f26c3..b8321ac 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/utils/Terminals.kt +++ b/terminal/src/main/java/com/evolinx/terminal/utils/Terminals.kt @@ -1,24 +1,24 @@ -package com.offsec.nhterm.utils +package com.evolinx.terminal.utils import android.content.Context import androidx.appcompat.app.AppCompatActivity -import com.offsec.nhterm.backend.TerminalSession -import com.offsec.nhterm.component.ComponentManager -import com.offsec.nhterm.component.config.NeoPreference -import com.offsec.nhterm.component.font.FontComponent -import com.offsec.nhterm.component.session.SessionComponent -import com.offsec.nhterm.component.session.ShellParameter -import com.offsec.nhterm.component.session.XParameter -import com.offsec.nhterm.component.session.XSession -import com.offsec.nhterm.frontend.session.view.TerminalView -import com.offsec.nhterm.frontend.session.view.TerminalViewClient -import com.offsec.nhterm.frontend.session.view.extrakey.ExtraKeysView +import com.evolinx.terminal.backend.TerminalSession +import com.evolinx.terminal.component.ComponentManager +import com.evolinx.terminal.component.config.NeoPreference +import com.evolinx.terminal.component.font.FontComponent +import com.evolinx.terminal.component.session.SessionComponent +import com.evolinx.terminal.component.session.ShellParameter +import com.evolinx.terminal.component.session.XParameter +import com.evolinx.terminal.component.session.XSession +import com.evolinx.terminal.frontend.session.view.TerminalView +import com.evolinx.terminal.frontend.session.view.TerminalViewClient +import com.evolinx.terminal.frontend.session.view.extrakey.ExtraKeysView /** * @author kiva */ object Terminals { - fun setupTerminalView(terminalView: TerminalView?, terminalViewClient: com.offsec.nhterm.frontend.session.view.TerminalViewClient? = null) { + fun setupTerminalView(terminalView: TerminalView?, terminalViewClient: TerminalViewClient? = null) { terminalView?.textSize = NeoPreference.getFontSize(); val fontComponent = ComponentManager.getComponent() diff --git a/nhterm/src/main/java/com/offsec/nhterm/utils/utils.kt b/terminal/src/main/java/com/evolinx/terminal/utils/utils.kt similarity index 92% rename from nhterm/src/main/java/com/offsec/nhterm/utils/utils.kt rename to terminal/src/main/java/com/evolinx/terminal/utils/utils.kt index ac087da..2549599 100644 --- a/nhterm/src/main/java/com/offsec/nhterm/utils/utils.kt +++ b/terminal/src/main/java/com/evolinx/terminal/utils/utils.kt @@ -1,5 +1,6 @@ -package com.offsec.nhterm.utils +package com.evolinx.terminal.utils +import android.annotation.SuppressLint import android.content.ContentUris import android.content.Context import android.net.Uri @@ -7,9 +8,9 @@ import android.os.Build import android.os.Environment import android.provider.DocumentsContract import android.provider.MediaStore -import com.offsec.nhterm.R -import com.offsec.nhterm.component.config.NeoTermPath -import com.offsec.nhterm.frontend.floating.TerminalDialog +import com.evolinx.terminal.R +import com.evolinx.terminal.component.config.NeoTermPath +import com.evolinx.terminal.frontend.floating.TerminalDialog import java.nio.file.Files import java.nio.file.Paths import java.text.DecimalFormat @@ -37,6 +38,7 @@ fun Long.formatSizeInKB(): String { } } +@SuppressLint("SuspiciousIndentation") fun Context.extractAssetsDir(assetDir: String, extractDir: String) = kotlin.runCatching { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val targetDir = Paths.get(extractDir) @@ -72,10 +74,10 @@ fun Context.runApt( command: String, subCommand: String, extraArgs: String, autoClose: Boolean = true, block: (Result) -> Unit ) = TerminalDialog(this) - .execute(NeoTermPath.BIN_PATH + "/kali", command + " " + subCommand, extraArgs) + .execute(NeoTermPath.BIN_PATH, command + " " + subCommand, extraArgs) .imeEnabled(true) .onFinish { dialog, session -> - val exit = session?.exitStatus ?: 1 + val exit = session?.exitStatus if (exit == 0) { if (autoClose) dialog.dismiss() block(Result.success(dialog)) @@ -83,8 +85,7 @@ fun Context.runApt( dialog.setTitle(getString(R.string.error)) block(Result.failure(RuntimeException())) } - } - .show("apt $subCommand") + }.show("Package Installer") /** * Get a file path from a Uri. This will get the the path for Storage Access diff --git a/nhterm/src/main/res/drawable-hdpi/ic_add_box_white_24dp.png b/terminal/src/main/res/drawable-hdpi/ic_add_box_white_24dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_add_box_white_24dp.png rename to terminal/src/main/res/drawable-hdpi/ic_add_box_white_24dp.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_apps_white_36dp.png b/terminal/src/main/res/drawable-hdpi/ic_apps_white_36dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_apps_white_36dp.png rename to terminal/src/main/res/drawable-hdpi/ic_apps_white_36dp.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_backup_restore_white_36dp.png b/terminal/src/main/res/drawable-hdpi/ic_backup_restore_white_36dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_backup_restore_white_36dp.png rename to terminal/src/main/res/drawable-hdpi/ic_backup_restore_white_36dp.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_customization_white_36dp.png b/terminal/src/main/res/drawable-hdpi/ic_customization_white_36dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_customization_white_36dp.png rename to terminal/src/main/res/drawable-hdpi/ic_customization_white_36dp.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_done.png b/terminal/src/main/res/drawable-hdpi/ic_done.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_done.png rename to terminal/src/main/res/drawable-hdpi/ic_done.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_general_white_36dp.png b/terminal/src/main/res/drawable-hdpi/ic_general_white_36dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_general_white_36dp.png rename to terminal/src/main/res/drawable-hdpi/ic_general_white_36dp.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_guide_white_36dp.png b/terminal/src/main/res/drawable-hdpi/ic_guide_white_36dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_guide_white_36dp.png rename to terminal/src/main/res/drawable-hdpi/ic_guide_white_36dp.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_info_white_36dp.png b/terminal/src/main/res/drawable-hdpi/ic_info_white_36dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_info_white_36dp.png rename to terminal/src/main/res/drawable-hdpi/ic_info_white_36dp.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_install_white_36.png b/terminal/src/main/res/drawable-hdpi/ic_install_white_36.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_install_white_36.png rename to terminal/src/main/res/drawable-hdpi/ic_install_white_36.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_search.png b/terminal/src/main/res/drawable-hdpi/ic_search.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_search.png rename to terminal/src/main/res/drawable-hdpi/ic_search.png diff --git a/nhterm/src/main/res/drawable-hdpi/ic_ui_white_36dp.png b/terminal/src/main/res/drawable-hdpi/ic_ui_white_36dp.png similarity index 100% rename from nhterm/src/main/res/drawable-hdpi/ic_ui_white_36dp.png rename to terminal/src/main/res/drawable-hdpi/ic_ui_white_36dp.png diff --git a/nhterm/src/main/res/drawable-mdpi/ic_add_box_white_24dp.png b/terminal/src/main/res/drawable-mdpi/ic_add_box_white_24dp.png similarity index 100% rename from nhterm/src/main/res/drawable-mdpi/ic_add_box_white_24dp.png rename to terminal/src/main/res/drawable-mdpi/ic_add_box_white_24dp.png diff --git a/nhterm/src/main/res/drawable-mdpi/ic_search.png b/terminal/src/main/res/drawable-mdpi/ic_search.png similarity index 100% rename from nhterm/src/main/res/drawable-mdpi/ic_search.png rename to terminal/src/main/res/drawable-mdpi/ic_search.png diff --git a/nhterm/src/main/res/drawable-xhdpi/ic_add_box_white_24dp.png b/terminal/src/main/res/drawable-xhdpi/ic_add_box_white_24dp.png similarity index 100% rename from nhterm/src/main/res/drawable-xhdpi/ic_add_box_white_24dp.png rename to terminal/src/main/res/drawable-xhdpi/ic_add_box_white_24dp.png diff --git a/nhterm/src/main/res/drawable-xhdpi/ic_notification_icon.png b/terminal/src/main/res/drawable-xhdpi/ic_notification_icon.png similarity index 100% rename from nhterm/src/main/res/drawable-xhdpi/ic_notification_icon.png rename to terminal/src/main/res/drawable-xhdpi/ic_notification_icon.png diff --git a/nhterm/src/main/res/drawable-xhdpi/ic_search.png b/terminal/src/main/res/drawable-xhdpi/ic_search.png similarity index 100% rename from nhterm/src/main/res/drawable-xhdpi/ic_search.png rename to terminal/src/main/res/drawable-xhdpi/ic_search.png diff --git a/nhterm/src/main/res/drawable-xxhdpi/ic_add_box_white_24dp.png b/terminal/src/main/res/drawable-xxhdpi/ic_add_box_white_24dp.png similarity index 100% rename from nhterm/src/main/res/drawable-xxhdpi/ic_add_box_white_24dp.png rename to terminal/src/main/res/drawable-xxhdpi/ic_add_box_white_24dp.png diff --git a/nhterm/src/main/res/drawable-xxhdpi/ic_search.png b/terminal/src/main/res/drawable-xxhdpi/ic_search.png similarity index 100% rename from nhterm/src/main/res/drawable-xxhdpi/ic_search.png rename to terminal/src/main/res/drawable-xxhdpi/ic_search.png diff --git a/nhterm/src/main/res/drawable-xxhdpi/text_select_handle_left_mtrl_alpha.png b/terminal/src/main/res/drawable-xxhdpi/text_select_handle_left_mtrl_alpha.png similarity index 100% rename from nhterm/src/main/res/drawable-xxhdpi/text_select_handle_left_mtrl_alpha.png rename to terminal/src/main/res/drawable-xxhdpi/text_select_handle_left_mtrl_alpha.png diff --git a/nhterm/src/main/res/drawable-xxhdpi/text_select_handle_right_mtrl_alpha.png b/terminal/src/main/res/drawable-xxhdpi/text_select_handle_right_mtrl_alpha.png similarity index 100% rename from nhterm/src/main/res/drawable-xxhdpi/text_select_handle_right_mtrl_alpha.png rename to terminal/src/main/res/drawable-xxhdpi/text_select_handle_right_mtrl_alpha.png diff --git a/nhterm/src/main/res/drawable-xxxhdpi/ic_add_box_white_24dp.png b/terminal/src/main/res/drawable-xxxhdpi/ic_add_box_white_24dp.png similarity index 100% rename from nhterm/src/main/res/drawable-xxxhdpi/ic_add_box_white_24dp.png rename to terminal/src/main/res/drawable-xxxhdpi/ic_add_box_white_24dp.png diff --git a/nhterm/src/main/res/drawable/banner.png b/terminal/src/main/res/drawable/banner.png similarity index 100% rename from nhterm/src/main/res/drawable/banner.png rename to terminal/src/main/res/drawable/banner.png diff --git a/terminal/src/main/res/drawable/bg_preferencebg.xml b/terminal/src/main/res/drawable/bg_preferencebg.xml new file mode 100644 index 0000000..b09867d --- /dev/null +++ b/terminal/src/main/res/drawable/bg_preferencebg.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + diff --git a/nhterm/src/main/res/drawable/ic_description.xml b/terminal/src/main/res/drawable/ic_description.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_description.xml rename to terminal/src/main/res/drawable/ic_description.xml diff --git a/nhterm/src/main/res/drawable/ic_donate.xml b/terminal/src/main/res/drawable/ic_donate.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_donate.xml rename to terminal/src/main/res/drawable/ic_donate.xml diff --git a/nhterm/src/main/res/drawable/ic_github.xml b/terminal/src/main/res/drawable/ic_github.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_github.xml rename to terminal/src/main/res/drawable/ic_github.xml diff --git a/nhterm/src/main/res/drawable/ic_info.xml b/terminal/src/main/res/drawable/ic_info.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_info.xml rename to terminal/src/main/res/drawable/ic_info.xml diff --git a/nhterm/src/main/res/drawable/ic_kali_logo.xml b/terminal/src/main/res/drawable/ic_kali_logo.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_kali_logo.xml rename to terminal/src/main/res/drawable/ic_kali_logo.xml diff --git a/nhterm/src/main/res/drawable/ic_launcher_background.xml b/terminal/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_launcher_background.xml rename to terminal/src/main/res/drawable/ic_launcher_background.xml diff --git a/nhterm/src/main/res/drawable/ic_neoterm.xml b/terminal/src/main/res/drawable/ic_neoterm.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_neoterm.xml rename to terminal/src/main/res/drawable/ic_neoterm.xml diff --git a/nhterm/src/main/res/drawable/ic_new_session.xml b/terminal/src/main/res/drawable/ic_new_session.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_new_session.xml rename to terminal/src/main/res/drawable/ic_new_session.xml diff --git a/nhterm/src/main/res/drawable/ic_person.xml b/terminal/src/main/res/drawable/ic_person.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_person.xml rename to terminal/src/main/res/drawable/ic_person.xml diff --git a/nhterm/src/main/res/drawable/ic_tab_icon.png b/terminal/src/main/res/drawable/ic_tab_icon.png similarity index 100% rename from nhterm/src/main/res/drawable/ic_tab_icon.png rename to terminal/src/main/res/drawable/ic_tab_icon.png diff --git a/nhterm/src/main/res/drawable/ic_tab_icon_white.png b/terminal/src/main/res/drawable/ic_tab_icon_white.png similarity index 100% rename from nhterm/src/main/res/drawable/ic_tab_icon_white.png rename to terminal/src/main/res/drawable/ic_tab_icon_white.png diff --git a/nhterm/src/main/res/drawable/ic_terminal_running.xml b/terminal/src/main/res/drawable/ic_terminal_running.xml similarity index 100% rename from nhterm/src/main/res/drawable/ic_terminal_running.xml rename to terminal/src/main/res/drawable/ic_terminal_running.xml diff --git a/nhterm/src/main/res/drawable/text_select_handle_left_material.xml b/terminal/src/main/res/drawable/text_select_handle_left_material.xml similarity index 100% rename from nhterm/src/main/res/drawable/text_select_handle_left_material.xml rename to terminal/src/main/res/drawable/text_select_handle_left_material.xml diff --git a/nhterm/src/main/res/drawable/text_select_handle_right_material.xml b/terminal/src/main/res/drawable/text_select_handle_right_material.xml similarity index 100% rename from nhterm/src/main/res/drawable/text_select_handle_right_material.xml rename to terminal/src/main/res/drawable/text_select_handle_right_material.xml diff --git a/nhterm/src/main/res/layout/dialog_edit_text.xml b/terminal/src/main/res/layout/dialog_edit_text.xml similarity index 100% rename from nhterm/src/main/res/layout/dialog_edit_text.xml rename to terminal/src/main/res/layout/dialog_edit_text.xml diff --git a/nhterm/src/main/res/layout/dialog_edit_two_text.xml b/terminal/src/main/res/layout/dialog_edit_two_text.xml similarity index 100% rename from nhterm/src/main/res/layout/dialog_edit_two_text.xml rename to terminal/src/main/res/layout/dialog_edit_two_text.xml diff --git a/nhterm/src/main/res/layout/item_color.xml b/terminal/src/main/res/layout/item_color.xml similarity index 100% rename from nhterm/src/main/res/layout/item_color.xml rename to terminal/src/main/res/layout/item_color.xml diff --git a/nhterm/src/main/res/layout/item_complete_candidate.xml b/terminal/src/main/res/layout/item_complete_candidate.xml similarity index 100% rename from nhterm/src/main/res/layout/item_complete_candidate.xml rename to terminal/src/main/res/layout/item_complete_candidate.xml diff --git a/nhterm/src/main/res/layout/item_package.xml b/terminal/src/main/res/layout/item_package.xml similarity index 100% rename from nhterm/src/main/res/layout/item_package.xml rename to terminal/src/main/res/layout/item_package.xml diff --git a/nhterm/src/main/res/layout/layout_pm_package_list.xml b/terminal/src/main/res/layout/layout_pm_package_list.xml similarity index 100% rename from nhterm/src/main/res/layout/layout_pm_package_list.xml rename to terminal/src/main/res/layout/layout_pm_package_list.xml diff --git a/terminal/src/main/res/layout/m3_alert_dialog.xml b/terminal/src/main/res/layout/m3_alert_dialog.xml new file mode 100644 index 0000000..896bea4 --- /dev/null +++ b/terminal/src/main/res/layout/m3_alert_dialog.xml @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/terminal/src/main/res/layout/m3_alert_dialog_title.xml b/terminal/src/main/res/layout/m3_alert_dialog_title.xml new file mode 100644 index 0000000..0808c7f --- /dev/null +++ b/terminal/src/main/res/layout/m3_alert_dialog_title.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + diff --git a/nhterm/src/main/res/layout/popup_auto_complete.xml b/terminal/src/main/res/layout/popup_auto_complete.xml similarity index 75% rename from nhterm/src/main/res/layout/popup_auto_complete.xml rename to terminal/src/main/res/layout/popup_auto_complete.xml index a3b63e8..ccce7da 100644 --- a/nhterm/src/main/res/layout/popup_auto_complete.xml +++ b/terminal/src/main/res/layout/popup_auto_complete.xml @@ -1,5 +1,5 @@ - - + diff --git a/nhterm/src/main/res/layout/ui_about.xml b/terminal/src/main/res/layout/ui_about.xml similarity index 93% rename from nhterm/src/main/res/layout/ui_about.xml rename to terminal/src/main/res/layout/ui_about.xml index 4f85c32..9503224 100644 --- a/nhterm/src/main/res/layout/ui_about.xml +++ b/terminal/src/main/res/layout/ui_about.xml @@ -2,20 +2,19 @@ - + android:background="@color/colorPrimary"/> - @@ -26,12 +25,11 @@ android:layout_height="wrap_content" android:orientation="vertical"> - + + android:textAppearance="@style/TextAppearance.Material3.HeadlineMedium"/> - + - - + - + diff --git a/nhterm/src/main/res/layout/ui_color_scheme.xml b/terminal/src/main/res/layout/ui_color_scheme.xml similarity index 95% rename from nhterm/src/main/res/layout/ui_color_scheme.xml rename to terminal/src/main/res/layout/ui_color_scheme.xml index 4f6da4a..42ec05a 100644 --- a/nhterm/src/main/res/layout/ui_color_scheme.xml +++ b/terminal/src/main/res/layout/ui_color_scheme.xml @@ -27,7 +27,7 @@ android:layout_weight="1.0" android:background="@color/terminal_background"> - - - - \ No newline at end of file + diff --git a/nhterm/src/main/res/layout/ui_customize.xml b/terminal/src/main/res/layout/ui_customize.xml similarity index 94% rename from nhterm/src/main/res/layout/ui_customize.xml rename to terminal/src/main/res/layout/ui_customize.xml index 64b604c..cfa1307 100644 --- a/nhterm/src/main/res/layout/ui_customize.xml +++ b/terminal/src/main/res/layout/ui_customize.xml @@ -1,22 +1,21 @@ - - - - + + + + + diff --git a/nhterm/src/main/res/layout/ui_setup.xml b/terminal/src/main/res/layout/ui_setup.xml similarity index 100% rename from nhterm/src/main/res/layout/ui_setup.xml rename to terminal/src/main/res/layout/ui_setup.xml diff --git a/nhterm/src/main/res/layout/ui_term.xml b/terminal/src/main/res/layout/ui_term.xml similarity index 87% rename from nhterm/src/main/res/layout/ui_term.xml rename to terminal/src/main/res/layout/ui_term.xml index e530ddd..40f6b92 100644 --- a/nhterm/src/main/res/layout/ui_term.xml +++ b/terminal/src/main/res/layout/ui_term.xml @@ -3,7 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - - - diff --git a/nhterm/src/main/res/menu/older_menu_main.xml b/terminal/src/main/res/menu/older_menu_main.xml similarity index 95% rename from nhterm/src/main/res/menu/older_menu_main.xml rename to terminal/src/main/res/menu/older_menu_main.xml index d3f2f10..f68b1c8 100644 --- a/nhterm/src/main/res/menu/older_menu_main.xml +++ b/terminal/src/main/res/menu/older_menu_main.xml @@ -23,7 +23,7 @@ app:showAsAction="never"/> neoterm_general_bell neoterm_general_vibrate + neoterm_general_font_size + neoterm_general_print_font_size neoterm_general_backspace_map_to_esc neoterm_general_shell neoterm_general_initial_command @@ -20,4 +22,4 @@ neoterm_ui_font neoterm_ui_color_scheme - \ No newline at end of file + diff --git a/nhterm/src/main/res/values/shortcut_configs.xml b/terminal/src/main/res/values/shortcut_configs.xml similarity index 100% rename from nhterm/src/main/res/values/shortcut_configs.xml rename to terminal/src/main/res/values/shortcut_configs.xml diff --git a/nhterm/src/main/res/values/strings.xml b/terminal/src/main/res/values/strings.xml similarity index 94% rename from nhterm/src/main/res/values/strings.xml rename to terminal/src/main/res/values/strings.xml index 399d155..f12543b 100644 --- a/nhterm/src/main/res/values/strings.xml +++ b/terminal/src/main/res/values/strings.xml @@ -1,22 +1,27 @@ - NetHunter Terminal + Evolinx Terminal Copy Paste Super Paste More + Shell + Emergency Shell + System Shell + Root Shell + Toggle Tabs New Session New Session… New Emergency Shell - New Bash Shell + New System Shell New Root Shell %d session(s) (Wake Locked) Acquire Lock Release Lock - Hello, NH-Terminal + Welcome to Evolinx Let\'s Go! Select your installation method Online Setup @@ -45,7 +50,7 @@ Bell, Vibrate, Shell, Initial Command UI Settings FullScreen, Title Bar, Animation - Package Settings + Package Viewer Source, Updates, Upgrades Font, ColorScheme Disabled as of no required functions available by old android api @@ -84,6 +89,8 @@ Bell when receiving \'\\a\' Vibrate Vibrate when receiving \'\\a\' + Font size toast bubble + Show font size toast bubble when starting/viewing terminal BackSpace Mapped to Esc Send esc when backspace is pressed Login Program @@ -132,6 +139,7 @@ No command provided, did you put extras? Display title cannot be null Upgrade + Package successfully installed Package list successfully updated Package successfully upgraded Installation started. Please pay attention to the prompt that appears on the @@ -185,9 +193,9 @@ builds.\n Danger Zone - This will delete and re-copy required files to boot kali chroot, confirm? + This will delete and re-copy optional files, confirm? - http://http.kali.org/kali + https://files.martinvlba.eu sh diff --git a/nhterm/src/main/res/values/styles.xml b/terminal/src/main/res/values/styles.xml similarity index 93% rename from nhterm/src/main/res/values/styles.xml rename to terminal/src/main/res/values/styles.xml index cdf6d12..bcbe03e 100644 --- a/nhterm/src/main/res/values/styles.xml +++ b/terminal/src/main/res/values/styles.xml @@ -7,11 +7,15 @@ @color/colorPrimaryDark @style/checkbox_theme true + @style/nhcardviewstyle + @style/Widget.MaterialComponents.TextView @style/AppTheme.ActionBar @style/AppTheme.ActionBar + + + - @@ -62,8 +65,8 @@