56 lines
2.1 KiB
Kotlin
56 lines
2.1 KiB
Kotlin
package be.mygod.vpnhotspot.root
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.os.Build
|
|
import android.os.Parcelable
|
|
import android.util.Log
|
|
import be.mygod.librootkotlinx.*
|
|
import be.mygod.vpnhotspot.App.Companion.app
|
|
import be.mygod.vpnhotspot.util.Services
|
|
import be.mygod.vpnhotspot.util.UnblockCentral
|
|
import com.google.firebase.crashlytics.FirebaseCrashlytics
|
|
import kotlinx.parcelize.Parcelize
|
|
import timber.log.Timber
|
|
|
|
object RootManager : RootSession(), Logger {
|
|
@Parcelize
|
|
class RootInit : RootCommandNoResult {
|
|
override suspend fun execute(): Parcelable? {
|
|
Timber.plant(object : Timber.DebugTree() {
|
|
@SuppressLint("LogNotTimber")
|
|
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
|
|
if (priority >= Log.WARN) {
|
|
System.err.println("$priority/$tag: $message")
|
|
t?.printStackTrace()
|
|
}
|
|
if (t == null) {
|
|
Log.println(priority, tag, message)
|
|
} else {
|
|
Log.println(priority, tag, message)
|
|
Log.d(tag, message, t)
|
|
if (priority >= Log.WARN) t.printStackTrace(System.err)
|
|
}
|
|
}
|
|
})
|
|
Logger.me = RootManager
|
|
Services.init { systemContext }
|
|
if (Build.VERSION.SDK_INT >= 28) UnblockCentral.needInit = false
|
|
return null
|
|
}
|
|
}
|
|
|
|
override fun d(m: String?, t: Throwable?) = Timber.d(t, m)
|
|
override fun e(m: String?, t: Throwable?) = Timber.e(t, m)
|
|
override fun i(m: String?, t: Throwable?) = Timber.i(t, m)
|
|
override fun w(m: String?, t: Throwable?) = Timber.w(t, m)
|
|
|
|
override suspend fun initServer(server: RootServer) {
|
|
Logger.me = this
|
|
AppProcess.shouldRelocateHeuristics.let {
|
|
FirebaseCrashlytics.getInstance().setCustomKey("RootManager.relocateEnabled", it)
|
|
server.init(app.deviceStorage, it)
|
|
}
|
|
server.execute(RootInit())
|
|
}
|
|
}
|