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
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d9a00b9540 | ||
|
|
ed77c72a79 | ||
|
|
b5370ad088 | ||
|
|
bb7573f5dd | ||
|
|
ccffd2eaed | ||
|
|
d9c1cdc11d | ||
|
|
e1f9c8904a | ||
|
|
3b98a88c77 | ||
|
|
0b8dcd4503 | ||
|
|
913118ac60 | ||
|
|
cb4276643a | ||
|
|
0087575117 | ||
|
|
5f01b4fed1 | ||
|
|
1f7a4c174b | ||
|
|
19f6b156f6 | ||
|
|
63874eeb8b | ||
|
|
2c5082acbc | ||
|
|
1cb810405a | ||
|
|
142dfdbe81 | ||
|
|
5ef6293924 | ||
|
|
a6b35e8d85 |
3
.gitattributes
vendored
3
.gitattributes
vendored
@@ -3,8 +3,9 @@
|
|||||||
*.prop text eol=lf
|
*.prop text eol=lf
|
||||||
*.md text eol=lf
|
*.md text eol=lf
|
||||||
*.xml text eol=lf
|
*.xml text eol=lf
|
||||||
|
*.json text eol=lf
|
||||||
|
.extra text eol=lf
|
||||||
META-INF/** text eol=lf
|
META-INF/** text eol=lf
|
||||||
|
|
||||||
# Denote all files that are truly binary and should not be modified.
|
# Denote all files that are truly binary and should not be modified.
|
||||||
common/addon/**/tools/** binary
|
|
||||||
module/bin/**/** binary
|
module/bin/**/** binary
|
||||||
31
.github/workflows/json-lint.yml
vendored
Normal file
31
.github/workflows/json-lint.yml
vendored
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
name: pr_jsonlint
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'module/webui/locales/*.json'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
|
||||||
|
- name: Install JSON linter
|
||||||
|
run: npm install -g jsonlint
|
||||||
|
|
||||||
|
- name: Lint JSON files
|
||||||
|
run: |
|
||||||
|
for file in $(find module/webui/locales -name "*.json"); do
|
||||||
|
echo "Checking $file"
|
||||||
|
if ! jsonlint "$file"; then
|
||||||
|
echo "Error in $file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
28
README.md
28
README.md
@@ -16,22 +16,22 @@ Configure Tricky Store target.txt with KSU WebUI.
|
|||||||
|
|
||||||
### Magisk
|
### Magisk
|
||||||
- Action button to open WebUI
|
- Action button to open WebUI
|
||||||
- Support KSUWebUIStandalone and latest MMRL
|
- Support [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) and [MMRL](https://github.com/MMRLApp/MMRL)
|
||||||
- Automatic install [KSUWebUIStandalone](https://github.com/5ec1cff/KsuWebUIStandalone) if none of them are installed.
|
- Automatic KSUWebUIStandalone install if none of them are installed.
|
||||||
|
|
||||||
### What Can This Module Do
|
### What Can This Module Do
|
||||||
| Feature | Status |
|
| Feature | Status |
|
||||||
|:---|:---:|
|
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----: |
|
||||||
| Configure target.txt with app name display | ✅ |
|
| Configure target.txt with app name display | ✅ |
|
||||||
| Long press to choose `!` or `?` mode for the app. [Auto](https://github.com/5ec1cff/TrickyStore/releases/tag/1.1.0)<br>Use this only when the app cannot work without this. | ✅ |
|
| Long press to choose `!` or `?` mode for the app. [Auto](https://github.com/5ec1cff/TrickyStore/releases/tag/1.1.0)<br>Use this only when the app cannot work without this. | ✅ |
|
||||||
| Select apps from Magisk DenyList `optional` | ✅ |
|
| Select apps from Magisk DenyList `optional` | ✅ |
|
||||||
| Deselect [unnecessary apps](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/more-exclude.json) `optional` | ✅ |
|
| Deselect [unnecessary apps](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/more-exclude.json) `optional` | ✅ |
|
||||||
| Set verifiedBootHash `optional` | ✅ |
|
| Set verifiedBootHash `optional` | ✅ |
|
||||||
| Provide AOSP Keybox `optional` | ✅ |
|
| Provide AOSP Keybox `optional` | ✅ |
|
||||||
| Valid Keybox `not guaranteed` | ❌ |
|
| Valid Keybox `not guaranteed` | ❌ |
|
||||||
| Shamiko Whitelist switch. [Why?](https://github.com/rushizgithub/shamiko?tab=readme-ov-file#whitelist) | ❌ |
|
| Shamiko Whitelist switch. [Why?](https://github.com/rushizgithub/shamiko?tab=readme-ov-file#whitelist) | ❌ |
|
||||||
| Periodically add all app to target.txt | ❌ |
|
| Periodically add all app to target.txt | ❌ |
|
||||||
| Add system apps `GMS added by default` | ❌ |
|
| Add system apps `GMS added by default` | ❌ |
|
||||||
|
|
||||||
## Localization
|
## Localization
|
||||||
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/A-translate.md)
|
- Read [Translation Guide](https://github.com/KOWX712/Tricky-Addon-Update-Target-List/blob/main/module/webui/locales/A-translate.md)
|
||||||
|
|||||||
22
changelog.md
22
changelog.md
@@ -8,6 +8,24 @@ GitHub release: [Tricky Addon: Update Target List](https://github.com/KOWX712/Tr
|
|||||||
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
### v3.3
|
||||||
|
- Support auto config `security_patch.txt` for Tricky Store v1.2.1 or higher.
|
||||||
|
- No longer need to add `!` to Play Store for devices that have security patch older than one year to get strong integrity in new A13+ check.
|
||||||
|
- **Magisk:** automatically add apps from DenyList to `target.txt` on boot. To enable this feature, click "Select from DenyList" once in WebUI after update.
|
||||||
|
|
||||||
|
### v3.2
|
||||||
|
- Add `android` and `com.android.vending` by default.
|
||||||
|
- Handle `ro.vendor.build.security_patch` if the value is different.
|
||||||
|
- Updated Japanese translation (#11, @reindex-ot)
|
||||||
|
- Added Turkish translation (@berkmirsatk)
|
||||||
|
|
||||||
|
### v3.1
|
||||||
|
- Added `com.google.android.gsf` and `com.android.vending` into WebUI app list. (#10, @ChiseWaguri)
|
||||||
|
- Fixed multiple instances of GMS appeared in the app list when GMS isn't a system app.
|
||||||
|
- Added auto backup `keybox.xml` to `keybox.xml.bak` before replacing it.
|
||||||
|
- Minor animation improvements and code optimizations.
|
||||||
|
- [Markdown support](https://github.com/markedjs/marked) for future update changelog in WebUI.
|
||||||
|
|
||||||
### v3.0
|
### v3.0
|
||||||
- Animation improvement: new checkbox animation, new touch ripple animation, and more.
|
- Animation improvement: new checkbox animation, new touch ripple animation, and more.
|
||||||
- Adjust save button and prompt position in MMRL.
|
- Adjust save button and prompt position in MMRL.
|
||||||
@@ -21,7 +39,7 @@ Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
|||||||
- Optimized scripts, thanks to @backslashxx.
|
- Optimized scripts, thanks to @backslashxx.
|
||||||
- Fixed freeze in weak connection.
|
- Fixed freeze in weak connection.
|
||||||
- Added Spanish, thanks to @Keinta15.
|
- Added Spanish, thanks to @Keinta15.
|
||||||
- Removed rescriction on installation but module will still be removed if tricky store is not found after reboot.
|
- Removed restriction on installation but module will still be removed if Tricky Store is not found after reboot.
|
||||||
|
|
||||||
### v2.8
|
### v2.8
|
||||||
- Fixed all KSUWebUIStandalone freeze issue, removed visible option.
|
- Fixed all KSUWebUIStandalone freeze issue, removed visible option.
|
||||||
@@ -39,7 +57,7 @@ Telegram channel: [KOW's Little World](https://t.me/kowchannel)
|
|||||||
- Press any position of app card to select/deselct.
|
- Press any position of app card to select/deselct.
|
||||||
|
|
||||||
### v2.6
|
### v2.6
|
||||||
- Invisible module, intergrate action button & webui on tricky store card. You can stil use visible option if you found any issue with invisble module. Thanks for idea from @backslashxx.
|
- Invisible module, integrate action button & WebUI on Tricky Store card. You can still use visible option if you found any issue with invisible module. Thanks for idea from @backslashxx.
|
||||||
- To uninstall invisble module, scroll down to the bottom of WebUI and press Uninstall WebUI.
|
- To uninstall invisble module, scroll down to the bottom of WebUI and press Uninstall WebUI.
|
||||||
- Add update prompt if found new version in webui, and show module if found an update. (invisible)
|
- Add update prompt if found new version in webui, and show module if found an update. (invisible)
|
||||||
- Reduced WebUI loading time
|
- Reduced WebUI loading time
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ me.garfieldhan.apatch.next"
|
|||||||
|
|
||||||
ADDITION="
|
ADDITION="
|
||||||
com.google.android.gms
|
com.google.android.gms
|
||||||
|
com.google.android.gsf
|
||||||
|
com.android.vending
|
||||||
io.github.vvb2060.keyattestation
|
io.github.vvb2060.keyattestation
|
||||||
io.github.vvb2060.mahoshojo
|
io.github.vvb2060.mahoshojo
|
||||||
icu.nullptr.nativetest"
|
icu.nullptr.nativetest"
|
||||||
|
|||||||
@@ -14,22 +14,22 @@ abort() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
download() {
|
download() {
|
||||||
local type=${1#--}
|
download_type=${1#--}
|
||||||
local url=$2
|
download_url=$2
|
||||||
local output=$3
|
download_output=$3
|
||||||
|
|
||||||
PATH=/data/adb/magisk:/data/data/com.termux/files/usr/bin:$PATH
|
PATH=/data/adb/magisk:/data/data/com.termux/files/usr/bin:$PATH
|
||||||
if command -v curl >/dev/null 2>&1; then
|
if command -v curl >/dev/null 2>&1; then
|
||||||
if [ "$type" = "output" ]; then
|
if [ "$download_type" = "output" ]; then
|
||||||
timeout 10 curl -Lo "$output" "$url"
|
timeout 10 curl -Lo "$download_output" "$download_url"
|
||||||
else
|
else
|
||||||
timeout 2 curl -s "$url"
|
timeout 2 curl -s "$download_url"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ "$type" = "output" ]; then
|
if [ "$download_type" = "output" ]; then
|
||||||
timeout 10 busybox wget --no-check-certificate -qO "$output" "$url"
|
timeout 10 busybox wget --no-check-certificate -qO "$download_output" "$download_url"
|
||||||
else
|
else
|
||||||
timeout 2 busybox wget --no-check-certificate -qO- "$url"
|
timeout 2 busybox wget --no-check-certificate -qO- "$download_url"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
PATH="$ORG_PATH"
|
PATH="$ORG_PATH"
|
||||||
|
|||||||
@@ -5,28 +5,35 @@ SKIPLIST="$MODPATH/tmp/skiplist"
|
|||||||
OUTPUT="$MODPATH/tmp/exclude-list"
|
OUTPUT="$MODPATH/tmp/exclude-list"
|
||||||
KBOUTPUT="$MODPATH/tmp/.extra"
|
KBOUTPUT="$MODPATH/tmp/.extra"
|
||||||
|
|
||||||
|
if [ "$MODPATH" = "/data/adb/modules/.TA_utl/common" ]; then
|
||||||
|
MODDIR="/data/adb/modules/.TA_utl"
|
||||||
|
MAGISK="true"
|
||||||
|
else
|
||||||
|
MODDIR="/data/adb/modules/TA_utl"
|
||||||
|
fi
|
||||||
|
|
||||||
aapt() { "$MODPATH/aapt" "$@"; }
|
aapt() { "$MODPATH/aapt" "$@"; }
|
||||||
|
|
||||||
# probe for downloaders
|
# probe for downloaders
|
||||||
# wget = low pref, no ssl.
|
# wget = low pref, no ssl.
|
||||||
# curl, has ssl on android, we use it if found
|
# curl, has ssl on android, we use it if found
|
||||||
download() {
|
download() {
|
||||||
local type=${1#--}
|
download_type=${1#--}
|
||||||
local url=$2
|
download_url=$2
|
||||||
local output=$3
|
download_output=$3
|
||||||
|
|
||||||
PATH=/data/adb/ap/bin:/data/adb/ksu/bin:/data/adb/magisk:/data/data/com.termux/files/usr/bin:$PATH
|
PATH=/data/adb/ap/bin:/data/adb/ksu/bin:/data/adb/magisk:/data/data/com.termux/files/usr/bin:$PATH
|
||||||
if command -v curl >/dev/null 2>&1; then
|
if command -v curl >/dev/null 2>&1; then
|
||||||
if [ "$type" = "output" ]; then
|
if [ "$download_type" = "output" ]; then
|
||||||
timeout 10 curl -Lo "$output" "$url"
|
timeout 10 curl -Lo "$download_output" "$download_url"
|
||||||
else
|
else
|
||||||
timeout 3 curl -s "$url"
|
timeout 3 curl -s "$download_url"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ "$type" = "output" ]; then
|
if [ "$download_type" = "output" ]; then
|
||||||
timeout 10 busybox wget --no-check-certificate -qO "$output" "$url"
|
timeout 10 busybox wget --no-check-certificate -qO "$download_output" "$download_url"
|
||||||
else
|
else
|
||||||
timeout 3 busybox wget --no-check-certificate -qO- "$url"
|
timeout 3 busybox wget --no-check-certificate -qO- "$download_url"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
PATH="$ORG_PATH"
|
PATH="$ORG_PATH"
|
||||||
@@ -57,11 +64,12 @@ get_unnecessary() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
check_update() {
|
check_update() {
|
||||||
|
[ -f "$MODDIR/disable" ] && rm -f "$MODDIR/disable"
|
||||||
JSON=$(download --fetch "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json") || exit 1
|
JSON=$(download --fetch "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 ' ')
|
REMOTE_VERSION=$(echo "$JSON" | grep -o '"versionCode": *[0-9]*' | awk -F: '{print $2}' | tr -d ' ')
|
||||||
LOCAL_VERSION=$(grep -o 'versionCode=[0-9]*' "$MODPATH/update/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" ] && [ ! -f "/data/adb/modules/TA_utl/update" ]; then
|
if [ "$REMOTE_VERSION" -gt "$LOCAL_VERSION" ] && [ ! -f "/data/adb/modules/TA_utl/update" ]; then
|
||||||
if [ "$MODPATH" = "/data/adb/modules/.TA_utl/common" ]; then
|
if [ "$MAGISK" = "true" ]; then
|
||||||
[ -d "/data/adb/modules/TA_utl" ] && rm -rf "/data/adb/modules/TA_utl"
|
[ -d "/data/adb/modules/TA_utl" ] && rm -rf "/data/adb/modules/TA_utl"
|
||||||
cp -rf "$MODPATH/update" "/data/adb/modules/TA_utl"
|
cp -rf "$MODPATH/update" "/data/adb/modules/TA_utl"
|
||||||
else
|
else
|
||||||
@@ -72,8 +80,7 @@ check_update() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
uninstall() {
|
uninstall() {
|
||||||
if [ "$MODPATH" = "/data/adb/modules/.TA_utl/common" ]; then
|
if [ "$MAGISK" = "true" ]; then
|
||||||
[ -d "/data/adb/modules/TA_utl" ] && rm -rf "/data/adb/modules/TA_utl"
|
|
||||||
cp -rf "$MODPATH/update" "/data/adb/modules/TA_utl"
|
cp -rf "$MODPATH/update" "/data/adb/modules/TA_utl"
|
||||||
else
|
else
|
||||||
cp -f "$MODPATH/update/module.prop" "/data/adb/modules/TA_utl/module.prop"
|
cp -f "$MODPATH/update/module.prop" "/data/adb/modules/TA_utl/module.prop"
|
||||||
@@ -90,15 +97,14 @@ get_update() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install_update() {
|
install_update() {
|
||||||
if command -v magisk >/dev/null 2>&1; then
|
command -v magisk >/dev/null 2>&1 && {
|
||||||
magisk --install-module "$MODPATH/tmp/module.zip"
|
magisk --install-module "$MODPATH/tmp/module.zip"
|
||||||
elif command -v apd >/dev/null 2>&1; then
|
} || command -v apd >/dev/null 2>&1 && {
|
||||||
apd module install "$MODPATH/tmp/module.zip"
|
apd module install "$MODPATH/tmp/module.zip"
|
||||||
elif command -v ksud >/dev/null 2>&1; then
|
} || command -v ksud >/dev/null 2>&1 && {
|
||||||
ksud module install "$MODPATH/tmp/module.zip"
|
ksud module install "$MODPATH/tmp/module.zip"
|
||||||
else
|
} || exit 1
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
rm -f "$MODPATH/tmp/module.zip"
|
rm -f "$MODPATH/tmp/module.zip"
|
||||||
rm -f "$MODPATH/tmp/changelog.md"
|
rm -f "$MODPATH/tmp/changelog.md"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
id=TA_utl
|
id=TA_utl
|
||||||
name=Tricky Addon - Update Target List
|
name=Tricky Addon - Update Target List
|
||||||
version=v3.0
|
version=v3.3
|
||||||
versionCode=300
|
versionCode=330
|
||||||
author=KOWX712
|
author=KOWX712
|
||||||
description=A WebUI to conifgure tricky store target.txt
|
description=A WebUI to conifgure tricky store target.txt
|
||||||
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json
|
updateJson=https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/update.json
|
||||||
|
|||||||
@@ -1,17 +1,46 @@
|
|||||||
MODPATH=${0%/*}
|
MODPATH=${0%/*}
|
||||||
HIDE_DIR="/data/adb/modules/.TA_utl"
|
HIDE_DIR="/data/adb/modules/.TA_utl"
|
||||||
TS="/data/adb/modules/tricky_store"
|
TS="/data/adb/modules/tricky_store"
|
||||||
SCRIPT_DIR="/data/adb/tricky_store"
|
TARGET_DIR="/data/adb/tricky_store"
|
||||||
TSPA="/data/adb/modules/tsupport-advance"
|
TSPA="/data/adb/modules/tsupport-advance"
|
||||||
|
|
||||||
aapt() { "$MODPATH/common/aapt" "$@"; }
|
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
|
# Reset verified Boot Hash
|
||||||
hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]')
|
hash_value=$(grep -v '^#' "/data/adb/boot_hash" | tr -d '[:space:]')
|
||||||
if [ -n "$hash_value" ]; then
|
if [ -n "$hash_value" ]; then
|
||||||
resetprop -n ro.boot.vbmeta.digest "$hash_value"
|
resetprop -n ro.boot.vbmeta.digest "$hash_value"
|
||||||
fi
|
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
|
||||||
|
TS_version=$(grep "versionCode=" "$TS/module.prop" | cut -d'=' -f2)
|
||||||
|
if [ "$TS_version" -lt 158 ]; then
|
||||||
|
resetprop -n ro.vendor.build.security_patch "$security_patch"
|
||||||
|
else
|
||||||
|
printf "boot=%s\nvendor=%s\n" "$security_patch" "$security_patch" > "$TARGET_DIR/security_patch.txt"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Disable TSupport-A auto update target to prevent overwrite
|
# Disable TSupport-A auto update target to prevent overwrite
|
||||||
if [ -d "$TSPA" ]; then
|
if [ -d "$TSPA" ]; then
|
||||||
touch "/storage/emulated/0/stop-tspa-auto-target"
|
touch "/storage/emulated/0/stop-tspa-auto-target"
|
||||||
@@ -19,16 +48,23 @@ elif [ ! -d "$TSPA" ] && [ -f "/storage/emulated/0/stop-tspa-auto-target" ]; the
|
|||||||
rm -f "/storage/emulated/0/stop-tspa-auto-target"
|
rm -f "/storage/emulated/0/stop-tspa-auto-target"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Hide module
|
# Magisk operation
|
||||||
if [ -f "$MODPATH/action.sh" ]; then
|
if [ -f "$MODPATH/action.sh" ]; then
|
||||||
|
# Hide module from Magisk manager
|
||||||
if [ "$MODPATH" != "$HIDE_DIR" ]; then
|
if [ "$MODPATH" != "$HIDE_DIR" ]; then
|
||||||
rm -rf "$HIDE_DIR"
|
rm -rf "$HIDE_DIR"
|
||||||
mv "$MODPATH" "$HIDE_DIR"
|
mv "$MODPATH" "$HIDE_DIR"
|
||||||
fi
|
fi
|
||||||
MODPATH="$HIDE_DIR"
|
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
|
fi
|
||||||
|
|
||||||
|
# Hide module from APatch, KernelSU, KSUWebUIStandalone, MMRL
|
||||||
rm -f "$MODPATH/module.prop"
|
rm -f "$MODPATH/module.prop"
|
||||||
|
|
||||||
# Symlink tricky store
|
# Symlink tricky store
|
||||||
@@ -42,31 +78,41 @@ fi
|
|||||||
# Optimization
|
# Optimization
|
||||||
OUTPUT_APP="$MODPATH/common/tmp/applist"
|
OUTPUT_APP="$MODPATH/common/tmp/applist"
|
||||||
OUTPUT_SKIP="$MODPATH/common/tmp/skiplist"
|
OUTPUT_SKIP="$MODPATH/common/tmp/skiplist"
|
||||||
OUTPUT_TMP="$MODPATH/common/tmp/tmp_applist"
|
|
||||||
|
|
||||||
until [ "$(getprop sys.boot_completed)" = "1" ]; do
|
until [ "$(getprop sys.boot_completed)" = "1" ]; do
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Create temporary directory
|
||||||
mkdir -p "$MODPATH/common/tmp"
|
mkdir -p "$MODPATH/common/tmp"
|
||||||
pm list packages -3 2>/dev/null | awk -F: '{print $2}' > "$OUTPUT_TMP"
|
|
||||||
|
|
||||||
|
# Additional system apps
|
||||||
SYSTEM_APP="com.google.android.gms|com.google.android.gsf|com.android.vending"
|
SYSTEM_APP="com.google.android.gms|com.google.android.gsf|com.android.vending"
|
||||||
pm list package -s | awk -F: '{print $2}' | grep -Ex "$SYSTEM_APP" >> "$OUTPUT_TMP"
|
|
||||||
|
|
||||||
|
# Initialize cache files to save app list and skip list
|
||||||
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_APP"
|
||||||
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP"
|
echo "# This file is generated from service.sh to speed up load time" > "$OUTPUT_SKIP"
|
||||||
cat "$OUTPUT_TMP" | while read -r PACKAGE; do
|
|
||||||
|
# Get list of third party apps and specific system apps, then cache app name
|
||||||
|
# Check Xposed module
|
||||||
|
{
|
||||||
|
pm list packages -3 2>/dev/null
|
||||||
|
pm list package -s | grep -E "$SYSTEM_APP"
|
||||||
|
} | awk -F: '{print $2}' | while read -r PACKAGE; do
|
||||||
|
# Get APK path for the package
|
||||||
APK_PATH=$(pm path "$PACKAGE" 2>/dev/null | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r')
|
APK_PATH=$(pm path "$PACKAGE" 2>/dev/null | grep "base.apk" | awk -F: '{print $2}' | tr -d '\r')
|
||||||
|
[ -z "$APK_PATH" ] && APK_PATH=$(pm path "$PACKAGE" 2>/dev/null | grep ".apk" | awk -F: '{print $2}' | tr -d '\r')
|
||||||
|
|
||||||
if [ -n "$APK_PATH" ]; then
|
if [ -n "$APK_PATH" ]; then
|
||||||
|
# Extract app name and save package info
|
||||||
APP_NAME=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g")
|
APP_NAME=$(aapt dump badging "$APK_PATH" 2>/dev/null | grep "application-label:" | sed "s/application-label://g; s/'//g")
|
||||||
echo "app-name: $APP_NAME, package-name: $PACKAGE" >> "$OUTPUT_APP"
|
echo "app-name: $APP_NAME, package-name: $PACKAGE" >> "$OUTPUT_APP"
|
||||||
else
|
else
|
||||||
echo "app-name: Unknown App package-name: $PACKAGE" >> "$OUTPUT_APP"
|
echo "app-name: Unknown App package-name: $PACKAGE" >> "$OUTPUT_APP"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Check if app is Xposed module and add to skip list if not
|
||||||
if ! aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription"; then
|
if ! aapt dump xmltree "$APK_PATH" AndroidManifest.xml 2>/dev/null | grep -qE "xposed.category|xposeddescription"; then
|
||||||
echo "$PACKAGE" >> "$OUTPUT_SKIP"
|
echo "$PACKAGE" >> "$OUTPUT_SKIP"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -f "$OUTPUT_TMP"
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ fi
|
|||||||
# Remove residue and restore aosp keybox.
|
# Remove residue and restore aosp keybox.
|
||||||
rm -rf "/data/adb/modules/.TA_utl"
|
rm -rf "/data/adb/modules/.TA_utl"
|
||||||
rm -f "/data/adb/boot_hash"
|
rm -f "/data/adb/boot_hash"
|
||||||
|
rm -f "/data/adb/tricky_store/target_from_denylist"
|
||||||
if [ -d "$TS" ]; then
|
if [ -d "$TS" ]; then
|
||||||
[ -L "$TS/webroot" ] && rm -f "$TS/webroot"
|
[ -L "$TS/webroot" ] && rm -f "$TS/webroot"
|
||||||
[ -L "$TS/action.sh" ] && rm -f "$TS/action.sh"
|
[ -L "$TS/action.sh" ] && rm -f "$TS/action.sh"
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
},
|
},
|
||||||
"about": {
|
"about": {
|
||||||
"module_name_line1": "Tricky Addon",
|
"module_name_line1": "Tricky Addon",
|
||||||
"module_name_line2": "Update Target List",
|
"module_name_line2": "ターゲットリストを更新",
|
||||||
"by": "開発者: ",
|
"by": "開発者: ",
|
||||||
"telegram_channel": "Telegram チャンネル",
|
"telegram_channel": "Telegram チャンネル",
|
||||||
"github": "GitHub",
|
"github": "GitHub",
|
||||||
@@ -83,4 +83,4 @@
|
|||||||
"rebooting": "再起動中...",
|
"rebooting": "再起動中...",
|
||||||
"reboot_fail": "再起動に失敗しました。手動で再起動してください。"
|
"reboot_fail": "再起動に失敗しました。手動で再起動してください。"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
86
module/webui/locales/tr-TR.json
Normal file
86
module/webui/locales/tr-TR.json
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
{
|
||||||
|
"language": "Türkçe",
|
||||||
|
"header": {
|
||||||
|
"title": "Tricky Addon"
|
||||||
|
},
|
||||||
|
"help": {
|
||||||
|
"help_instructions": "Talimatlar",
|
||||||
|
"save_and_update": "Kaydet",
|
||||||
|
"save_and_update_description": "Mevcut yapılandırmayı target.txt dosyasına kaydet.",
|
||||||
|
"refresh": "Yenile",
|
||||||
|
"refresh_description": "Uygulama ve hariç tutma listesini yenile.",
|
||||||
|
"select_deselect": "Tümünü Seç & Seçimi Kaldır",
|
||||||
|
"select_description": "Mevcut arayüzdeki tüm uygulamaları seç veya seçimini kaldır.",
|
||||||
|
"select_denylist": "Reddetme Listesinden Seç",
|
||||||
|
"select_denylist_description": "Yalnızca Magisk’te mevcut, Reddetme Listesindeki uygulamaları seç. Tavsiye edilir.",
|
||||||
|
"deselect_unnecessary": "Gereksizleri Seçme",
|
||||||
|
"deselect_unnecessary_description": "Gereksiz kategori: Xposed modülü, root yöneticisi, root ile ilgili uygulamalar ve asla bootloader durumunu kontrol etmeyen genel uygulamalar. Bu seçenek internet bağlantısı gerektirir.",
|
||||||
|
"set_keybox": "AOSP & Geçerli Keybox Ayarla",
|
||||||
|
"set_keybox_description": "Tricky Store'daki keybox.xml dosyasını değiştirir. Eğer geçerli bir keybox yoksa AOSP keybox ile değiştirilecektir. Geçerli keybox seçeneği internet bağlantısı gerektirir.",
|
||||||
|
"set_verified_boot_hash": "Doğrulanmış Boot Hash Ayarla",
|
||||||
|
"set_verified_boot_hash_description": "Key Attestation Demo’dan verifiedBootHash değerini alın. Abnormal boot durumunu ro.boot.vbmeta.digest’i sıfırlayarak düzeltin."
|
||||||
|
},
|
||||||
|
"update": {
|
||||||
|
"update_available": "Yeni bir sürüm hazır",
|
||||||
|
"redirect_to_release": "Son sürümü indirmek için dokunun",
|
||||||
|
"changelog": "Değişiklik Günlüğü",
|
||||||
|
"install": "Yükle",
|
||||||
|
"reboot": "Yeniden Başlat"
|
||||||
|
},
|
||||||
|
"search_bar": {
|
||||||
|
"search_placeholder": "Ara"
|
||||||
|
},
|
||||||
|
"functional_button": {
|
||||||
|
"save_and_update_button": "Kaydet",
|
||||||
|
"uninstall_webui": "WebUI’ı Kaldır"
|
||||||
|
},
|
||||||
|
"loading": {
|
||||||
|
"loading": "Yükleniyor..."
|
||||||
|
},
|
||||||
|
"menu": {
|
||||||
|
"refresh": "Yenile",
|
||||||
|
"select_all": "Tümünü Seç",
|
||||||
|
"deselect_all": "Tüm Seçimleri Kaldır",
|
||||||
|
"select_denylist": "Reddetme Listesinden Seç",
|
||||||
|
"deselect_unnecessary": "Gereksizleri Seçme",
|
||||||
|
"set_aosp_keybox": "AOSP Keybox Ayarla",
|
||||||
|
"set_valid_keybox": "Geçerli Keybox Ayarla",
|
||||||
|
"set_verified_boot_hash": "Doğrulanmış Boot Hash Ayarla",
|
||||||
|
"about": "Hakkında"
|
||||||
|
},
|
||||||
|
"reset_vbmeta": {
|
||||||
|
"boot_hash_input_placeholder": "Doğrulanmış Boot Hash’inizi buraya yapıştırın",
|
||||||
|
"boot_hash_save_button": "Kaydet"
|
||||||
|
},
|
||||||
|
"about": {
|
||||||
|
"module_name_line1": "Tricky Addon",
|
||||||
|
"module_name_line2": "Target List'i Güncelle",
|
||||||
|
"by": "tarafından",
|
||||||
|
"telegram_channel": "Telegram Kanalı",
|
||||||
|
"github": "GitHub",
|
||||||
|
"disclaimer": "Bu modül, Tricky Store modülünün bir parçası değildir. Herhangi bir sorun yaşarsanız, lütfen bunu Tricky Store’a rapor etmeyin.",
|
||||||
|
"acknowledgment": "Teşekkür"
|
||||||
|
},
|
||||||
|
"prompt": {
|
||||||
|
"no_internet": "Lütfen internet bağlantınızı kontrol edin",
|
||||||
|
"aosp_key_set": "AOSP keybox başarıyla ayarlandı",
|
||||||
|
"key_set_error": "Keybox güncellenemedi",
|
||||||
|
"valid_key_set": "Geçerli keybox başarıyla ayarlandı",
|
||||||
|
"no_valid_fallback": "Geçerli keybox bulunamadı, AOSP keybox ile değiştirildi.",
|
||||||
|
"boot_hash_set": "Doğrulanmış Boot Hash başarıyla kaydedildi",
|
||||||
|
"boot_hash_set_error": "Doğrulanmış Boot Hash güncellenemedi",
|
||||||
|
"saved_target": "Yapılandırma target.txt dosyasına kaydedildi",
|
||||||
|
"save_error": "Yapılandırma kaydedilemedi",
|
||||||
|
"uninstall_prompt": "WebUI yeniden başlatma sonrasında kaldırılacak",
|
||||||
|
"uninstall_failed": "WebUI kaldırılamadı",
|
||||||
|
"new_update": "Yeni bir güncelleme mevcut!",
|
||||||
|
"downloading": "Yeni güncelleme indiriliyor...",
|
||||||
|
"downloaded": "İndirme tamamlandı",
|
||||||
|
"download_fail": "Güncelleme indirilemedi",
|
||||||
|
"installing": "Güncelleme yükleniyor...",
|
||||||
|
"installed": "Başarıyla yüklendi, şimdi yeniden başlatın.",
|
||||||
|
"install_fail": "Yükleme başarısız oldu, lütfen manuel olarak güncelleyin",
|
||||||
|
"rebooting": "Yeniden başlatılıyor...",
|
||||||
|
"reboot_fail": "Yeniden başlatma başarısız, lütfen manuel olarak yeniden başlatın"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -18,7 +18,7 @@ export const floatingBtn = document.querySelector('.floating-btn');
|
|||||||
export const basePath = "set-path";
|
export const basePath = "set-path";
|
||||||
export const appsWithExclamation = [];
|
export const appsWithExclamation = [];
|
||||||
export const appsWithQuestion = [];
|
export const appsWithQuestion = [];
|
||||||
const ADDITIONAL_APPS = [ "com.google.android.gms", "io.github.vvb2060.keyattestation", "io.github.vvb2060.mahoshojo", "icu.nullptr.nativetest" ]; // Always keep default apps in target.txt
|
const ADDITIONAL_APPS = [ "android", "com.android.vending", "com.google.android.gms", "io.github.vvb2060.keyattestation", "io.github.vvb2060.mahoshojo", "icu.nullptr.nativetest" ]; // Always keep default apps in target.txt
|
||||||
const rippleClasses = ['.language-option', '.menu-button', '.menu-options li', '.search-card', '.card', '.update-card', '.link-icon', '.floating-btn', '.uninstall-container', '.boot-hash-save-button', '.boot-hash-value', '.reboot', '.install'];
|
const rippleClasses = ['.language-option', '.menu-button', '.menu-options li', '.search-card', '.card', '.update-card', '.link-icon', '.floating-btn', '.uninstall-container', '.boot-hash-save-button', '.boot-hash-value', '.reboot', '.install'];
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
@@ -132,7 +132,7 @@ document.getElementById("save").addEventListener("click", async () => {
|
|||||||
return app;
|
return app;
|
||||||
});
|
});
|
||||||
const updatedTargetContent = modifiedAppsList.join("\n");
|
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.");
|
console.log("target.txt updated successfully.");
|
||||||
showPrompt("prompt.saved_target");
|
showPrompt("prompt.saved_target");
|
||||||
for (const app of appsWithExclamation) {
|
for (const app of appsWithExclamation) {
|
||||||
|
|||||||
@@ -18,10 +18,9 @@ document.getElementById("deselect-all").addEventListener("click", () => toggleCh
|
|||||||
// Function to read the denylist and check corresponding apps
|
// Function to read the denylist and check corresponding apps
|
||||||
document.getElementById("select-denylist").addEventListener("click", async () => {
|
document.getElementById("select-denylist").addEventListener("click", async () => {
|
||||||
try {
|
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 denylistApps = result.split("\n").map(app => app.trim()).filter(Boolean);
|
||||||
const apps = document.querySelectorAll(".card");
|
const apps = document.querySelectorAll(".card");
|
||||||
toggleCheckboxes(false);
|
|
||||||
apps.forEach(app => {
|
apps.forEach(app => {
|
||||||
const contentElement = app.querySelector(".content");
|
const contentElement = app.querySelector(".content");
|
||||||
const packageName = contentElement.getAttribute("data-package");
|
const packageName = contentElement.getAttribute("data-package");
|
||||||
@@ -30,6 +29,7 @@ document.getElementById("select-denylist").addEventListener("click", async () =>
|
|||||||
checkbox.checked = true;
|
checkbox.checked = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
await execCommand('touch "/data/adb/tricky_store/target_from_denylist"');
|
||||||
console.log("Denylist apps selected successfully.");
|
console.log("Denylist apps selected successfully.");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
toast("Failed to read DenyList!");
|
toast("Failed to read DenyList!");
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ function setupUpdateMenu() {
|
|||||||
try {
|
try {
|
||||||
showPrompt("prompt.installing");
|
showPrompt("prompt.installing");
|
||||||
setTimeout(async () => {
|
setTimeout(async () => {
|
||||||
await execCommand(`sh ${basePath}common/get_extra.sh --install-update`);
|
await execCommand(`su -c 'sh ${basePath}common/get_extra.sh --install-update'`);
|
||||||
showPrompt("prompt.installed");
|
showPrompt("prompt.installed");
|
||||||
installButton.style.display = "none";
|
installButton.style.display = "none";
|
||||||
rebootButton.style.display = "flex";
|
rebootButton.style.display = "flex";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"versionCode": 300,
|
"versionCode": 330,
|
||||||
"version": "v3.0",
|
"version": "v3.3",
|
||||||
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v3.0/TrickyAddonModule-v3.0.zip",
|
"zipUrl": "https://github.com/KOWX712/Tricky-Addon-Update-Target-List/releases/download/v3.3/TrickyAddonModule-v3.3.zip",
|
||||||
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/changelog.md"
|
"changelog": "https://raw.githubusercontent.com/KOWX712/Tricky-Addon-Update-Target-List/main/changelog.md"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user