Rebrand from nhterm to evolinx + alot more

* Refactor from com.offsec.nhterm -> com.evolinx.terminal
* Re-enable First time setup activity which will downlaod + install bootstrap
* Move all the app configs home dir below usr dir with its other assets
* Rebrand all strings from nhterm/kali and etc to evolinx related strings
* Removed 'System Shell' as default session will be basically system shell
* Make sure to use R.string.something instead of hardcoded strings in NeoTermActivity for session names
* This big commit has more small changes but these dont need to be mentioned here
This commit is contained in:
Martinvlba 2024-05-07 13:10:42 -07:00
parent 595ad16434
commit e1826b3641
288 changed files with 1340 additions and 1176 deletions

View File

@ -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

View File

@ -19,12 +19,12 @@ repositories {
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
jvmTarget = "17"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
jvmTarget = "17"
}
}
dependencies {

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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 {

View File

@ -1,4 +1,4 @@
package io.neolang.runtime
package com.evolinx.neolang.runtime
/**
* @author kiva

View File

@ -1,4 +1,4 @@
package io.neolang.runtime
package com.evolinx.neolang.runtime
/**
* @author kiva

View File

@ -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

View File

@ -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 {

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.bridge;
package com.evolinx.terminal.bridge;
import android.content.Context;
import android.content.Intent;

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.bridge;
package com.evolinx.terminal.bridge;
import java.util.Objects;

View File

@ -20,7 +20,7 @@ android {
jniLibs.srcDirs = ['src/main/jniLibs']
}
}
namespace 'com.offsec.nhterm.xorg'
namespace 'com.evolinx.terminal.xorg'
}
dependencies {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm;
package com.evolinx.terminal;
import android.content.Context;

View File

@ -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

View File

@ -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

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm;
package com.evolinx.terminal;
/**
* @author kiva

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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"]

View File

@ -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 {

View File

@ -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
}
}
}
}

View File

@ -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();
}
}

View File

@ -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");
}
}
}

View File

@ -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.
-->
<androidx.appcompat.widget.Toolbar
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/primary_toolbar"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
@ -22,4 +22,4 @@ License.
android:background="@android:color/transparent"
android:theme="@style/ThemeOverlay.AppCompat.Dark"
android:visibility="invisible"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

View File

@ -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"

View File

@ -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

Binary file not shown.

View File

@ -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

Binary file not shown.

View File

@ -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

View File

@ -1,10 +0,0 @@
color-scheme: {
name: "Default"
version: 1.1
colors: {
foreground: #ffffff
cursor: #a9aaa9
background: #14181c
}
}

View File

@ -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!!
}
}

View File

@ -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<PreferenceActivity.Header>?) {
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item?.itemId) {
android.R.id.home -> finish()
}
return item?.let { super.onOptionsItemSelected(it) }
}
}

View File

@ -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<Header>?) {
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item?.itemId) {
android.R.id.home ->
finish()
}
return item?.let { super.onOptionsItemSelected(it) }
}
}

View File

@ -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<Header>?) {
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item?.itemId) {
android.R.id.home ->
finish()
}
return item?.let { super.onOptionsItemSelected(it) }
}
}

View File

@ -1 +1 @@
include ':nhterm', ':chrome-tabs', ':NeoLang', ':Xorg', ':NeoTermBridge'
include ':terminal', ':chrome-tabs', ':NeoLang', ':Xorg', ':NeoTermBridge'

View File

@ -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'

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.offsec.nhterm">
package="com.evolinx.terminal">
<uses-feature
android:name="android.hardware.touchscreen"
@ -143,6 +143,7 @@
android:name=".ui.other.AboutActivity"
android:exported="false"
android:label="@string/about"
android:parentActivityName=".ui.settings.BasePreferenceActivity"
android:theme="@style/AppTheme.NoActionBar"/>
<activity
android:name=".ui.other.CrashActivity"
@ -175,18 +176,17 @@
android:label="@string/pref_customization_color_scheme"
android:theme="@style/AppTheme.NoActionBar"/>
<activity
android:name=".ui.settings.SettingActivity"
android:exported="false"
android:name=".ui.settings.BasePreferenceActivity"
android:parentActivityName=".ui.term.NeoTermActivity"
android:theme="@style/AppTheme"/>
<activity
android:name=".ui.settings.GeneralSettingsActivity"
android:exported="false"
android:name=".ui.settings.BasePreferenceGeneralActivity"
android:parentActivityName=".ui.settings.BasePreferenceActivity"
android:theme="@style/AppTheme"/>
<activity
android:name=".ui.settings.UISettingsActivity"
android:exported="false"
android:name=".ui.settings.BasePreferenceUIActivity"
android:parentActivityName=".ui.settings.BasePreferenceActivity"
android:theme="@style/AppTheme"/>
<service
android:name=".services.NeoTermService"
android:enabled="true"/>

View File

@ -1,5 +1,5 @@
color-scheme: {
name: "Kali"
name: "Default"
version: 1.0
colors: {

View File

@ -7,7 +7,7 @@
#include <fcntl.h>
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

View File

@ -10,7 +10,7 @@
#include <unistd.h>
#include <string.h>
#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);
}

View File

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@ -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)

View File

@ -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.

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
import android.util.Log;

View File

@ -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.

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
import java.util.HashMap;
import java.util.Map;

View File

@ -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) {

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
import java.util.Map;
import java.util.Properties;

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
/**
* Current terminal colors (if different from default).

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
import android.util.Base64;
import android.util.Log;

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
import java.nio.charset.StandardCharsets;

View File

@ -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 {

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
import android.annotation.SuppressLint;
import android.os.Handler;

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.backend;
package com.evolinx.terminal.backend;
/**
* <p>

View File

@ -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;
}
}

View File

@ -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 {

View File

@ -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 {

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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 {

View File

@ -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() {

View File

@ -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

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.component.completion
package com.evolinx.terminal.component.completion
interface MarkScoreListener {
fun onMarkScore(score: Int)

View File

@ -1,4 +1,4 @@
package com.offsec.nhterm.component.completion
package com.evolinx.terminal.component.completion
import java.io.File

View File

@ -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,

View File

@ -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

Some files were not shown because too many files have changed in this diff Show More