留存文件恢复
This commit is contained in:
parent
2e26323913
commit
940929a50b
|
@ -24,13 +24,6 @@ class OpenAppService : JobIntentService() {
|
|||
override fun onHandleWork(intent: Intent) {
|
||||
println("IOSTQ:isCanAuto() == " + isCanAuto)
|
||||
println("IOSTQ:getCanAutoLc() == " + canAutoLc)
|
||||
recordPackageName?.let {
|
||||
ServiceUtils.setEnableApp(it, true)
|
||||
}
|
||||
ServiceUtils.setEnableApp("org.mozilla.firefox", true)
|
||||
ServiceUtils.setEnableApp("com.google.android.webview", true)
|
||||
ServiceUtils.setEnableApp("com.android.chrome", true)
|
||||
ServiceUtils.setEnableApp("com.UCMobile", true)
|
||||
try {
|
||||
ChangeDeviceInfoUtil.changeDevice(callBack = object : ChangeCallBack {
|
||||
override fun changeSuccess() {
|
||||
|
|
|
@ -35,7 +35,6 @@ import com.android.grape.data.AppState.isNeedRestored
|
|||
import com.android.grape.data.AppState.keepOpen
|
||||
import com.android.grape.data.AppState.lang
|
||||
import com.android.grape.data.AppState.logBuffer
|
||||
import com.android.grape.data.AppState.paramsJson
|
||||
import com.android.grape.data.AppState.proxyCountry
|
||||
import com.android.grape.data.AppState.proxyIp
|
||||
import com.android.grape.data.AppState.proxyPort
|
||||
|
@ -93,7 +92,6 @@ object ConfigManager {
|
|||
isNeedRestored = false
|
||||
taskJson = null
|
||||
installRet = false
|
||||
paramsJson = null
|
||||
recordPackageName = null
|
||||
recordFileName = null
|
||||
recordExtraFileName = null
|
||||
|
|
|
@ -1,23 +1,7 @@
|
|||
package com.android.grape.net
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import com.android.grape.data.AppState
|
||||
import com.android.grape.data.AppState.clickServerTimeFromGP
|
||||
import com.android.grape.data.AppState.clickTime
|
||||
import com.android.grape.data.AppState.instalTimeFromGp
|
||||
import com.android.grape.data.AppState.installTime
|
||||
import com.android.grape.data.AppState.lastUpdateTime
|
||||
import com.android.grape.data.AppState.paramsJson
|
||||
import com.android.grape.data.AppState.recordPackageName
|
||||
import com.android.grape.data.AppState.referer
|
||||
import com.android.grape.data.AppState.taskJson
|
||||
import com.android.grape.manager.TrackingManager.genInstallTimeFromGP
|
||||
import com.android.grape.util.DeviceUtils.getGoogleAdId
|
||||
import com.android.grape.util.FileUtils
|
||||
import com.android.grape.util.ServiceUtils
|
||||
import com.android.grape.util.TaskUtils
|
||||
import com.blankj.utilcode.util.LogUtils
|
||||
import java.io.BufferedInputStream
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.File
|
||||
|
@ -28,7 +12,6 @@ import java.io.OutputStream
|
|||
import java.io.UnsupportedEncodingException
|
||||
import java.net.HttpURLConnection
|
||||
import java.net.URL
|
||||
import java.net.URLDecoder
|
||||
|
||||
/**
|
||||
* @Time: 2025-07-16 16:07
|
||||
|
@ -39,90 +22,6 @@ import java.net.URLDecoder
|
|||
*/
|
||||
object AfClient {
|
||||
|
||||
@Throws(IOException::class)
|
||||
fun setInfo(context: Context): Boolean {
|
||||
val url = "http://127.0.0.1:8090/ctl/setinfo"
|
||||
|
||||
//安装时间
|
||||
try {
|
||||
clickTime = taskJson!!.getLong("clickTime")
|
||||
val deviceJo = paramsJson!!.getJSONObject("device")
|
||||
// installTimeFromGP = (long) (clickTime / 1000) + (clickTime % 7) + 3;
|
||||
installTime = System.currentTimeMillis()
|
||||
Thread.sleep(2000)
|
||||
Log.d("IOSTQ:installTime == ", installTime.toString() + "")
|
||||
Log.d("IOSTQ:clickTime == ", clickTime.toString() + "")
|
||||
val time = genInstallTimeFromGP(clickTime, installTime)
|
||||
// installTimeFromGP = firstInstallTime / 1000;
|
||||
installTime = System.currentTimeMillis()
|
||||
lastUpdateTime = installTime
|
||||
LogUtils.d("IOSTQ:lastUpdateTime ", lastUpdateTime.toString() + "")
|
||||
deviceJo.put("firstInstallTime", installTime)
|
||||
deviceJo.put("lastUpdateTime", lastUpdateTime)
|
||||
deviceJo.put("installTimeFromGP", instalTimeFromGp)
|
||||
val installServerTimeFromGP = time[1] // + (installTimeFromGP % 2) + 1;
|
||||
deviceJo.put("installServerTimeFromGP", installServerTimeFromGP)
|
||||
val clickTimeToGp = (clickTime / 1000)
|
||||
deviceJo.put("clickTimeToGP", clickTimeToGp)
|
||||
val clickServerTimeToGP = time[0] / 1000 // + (clickTimeToGp % 2) + 1;
|
||||
deviceJo.put("clickServerTimeToGP", clickServerTimeToGP)
|
||||
|
||||
AppState.installServerTimeFromGP = installServerTimeFromGP
|
||||
clickServerTimeFromGP = clickServerTimeToGP
|
||||
|
||||
if (taskJson!!.has("clickData")) {
|
||||
val clickdata = taskJson!!.getJSONObject("clickData")
|
||||
if (clickdata.has("referer") && clickdata.getString("referer").length > 10) {
|
||||
referer = clickdata.getString("referer")
|
||||
}
|
||||
} else {
|
||||
referer = ""
|
||||
}
|
||||
|
||||
if (referer != null && referer!!.length > 10) {
|
||||
deviceJo.put("referrerFromGP", URLDecoder.decode(referer, "UTF-8"))
|
||||
} else {
|
||||
deviceJo.put("referrerFromGP", "utm_source=google-play&utm_medium=organic")
|
||||
deviceJo.put("clickServerTimeToGP", 0)
|
||||
deviceJo.put("clickTimeToGP", 0)
|
||||
deviceJo.put("installTimeFromGP", 0)
|
||||
deviceJo.put("installServerTimeFromGP", 0)
|
||||
}
|
||||
|
||||
//JSONObject proxyJo = paramsJson.getJSONObject("proxy");
|
||||
//proxyJo.put("forwardIp", Util.getDelegateIp());
|
||||
Log.d("IOSTQ", "firstInstalTime == " + installTime)
|
||||
Log.d("IOSTQ", "paramsJson == " + paramsJson)
|
||||
val origin_gaid: String = getGoogleAdId(context) ?: ""
|
||||
deviceJo.put("origin_gaid", origin_gaid)
|
||||
paramsJson!!.put("device", deviceJo)
|
||||
val params = paramsJson.toString()
|
||||
ServiceUtils.setEnableApp(recordPackageName ?: "", true)
|
||||
ServiceUtils.setEnableApp("org.mozilla.firefox", true)
|
||||
ServiceUtils.setEnableApp("com.google.android.webview", true)
|
||||
ServiceUtils.setEnableApp("com.android.chrome", true)
|
||||
|
||||
ServiceUtils.writeFile("/data/system/device.txt", params)
|
||||
Log.d("IOSTQ:param == ", params)
|
||||
// paramsJson.put("proxy", proxyJo);
|
||||
} catch (e: Exception) {
|
||||
Log.d("IOSTQ", e.message!!)
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
// printStr("execSetJson params:"+params);
|
||||
|
||||
// writeFileToSDCard(params);
|
||||
try {
|
||||
// String ret = new MyPost().PostData(context, params.getBytes("utf-8"), url);
|
||||
|
||||
// Log.i("TaskUtils", "set info ret : " + ret);
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
fun downloadFile(httpUrl: String, fileName: String): Boolean {
|
||||
Log.i(
|
||||
"AfClient",
|
||||
|
|
|
@ -222,16 +222,15 @@ object AppUtils {
|
|||
val file = File(getRecordSdcardApkVerFileName(context))
|
||||
var extraFile: File? = null
|
||||
if (recordExtraFileName?.isNotEmpty() == true) {
|
||||
extraFile = File(ContextUtils.getRecordExtraFileName(context))
|
||||
extraFile = File(getRecordExtraFileName(context))
|
||||
}
|
||||
|
||||
installRet = installApk(context, file, extraFile) && AppUtils.checkAppInstalled(
|
||||
installRet = installApk(context, file, extraFile) && checkAppInstalled(
|
||||
context,
|
||||
recordPackageName
|
||||
)
|
||||
|
||||
if (installRet && !videoProxy.contains("123.56.44.45")) {
|
||||
//检查是否有新版本
|
||||
file.delete()
|
||||
extraFile?.delete()
|
||||
}
|
||||
|
@ -617,17 +616,12 @@ object AppUtils {
|
|||
ret = downloadFile(extraUrl, getRecordExtraFileName(context))
|
||||
}
|
||||
if (isNeedRestored) {
|
||||
println("IOSTQ:开始下载留存文件")
|
||||
Log.i("AppUtils","IOSTQ:开始下载留存文件")
|
||||
taskJson?.let {
|
||||
if (it.has("BackupFileUrl1") && it.getString("BackupFileUrl1")
|
||||
.isNotEmpty()
|
||||
) {
|
||||
var restored_zip =
|
||||
"http://47.83.1.116/tt/upload/backupddj/" + it.getString("BackupFileUrl1")
|
||||
if (backUpServerIp.isNotEmpty()) {
|
||||
restored_zip =
|
||||
"http://" + backUpServerIp + "/tt/" + it.getString("BackupFileUrl1")
|
||||
}
|
||||
var restored_zip = "http://47.83.1.116/tt/" + it.getString("BackupFileUrl1")
|
||||
ret = downloadFile(restored_zip, getRecordDataFileName(context))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,8 +56,7 @@ object BackupUtils {
|
|||
}
|
||||
try {
|
||||
val zipDirName = getBaseFilesDir(context) + "/" + monitorDir + "/" + packageName
|
||||
val zipFileName =
|
||||
getBaseFilesDir(context) + "/" + monitorDir + "/" + packageName + ".zip"
|
||||
val zipFileName = getBaseFilesDir(context) + "/" + monitorDir + "/" + packageName + ".zip"
|
||||
Log.i(
|
||||
"BackupUtils",
|
||||
"backupDataFile-> zipDirName:$zipDirName ; zipFileName:$zipFileName"
|
||||
|
@ -91,6 +90,7 @@ object BackupUtils {
|
|||
getRecordTxtFileName(context)
|
||||
)
|
||||
chownSh(getMonitorDir(context), uid)
|
||||
Log.d("TAG", "backupDataFile: ------------------>")
|
||||
val copySucc = FileUtils.copyFolderSh(apkDataPath,zipDirName)
|
||||
Log.i("BackupUtils", "copyFolder($apkDataPath,$zipDirName) = $copySucc")
|
||||
if (copySucc) {
|
||||
|
@ -344,8 +344,11 @@ object BackupUtils {
|
|||
if (reloginDataDir == null) {
|
||||
return false
|
||||
}
|
||||
|
||||
unZipFileSh(zipFile, dataDir)
|
||||
val dataFile = File("$dataDir$recordPackageName")
|
||||
if (!dataFile.exists()) {
|
||||
dataFile.mkdir()
|
||||
}
|
||||
unZipFileSh(zipFile, dataFile.absolutePath)
|
||||
|
||||
val userAnGroup = getUserAndGroupSh(
|
||||
context,
|
||||
|
@ -355,7 +358,7 @@ object BackupUtils {
|
|||
Log.i("BackupUtils", "recoverRecordData->userAndGroup:$userAnGroup")
|
||||
File(reloginDataDir).parentFile?.absolutePath?.let {
|
||||
copyFolderSh(
|
||||
"$dataDir/$recordPackageName",
|
||||
"$dataDir$recordPackageName",
|
||||
it
|
||||
)
|
||||
}
|
||||
|
|
|
@ -135,17 +135,18 @@ object FileUtils {
|
|||
|
||||
public fun forceMakeDir(file: File) {
|
||||
if (!file.exists()) {
|
||||
val parent = file.parentFile
|
||||
|
||||
parent?.exists()?.let {
|
||||
if (!it) {
|
||||
MockTools.exec("mkdir $parent")
|
||||
forceMakeDir(parent)
|
||||
// file.mkdirs();
|
||||
} else {
|
||||
MockTools.exec("mkdir $file")
|
||||
}
|
||||
}
|
||||
file.mkdirs()
|
||||
// val parent = file.parentFile
|
||||
//
|
||||
// parent?.exists()?.let {
|
||||
// if (!it) {
|
||||
// MockTools.exec("mkdir $parent")
|
||||
// forceMakeDir(parent)
|
||||
// // file.mkdirs();
|
||||
// } else {
|
||||
// MockTools.exec("mkdir $file")
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -278,8 +279,7 @@ object FileUtils {
|
|||
"start zipSh : $zipDirName ; $zipFileName"
|
||||
)
|
||||
try {
|
||||
val zipDir = File(zipDirName)
|
||||
val cmdString = "tar -zcvf $zipFileName -C ${zipDir.parentFile?.absolutePath ?: ""} ${zipDir.name}"
|
||||
val cmdString = "tar -zcvf $zipFileName -C $zipDirName ."
|
||||
Log.i("FileUtils", "zipSh-> cmd:$cmdString")
|
||||
MockTools.exec(cmdString)
|
||||
} catch (e: Exception) {
|
||||
|
@ -575,7 +575,7 @@ object FileUtils {
|
|||
|
||||
fun writeAfLog() {
|
||||
val filePath = "/data/data/${recordPackageName}/log.txt"
|
||||
ShellUtils.execRootCmdAndGetResult("chmod 777 $filePath")
|
||||
ShellUtil.execRootCmdAndGetResult("chmod 777 $filePath")
|
||||
val afLog = ShellUtil.execRootCmdAndGetResult("cat $filePath")
|
||||
val file = File(
|
||||
Environment.getExternalStorageDirectory(),
|
||||
|
@ -610,20 +610,20 @@ object FileUtils {
|
|||
// 构造安全命令
|
||||
val filePath = "/data/data/$packageName/device.txt"
|
||||
val cmd = "sh -c 'printf %s '\''" + base64Content + "'\'' > " + filePath + "'"
|
||||
val result = ShellUtils.execRootCmdAndGetResult(cmd)
|
||||
ShellUtils.execRootCmdAndGetResult("chmod 777 $filePath")
|
||||
val result = ShellUtil.execRootCmdAndGetResult(cmd)
|
||||
ShellUtil.execRootCmdAndGetResult("chmod 777 $filePath")
|
||||
}
|
||||
|
||||
fun runPlugin(packageName: String) {
|
||||
val cmd =
|
||||
"apmt patch add -n ArmCloudAF -p $packageName -f /sdcard/Download/ArmCloudAF_lo.apk"
|
||||
val result = ShellUtils.execRootCmdAndGetResult(cmd)
|
||||
val result = ShellUtil.execRootCmdAndGetResult(cmd)
|
||||
LogUtils.d("FileUtils", "runPlugin: $result")
|
||||
}
|
||||
|
||||
fun deletePlugin() {
|
||||
val cmd = "apmt patch del -n ArmCloudAF"
|
||||
val result = ShellUtils.execRootCmdAndGetResult(cmd)
|
||||
val result = ShellUtil.execRootCmdAndGetResult(cmd)
|
||||
LogUtils.d("FileUtils", "deletePlugin: $result")
|
||||
}
|
||||
|
||||
|
@ -708,7 +708,7 @@ object FileUtils {
|
|||
// 构造命令(注意 shell 特殊字符的转义)
|
||||
val safeOldPath = src.absolutePath.replace(" ", "\\ ").replace("\"", "\\\"")
|
||||
val safeNewPath = dst.absolutePath.replace(" ", "\\ ").replace("\"", "\\\"")
|
||||
val cmd = "cp -r -f \"$safeOldPath\" \"$safeNewPath\""
|
||||
val cmd = "cp -r -f \"$safeOldPath\"/* \"$safeNewPath\""
|
||||
|
||||
Log.i("TaskUtil", "copyFolderSh cmd: $cmd")
|
||||
|
||||
|
|
|
@ -5,26 +5,17 @@ import android.util.Log
|
|||
import com.android.grape.data.AppState.appVersion
|
||||
import com.android.grape.data.AppState.appVersionCode
|
||||
import com.android.grape.data.AppState.backUpServerIp
|
||||
import com.android.grape.data.AppState.cacheJson
|
||||
import com.android.grape.data.AppState.canAutoLc
|
||||
import com.android.grape.data.AppState.clickServerTimeFromGP
|
||||
import com.android.grape.data.AppState.clickTime
|
||||
import com.android.grape.data.AppState.ctit
|
||||
import com.android.grape.data.AppState.defaultPRoxyJo
|
||||
import com.android.grape.data.AppState.forwardIp
|
||||
import com.android.grape.data.AppState.fuzzy_domain
|
||||
import com.android.grape.data.AppState.fuzzy_proxy
|
||||
import com.android.grape.data.AppState.instalTimeFromGp
|
||||
import com.android.grape.data.AppState.installServerTimeFromGP
|
||||
import com.android.grape.data.AppState.installTime
|
||||
import com.android.grape.data.AppState.isCanAuto
|
||||
import com.android.grape.data.AppState.isNeedBackup
|
||||
import com.android.grape.data.AppState.isNeedReg
|
||||
import com.android.grape.data.AppState.isNeedRestored
|
||||
import com.android.grape.data.AppState.keepOpen
|
||||
import com.android.grape.data.AppState.lang
|
||||
import com.android.grape.data.AppState.lastUpdateTime
|
||||
import com.android.grape.data.AppState.paramsJson
|
||||
import com.android.grape.data.AppState.preClickRecordId
|
||||
import com.android.grape.data.AppState.proxyCountry
|
||||
import com.android.grape.data.AppState.proxyIp
|
||||
|
@ -32,27 +23,15 @@ import com.android.grape.data.AppState.proxyPort
|
|||
import com.android.grape.data.AppState.recordFileName
|
||||
import com.android.grape.data.AppState.recordId
|
||||
import com.android.grape.data.AppState.recordPackageName
|
||||
import com.android.grape.data.AppState.referer
|
||||
import com.android.grape.data.AppState.regEmailJson
|
||||
import com.android.grape.data.AppState.reloginRecordId
|
||||
import com.android.grape.data.AppState.scriptOpenApp
|
||||
import com.android.grape.data.AppState.taskJson
|
||||
import com.android.grape.data.AppState.trackingLink
|
||||
import com.android.grape.data.AppState.ua
|
||||
import com.android.grape.data.AppState.videoProxy
|
||||
import com.android.grape.net.AfClient.postData
|
||||
import com.android.grape.util.DeviceUtils.getGoogleAdId
|
||||
import com.android.grape.util.FileUtils.forceMakeDir
|
||||
import com.android.grape.util.ServiceUtils.WriteFile
|
||||
import com.android.grape.util.TaskUtils.execRecord
|
||||
import com.android.grape.util.TaskUtils.getReferer
|
||||
import com.android.grape.util.TaskUtils.setFinish
|
||||
import com.android.grape.util.TaskUtils.setRecordExtraFileName
|
||||
import com.blankj.utilcode.util.LogUtils
|
||||
import org.json.JSONObject
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.net.URLDecoder
|
||||
|
||||
/**
|
||||
* @Time: 2025-20-16 17:20
|
||||
|
@ -207,165 +186,6 @@ object JsonUtils {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过处理任务 JSON 对象并向参数 JSON 对象添加各种属性来初始化操作所需的 JSON 参数。
|
||||
* 处理设备、优惠和其他相关数据,以准备完整的 JSON 结构。
|
||||
*
|
||||
* @param context 用于执行各种操作的应用程序上下文,例如在初始化期间写入文件和发送事件。
|
||||
* 例如,在初始化期间写入文件和发送事件。
|
||||
* @return 如果 JSON 参数初始化成功,则返回 true,否则返回 false
|
||||
*/
|
||||
fun initParamsJson(context: Context): Boolean {
|
||||
paramsJson = JSONObject().apply {
|
||||
try {
|
||||
taskJson?.let {
|
||||
val deviceJo = it.getJSONObject("device")
|
||||
// LogUtils.d("deviceJo:$deviceJo")
|
||||
val deviceParamJo: JSONObject = DeviceConvertUtil.MGConvert(deviceJo)
|
||||
if (it.has("isCollectURL")) {
|
||||
deviceJo.put("isCollectURL", true)
|
||||
} else {
|
||||
deviceJo.put("isCollectURL", false)
|
||||
}
|
||||
|
||||
if (it.has("regInfo")) {
|
||||
val regInfo = it.getJSONObject("regInfo")
|
||||
var apks = File("/sdcard/Download/GoogleAccount.txt")
|
||||
if (!apks.exists()) {
|
||||
forceMakeDir(File("/sdcard/Download"))
|
||||
apks = File("/sdcard/Download/GoogleAccount.txt")
|
||||
}
|
||||
WriteFile(apks.toString(), regInfo.toString())
|
||||
sendRegEvent(context)
|
||||
}
|
||||
|
||||
//add 20210409
|
||||
val offerJo = it.getJSONObject("offer")
|
||||
val apkprop = it.getJSONObject("apkProp")
|
||||
val thirdDetect = offerJo.getString("thirdDetect")
|
||||
if ("appsflyer".equals(thirdDetect, ignoreCase = true)) {
|
||||
deviceParamJo.put("afVersion", offerJo.getString("thirdVer"))
|
||||
}
|
||||
deviceParamJo.put("installVersionFromGP", offerJo.getString("apkVer"))
|
||||
|
||||
put("device", deviceParamJo)
|
||||
|
||||
if (it.has("expand")) {
|
||||
put("expand", it.getJSONObject("expand"))
|
||||
}
|
||||
put("offer", offerJo)
|
||||
val proxyJo = defaultPRoxyJo
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
|
||||
Log.i("JsonUtils", "initParamsJson error : " + e.message)
|
||||
setFinish(context)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
@Throws(IOException::class)
|
||||
fun setRrInfo(context: Context): Boolean {
|
||||
try {
|
||||
clickTime = taskJson!!.getLong("clickTime")
|
||||
val deviceJo = paramsJson!!.getJSONObject("device")
|
||||
|
||||
if (isNeedRestored) {
|
||||
if (cacheJson != null) {
|
||||
installTime =
|
||||
cacheJson.getLong("firstInstallTime")
|
||||
lastUpdateTime =
|
||||
cacheJson.getLong("lastUpdateTime")
|
||||
installServerTimeFromGP =
|
||||
cacheJson.getLong("installServerTimeFromGP")
|
||||
clickServerTimeFromGP =
|
||||
cacheJson.getLong("clickServerTimeToGP")
|
||||
instalTimeFromGp =
|
||||
cacheJson.getLong("installTimeFromGP")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
deviceJo.put("firstInstallTime", installTime)
|
||||
deviceJo.put("lastUpdateTime", lastUpdateTime)
|
||||
deviceJo.put("installTimeFromGP", instalTimeFromGp)
|
||||
val installServerTimeFromGP = installServerTimeFromGP
|
||||
deviceJo.put("installServerTimeFromGP", installServerTimeFromGP)
|
||||
val clickTimeToGp = (clickTime / 1000)
|
||||
deviceJo.put("clickTimeToGP", clickTimeToGp)
|
||||
val clickServerTimeToGP = clickServerTimeFromGP
|
||||
deviceJo.put("clickServerTimeToGP", clickServerTimeToGP)
|
||||
|
||||
|
||||
if (taskJson!!.has("clickData")) {
|
||||
val clickdata = taskJson!!.getJSONObject("clickData")
|
||||
if (clickdata.has("referer")) {
|
||||
referer = clickdata.getString("referer")
|
||||
}
|
||||
}
|
||||
|
||||
if (getReferer() != null) {
|
||||
deviceJo.put("referrerFromGP", URLDecoder.decode(getReferer(), "UTF-8"))
|
||||
} else {
|
||||
deviceJo.put("referrerFromGP", "utm_source=google-play&utm_medium=organic")
|
||||
deviceJo.put("clickServerTimeToGP", 0)
|
||||
deviceJo.put("clickTimeToGP", 0)
|
||||
deviceJo.put("installTimeFromGP", 0)
|
||||
deviceJo.put("installServerTimeFromGP", 0)
|
||||
}
|
||||
|
||||
val origin_gaid: String = getGoogleAdId(context) ?: ""
|
||||
deviceJo.put("origin_gaid", origin_gaid)
|
||||
paramsJson!!.put("device", deviceJo)
|
||||
val params = paramsJson.toString()
|
||||
ServiceUtils.setEnableApp(recordPackageName ?: "", true)
|
||||
ServiceUtils.setEnableApp("org.mozilla.firefox", true)
|
||||
ServiceUtils.setEnableApp("com.google.android.webview", true)
|
||||
ServiceUtils.setEnableApp("com.android.chrome", true)
|
||||
|
||||
ServiceUtils.writeFile("/data/system/device.txt", params)
|
||||
Log.d("IOSTQ:param == ", params)
|
||||
return true
|
||||
// paramsJson.put("proxy", proxyJo);
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过向指定的服务器URL提出邮政请求来发送注册事件。
|
||||
*
|
||||
* @param上下文调用该方法的上下文,用于执行网络操作
|
||||
* @return True如果已成功处理注册事件;错误,如果操作期间发生错误
|
||||
*/
|
||||
private fun sendRegEvent(context: Context): Boolean {
|
||||
val url = "http://123.56.44.45/tt/ddj/reg.do?recordId=$recordId"
|
||||
|
||||
Log.i("JsonUtils", "url:$url")
|
||||
|
||||
try {
|
||||
val ret: String? = postData("".toByteArray(), url)
|
||||
Log.i("JsonUtils", "ret:$ret")
|
||||
|
||||
val jo = JSONObject(ret ?: "")
|
||||
|
||||
if (jo.getInt("code") == 1) {
|
||||
regEmailJson = jo.getJSONObject("emailInfo")
|
||||
}
|
||||
|
||||
return true
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* 在JSON配置上执行一组操作。它删除了特定的日志文件,处理JSON参数,
|
||||
* 并记录所需的数据。如果例外,它会记录错误并执行清理。
|
||||
|
@ -376,10 +196,8 @@ object JsonUtils {
|
|||
@Throws(Exception::class)
|
||||
fun execSetJson(context: Context) {
|
||||
try {
|
||||
JsonUtils.afterJson()
|
||||
if (JsonUtils.initParamsJson(context)) {
|
||||
afterJson()
|
||||
execRecord(context)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
Log.i("TaskUtils", "execSetJson error : " + e.message)
|
||||
|
|
|
@ -512,7 +512,7 @@ object ShellUtils {
|
|||
|
||||
fun unZipFileSh(zipFileName: String, dataDir: String) {
|
||||
try {
|
||||
val cmdString = "tar -zxvf $zipFileName --strip-components=1 -C $dataDir"
|
||||
val cmdString = "tar -zxvf $zipFileName -C $dataDir"
|
||||
Log.i("ShellUtils", "unZipFileSh-> cmd:$cmdString")
|
||||
MockTools.exec(cmdString)
|
||||
} catch (e: Exception) {
|
||||
|
|
|
@ -7,59 +7,45 @@ import android.os.Handler
|
|||
import android.os.Looper
|
||||
import android.provider.Settings
|
||||
import android.util.Log
|
||||
import com.android.grape.net.AfClient.downloadFile
|
||||
import com.android.grape.MainApplication
|
||||
import com.android.grape.data.AppState
|
||||
import com.android.grape.data.AppState.afLog
|
||||
import com.android.grape.data.AppState.apkDir
|
||||
import com.android.grape.data.AppState.apk_path
|
||||
import com.android.grape.data.AppState.appDataUrl
|
||||
import com.android.grape.data.AppState.baoming
|
||||
import com.android.grape.data.AppState.canAutoLc
|
||||
import com.android.grape.data.AppState.clickTime
|
||||
import com.android.grape.data.AppState.installRet
|
||||
import com.android.grape.data.AppState.isCanAuto
|
||||
import com.android.grape.data.AppState.logBuffer
|
||||
import com.android.grape.data.AppState.monitorDir
|
||||
import com.android.grape.data.AppState.nRandom
|
||||
import com.android.grape.data.AppState.paramsJson
|
||||
import com.android.grape.data.AppState.recordExtraFileName
|
||||
import com.android.grape.data.AppState.recordFileName
|
||||
import com.android.grape.data.AppState.recordPackageName
|
||||
import com.android.grape.data.AppState.referer
|
||||
import com.android.grape.data.AppState.regEmailJson
|
||||
import com.android.grape.data.AppState.scriptOpenApp
|
||||
import com.android.grape.data.AppState.baoming
|
||||
|
||||
import com.android.grape.util.FileUtils.getName
|
||||
|
||||
import com.android.grape.data.AppState.zip_name
|
||||
|
||||
import com.android.grape.data.AppState.apk_path
|
||||
|
||||
import com.android.grape.net.AfClient.postData
|
||||
|
||||
import com.android.grape.util.ContextUtils.getRecordDataDirName
|
||||
|
||||
import com.android.grape.data.AppState.taskJson
|
||||
import com.android.grape.data.AppState.zip_name
|
||||
import com.android.grape.job.DownloadAppJobService
|
||||
import com.android.grape.job.MonitorService
|
||||
import com.android.grape.job.UnInstallService
|
||||
import com.android.grape.manager.ConfigManager
|
||||
import com.android.grape.manager.ConfigManager.initDefaultAppJo
|
||||
import com.android.grape.manager.ConfigManager.initDefaultProxyJo
|
||||
import com.android.grape.sai.Utils
|
||||
import com.android.grape.net.AfClient.downloadFile
|
||||
import com.android.grape.net.AfClient.postData
|
||||
import com.android.grape.util.AppUtils.execTargetApp
|
||||
import com.android.grape.util.AppUtils.getApkPackageName
|
||||
import com.android.grape.util.AppUtils.setTopApp
|
||||
import com.android.grape.util.ContextUtils.getBaseFilesDir
|
||||
import com.android.grape.util.ContextUtils.getRecordDataDirName
|
||||
import com.android.grape.util.FileUtils.forceMakeDir
|
||||
import com.android.grape.util.FileUtils.getName
|
||||
import com.android.grape.util.FileUtils.getRecordDataFileName
|
||||
import com.android.grape.util.JsonUtils.execSetJson
|
||||
import com.blankj.utilcode.util.LogUtils
|
||||
import org.json.JSONObject
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.io.PrintWriter
|
||||
import java.util.Locale
|
||||
import kotlin.math.min
|
||||
|
||||
/**
|
||||
|
@ -201,21 +187,17 @@ object TaskUtils {
|
|||
)
|
||||
LogUtils.d("IOSTQ:execReloginTask->result:$result")
|
||||
if (result != null && result.isNotEmpty()) {
|
||||
taskJson = JSONObject(result).apply {
|
||||
val code = getInt("code")
|
||||
taskJson = JSONObject(result)
|
||||
val code = taskJson?.getInt("code")
|
||||
if (code == 1) {
|
||||
MockTools.exec("chmod 777 /data/data/com.android.grape/files/monitor")
|
||||
MockTools.exec("chmod 777 /data/data/com.android.grape/files/monitor/apks")
|
||||
JsonUtils.execSetJson(context)
|
||||
execSetJson(context)
|
||||
clickTime = 1
|
||||
} else {
|
||||
Log.i(
|
||||
"TaskUtils",
|
||||
"request result code invalid : $code"
|
||||
)
|
||||
Log.i("TaskUtils", "request result code invalid : $code")
|
||||
setFinish(context)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log.i("TaskUtils", "request result is null")
|
||||
setFinish(context)
|
||||
|
@ -333,23 +315,6 @@ object TaskUtils {
|
|||
return false
|
||||
}
|
||||
|
||||
|
||||
val paramString: String
|
||||
get() = paramsJson.toString()
|
||||
|
||||
|
||||
public fun notcl(context: Context) {
|
||||
val url = "http://127.0.0.1:8090/ctl/notcl"
|
||||
|
||||
try {
|
||||
val ret: String = postData("".toByteArray(charset("utf-8")), url) ?: ""
|
||||
Log.i("TaskUtils", "notcl ret : $ret")
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun openRecordApp(context: Context) {
|
||||
if (scriptOpenApp == 0) {
|
||||
recordPackageName?.let {
|
||||
|
|
Loading…
Reference in New Issue