Skip to content

Commit

Permalink
1.6.6
Browse files Browse the repository at this point in the history
- Bug fixes
  • Loading branch information
DerGoogler authored Jun 30, 2024
1 parent f6ad67a commit 8ad18f8
Show file tree
Hide file tree
Showing 10 changed files with 148 additions and 279 deletions.
34 changes: 26 additions & 8 deletions common/service.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,32 @@

MODPATH=${0%/*}

_getprop() {
exec /system/bin/getprop $@ | sed 's/^"\(.*\)"$/\1/'
get_conf_from_file() {
local file="$1"
local default_value="$3"
local value
if [ -f "$file" ]; then
value=$(sed -n "s|^$2 = ||p" "$file" 2>/dev/null)
if [ -z "$value" ]; then
echo "$default_value"
else
echo "$value"
fi
else
echo "$default_value"
fi
}

node_on_android() { echo "$(get_conf_from_file "/data/adb/mmrl/node_on_android.prop" "$1" "$2")"; }
mkshrc() { echo "$(get_conf_from_file "/data/adb/mmrl/mkshrc.prop" "$1" "$2")"; }

NODE_PATH="$NODE_PATH:/system/usr/share/node/node_modules"

ROOTFS=$(_getprop "persist.mkshrc.rootfs" "/data/mkuser")
DISABLE_SERVICE=$(_getprop "persist.nodejs.service" "true")
DESC_TEXT=$(_getprop "persist.nodejs.desc" "true")
DISABLE_NOTIFY=$(_getprop "persist.nodejs.notify" "true")
ENABLE_LOGGING=$(_getprop "persist.nodejs.logging" "false")
ROOTFS=$(mkshrc "rootfs" "/data/mkuser")
ENABLE_SERVICE=$(node_on_android "service" "true")
DESC_TEXT=$(node_on_android "desc" "true")
DISABLE_NOTIFY=$(node_on_android "notify" "true")
ENABLE_LOGGING=$(node_on_android "logging" "false")

PIDS_DIR="$ROOTFS/var/nodeservice"
PIDS_FILE="$PIDS_DIR/pids.prop"
Expand Down Expand Up @@ -111,4 +126,7 @@ while [[ $(getprop sys.boot_completed) -ne 1 ]]; do
done

sleep 120
main "$@"

if [ "$ENABLE_SERVICE" = "true" ]; then
main "$@"
fi
135 changes: 0 additions & 135 deletions install.sh
Original file line number Diff line number Diff line change
@@ -1,126 +1,8 @@
##########################################################################################
#
# Magisk Module Installer Script
#
##########################################################################################
##########################################################################################
#
# Instructions:
#
# 1. Place your files into system folder (delete the placeholder file)
# 2. Fill in your module's info into module.prop
# 3. Configure and implement callbacks in this file
# 4. If you need boot scripts, add them into common/post-fs-data.sh or common/service.sh
# 5. Add your additional or modified system properties into common/system.prop
#
##########################################################################################

##########################################################################################
# Config Flags
##########################################################################################

# Set to true if you do *NOT* want Magisk to mount
# any files for you. Most modules would NOT want
# to set this flag to true
SKIPMOUNT=false

# Set to true if you need to load system.prop
PROPFILE=false

# Set to true if you need post-fs-data script
POSTFSDATA=false

# Set to true if you need late_start service script
LATESTARTSERVICE=true

##########################################################################################
# Replace list
##########################################################################################

# List all directories you want to directly replace in the system
# Check the documentations for more info why you would need this

# Construct your list in the following format
# This is an example
REPLACE_EXAMPLE="
/system/app/Youtube
/system/priv-app/SystemUI
/system/priv-app/Settings
/system/framework
"

# Construct your own list here
REPLACE="
"

##########################################################################################
#
# Function Callbacks
#
# The following functions will be called by the installation framework.
# You do not have the ability to modify update-binary, the only way you can customize
# installation is through implementing these functions.
#
# When running your callbacks, the installation framework will make sure the Magisk
# internal busybox path is *PREPENDED* to PATH, so all common commands shall exist.
# Also, it will make sure /data, /system, and /vendor is properly mounted.
#
##########################################################################################
##########################################################################################
#
# The installation framework will export some variables and functions.
# You should use these variables and functions for installation.
#
# ! DO NOT use any Magisk internal paths as those are NOT public API.
# ! DO NOT use other functions in util_functions.sh as they are NOT public API.
# ! Non public APIs are not guranteed to maintain compatibility between releases.
#
# Available variables:
#
# MAGISK_VER (string): the version string of current installed Magisk
# MAGISK_VER_CODE (int): the version code of current installed Magisk
# BOOTMODE (bool): true if the module is currently installing in Magisk Manager
# MODPATH (path): the path where your module files should be installed
# TMPDIR (path): a place where you can temporarily store files
# ZIPFILE (path): your module's installation zip
# ARCH (string): the architecture of the device. Value is either arm, arm64, x86, or x64
# IS64BIT (bool): true if $ARCH is either arm64 or x64
# API (int): the API level (Android version) of the device
#
# Availible functions:
#
# ui_print <msg>
# print <msg> to console
# Avoid using 'echo' as it will not display in custom recovery's console
#
# abort <msg>
# print error message <msg> to console and terminate installation
# Avoid using 'exit' as it will skip the termination cleanup steps
#
# set_perm <target> <owner> <group> <permission> [context]
# if [context] is empty, it will default to "u:object_r:system_file:s0"
# this function is a shorthand for the following commands
# chown owner.group target
# chmod permission target
# chcon context target
#
# set_perm_recursive <directory> <owner> <group> <dirpermission> <filepermission> [context]
# if [context] is empty, it will default to "u:object_r:system_file:s0"
# for all files in <directory>, it will call:
# set_perm file owner group filepermission context
# for all directories in <directory> (including itself), it will call:
# set_perm dir owner group dirpermission context
#
##########################################################################################
##########################################################################################
# If you need boot scripts, DO NOT use general boot scripts (post-fs-data.d/service.d)
# ONLY use module scripts as it respects the module status (remove/disable) and is
# guaranteed to maintain the same behavior in future Magisk releases.
# Enable boot scripts by setting the flags in the config section above.
##########################################################################################

# Set what you want to display when installing your module

print_modname() {
ui_print "======================================="
ui_print " Node.js "
Expand Down Expand Up @@ -150,7 +32,6 @@ conflicting_modules() {
[ -d "$MODULES/$module" ] && abort "$module is installed, please remove it to use this module."
done
}
# Copy/extract your module files into $MODPATH in on_install.

on_install() {
ui_print "- Checking Android SDK version"
Expand All @@ -159,26 +40,18 @@ on_install() {
abort "Node.js requires Android 6 and above to work!"
fi

# The following is the default implementation: extract $ZIPFILE/system to $MODPATH
# Extend/change the logic to whatever you want
ui_print "- Extracting module files"
unzip -o "$ZIPFILE" 'system/*' -d $MODPATH >&2

# Check if one of conflicting modules is installed
conflicting_modules terminalmods
require_modules mkshrc

# Symbolic link for lowercase/UPPERCASE support in terminal
[ -d "$MODPATH/system/bin/" ] || mkdir -p "$MODPATH/system/bin/"
# ln -sf node $MODPATH/system/bin/nodejs

ui_print "- Successfully installed Yarn"
ui_print "- Please reboot where the \"yarn\" command will be available."
}

# Only some special files require specific permissions
# This function will be called after on_install is done
# The default permissions should be good enough for most cases

set_permissions() {
# The following is the default rule, DO NOT remove
Expand All @@ -191,12 +64,4 @@ set_permissions() {
set_perm $MODPATH/$YARN_HOME/bin/yarng 0 0 0755
set_perm $MODPATH/$YARN_HOME/bin/yarn.js 0 0 0755
set_perm $MODPATH/$YARN_HOME/bin/yarnpkg 0 0 0755

# Here are some examples:
# set_perm_recursive $MODPATH/system/lib 0 0 0755 0644
# set_perm $MODPATH/system/bin/app_process32 0 2000 0755 u:object_r:zygote_exec:s0
# set_perm $MODPATH/system/bin/dex2oat 0 2000 0755 u:object_r:dex2oat_exec:s0
# set_perm $MODPATH/system/lib/libart.so 0 0 0644
}

# You can add more functions to assist your custom script code
12 changes: 0 additions & 12 deletions mmrl.json

This file was deleted.

4 changes: 2 additions & 2 deletions module.prop
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
id=node_on_android
name=Systemless Node.js
version=1.5.6
versionCode=156
version=1.6.6
versionCode=166
author=Der_Googler
description=Node.js is a cross-platform, open-source server environment that can run on Windows, Linux, Unix, macOS, and more.
30 changes: 0 additions & 30 deletions system/usr/share/mmrl/config/node_on_android.mdx

This file was deleted.

61 changes: 61 additions & 0 deletions system/usr/share/mmrl/config/node_on_android/App.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import React from "react";
import { Page, Toolbar } from "@mmrl/ui";
import { useConfig, useActivity, useStrings } from "@mmrl/hooks";
import { BugReport } from "@mui/icons-material";
import { List, Divider, ListItemText, Switch, ListItemButton, ListSubheader, ListItem, ListItemIcon } from "@mui/material";

function App() {
const { context } = useActivity();
const { strings } = useStrings();

const [config, setConfig] = useConfig();

const renderToolbar = () => {
return (
<Toolbar modifier="noshadow">
<Toolbar.Left>
<Toolbar.BackButton onClick={context.popPage} />
</Toolbar.Left>
<Toolbar.Center>{strings("title")}</Toolbar.Center>
</Toolbar>
);
};

return (
<Page sx={{ p: 0 }} renderToolbar={renderToolbar}>
<List subheader={<ListSubheader>{strings("service")}</ListSubheader>}>
<ListItem>
<ListItemText primary={strings("s_up_notify")} />
<Switch checked={config.notify} onChange={(e) => setConfig("notify", e.target.checked)} />
</ListItem>
<ListItem>
<ListItemText primary={strings("logging")} />
<Switch checked={config.logging} onChange={(e) => setConfig("logging", e.target.checked)} />
</ListItem>
<ListItem>
<ListItemText primary={strings("desc_notice")} secondary={strings("desc_notice_sub")} />
<Switch checked={config.desc} onChange={(e) => setConfig("desc", e.target.checked)} />
</ListItem>
<ListItem>
<ListItemText primary={strings("service_title")} secondary={strings("service_desc")} />
<Switch checked={config.service} onChange={(e) => setConfig("service", e.target.checked)} />
</ListItem>
</List>

<Divider />

<List subheader={<ListSubheader>{strings("project")}</ListSubheader>}>
<ListItem disablePadding>
<ListItemButton onClick={() => window.open("https://github.com/Magisk-Modules-Alt-Repo/node/issues")}>
<ListItemIcon>
<BugReport />
</ListItemIcon>
<ListItemText primary={strings("report_issue")} />
</ListItemButton>
</ListItem>
</List>
</Page>
);
}

export { App };
Loading

0 comments on commit 8ad18f8

Please sign in to comment.