Compare commits
3 Commits
copilot/vs
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
304d4d5b57 | ||
|
|
fcd72cc1a0 | ||
|
|
dfef750e5c |
17
start.sh
17
start.sh
@@ -1,9 +1,16 @@
|
|||||||
#!/system/bin/sh
|
#!/system/bin/sh
|
||||||
if [ -f "${0%/*}/tools/tools.sh" ]; then
|
if [ ! -f "${0%/*}/tools/tools.sh" ]; then
|
||||||
MODDIR="${0%/*}"
|
|
||||||
conf_path="${0%/*}/backup_settings.conf"
|
|
||||||
[ ! -f "${0%/*}/backup_settings.conf" ] && . "${0%/*}/tools/tools.sh"
|
|
||||||
else
|
|
||||||
echo "${0%/*}/tools/tools.sh遺失"
|
echo "${0%/*}/tools/tools.sh遺失"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
MODDIR="${0%/*}"
|
||||||
|
conf_path="${0%/*}/backup_settings.conf"
|
||||||
|
|
||||||
|
# 若配置文件不存在,啟動腳本自動生成默認配置後退出
|
||||||
|
if [ ! -f "$conf_path" ]; then
|
||||||
|
. "${0%/*}/tools/tools.sh"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log_$(date +%Y-%m-%d_%H-%M).txt"
|
. "${0%/*}/tools/tools.sh" | tee "${0%/*}/log_$(date +%Y-%m-%d_%H-%M).txt"
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ update_backup_settings_conf() {
|
|||||||
Lo="${Lo:-0}"
|
Lo="${Lo:-0}"
|
||||||
|
|
||||||
#後台執行腳本
|
#後台執行腳本
|
||||||
0不能關閉當前終端,有壓縮速率
|
#0不能關閉當前終端,有壓縮速率
|
||||||
1終端有可能完全無顯示,但是log會持續刷新,可直接完全關閉終端
|
#1終端有可能完全無顯示,但是log會持續刷新,可直接完全關閉終端
|
||||||
background_execution="${background_execution:-0}"
|
background_execution="${background_execution:-0}"
|
||||||
|
|
||||||
#腳本語言設置 留空則自動識別系統語言環境並翻譯
|
#腳本語言設置 留空則自動識別系統語言環境並翻譯
|
||||||
@@ -148,8 +148,8 @@ update_Restore_settings_conf() {
|
|||||||
Lo="${Lo:-0}"
|
Lo="${Lo:-0}"
|
||||||
|
|
||||||
#後台執行腳本
|
#後台執行腳本
|
||||||
0不能關閉當前終端,有壓縮速率
|
#0不能關閉當前終端,有壓縮速率
|
||||||
1終端有可能完全無顯示,但是log會持續刷新,可直接完全關閉終端
|
#1終端有可能完全無顯示,但是log會持續刷新,可直接完全關閉終端
|
||||||
background_execution="${background_execution:-0}"
|
background_execution="${background_execution:-0}"
|
||||||
|
|
||||||
#恢復開始後偽裝亮屏
|
#恢復開始後偽裝亮屏
|
||||||
@@ -315,7 +315,17 @@ export TZ=Asia/Taipei
|
|||||||
ln -fs "$tools_path/classes.dex" "$filepath/classes.dex"
|
ln -fs "$tools_path/classes.dex" "$filepath/classes.dex"
|
||||||
export CLASSPATH="$filepath/classes.dex"
|
export CLASSPATH="$filepath/classes.dex"
|
||||||
quit=0
|
quit=0
|
||||||
while read -r file expected_hash; do
|
cat <<EOF | while read -r file expected_hash; do
|
||||||
|
zstd 9ef4b54148699c9874cfd45aaf38e5cc950e5d168afdcf2edf58a2463f5561ed
|
||||||
|
tar 882639ac310a7eb4052c68c21cea02633307700f9cc8c7c469c2dd18d734a112
|
||||||
|
classes.dex 63934f7d15de40f4b188672e36fe22a01b55abb235becee2c2738f29aaf8299b
|
||||||
|
bc b15d730591f6fb52af59284b87d939c5bea204f944405a3518224d8df788dc15
|
||||||
|
busybox 4d60ab3f5a59ebb2ca863f2f514e6924401b581e9b64f602665c008177626651
|
||||||
|
find 7fa812e58aafa29679cf8b50fc617ecf9fec2cfb2e06ea491e0a2d6bf79b903b
|
||||||
|
jq 6bc62f25981328edd3cfcfe6fe51b073f2d7e7710d7ef7fcdac28d4e384fc3d4
|
||||||
|
keycheck 50645ee0e0d2a7d64fb4a1286446df7a4445f3d11aefd49eeeb88515b314c363
|
||||||
|
cmd 08da8ac23b6e99788fd3ce6c19c7b5a083b2ad48be35963a48d01d6ee7f3bb6d
|
||||||
|
EOF
|
||||||
if [[ -f $tools_path/$file ]]; then
|
if [[ -f $tools_path/$file ]]; then
|
||||||
computed_hash="$(sha256sum "$tools_path/$file" | awk '{print $1}')"
|
computed_hash="$(sha256sum "$tools_path/$file" | awk '{print $1}')"
|
||||||
if [[ $computed_hash = $expected_hash ]]; then
|
if [[ $computed_hash = $expected_hash ]]; then
|
||||||
@@ -330,17 +340,7 @@ while read -r file expected_hash; do
|
|||||||
quit=1
|
quit=1
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done <<< "$(cat <<EOF
|
done
|
||||||
zstd ab32aecb389c3ba5c1f7ab05d5eb6a861bad80261fd14ef9a8f4c283ac48c22c
|
|
||||||
tar 3c605b1e9eb8283555225dcad4a3bf1777ae39c5f19a2c8b8943140fd7555814
|
|
||||||
classes.dex 63934f7d15de40f4b188672e36fe22a01b55abb235becee2c2738f29aaf8299b
|
|
||||||
bc b15d730591f6fb52af59284b87d939c5bea204f944405a3518224d8df788dc15
|
|
||||||
busybox 4d60ab3f5a59ebb2ca863f2f514e6924401b581e9b64f602665c008177626651
|
|
||||||
find 7fa812e58aafa29679cf8b50fc617ecf9fec2cfb2e06ea491e0a2d6bf79b903b
|
|
||||||
jq 4dd2d8a0661df0b22f1bb9a1f9830f06b6f3b8f7d91211a1ef5d7c4f06a8b4a5
|
|
||||||
keycheck 50645ee0e0d2a7d64fb4a1286446df7a4445f3d11aefd49eeeb88515b314c363
|
|
||||||
cmd 08da8ac23b6e99788fd3ce6c19c7b5a083b2ad48be35963a48d01d6ee7f3bb6d
|
|
||||||
EOF)"
|
|
||||||
if [[ $background_execution = 1 || $setDisplayPowerMode = 1 ]]; then
|
if [[ $background_execution = 1 || $setDisplayPowerMode = 1 ]]; then
|
||||||
alias notification="app_process /system/bin com.xayah.dex.NotificationUtil notify -t 'SpeedBackup' "$@""
|
alias notification="app_process /system/bin com.xayah.dex.NotificationUtil notify -t 'SpeedBackup' "$@""
|
||||||
else
|
else
|
||||||
@@ -412,6 +412,7 @@ get_version() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
isBoolean() {
|
isBoolean() {
|
||||||
|
unset nsx
|
||||||
nsx="$1"
|
nsx="$1"
|
||||||
if [[ $1 = 1 ]]; then
|
if [[ $1 = 1 ]]; then
|
||||||
nsx=true
|
nsx=true
|
||||||
@@ -435,20 +436,30 @@ echo_log() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
kill_Serve() {
|
kill_Serve() {
|
||||||
LOCK_FILE="/tmp/my_backup.lock"
|
local LOCK_DIR="/data/local/tmp/.backup_lock"
|
||||||
if [[ -f $LOCK_FILE ]]; then
|
local MY_PID="$$"
|
||||||
OLD_PID="$(cat "$LOCK_FILE")"
|
|
||||||
|
# 使用 mkdir 作為原子鎖操作,避免 TOCTOU 競態條件
|
||||||
|
if ! mkdir "$LOCK_DIR" 2>/dev/null; then
|
||||||
|
if [[ -f $LOCK_DIR/pid ]]; then
|
||||||
|
OLD_PID="$(cat "$LOCK_DIR/pid")"
|
||||||
if kill -0 "$OLD_PID" 2>/dev/null; then
|
if kill -0 "$OLD_PID" 2>/dev/null; then
|
||||||
echo "發現先前的備份程序 (PID=$OLD_PID),將其終止"
|
echo "發現先前的備份程序 (PID=$OLD_PID),將其終止"
|
||||||
kill -KILL "$OLD_PID"
|
kill -KILL "$OLD_PID"
|
||||||
echo "結束自身,避免重複執行"
|
echo "結束自身,避免重複執行"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
echo "發現 lock 檔但程序已不存在,視為殘留 lock"
|
echo "發現 lock 但程序已不存在,視為殘留 lock"
|
||||||
|
rm -rf "$LOCK_DIR"
|
||||||
|
mkdir "$LOCK_DIR" 2>/dev/null || exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
rm -rf "$LOCK_DIR"
|
||||||
|
mkdir "$LOCK_DIR" 2>/dev/null || exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
echo $$ > "$LOCK_FILE"
|
echo "$MY_PID" > "$LOCK_DIR/pid"
|
||||||
trap "rm -f '$LOCK_FILE'" EXIT
|
trap "rm -rf '$LOCK_DIR'" EXIT
|
||||||
}
|
}
|
||||||
echo $$
|
echo $$
|
||||||
kill_Serve
|
kill_Serve
|
||||||
@@ -641,11 +652,13 @@ alias Set_Ops="app_process /system/bin com.xayah.dex.HiddenApiUtil setOpsMode $U
|
|||||||
alias setDisplay="app_process /system/bin com.xayah.dex.HiddenApiUtil setDisplayPowerMode $@"
|
alias setDisplay="app_process /system/bin com.xayah.dex.HiddenApiUtil setDisplayPowerMode $@"
|
||||||
find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d ! -path "$path_hierarchy/tools")"
|
find_tools_path="$(find "$path_hierarchy"/* -maxdepth 1 -name "tools" -type d ! -path "$path_hierarchy/tools")"
|
||||||
backup_wifi() {
|
backup_wifi() {
|
||||||
[[ ! -d $1 ]] && mkdir -p "$1"
|
local wifi_dir="$1"
|
||||||
if [[ -d $1 ]]; then
|
[[ -z $wifi_dir ]] && echoRgb "backup_wifi: 目錄參數為空" "0" && return 1
|
||||||
|
[[ ! -d $wifi_dir ]] && mkdir -p "$wifi_dir"
|
||||||
|
if [[ -d $wifi_dir ]]; then
|
||||||
echoRgb "備份wifi密碼"
|
echoRgb "備份wifi密碼"
|
||||||
rm -rf "$1"/*
|
rm -rf "${wifi_dir:?}"/*
|
||||||
app_process /system/bin com.xayah.dex.NetworkUtil saveNetworks>"$1/wifi.json"
|
app_process /system/bin com.xayah.dex.NetworkUtil saveNetworks>"$wifi_dir/wifi.json"
|
||||||
echo_log "wifi備份"
|
echo_log "wifi備份"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -1459,6 +1472,10 @@ disable_verify() {
|
|||||||
settings put global upload_apk_enable 0 2>/dev/null
|
settings put global upload_apk_enable 0 2>/dev/null
|
||||||
echoRgb "PLAY安全驗證為開啟狀態已被腳本關閉防止apk安裝失敗" "3"
|
echoRgb "PLAY安全驗證為開啟狀態已被腳本關閉防止apk安裝失敗" "3"
|
||||||
fi
|
fi
|
||||||
|
# 額外安全性攔截
|
||||||
|
settings put global harmful_app_warning_on 0 2>/dev/null
|
||||||
|
# 關閉應用的受限模式 (針對 Android 13/14 側載應用)
|
||||||
|
settings put secure enhanced_confirmation_states 0 2>/dev/null
|
||||||
# 設定檔案路徑
|
# 設定檔案路徑
|
||||||
FILE="/data/data/com.android.vending/shared_prefs/finsky.xml"
|
FILE="/data/data/com.android.vending/shared_prefs/finsky.xml"
|
||||||
if [[ -f $FILE ]]; then
|
if [[ -f $FILE ]]; then
|
||||||
@@ -1962,7 +1979,6 @@ backup() {
|
|||||||
fi
|
fi
|
||||||
[[ $backup_media = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -backup_media=0將不備份自定義資料夾" "0"
|
[[ $backup_media = false ]] && echoRgb "當前$MODDIR_NAME/backup_settings.conf的\n -backup_media=0將不備份自定義資料夾" "0"
|
||||||
txt2="$Backup/appList.txt"
|
txt2="$Backup/appList.txt"
|
||||||
txt2="${txt2/'/storage/emulated/'/'/data/media/'}"
|
|
||||||
txt_path2="$txt2"
|
txt_path2="$txt2"
|
||||||
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market">"$txt2"
|
[[ ! -f $txt2 ]] && echo "#不需要恢復還原的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market">"$txt2"
|
||||||
txt2="$(cat "$txt2")"
|
txt2="$(cat "$txt2")"
|
||||||
@@ -2258,7 +2274,7 @@ Restore() {
|
|||||||
[[ $setDisplayPowerMode = "" ]] && {
|
[[ $setDisplayPowerMode = "" ]] && {
|
||||||
Enter_options "應用恢復時關閉螢幕\n -輸入1關閉,0不關閉" "關閉" "不關閉" && isBoolean "$parameter" "setDisplayPowerMode" && setDisplayPowerMode="$nsx"
|
Enter_options "應用恢復時關閉螢幕\n -輸入1關閉,0不關閉" "關閉" "不關閉" && isBoolean "$parameter" "setDisplayPowerMode" && setDisplayPowerMode="$nsx"
|
||||||
} || {
|
} || {
|
||||||
isBoolean "$recovery_mode" "recovery_mode" && recovery_mode="$nsx"
|
isBoolean "$setDisplayPowerMode" "setDisplayPowerMode" && setDisplayPowerMode="$nsx"
|
||||||
}
|
}
|
||||||
Get_user="$(echo "$MODDIR" | rev | cut -d '/' -f1 | cut -d '_' -f1 | rev | egrep -o '[0-9]+')"
|
Get_user="$(echo "$MODDIR" | rev | cut -d '/' -f1 | cut -d '_' -f1 | rev | egrep -o '[0-9]+')"
|
||||||
[[ $Get_user != $user ]] && {
|
[[ $Get_user != $user ]] && {
|
||||||
|
|||||||
BIN
tools/zstd
BIN
tools/zstd
Binary file not shown.
Reference in New Issue
Block a user