You've already forked Tricky-Addon-Update-Target-List
mirror of
https://github.com/KOWX712/Tricky-Addon-Update-Target-List.git
synced 2025-09-06 06:37:09 +00:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cfb51e28fb | ||
|
|
6bdfff7f92 | ||
|
|
4146f09062 | ||
|
|
d223b39e29 | ||
|
|
6bf5009cb8 | ||
|
|
22bdb3986a | ||
|
|
2a04b7426d | ||
|
|
a03b785323 | ||
|
|
d307c57171 | ||
|
|
c6339f4e5d | ||
|
|
4c9e56c1db | ||
|
|
9302d39910 | ||
|
|
06d2edf57f | ||
|
|
ff6244b140 | ||
|
|
dfe4a23f8a | ||
|
|
5dd1496ca7 | ||
|
|
8c831cea39 | ||
|
|
42a8f6baae | ||
|
|
befa011c15 | ||
|
|
f576b4bb2f |
27
README.md
27
README.md
@@ -1,8 +1,11 @@
|
||||
# Tricky Addon - Update Target List
|
||||
Configure Tricky Store target.txt with KSU WebUI.
|
||||
|
||||
> [!NOTE]
|
||||
> _This module is **not** a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered._
|
||||
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest)
|
||||
[](https://nightly.link/KOWX712/Tricky-Addon-Update-Target-List/workflows/build/main?status=completed)
|
||||
|
||||
> [!WARNING]
|
||||
> This module is **not** a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered.
|
||||
|
||||
## Requirements
|
||||
- [Tricky store](https://github.com/5ec1cff/TrickyStore) module installed
|
||||
@@ -16,17 +19,12 @@ Configure Tricky Store target.txt with KSU WebUI.
|
||||
- Support KSUWebUIStandalone and latest MMRL
|
||||
- Automatic install [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) if none of them are installed.
|
||||
|
||||
### Module Visibility
|
||||
| Visibility | Behavior|
|
||||
| :--- | :--- |
|
||||
| Invisible | <li>Action/WebUI on the Tricky Store module card.</li><li>Uninstall by pressing the uninstall button at the bottom part of WebUI.</li> |
|
||||
| Visible | <li>For those who having trouble with KSUWebUIStandalone, such as</li><ul><li>using an old version of Magisk that lacks the action button</li><li>KSU built-in WebUI freeze</li></ul> |
|
||||
|
||||
### What Can This Module Do
|
||||
| Feature | Status |
|
||||
|:---|:---:|
|
||||
| Configure target.txt with app name display | ✅ |
|
||||
| Select apps from Magisk DenyList (optional) | ✅ |
|
||||
| Deselect [unnecessary apps](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/more-excldue.json) (optional) | ✅ |
|
||||
| Set verifiedBootHash (optional) | ✅ |
|
||||
| Provide AOSP Keybox (optional) | ✅ |
|
||||
| Valid Keybox (not guaranteed) | ❌ |
|
||||
@@ -35,15 +33,14 @@ Configure Tricky Store target.txt with KSU WebUI.
|
||||
| Periodically update target and add new apps | ❌ |
|
||||
| Add system apps (GMS added by default) | ❌ |
|
||||
|
||||
## Translation
|
||||
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webroot/locales/A-translate.md)
|
||||
## Localization
|
||||
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/A-translate.md)
|
||||
|
||||
## Acknowledgement
|
||||
- [j-hc/zygisk-detach](https://github.com/j-hc/zygisk-detach) - KSU WebUI template
|
||||
|
||||
## Links
|
||||
Download: [GitHub release](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
|
||||
|
||||
Update history: Read [Changelog](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/changelog.md)
|
||||
|
||||
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
||||
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
|
||||
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues)
|
||||
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/changelog.md)
|
||||
[](https://t.me/kowchannel)
|
||||
|
||||
10
changelog.md
10
changelog.md
@@ -8,6 +8,14 @@ GitHub release: [Tricky Addon: Update Target List](https://github.com/KOWX712/Tr
|
||||
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
||||
|
||||
## Changelog
|
||||
### v2.8
|
||||
- Fixed all KSUWebUIStandalone freeze issue, removed visible option.
|
||||
- Reduced WebUI loading time.
|
||||
- Added Japanese. Thanks to @reindex-ot.
|
||||
|
||||
### v2.7.1
|
||||
- Link redirect quick fix
|
||||
|
||||
### v2.7
|
||||
- Abandoned `UpdateTargetList.sh`; No longer automatically update target on boot.
|
||||
- Adapted with MMRL, Magisk user can uninstall KSUWebUIStandalone if you have latest MMRL installed, action button will redirect to MMRL if KSUWebUIStandalone not found.
|
||||
@@ -24,7 +32,7 @@ Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
||||
- New way to detect Xposed module, now can catch all Xposed module apk package name in Deselect Unnecessary option, feedback in [Telegram](https://t.me/kowchannel) or [create issue](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues) if missed any.
|
||||
- **Initial support for multiple languages**
|
||||
- Language available: **en-US**, **ru-RU**, **tl-PH**, **zh-CN**, **zh-TW**
|
||||
- Add language or fix translation error? [Read here](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/master/module/webroot/locales/A-translate.md).
|
||||
- Add language or fix translation error? [Read here](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/master/module/webui/locales/A-translate.md).
|
||||
|
||||
### v2.6-beta.3
|
||||
- Check in [release notes](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/tag/v2.6-beta.3).
|
||||
|
||||
@@ -4,7 +4,10 @@
|
||||
- Recommend to run with MT manager
|
||||
|
||||
## Changelog
|
||||
### v2.1, v2.2, v2.3, v2.4, v2.5, v2.6
|
||||
### v2.8
|
||||
- Remove wait time
|
||||
|
||||
### v2.1~2.7.1
|
||||
- Remain same with v2.0
|
||||
|
||||
### v2.0
|
||||
@@ -31,7 +34,6 @@
|
||||
- Synched some code with module script
|
||||
|
||||
## Link
|
||||
[Telegram channel](https://t.me/kowchannel)
|
||||
|
||||
[GitHub Release](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest)
|
||||
|
||||
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases)
|
||||
[](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues)
|
||||
[](https://t.me/kowchannel)
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Tricky Addon Lite: Update Target List Script v2.5
|
||||
# GitHub Repository: https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/master/lite-script_only/README.md
|
||||
# Tricky Addon Lite: Update Target List Script v2.8
|
||||
# GitHub Repository: https://github.com/KOWX712/Tricky-Addon-Update-Target-List/tree/main/lite-script_only
|
||||
# Telegram channel: https://t.me/kowchannel
|
||||
|
||||
# This script will put all non-system app into /data/adb/tricky_store/target.txt
|
||||
|
||||
###################################################
|
||||
# Configurable exclude and addition list
|
||||
# DO NOT remove default package names here
|
||||
# Don't remove default package names here
|
||||
###################################################
|
||||
|
||||
EXCLUDE="
|
||||
@@ -39,7 +39,6 @@ ADDITION=$(echo "$ADDITION" | tr '\n' ' ' | sed 's/^ //;s/ $//')
|
||||
|
||||
# Add all non-system apps to the target file and remove exclusions
|
||||
su -c pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | grep -Ev "$EXCLUDE" > /data/adb/tricky_store/target.txt
|
||||
sleep 1
|
||||
|
||||
# Add additional apps to the target file if they are not already present
|
||||
for app in $ADDITION; do
|
||||
|
||||
@@ -5,16 +5,68 @@
|
||||
MODPATH="/data/adb/modules/.TA_utl"
|
||||
COMPATH="$MODPATH/common"
|
||||
SCRIPT_DIR="/data/adb/tricky_store"
|
||||
URL="https://github.com/5ec1cff/KsuWebUIStandalone/releases/download/v1.0/KsuWebUI-1.0-34-release.apk"
|
||||
APK_DIR="$COMPATH/tmp"
|
||||
BBPATH="/data/adb/magisk/busybox \
|
||||
/data/adb/ksu/bin/busybox \
|
||||
/data/adb/ap/bin/busybox \
|
||||
/data/adb/modules/busybox-ndk/system/*/busybox"
|
||||
|
||||
. "$COMPATH/util_func.sh"
|
||||
check_wget() {
|
||||
for path in $BBPATH; do
|
||||
[ -f "$path" ] && BUSYBOX="$path" && break
|
||||
done
|
||||
if ! command -v wget >/dev/null || grep -q "wget-curl" "$(command -v wget)"; then
|
||||
if [ -n "$BUSYBOX" ]; then
|
||||
wget() { "$BUSYBOX" wget "$@"; }
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
if pm list packages | grep -q "$PACKAGE_NAME"; then
|
||||
echo "- Launching KSU WebUI..."
|
||||
am start -n "${PACKAGE_NAME}/.WebUIActivity" -e id "$MODID"
|
||||
get_webui() {
|
||||
echo "- Downloading the WebUI APK..."
|
||||
check_wget
|
||||
if ! wget --no-check-certificate -P "$APK_DIR" "$URL"; then
|
||||
echo "! Error: APK download failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "- Download complete."
|
||||
APK_PATH=$(find "$APK_DIR" -type f -name "*.apk" | head -n 1)
|
||||
if [ -z "$APK_PATH" ]; then
|
||||
echo "! Error: No APK file found in $APK_DIR."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "- Installing..."
|
||||
if ! pm install -r "$APK_PATH" >/dev/null 2>&1; then
|
||||
echo "! Error: APK installation failed."
|
||||
rm -f "$APK_PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "- Done."
|
||||
rm -f "$APK_PATH"
|
||||
|
||||
echo "- Launching..."
|
||||
if ! am start -n "io.github.a13e300.ksuwebui/.WebUIActivity" -e id "tricky_store"; then
|
||||
echo "! Error: WebUI launch failed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "- Application launched successfully."
|
||||
}
|
||||
|
||||
# Lunch KSUWebUI standalone or MMRL, install KSUWebUI standalone if both are not installed
|
||||
if pm list packages | grep -q "io.github.a13e300.ksuwebui"; then
|
||||
echo "- Launching WebUI in KSUWebUIStandalone..."
|
||||
am start -n "io.github.a13e300.ksuwebui/.WebUIActivity" -e id "tricky_store"
|
||||
elif pm list packages | grep -q "com.dergoogler.mmrl"; then
|
||||
echo "- Launching KSU WebUI..."
|
||||
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "$MODID"
|
||||
echo "- Launching WebUI in MMRL WebUI..."
|
||||
am start -n "com.dergoogler.mmrl/.ui.activity.webui.WebUIActivity" -e MOD_ID "tricky_store"
|
||||
else
|
||||
echo "- Installing KSU WebUI..."
|
||||
. "$COMPATH/get_WebUI.sh"
|
||||
fi
|
||||
get_webui
|
||||
fi
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
URL="https://github.com/5ec1cff/KsuWebUIStandalone/releases/download/v1.0/KsuWebUI-1.0-34-release.apk"
|
||||
APK_DIR="$COMPATH"
|
||||
|
||||
find_busybox
|
||||
check_wget
|
||||
|
||||
echo "- Downloading the WebUI apk..."
|
||||
download_webui
|
||||
echo "- Download complete."
|
||||
|
||||
APK_PATH=$(find "$APK_DIR" -type f -name "*.apk" | head -n 1)
|
||||
if [ -z "$APK_PATH" ]; then
|
||||
echo "Error: No APK file found in $APK_DIR."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "- Installing..."
|
||||
install_webui
|
||||
echo "- Done."
|
||||
rm -f "$APK_PATH"
|
||||
echo "- Launching..."
|
||||
am start -n "${PACKAGE_NAME}/.WebUIActivity" -e id "$MODID" </dev/null 2>&1 | cat
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Failed to start application."
|
||||
exit 1
|
||||
fi
|
||||
echo "- Application launched successfully."
|
||||
@@ -1,49 +1,71 @@
|
||||
#!/system/bin/sh
|
||||
|
||||
MODPATH=${0%/*}
|
||||
SKIPLIST="$MODPATH/skiplist"
|
||||
OUTPUT="$MODPATH/exclude-list"
|
||||
KBOUTPUT="$MODPATH/.extra"
|
||||
SKIPLIST="$MODPATH/tmp/skiplist"
|
||||
OUTPUT="$MODPATH/tmp/exclude-list"
|
||||
KBOUTPUT="$MODPATH/tmp/.extra"
|
||||
BBPATH="/data/adb/magisk/busybox \
|
||||
/data/adb/ksu/bin/busybox \
|
||||
/data/adb/ap/bin/busybox \
|
||||
/data/adb/modules/busybox-ndk/system/*/busybox"
|
||||
|
||||
. $MODPATH/util_func.sh
|
||||
|
||||
find_busybox
|
||||
check_wget
|
||||
|
||||
# Fetch additional package names
|
||||
wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/more-excldue.json" 2>/dev/null | \
|
||||
grep -o '"package-name": *"[^"]*"' | \
|
||||
awk -F'"' '{print $4}' > "$OUTPUT"
|
||||
|
||||
if [ ! -s "$OUTPUT" ]; then
|
||||
rm -f "$KBOUTPUT"
|
||||
skipfetch=true
|
||||
fi
|
||||
|
||||
# Find xposed package name
|
||||
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | while read -r PACKAGE; do
|
||||
if ! grep -Fq "$PACKAGE" "$SKIPLIST"; then
|
||||
pm path "$PACKAGE" | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r' | while read -r APK_PATH; do
|
||||
aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription" && echo "$PACKAGE" >> "$OUTPUT"
|
||||
done
|
||||
check_wget() {
|
||||
for path in $BBPATH; do
|
||||
[ -f "$path" ] && BUSYBOX="$path" && break
|
||||
done
|
||||
if ! command -v wget >/dev/null || grep -q "wget-curl" "$(command -v wget)"; then
|
||||
if [ -n "$BUSYBOX" ]; then
|
||||
wget() { "$BUSYBOX" wget "$@"; }
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
if [ "$skipfetch" != "true" ]; then
|
||||
aapt() { "$MODPATH/aapt" "$@"; }
|
||||
|
||||
get_kb() {
|
||||
check_wget
|
||||
wget --no-check-certificate -qO "$KBOUTPUT" "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/.extra"
|
||||
[ -s "$KBOUTPUT" ] || rm -f "$KBOUTPUT"
|
||||
}
|
||||
|
||||
if [ ! -s "$KBOUTPUT" ]; then
|
||||
rm -f "$KBOUTPUT"
|
||||
get_unnecessary() {
|
||||
check_wget
|
||||
if [ ! -s "$OUTPUT" ] || [ ! -f "$OUTPUT" ]; then
|
||||
wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/more-excldue.json" 2>/dev/null | \
|
||||
grep -o '"package-name": *"[^"]*"' | \
|
||||
awk -F'"' '{print $4}' > "$OUTPUT"
|
||||
fi
|
||||
get_xposed
|
||||
}
|
||||
|
||||
if [ -d "$MODPATH/temp" ]; then
|
||||
JSON=$(wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json")
|
||||
get_xposed() {
|
||||
pm list packages -3 | cut -d':' -f2 | grep -vxF -f "$SKIPLIST" | grep -vxF -f "$OUTPUT" | while read -r PACKAGE; do
|
||||
APK_PATH=$(pm path "$PACKAGE" | grep "base.apk" | cut -d':' -f2 | tr -d '\r')
|
||||
if [[ -n "$APK_PATH" ]]; then
|
||||
if aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription"; then
|
||||
echo "$PACKAGE" >> "$OUTPUT"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
check_update() {
|
||||
check_wget
|
||||
if [ -d "$MODPATH/update" ]; then
|
||||
JSON=$(wget --no-check-certificate -q -O - "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json") || exit 1
|
||||
REMOTE_VERSION=$(echo "$JSON" | grep -o '"versionCode": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ')
|
||||
LOCAL_VERSION=$(grep -o 'versionCode=[0-9]*' "$MODPATH/temp/module.prop" | awk -F= '{print $2}')
|
||||
LOCAL_VERSION=$(grep -o 'versionCode=[0-9]*' "$MODPATH/update/module.prop" | awk -F= '{print $2}')
|
||||
if [ "$REMOTE_VERSION" -gt "$LOCAL_VERSION" ]; then
|
||||
echo "update"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
--kb) get_kb; exit ;;
|
||||
--unnecessary) get_unnecessary; exit ;;
|
||||
--xposed) get_xposed; exit ;;
|
||||
--update) check_update; exit ;;
|
||||
esac
|
||||
11
module/common/repo.json
Normal file
11
module/common/repo.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"support": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/issues",
|
||||
"categories": [
|
||||
"WebUI"
|
||||
],
|
||||
"readme": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/refs/heads/main/README.md",
|
||||
"note": {
|
||||
"message": "This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered"
|
||||
},
|
||||
"license": " GPL-3.0"
|
||||
}
|
||||
@@ -1,46 +0,0 @@
|
||||
PACKAGE_NAME="io.github.a13e300.ksuwebui"
|
||||
MODID="set-id"
|
||||
BBPATH="/data/adb/modules/busybox-ndk/system/*/busybox \
|
||||
/data/adb/magisk/busybox \
|
||||
/data/adb/ksu/bin/busybox \
|
||||
/data/adb/ap/bin/busybox"
|
||||
|
||||
find_busybox() {
|
||||
for path in $BBPATH; do
|
||||
if [ -f "$path" ]; then
|
||||
BUSYBOX="$path"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
check_wget() {
|
||||
if ! command -v wget >/dev/null || grep -q "wget-curl" "$(command -v wget)"; then
|
||||
if find_busybox; then
|
||||
wget() { "$BUSYBOX" wget "$@"; }
|
||||
else
|
||||
echo "Error: busybox not found." > "$OUTPUT"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
aapt() { "$MODPATH/aapt" "$@"; }
|
||||
|
||||
download_webui() {
|
||||
wget --no-check-certificate -P "$APK_DIR" "$URL"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: APK download failed."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
install_webui() {
|
||||
pm install -r "$APK_PATH" </dev/null 2>&1 | cat
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: APK installation failed."
|
||||
rm -f "$APK_PATH"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
@@ -33,11 +33,17 @@ fi
|
||||
ui_print "- Installing..."
|
||||
initialize
|
||||
|
||||
ui_print "- Creating config directory..."
|
||||
ui_print "- Finalizing..."
|
||||
find_config
|
||||
migrate_old_boot_hash
|
||||
|
||||
rm -f "$MODPATH/install_func.sh"
|
||||
|
||||
ui_print " "
|
||||
ui_print "! This module is not a part of the Tricky Store module. DO NOT report any issues to Tricky Store if encountered."
|
||||
ui_print " "
|
||||
|
||||
sleep 1
|
||||
|
||||
ui_print "- Installation completed successfully! "
|
||||
ui_print " "
|
||||
|
||||
@@ -1,59 +1,37 @@
|
||||
initialize() {
|
||||
if [ -f "$SCRIPT_DIR/UpdateTargetList.sh" ]; then
|
||||
rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
|
||||
fi
|
||||
if [ -d "/data/adb/modules/$NEW_MODID" ]; then
|
||||
rm -rf "/data/adb/modules/$NEW_MODID"
|
||||
fi
|
||||
# Cleanup left over
|
||||
[ -d "/data/adb/modules/$NEW_MODID" ] && rm -rf "/data/adb/modules/$NEW_MODID"
|
||||
|
||||
# Set permission
|
||||
set_perm $COMPATH/get_extra.sh 0 2000 0755
|
||||
set_perm $COMPATH/get_WebUI.sh 0 2000 0755
|
||||
|
||||
|
||||
# Handdle Magisk/non-Magisk root manager
|
||||
if [ "$ACTION" = "false" ]; then
|
||||
rm -f "$MODPATH/action.sh"
|
||||
rm -f "$COMPATH/get_WebUI.sh"
|
||||
echo "**********************************************"
|
||||
echo "- Tricky Addon's visibility in root manager?"
|
||||
echo " VOL [+]: Visible"
|
||||
echo " VOL [-]: Invisible (default)"
|
||||
echo "**********************************************"
|
||||
|
||||
key_check
|
||||
if [[ "$keycheck" == "KEY_VOLUMEUP" ]]; then
|
||||
echo "- Setting to visible..."
|
||||
rm -rf "$COMPATH/temp"
|
||||
NEW_MODID="$MODID"
|
||||
else
|
||||
tmp_dir
|
||||
fi
|
||||
NEW_MODID="$MODID"
|
||||
else
|
||||
tmp_dir
|
||||
mkdir -p "$COMPATH/update/common"
|
||||
cp "$COMPATH/.default" "$COMPATH/update/common/.default"
|
||||
cp "$MODPATH/uninstall.sh" "$COMPATH/update/uninstall.sh"
|
||||
fi
|
||||
sed -i "s|\"set-path\"|\"/data/adb/modules/$NEW_MODID/\"|" "$MODPATH/webroot/index.js" || {
|
||||
|
||||
#Set specific path
|
||||
sed -i "s|\"set-path\"|\"/data/adb/modules/$NEW_MODID/\"|" "$MODPATH/webui/index.js" || {
|
||||
ui_print "! Failed to set path"
|
||||
abort
|
||||
}
|
||||
sed -i "s|\"set-id\"|\"$NEW_MODID\"|" "$COMPATH/util_func.sh" || {
|
||||
ui_print "! Failed to set id"
|
||||
abort
|
||||
}
|
||||
|
||||
|
||||
# Set aapt binary
|
||||
cp "$MODPATH/module.prop" "$COMPATH/update/module.prop"
|
||||
mv "$MODPATH/bin/$(getprop ro.product.cpu.abi)/aapt" "$COMPATH/aapt"
|
||||
set_perm $COMPATH/aapt 0 2000 0755
|
||||
rm -rf "$MODPATH/bin"
|
||||
}
|
||||
|
||||
tmp_dir() {
|
||||
mkdir -p "$COMPATH/temp/common"
|
||||
cp "$COMPATH/.default" "$COMPATH/temp/common/.default"
|
||||
cp "$MODPATH/module.prop" "$COMPATH/temp/module.prop"
|
||||
cp "$MODPATH/uninstall.sh" "$COMPATH/temp/uninstall.sh"
|
||||
}
|
||||
|
||||
find_config() {
|
||||
if [ -d "$CONFIG_DIR" ]; then
|
||||
rm -rf "$CONFIG_DIR"
|
||||
fi
|
||||
# Remove legacy setup
|
||||
[ -f "$SCRIPT_DIR/UpdateTargetList.sh" ] && rm -f "$SCRIPT_DIR/UpdateTargetList.sh"
|
||||
[ -d "$CONFIG_DIR" ] && rm -rf "$CONFIG_DIR"
|
||||
}
|
||||
|
||||
migrate_old_boot_hash() {
|
||||
@@ -63,23 +41,3 @@ migrate_old_boot_hash() {
|
||||
rm -f "$COMPATH/boot_hash"
|
||||
fi
|
||||
}
|
||||
|
||||
key_check() {
|
||||
while true; do
|
||||
key_check=$(/system/bin/getevent -qlc 1)
|
||||
key_event=$(echo "$key_check" | awk '{ print $3 }' | grep 'KEY_')
|
||||
key_status=$(echo "$key_check" | awk '{ print $4 }')
|
||||
if [[ "$key_event" == *"KEY_"* && "$key_status" == "DOWN" ]]; then
|
||||
keycheck="$key_event"
|
||||
break
|
||||
fi
|
||||
done
|
||||
while true; do
|
||||
key_check=$(/system/bin/getevent -qlc 1)
|
||||
key_event=$(echo "$key_check" | awk '{ print $3 }' | grep 'KEY_')
|
||||
key_status=$(echo "$key_check" | awk '{ print $4 }')
|
||||
if [[ "$key_event" == *"KEY_"* && "$key_status" == "UP" ]]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
id=TA_utl
|
||||
name=Tricky Addon - Update Target List
|
||||
version=v2.7
|
||||
versionCode=270
|
||||
version=v2.8
|
||||
versionCode=280
|
||||
author=KOWX712
|
||||
description=A WebUI to conifgure tricky store target.txt
|
||||
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json
|
||||
|
||||
@@ -6,18 +6,13 @@ while [ -z "$(ls -A /data/adb/modules/)" ]; do
|
||||
done
|
||||
|
||||
if [ ! -d "$TS" ] || [ -f "$TS/remove" ]; then
|
||||
if [ -d "$MODPATH/common/temp" ]; then
|
||||
mkdir -p "/data/adb/modules/TA_utl"
|
||||
cp -rf "$MODPATH/common/temp"/* "/data/adb/modules/TA_utl/"
|
||||
if [ -f "$MODPATH/action.sh" ]; then
|
||||
[ -d "/data/adb/modules/TA_utl" ] && rm -rf "/data/adb/modules/TA_utl"
|
||||
cp -rf "$MODPATH/common/temp" "/data/adb/modules/TA_utl"
|
||||
touch "/data/adb/modules/TA_utl/remove"
|
||||
else
|
||||
touch "$MODPATH/remove"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$MODPATH/common/temp" ]; then
|
||||
rm -rf "/data/adb/modules/.TA_utl"
|
||||
fi
|
||||
|
||||
rm -f "$TS/action.sh"
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
MODPATH=${0%/*}
|
||||
HIDE_DIR="/data/adb/modules/.TA_utl"
|
||||
TS="/data/adb/modules/tricky_store"
|
||||
SCRIPT_DIR="/data/adb/tricky_store"
|
||||
TSPA="/data/adb/modules/tsupport-advance"
|
||||
|
||||
aapt() { "$MODPATH/common/aapt" "$@"; }
|
||||
|
||||
# Reset verified Boot Hash
|
||||
hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]')
|
||||
if [ -n "$hash_value" ]; then
|
||||
resetprop -n ro.boot.vbmeta.digest "$hash_value"
|
||||
@@ -17,30 +19,31 @@ elif [ ! -d "$TSPA" ] && [ -f "/storage/emulated/0/stop-tspa-auto-target" ]; the
|
||||
rm -f "/storage/emulated/0/stop-tspa-auto-target"
|
||||
fi
|
||||
|
||||
if [ -d "$MODPATH/common/temp" ]; then
|
||||
if [ "$KSU" ] || [ "$APATCH" ]; then
|
||||
rm -f "$MODPATH/module.prop"
|
||||
fi
|
||||
if [ ! -d "$HIDE_DIR" ]; then
|
||||
# Hide module
|
||||
if [ -f "$MODPATH/action.sh" ]; then
|
||||
if [[ "$MODPATH" != "$HIDE_DIR" ]]; then
|
||||
rm -rf "$HIDE_DIR"
|
||||
mv "$MODPATH" "$HIDE_DIR"
|
||||
elif [[ "$MODPATH" != "$HIDE_DIR" ]]; then
|
||||
rm -rf "$MODPATH"
|
||||
exit 0
|
||||
fi
|
||||
MODPATH="$HIDE_DIR"
|
||||
if [ -f "$MODPATH/action.sh" ]; then
|
||||
ln -s "$MODPATH/action.sh" "$TS/action.sh"
|
||||
fi
|
||||
ln -s "$MODPATH/webroot" "$TS/webroot"
|
||||
elif [ -d "$HIDE_DIR" ]; then
|
||||
rm -rf "$HIDE_DIR"
|
||||
fi
|
||||
rm -f "$MODPATH/module.prop"
|
||||
|
||||
OUTPUT_APP="$MODPATH/common/applist"
|
||||
OUTPUT_SKIP="$MODPATH/common/skiplist"
|
||||
# Symlink tricky store
|
||||
[ -f "$MODPATH/action.sh" ] && ln -s "$MODPATH/action.sh" "$TS/action.sh"
|
||||
ln -s "$MODPATH/webui" "$TS/webroot"
|
||||
|
||||
# Optimization
|
||||
OUTPUT_APP="$MODPATH/common/tmp/applist"
|
||||
OUTPUT_SKIP="$MODPATH/common/tmp/skiplist"
|
||||
|
||||
until [ "$(getprop sys.boot_completed)" = "1" ]; do
|
||||
sleep 1
|
||||
done
|
||||
|
||||
mkdir -p "$MODPATH/common/tmp"
|
||||
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_APP"
|
||||
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP"
|
||||
pm list packages -3 </dev/null 2>&1 | cat | awk -F: '{print $2}' | while read -r PACKAGE; do
|
||||
|
||||
@@ -11,10 +11,7 @@ fi
|
||||
rm -rf "/data/adb/modules/.TA_utl"
|
||||
rm -f "/data/adb/boot_hash"
|
||||
if [ -d "$TS" ]; then
|
||||
if [ -f "$TS/action.sh" ]; then
|
||||
rm -f "$TS/action.sh"
|
||||
else
|
||||
rm -rf "$TS/webroot"
|
||||
fi
|
||||
rm -f "$TS/action.sh"
|
||||
rm -rf "$TS/webroot"
|
||||
fi
|
||||
xxd -r -p "$MODPATH/common/.default" | base64 -d > "$SCRIPT_DIR/keybox.xml"
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.92,5.51h0L3.71,2.29A1,1,0,0,0,2.29,3.71L4.56,6A15.21,15.21,0,0,0,1.4,8.39a1,1,0,0,0,0,1.41,1,1,0,0,0,.71.3,1,1,0,0,0,.7-.29A13.07,13.07,0,0,1,6.05,7.46L7.54,9a10.78,10.78,0,0,0-3.32,2.27,1,1,0,1,0,1.42,1.4,8.8,8.8,0,0,1,3.45-2.12l1.62,1.61a7.07,7.07,0,0,0-3.66,1.94,1,1,0,1,0,1.42,1.4A5,5,0,0,1,12,14a4.13,4.13,0,0,1,.63.05l7.66,7.66a1,1,0,0,0,1.42,0,1,1,0,0,0,0-1.42ZM12,16a3,3,0,1,0,3,3A3,3,0,0,0,12,16Zm0,4a1,1,0,1,1,1-1A1,1,0,0,1,12,20ZM22.61,8.39A15,15,0,0,0,10.29,4.1a1,1,0,1,0,.22,2A13.07,13.07,0,0,1,21.2,9.81a1,1,0,0,0,1.41-1.42Zm-4.25,4.24a1,1,0,0,0,1.42-1.4,10.75,10.75,0,0,0-4.84-2.82,1,1,0,1,0-.52,1.92A8.94,8.94,0,0,1,18.36,12.63Z"/></svg>
|
||||
|
Before Width: | Height: | Size: 725 B |
@@ -6,6 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title data-i18n="title">Document</title>
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
|
||||
<link rel="stylesheet" href="/styles.css" type="text/css">
|
||||
<link rel="stylesheet" type="text/css" href="/mmrl/insets.css" />
|
||||
<script type="module" crossorigin src="/index.js"></script>
|
||||
@@ -16,16 +17,17 @@
|
||||
<div class="header-block"></div>
|
||||
<div class="header">
|
||||
<div id="title" data-i18n="title"></div>
|
||||
<button id="help-button" class="help-button"><i class="fa fa-question-circle"></i></button>
|
||||
<button id="help-button" class="help-button"><svg xmlns="http://www.w3.org/2000/svg" height="21px" viewBox="0 -1060 960 990" width="21px" fill="#6E6E6E"><path d="M478-240q21 0 35.5-14.5T528-290q0-21-14.5-35.5T478-340q-21 0-35.5 14.5T428-290q0 21 14.5 35.5T478-240Zm-36-154h74q0-33 7.5-52t42.5-52q26-26 41-49.5t15-56.5q0-56-41-86t-97-30q-57 0-92.5 30T342-618l66 26q5-18 22.5-39t53.5-21q32 0 48 17.5t16 38.5q0 20-12 37.5T506-526q-44 39-54 59t-10 73Zm38 314q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-80q134 0 227-93t93-227q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93Zm0-320Z"/></svg></button>
|
||||
<div class="no-connection">
|
||||
<img src="wifi-slash.svg" alt="No Connection Icon" class="wifi-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 -920 960 960" width="20px" fill="#6E6E6E"><path d="M790-56 414-434q-47 11-87.5 33T254-346l-84-86q32-32 69-56t79-42l-90-90q-41 21-76.5 46.5T84-516L0-602q32-32 66.5-57.5T140-708l-84-84 56-56 736 736-58 56Zm-310-64q-42 0-71-29.5T380-220q0-42 29-71t71-29q42 0 71 29t29 71q0 41-29 70.5T480-120Zm236-238-29-29-29-29-144-144q81 8 151.5 41T790-432l-74 74Zm160-158q-77-77-178.5-120.5T480-680q-21 0-40.5 1.5T400-674L298-776q44-12 89.5-18t92.5-6q142 0 265 53t215 145l-84 86Z"/></svg>
|
||||
</div>
|
||||
<div class="language-dropdown">
|
||||
<button class="language-button">
|
||||
<i class="fa fa-compass"></i>
|
||||
<i class="material-icons">language</i>
|
||||
</button>
|
||||
<div class="language-menu">
|
||||
<button class="language-option" data-lang="en-US">English</button>
|
||||
<button class="language-option" data-lang="ja-JP">日本語</button>
|
||||
<button class="language-option" data-lang="ru-RU">Русский</button>
|
||||
<button class="language-option" data-lang="tl-PH">Tagalog</button>
|
||||
<button class="language-option" data-lang="zh-CN">中文(简体)</button>
|
||||
@@ -49,7 +51,9 @@
|
||||
<!-- Menu Options -->
|
||||
<div class="search-menu-container">
|
||||
<div class="search-card">
|
||||
<span class="search-icon"><i class="fa fa-search"></i></span>
|
||||
<span class="search-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="19px" viewBox="0 -960 960 960" width="24px" fill="#6E6E6E"><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg>
|
||||
</span>
|
||||
<input type="text" class="search-input" id="search" placeholder="Search" data-i18n="search_placeholder">
|
||||
<button class="clear-btn" id="clear-btn">✕</button>
|
||||
</div>
|
||||
@@ -125,15 +129,10 @@
|
||||
<p data-i18n="disclaimer"></p>
|
||||
<br>
|
||||
<p>
|
||||
<span data-i18n="telegram_channel"></span>
|
||||
<br>
|
||||
<span>t.me/kowchannel</span>
|
||||
</p>
|
||||
<br>
|
||||
<p>
|
||||
<span data-i18n="github"></span>
|
||||
<br>
|
||||
<span>github.com/KOWX712/Tricky-Addon-Update-Target-List</span>
|
||||
<div class="link">
|
||||
<i class="fa fa-telegram" id="telegram" aria-hidden="true"> <span id="link-text" data-i18n="telegram_channel"></span></i>
|
||||
<i class="fa fa-github" id="github" aria-hidden="true"> <span id="link-text" data-i18n="github"></span></i>
|
||||
</div>
|
||||
</p>
|
||||
<br>
|
||||
<p data-i18n="acknowledgment"></p>
|
||||
@@ -145,7 +144,7 @@
|
||||
<!-- Footer -->
|
||||
<div class="footer">
|
||||
<div class="uninstall-container hidden-uninstall">
|
||||
<i class="fa fa-trash"></i>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#FFFFFF"><path d="M280-120q-33 0-56.5-23.5T200-200v-520h-40v-80h200v-40h240v40h200v80h-40v520q0 33-23.5 56.5T680-120H280Zm400-600H280v520h400v-520ZM360-280h80v-360h-80v360Zm160 0h80v-360h-80v360ZM280-720v520-520Z"/></svg>
|
||||
<span data-i18n="uninstall_webui"></span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -41,6 +41,10 @@ const loadingIndicator = document.querySelector('.loading');
|
||||
const floatingBtn = document.querySelector('.floating-btn');
|
||||
const prompt = document.getElementById('prompt');
|
||||
|
||||
// About Elements
|
||||
const telegramLink = document.getElementById('telegram');
|
||||
const githubLink = document.getElementById('github');
|
||||
|
||||
const basePath = "set-path";
|
||||
const ADDITIONAL_APPS = [
|
||||
"com.google.android.gms",
|
||||
@@ -60,7 +64,7 @@ let availableLanguages = ['en-US'];
|
||||
// Function to check for available language
|
||||
async function initializeAvailableLanguages() {
|
||||
try {
|
||||
const multiLang = await execCommand(`find ${basePath}webroot/locales -type f -name "*.json" ! -name "A-template.json" -exec basename -s .json {} \\;`);
|
||||
const multiLang = await execCommand(`find ${basePath}webui/locales -type f -name "*.json" ! -name "A-template.json" -exec basename -s .json {} \\;`);
|
||||
availableLanguages = multiLang.trim().split('\n');
|
||||
} catch (error) {
|
||||
console.error('Failed to fetch available languages:', error);
|
||||
@@ -314,7 +318,12 @@ async function refreshAppList() {
|
||||
await new Promise(resolve => setTimeout(resolve, 500));
|
||||
window.scrollTo(0, 0);
|
||||
if (noConnection.style.display === "flex") {
|
||||
await runExtraScript();
|
||||
try {
|
||||
await updateCheck();
|
||||
await execCommand(`[ -f ${basePath}common/tmp/exclude-list ] && rm -f "${basePath}common/tmp/exclude-list"`);
|
||||
} catch (error) {
|
||||
console.error("Error occurred:", error);
|
||||
}
|
||||
}
|
||||
await fetchAppList();
|
||||
loadingIndicator.style.display = 'none';
|
||||
@@ -340,35 +349,56 @@ function deselectAllApps() {
|
||||
});
|
||||
}
|
||||
|
||||
// Function to run the extra script
|
||||
async function runExtraScript() {
|
||||
try {
|
||||
const scriptPath = `${basePath}common/get_extra.sh`;
|
||||
const output = await execCommand(scriptPath);
|
||||
console.log("Extra script executed successfully.");
|
||||
noConnection.style.display = "none";
|
||||
if (output.includes("update")) {
|
||||
console.log("Update detected from extra script.");
|
||||
showPrompt("new_update");
|
||||
updateCard.style.display = "flex";
|
||||
await execCommand(`
|
||||
su -c "mkdir -p '/data/adb/modules/TA_utl' &&
|
||||
cp -rf '${basePath}common/temp/'* '/data/adb/modules/TA_utl/'"
|
||||
`);
|
||||
} else {
|
||||
console.log("No update detected from extra script.");
|
||||
// Function to run the update check
|
||||
async function updateCheck() {
|
||||
try {
|
||||
const scriptPath = `sh ${basePath}common/get_extra.sh --update`;
|
||||
const output = await execCommand(scriptPath);
|
||||
console.log("update script executed successfully.");
|
||||
noConnection.style.display = "none";
|
||||
if (output.includes("update")) {
|
||||
console.log("Update detected from extra script.");
|
||||
showPrompt("new_update");
|
||||
updateCard.style.display = "flex";
|
||||
await execCommand(`
|
||||
su -c "
|
||||
if [ -f '${basePath}action.sh' ]; then
|
||||
if [ -d "/data/adb/modules/TA_utl" ]; then
|
||||
rm -rf "/data/adb/modules/TA_utl"
|
||||
fi
|
||||
cp -rf '${basePath}common/update' '/data/adb/modules/TA_utl'
|
||||
else
|
||||
cp '${basePath}common/update/module.prop' '/data/adb/modules/TA_utl/module.prop'
|
||||
fi
|
||||
"
|
||||
`);
|
||||
} else {
|
||||
console.log("No update detected from extra script.");
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to execute update script:", error);
|
||||
showPrompt("no_internet", false);
|
||||
noConnection.style.display = "flex";
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to execute Extra script:", error);
|
||||
showPrompt("no_internet", false);
|
||||
noConnection.style.display = "flex";
|
||||
}
|
||||
}
|
||||
|
||||
// Function to read the exclude list and uncheck corresponding apps
|
||||
async function deselectUnnecessaryApps() {
|
||||
try {
|
||||
const result = await execCommand(`cat ${basePath}common/exclude-list`);
|
||||
const fileCheck = await execCommand(`test -f ${basePath}common/tmp/exclude-list && echo "exists" || echo "not found"`);
|
||||
if (fileCheck.trim() === "not found") {
|
||||
setTimeout(async () => {
|
||||
await execCommand(`sh ${basePath}common/get_extra.sh --unnecessary`);
|
||||
}, 0);
|
||||
console.log("Exclude list not found. Running the unnecessary apps script.");
|
||||
} else {
|
||||
setTimeout(async () => {
|
||||
await execCommand(`sh ${basePath}common/get_extra.sh --xposed`);
|
||||
}, 0);
|
||||
console.log("Exclude list found. Running xposed script.");
|
||||
}
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
const result = await execCommand(`cat ${basePath}common/tmp/exclude-list`);
|
||||
const UnnecessaryApps = result.split("\n").map(app => app.trim()).filter(Boolean);
|
||||
const apps = document.querySelectorAll(".card");
|
||||
apps.forEach(app => {
|
||||
@@ -376,10 +406,10 @@ async function deselectUnnecessaryApps() {
|
||||
const packageName = contentElement.getAttribute("data-package");
|
||||
const checkbox = app.querySelector(".checkbox");
|
||||
if (UnnecessaryApps.includes(packageName)) {
|
||||
checkbox.checked = false; // Uncheck if found in more-exclude list
|
||||
checkbox.checked = false;
|
||||
}
|
||||
});
|
||||
console.log("unnecessary apps deselected successfully.");
|
||||
console.log("Unnecessary apps deselected successfully.");
|
||||
} catch (error) {
|
||||
console.error("Failed to deselect unnecessary apps:", error);
|
||||
}
|
||||
@@ -448,9 +478,13 @@ async function aospkb() {
|
||||
|
||||
// Function to replace valid kb
|
||||
async function extrakb() {
|
||||
const sourcePath = `${basePath}common/.extra`;
|
||||
setTimeout(async () => {
|
||||
await execCommand(`sh ${basePath}common/get_extra.sh --kb`);
|
||||
}, 100);
|
||||
const sourcePath = `${basePath}common/tmp/.extra`;
|
||||
const destinationPath = "/data/adb/tricky_store/keybox.xml";
|
||||
try {
|
||||
await new Promise(resolve => setTimeout(resolve, 300));
|
||||
const fileExists = await execCommand(`[ -f ${sourcePath} ] && echo "exists"`);
|
||||
if (fileExists.trim() !== "exists") {
|
||||
throw new Error(".extra file not found");
|
||||
@@ -465,7 +499,6 @@ async function extrakb() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Function to handle Verified Boot Hash
|
||||
async function setBootHash() {
|
||||
const showCard = () => {
|
||||
@@ -559,10 +592,10 @@ async function fetchAppList() {
|
||||
} catch (error) {
|
||||
console.error("Failed to read target.txt file:", error);
|
||||
}
|
||||
|
||||
|
||||
let applistMap = {};
|
||||
try {
|
||||
const applistResult = await execCommand(`cat ${basePath}common/applist`);
|
||||
const applistResult = await execCommand(`cat ${basePath}common/tmp/applist`);
|
||||
applistMap = applistResult
|
||||
.split("\n")
|
||||
.reduce((map, line) => {
|
||||
@@ -695,12 +728,14 @@ document.querySelector(".uninstall-container").addEventListener("click", async (
|
||||
try {
|
||||
await execCommand(`
|
||||
su -c "
|
||||
if [ -d '${basePath}common/temp/' ]; then
|
||||
mkdir -p '/data/adb/modules/TA_utl' &&
|
||||
cp -rf '${basePath}common/temp/'* '/data/adb/modules/TA_utl/' &&
|
||||
if [ -f '${basePath}action.sh' ]; then
|
||||
if [ -d "/data/adb/modules/TA_utl" ]; then
|
||||
rm -rf "/data/adb/modules/TA_utl"
|
||||
fi
|
||||
cp -rf '${basePath}common/update' '/data/adb/modules/TA_utl' &&
|
||||
touch '/data/adb/modules/TA_utl/remove'
|
||||
else
|
||||
touch '/data/adb/modules/TA_utl/remove'
|
||||
touch '${basePath}remove'
|
||||
fi
|
||||
"
|
||||
`);
|
||||
@@ -765,12 +800,32 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
checkMagisk();
|
||||
loadingIndicator.style.display = "none";
|
||||
document.querySelector('.uninstall-container').classList.remove('hidden-uninstall');
|
||||
runExtraScript();
|
||||
setTimeout(updateCheck, 0);
|
||||
});
|
||||
|
||||
// Redirect to GitHub release page
|
||||
updateCard.addEventListener('click', () => {
|
||||
window.location.href = 'https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest';
|
||||
updateCard.addEventListener('click', async () => {
|
||||
try {
|
||||
await execCommand('am start -a android.intent.action.VIEW -d https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/latest');
|
||||
} catch (error) {
|
||||
console.error('Error opening GitHub Release link:', error);
|
||||
}
|
||||
});
|
||||
|
||||
telegramLink.addEventListener('click', async () => {
|
||||
try {
|
||||
await execCommand('am start -a android.intent.action.VIEW -d https://t.me/kowchannel');
|
||||
} catch (error) {
|
||||
console.error('Error opening Telegram link:', error);
|
||||
}
|
||||
});
|
||||
|
||||
githubLink.addEventListener('click', async () => {
|
||||
try {
|
||||
await execCommand('am start -a android.intent.action.VIEW -d https://github.com/KOWX712/Tricky-Addon-Update-Target-List');
|
||||
} catch (error) {
|
||||
console.error('Error opening GitHub link:', error);
|
||||
}
|
||||
});
|
||||
|
||||
// Function to execute shell commands
|
||||
@@ -1,5 +1,5 @@
|
||||
# Translation Guide
|
||||
## Fix Translation Error
|
||||
## Fix Bad Translation
|
||||
1. Fork this repository.
|
||||
2. Find your language string file in `/module/webroot/locales/`.
|
||||
3. Edit the string value with translated incorrectly.
|
||||
@@ -8,7 +8,7 @@
|
||||
---
|
||||
## Add a New Language
|
||||
### Simple
|
||||
- Contact me in Telegram to add a new translation langauge for you.
|
||||
- Contact me in Telegram to add a new translation langauge.
|
||||
|
||||
### Advanced
|
||||
1. Fork this repository.
|
||||
54
module/webui/locales/ja-JP.json
Normal file
54
module/webui/locales/ja-JP.json
Normal file
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"title": "Tricky Addon - Update Target List",
|
||||
"search_placeholder": "検索",
|
||||
"save_and_update_button": "保存",
|
||||
"boot_hash_save_button": "保存",
|
||||
"loading": "読み込み中...",
|
||||
"boot_hash_input_placeholder": "確認付きブートハッシュをここに貼り付け",
|
||||
"uninstall_webui": "WebUI をアンインストール",
|
||||
|
||||
"update_available": "新しいバージョンの準備完了",
|
||||
"redirect_to_release": "タップで最新のバージョンをダウンロード",
|
||||
|
||||
"refresh": "更新",
|
||||
"select_all": "すべて選択",
|
||||
"deselect_all": "すべての選択を解除",
|
||||
"select_denylist": "DenyList から選択",
|
||||
"deselect_unnecessary": "不要な選択を解除",
|
||||
"set_aosp_keybox": "AOSP Keybox を設定",
|
||||
"set_valid_keybox": "有効な Keybox を設定",
|
||||
"set_verified_boot_hash": "確認付きブートハッシュを設定",
|
||||
"about": "このアドオンについて",
|
||||
|
||||
"help_instructions": "使い方",
|
||||
"save_and_update_description": "現在の設定を target.txt に保存します。",
|
||||
"refresh_description": "アプリリストと除外リストを更新します。",
|
||||
"select_deselect": "すべてを選択と解除",
|
||||
"select_description": "現在のインターフェースのすべてのアプリを選択または解除します。",
|
||||
"select_denylist_description": "Magisk の環境でのみ使用可能です。Deny List 内のアプリを選択します(推奨)。",
|
||||
"deselect_unnecessary_description": "不要なカテゴリー: Xposed モジュール、root マネージャー、root 関連アプリ、Bootloader の状態を確認しない一般的なアプリです。このオプションはインターネット接続が必要です。",
|
||||
"set_keybox": "AOSP と 有効な Keybox",
|
||||
"set_aosp_keybox_description": "Tricky Store の keybox.xml を置き換えます。有効な Keybox がなくなった場合は、AOSP Keybox に置き換えられます。インターネット接続が必要です。",
|
||||
"set_verified_boot_hash_description": "Key Attestation Demo から確認付きブートハッシュの値を取得します。ro.boot.vbmeta.digest をリセットして異常なブート状態を修正します。",
|
||||
|
||||
"module_name_line1": "Tricky Addon",
|
||||
"module_name_line2": "Update Target List",
|
||||
"by": "開発者: ",
|
||||
"telegram_channel": "Telegram チャンネル",
|
||||
"github": "GitHub",
|
||||
"disclaimer": "このモジュールは、Tricky Store モジュールの一部ではありません。Tricky Store 公式に問題を報告しないでください。",
|
||||
"acknowledgment": "謝辞",
|
||||
|
||||
"no_internet": "インターネット接続を確認してください。",
|
||||
"aosp_key_set": "AOSP Keybox の設定に成功しました。",
|
||||
"key_set_error": "Keybox の更新に失敗しました。",
|
||||
"valid_key_set": "有効な Keybox の設定に成功しました。",
|
||||
"no_valid_fallback": "有効な Keybox がありません。AOSP Keybox に置き換えます。",
|
||||
"boot_hash_set": "確認付きブートハッシュの更新に成功しました。",
|
||||
"boot_hash_set_error": "確認付きブートハッシュの更新に失敗しました。",
|
||||
"saved_target": "設定を target.txt に保存しました。",
|
||||
"save_error": "設定の保存に失敗しました。",
|
||||
"uninstall_prompt": "WebUI は再起動後に削除されます。",
|
||||
"uninstall_failed": "WebUI のアンインストールに失敗しました。",
|
||||
"new_update": "新しいバージョンがあります!"
|
||||
}
|
||||
@@ -45,17 +45,11 @@ body {
|
||||
}
|
||||
|
||||
.no-connection {
|
||||
padding-bottom: 2px;
|
||||
padding: 0;
|
||||
display: none;
|
||||
position: relative;
|
||||
margin-right: 0px;
|
||||
color: #7E7E7E;
|
||||
}
|
||||
|
||||
.no-connection .wifi-icon {
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
filter: invert(0.6) sepia(0) saturate(0) hue-rotate(180deg) brightness(0.8) contrast(1);
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.language-dropdown {
|
||||
@@ -64,10 +58,9 @@ body {
|
||||
}
|
||||
|
||||
.language-button {
|
||||
padding-top: 5px;
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 23px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.language-menu {
|
||||
@@ -125,12 +118,10 @@ body {
|
||||
}
|
||||
|
||||
.help-button {
|
||||
padding-left: 5px;
|
||||
margin-right: auto;
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 22px;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.help-overlay {
|
||||
@@ -348,14 +339,6 @@ body {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.about-content p span[data-i18n="telegram_channel"] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.about-content p span[data-i18n="github"] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.about-content p[data-i18n="disclaimer"] {
|
||||
font-style: italic;
|
||||
}
|
||||
@@ -369,6 +352,36 @@ body {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.link{
|
||||
flex: 0 1 auto;
|
||||
}
|
||||
|
||||
#telegram {
|
||||
font-size: 18px;
|
||||
padding: 5px 10px;
|
||||
background-color: #38A7ED;
|
||||
color: #fff;
|
||||
border-radius: 8px;
|
||||
margin-right: 3px;
|
||||
margin-bottom: 5px;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
#github {
|
||||
font-size: 18px;
|
||||
padding: 5px 10px;
|
||||
background-color: #606060;
|
||||
color: #fff;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 5px;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
#link-text {
|
||||
font-size: 17px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.search-menu-container {
|
||||
display: flex;
|
||||
position: fixed;
|
||||
@@ -399,8 +412,8 @@ body {
|
||||
|
||||
.search-icon {
|
||||
position: absolute;
|
||||
left: 18px;
|
||||
font-size: 15px;
|
||||
padding-top: 5px;
|
||||
left: 15px;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
@@ -566,7 +579,7 @@ body {
|
||||
.card {
|
||||
background-color: white;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
border-radius: 12px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 10px;
|
||||
outline: none;
|
||||
@@ -723,8 +736,6 @@ body {
|
||||
|
||||
.uninstall-container i {
|
||||
margin-right: 5px;
|
||||
font-size: 18px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.uninstall-container span {
|
||||
@@ -753,10 +764,18 @@ body {
|
||||
background-color: #830000;
|
||||
}
|
||||
|
||||
#telegram:active {
|
||||
background-color: #1A78B3;
|
||||
}
|
||||
|
||||
#github:active {
|
||||
background-color: #4D4D4D;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
body {
|
||||
background-color: #121212;
|
||||
color: #eee;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.header-block,
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"versionCode": 270,
|
||||
"version": "v2.7",
|
||||
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v2.7/TrickyAddonModule-v2.7.zip",
|
||||
"versionCode": 280,
|
||||
"version": "v2.8",
|
||||
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v2.8/TrickyAddonModule-v2.8.zip",
|
||||
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/changelog.md"
|
||||
}
|
||||
Reference in New Issue
Block a user