data recover

This commit is contained in:
Administrator 2025-07-30 15:04:12 +08:00
parent 1250e0150b
commit a69be9ced5
7 changed files with 32 additions and 43 deletions

View File

@ -11,8 +11,10 @@ import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.lifecycle.lifecycleScope
import com.android.grape.databinding.ActivityMainBinding
import com.android.grape.job.MonitorService
import com.android.grape.util.BackupUtils
import com.android.grape.util.BackupUtils.killRecordProcess
import com.android.grape.util.ClashUtil
import com.android.grape.util.FileUtils
@ -23,6 +25,7 @@ import com.android.grape.util.ScriptUtils.unregisterScriptResultReceiver
import com.android.grape.util.ShellUtil
import com.android.grape.util.StoragePermissionHelper
import com.android.grape.util.TaskUtils
import kotlinx.coroutines.launch
/**
* public class MainActivity extends AppCompatActivity
@ -78,6 +81,10 @@ class MainActivity : AppCompatActivity() {
}
viewBinding.stop.setOnClickListener {
killRecordProcess(this, packageName)
// lifecycleScope.launch {
// BackupUtils.backUp(this@MainActivity, "com.policybazaar")
// BackupUtils.recoverRecordData(this@MainActivity)
// }
}
}

View File

@ -243,7 +243,7 @@ class SendCallbackJobService : JobIntentService() {
}
chownSh(fileName, getMainUserAndGroup(this))
var url = "http://39.103.73.250/tt/ddj/backup.do"
var url = "http://47.83.1.116/tt/ddj/backup.do"
// if (Util.backUpServerIp != "") {
// url = "http://" + Util.backUpServerIp + "/tt/ddj/backup.do"
// }

View File

@ -42,7 +42,9 @@ import com.android.grape.util.ContextUtils.getBaseFilesDir
import com.android.grape.util.ContextUtils.getRecordDataDirName
import com.android.grape.util.ContextUtils.getRecordDataFileName
import com.android.grape.util.ContextUtils.getRecordExtraFileName
import com.android.grape.util.ContextUtils.getRecordListTxtFileName
import com.android.grape.util.ContextUtils.getRecordSdcardApkVerFileName
import com.android.grape.util.ContextUtils.getRecordTxtFileName
import com.android.grape.util.ContextUtils.getSessionTxtFileName
import com.android.grape.util.DeviceUtils.getUserAndGroupSh
import com.android.grape.util.FileUtils.forceMakeDir
@ -397,8 +399,8 @@ object AppUtils {
fun installObb(context: Context, extraFile: File) {
val userAndGroup = getUserAndGroupSh(
context,
context.packageName,
getBaseFilesDir(context) + "/" + monitorDir + "/" + apkDir + "/" + context.packageName + ".txt"
recordPackageName,
getRecordTxtFileName( context)
)
val destExtraFile = File(
@ -626,7 +628,7 @@ object AppUtils {
.isNotEmpty()
) {
var restored_zip =
"http://192.168.1.111/tt/" + it.getString("BackupFileUrl1")
"http://47.83.1.116/tt/upload/backupddj/" + it.getString("BackupFileUrl1")
if (backUpServerIp.isNotEmpty()) {
restored_zip =
"http://" + backUpServerIp + "/tt/" + it.getString("BackupFileUrl1")

View File

@ -16,6 +16,7 @@ import com.android.grape.util.ContextUtils.getMonitorDir
import com.android.grape.util.ContextUtils.getRecordDataDirName
import com.android.grape.util.ContextUtils.getRecordDataFileName
import com.android.grape.util.ContextUtils.getRecordListTxtFileName
import com.android.grape.util.ContextUtils.getRecordTxtFileName
import com.android.grape.util.DeviceUtils.getMainUserAndGroup
import com.android.grape.util.DeviceUtils.getUserAndGroupSh
import com.android.grape.util.FileUtils.forceMakeDir
@ -86,8 +87,8 @@ object BackupUtils {
}
val uid = getUserAndGroupSh(
context.applicationContext,
context.packageName,
getBaseFilesDir(context) + "/" + monitorDir + "/" + apkDir + "/" + context.packageName + ".txt"
recordPackageName,
getRecordTxtFileName(context)
)
chownSh(getMonitorDir(context), uid)
val copySucc = FileUtils.copyFolderSh(apkDataPath,zipDirName)
@ -348,8 +349,8 @@ object BackupUtils {
val userAnGroup = getUserAndGroupSh(
context,
context.packageName,
getBaseFilesDir(context) + "/" + monitorDir + "/" + apkDir + "/" + context.packageName + ".txt"
recordPackageName ?: return false,
getRecordTxtFileName( context)
)
Log.i("BackupUtils", "recoverRecordData->userAndGroup:$userAnGroup")
File(reloginDataDir).parentFile?.absolutePath?.let {

View File

@ -279,9 +279,6 @@ object FileUtils {
)
try {
val zipDir = File(zipDirName)
// val zipFile = File(zipFileName)
//// var cmd = "cd " + (zipDir.parentFile?.absolutePath ?: "") + "|"
//// cmd += "tar -zcvf " + zipFile.name + " " + zipDir.name
val cmdString = "tar -zcvf $zipFileName -C ${zipDir.parentFile?.absolutePath ?: ""} ${zipDir.name}"
Log.i("FileUtils", "zipSh-> cmd:$cmdString")
MockTools.exec(cmdString)
@ -708,16 +705,6 @@ object FileUtils {
val src = File(oldPath)
val dst = File(newPath)
// if (!src.exists()) {
// LogUtils.d(
// Log.ERROR,
// "TaskUtil",
// "Source path does not exist: $oldPath",
// null
// )
// return false
// }
// 构造命令(注意 shell 特殊字符的转义)
val safeOldPath = src.absolutePath.replace(" ", "\\ ").replace("\"", "\\\"")
val safeNewPath = dst.absolutePath.replace(" ", "\\ ").replace("\"", "\\\"")
@ -730,20 +717,6 @@ object FileUtils {
val chmod = "chmod 777 \"$safeNewPath\""
val chmodResult: String? = ShellUtils.execRootCmdAndGetResult(chmod)
recursiveChmod777(dst)
// LogUtils.d(
// "TaskUtil",
// "chmodResult. Result: $chmodResult",
// null
// )
// if ( result.trim { it <= ' ' }.isEmpty()) {
// LogUtils.d(
// "TaskUtil",
// "Command execution failed. Result: $result",
// null
// )
// return false
// }
Log.i("TaskUtil", "Command executed successfully: $result")
return true
} catch (e: java.lang.Exception) {

View File

@ -20,6 +20,7 @@ import com.android.grape.util.ShellUtils.delFileSh
import com.android.grape.util.ShellUtils.unzipAPkSh
import com.android.grape.util.ShellUtils.unzipScriptSh
import com.blankj.utilcode.util.LogUtils
import java.io.File
/**
* @Time: 2025-16-16 19:16
@ -46,8 +47,8 @@ object ScriptUtils {
fun execDownScript(): Boolean {
var isDownload = true
if (isCanAuto) {
Log.i("TaskUtils", "start to execDownScript")
val script_url = "http://39.103.73.250/tt/" + canAutoLc
Log.i("TaskUtils", "start to execDownScript $script_url")
isDownload = downloadFile(script_url, script_path)
if (!isDownload) {
Log.i("TaskUtils", "execDownScript isDownload : $isDownload")
@ -70,7 +71,14 @@ object ScriptUtils {
}
return
}
val scriptFile = File(src)
if (!scriptFile.exists()) {
LogUtils.e("AutoJsUtil", "Script file not found")
runOnUiThread {
Toast.makeText(context, "Script file not found", Toast.LENGTH_SHORT).show()
}
return
}
val intent = Intent()
intent.setClassName(
"org.autojs.autojs6",

View File

@ -478,8 +478,7 @@ object ShellUtils {
fun delFilesSh(dir: String, prefix: String?) {
try {
var cmd = "cd $dir|"
cmd += "rm -rf $prefix*"
var cmd = "rm -rf $dir$prefix*"
Log.i("ShellUtils", "delFilesSh-> cmd:$cmd")
MockTools.exec(cmd)
} catch (e: Exception) {
@ -514,10 +513,9 @@ object ShellUtils {
fun unZipFileSh(zipFileName: String, dataDir: String) {
try {
var cmd = "cd $dataDir|"
cmd += "tar -xvf " + File(zipFileName).name
Log.i("ShellUtils", "unZipFileSh-> cmd:$cmd")
MockTools.exec(cmd)
val cmdString = "tar -zxvf $zipFileName --strip-components=1 -C $dataDir"
Log.i("ShellUtils", "unZipFileSh-> cmd:$cmdString")
MockTools.exec(cmdString)
} catch (e: Exception) {
e.printStackTrace()
}