From bb7573f5ddecec3af8c5a904a72ab7b8d5ff9109 Mon Sep 17 00:00:00 2001 From: KOWX712 Date: Thu, 6 Feb 2025 22:28:56 +0800 Subject: [PATCH] add denylist to target on boot choose "Select from DenyList" in WebUI once to enable this feature --- module/service.sh | 31 +++++++++++++++++++++++++---- module/uninstall.sh | 1 + module/webui/scripts/main.js | 2 +- module/webui/scripts/menu_option.js | 4 ++-- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/module/service.sh b/module/service.sh index 578f1da..e4c315b 100644 --- a/module/service.sh +++ b/module/service.sh @@ -6,6 +6,23 @@ TSPA="/data/adb/modules/tsupport-advance" aapt() { "$MODPATH/common/aapt" "$@"; } +add_denylist_to_target() { + exclamation_target=$(grep '!' "/data/adb/tricky_store/target.txt" | sed 's/!$//') + question_target=$(grep '?' "/data/adb/tricky_store/target.txt" | sed 's/?$//') + target=$(sed 's/[!?]$//' /data/adb/tricky_store/target.txt) + denylist=$(magisk --denylist ls 2>/dev/null | awk -F'|' '{print $1}' | grep -v "isolated") + + printf "%s\n" "$target" "$denylist" | sort -u > "/data/adb/tricky_store/target.txt" + + for target in $exclamation_target; do + sed -i "s/^$target$/$target!/" "/data/adb/tricky_store/target.txt" + done + + for target in $question_target; do + sed -i "s/^$target$/$target?/" "/data/adb/tricky_store/target.txt" + done +} + # Reset verified Boot Hash hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]') if [ -n "$hash_value" ]; then @@ -15,7 +32,6 @@ fi # Reset vendor patch if different with security patch security_patch=$(getprop ro.build.version.security_patch) vendor_patch=$(getprop ro.vendor.build.security_patch) - if [ "$vendor_patch" != "$security_patch" ]; then resetprop ro.vendor.build.security_patch "$security_patch" fi @@ -27,16 +43,23 @@ elif [ ! -d "$TSPA" ] && [ -f "/storage/emulated/0/stop-tspa-auto-target" ]; the rm -f "/storage/emulated/0/stop-tspa-auto-target" fi -# Hide module +# Magisk operation if [ -f "$MODPATH/action.sh" ]; then + # Hide module from Magisk manager if [ "$MODPATH" != "$HIDE_DIR" ]; then rm -rf "$HIDE_DIR" mv "$MODPATH" "$HIDE_DIR" fi MODPATH="$HIDE_DIR" -elif [ -d "$HIDE_DIR" ]; then - rm -rf "$HIDE_DIR" + + # Add target from denylist + # To trigger this, choose "Select from DenyList" in WebUI once + [ -f "/data/adb/tricky_store/target_from_denylist" ] && add_denylist_to_target +else + [ -d "$HIDE_DIR" ] && rm -rf "$HIDE_DIR" fi + +# Hide module from APatch, KernelSU, KSUWebUIStandalone, MMRL rm -f "$MODPATH/module.prop" # Symlink tricky store diff --git a/module/uninstall.sh b/module/uninstall.sh index 92f9a11..115d2dd 100644 --- a/module/uninstall.sh +++ b/module/uninstall.sh @@ -10,6 +10,7 @@ fi # Remove residue and restore aosp keybox. rm -rf "/data/adb/modules/.TA_utl" rm -f "/data/adb/boot_hash" +rm -f "/data/adb/tricky_store/target_from_denylist" if [ -d "$TS" ]; then [ -L "$TS/webroot" ] && rm -f "$TS/webroot" [ -L "$TS/action.sh" ] && rm -f "$TS/action.sh" diff --git a/module/webui/scripts/main.js b/module/webui/scripts/main.js index 19cb173..1890ce7 100644 --- a/module/webui/scripts/main.js +++ b/module/webui/scripts/main.js @@ -132,7 +132,7 @@ document.getElementById("save").addEventListener("click", async () => { return app; }); const updatedTargetContent = modifiedAppsList.join("\n"); - await execCommand(`echo "${updatedTargetContent}" > /data/adb/tricky_store/target.txt`); + await execCommand(`echo "${updatedTargetContent}" | sort -u > /data/adb/tricky_store/target.txt`); console.log("target.txt updated successfully."); showPrompt("prompt.saved_target"); for (const app of appsWithExclamation) { diff --git a/module/webui/scripts/menu_option.js b/module/webui/scripts/menu_option.js index 1d79e8b..6946e29 100644 --- a/module/webui/scripts/menu_option.js +++ b/module/webui/scripts/menu_option.js @@ -18,10 +18,9 @@ document.getElementById("deselect-all").addEventListener("click", () => toggleCh // Function to read the denylist and check corresponding apps document.getElementById("select-denylist").addEventListener("click", async () => { try { - const result = await execCommand(`magisk --denylist ls 2>/dev/null | awk -F'|' '{print $1}' | grep -v "isolated" | sort | uniq`); + const result = await execCommand(`magisk --denylist ls 2>/dev/null | awk -F'|' '{print $1}' | grep -v "isolated" | sort -u`); const denylistApps = result.split("\n").map(app => app.trim()).filter(Boolean); const apps = document.querySelectorAll(".card"); - toggleCheckboxes(false); apps.forEach(app => { const contentElement = app.querySelector(".content"); const packageName = contentElement.getAttribute("data-package"); @@ -30,6 +29,7 @@ document.getElementById("select-denylist").addEventListener("click", async () => checkbox.checked = true; } }); + await execCommand('touch "/data/adb/tricky_store/target_from_denylist"'); console.log("Denylist apps selected successfully."); } catch (error) { toast("Failed to read DenyList!");