mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-27 20:15:29 +00:00
Remove separate constant class
This commit is contained in:
parent
16b232d2a3
commit
4b30b224b5
@ -9,33 +9,28 @@ object Const {
|
|||||||
|
|
||||||
const val DEBUG_TAG = "MagiskManager"
|
const val DEBUG_TAG = "MagiskManager"
|
||||||
|
|
||||||
// APK content
|
|
||||||
const val ANDROID_MANIFEST = "AndroidManifest.xml"
|
|
||||||
|
|
||||||
const val SU_KEYSTORE_KEY = "su_key"
|
|
||||||
|
|
||||||
// Paths
|
// Paths
|
||||||
const val MAGISK_PATH = "/sbin/.magisk/img"
|
const val MAGISK_PATH = "/sbin/.magisk/img"
|
||||||
@JvmField
|
@JvmField
|
||||||
val EXTERNAL_PATH: File =
|
val EXTERNAL_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)!!
|
||||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
|
|
||||||
@JvmField
|
@JvmField
|
||||||
var MAGISK_DISABLE_FILE: File = File("xxx")
|
var MAGISK_DISABLE_FILE = File("xxx")
|
||||||
|
|
||||||
const val TMP_FOLDER_PATH = "/dev/tmp"
|
const val TMP_FOLDER_PATH = "/dev/tmp"
|
||||||
const val MAGISK_LOG = "/cache/magisk.log"
|
const val MAGISK_LOG = "/cache/magisk.log"
|
||||||
const val MANAGER_CONFIGS = ".tmp.magisk.config"
|
|
||||||
|
|
||||||
// Versions
|
// Versions
|
||||||
const val UPDATE_SERVICE_VER = 1
|
const val UPDATE_SERVICE_VER = 1
|
||||||
const val SNET_EXT_VER = 12
|
const val SNET_EXT_VER = 12
|
||||||
|
const val SNET_REVISION = "b66b1a914978e5f4c4bbfd74a59f4ad371bac107"
|
||||||
|
const val BOOTCTL_REVISION = "9c5dfc1b8245c0b5b524901ef0ff0f8335757b77"
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
const val ANDROID_MANIFEST = "AndroidManifest.xml"
|
||||||
|
const val MAGISK_INSTALL_LOG_FILENAME = "magisk_install_log_%s.log"
|
||||||
|
const val MANAGER_CONFIGS = ".tmp.magisk.config"
|
||||||
@JvmField
|
@JvmField
|
||||||
val USER_ID = Process.myUid() / 100000
|
val USER_ID = Process.myUid() / 100000
|
||||||
|
|
||||||
// Generic
|
|
||||||
const val MAGISK_INSTALL_LOG_FILENAME = "magisk_install_log_%s.log"
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
EXTERNAL_PATH.mkdirs()
|
EXTERNAL_PATH.mkdirs()
|
||||||
}
|
}
|
||||||
@ -75,9 +70,10 @@ object Const {
|
|||||||
val SNET_URL = getRaw("b66b1a914978e5f4c4bbfd74a59f4ad371bac107", "snet.apk")
|
val SNET_URL = getRaw("b66b1a914978e5f4c4bbfd74a59f4ad371bac107", "snet.apk")
|
||||||
@JvmField
|
@JvmField
|
||||||
val BOOTCTL_URL = getRaw("9c5dfc1b8245c0b5b524901ef0ff0f8335757b77", "bootctl")
|
val BOOTCTL_URL = getRaw("9c5dfc1b8245c0b5b524901ef0ff0f8335757b77", "bootctl")
|
||||||
|
const val GITHUB_RAW_API_URL = "https://raw.githubusercontent.com/"
|
||||||
|
|
||||||
private fun getRaw(where: String, name: String) =
|
private fun getRaw(where: String, name: String) =
|
||||||
"https://raw.githubusercontent.com/topjohnwu/magisk_files/%s/%s".format(where, name)
|
"${GITHUB_RAW_API_URL}topjohnwu/magisk_files/$where/$name"
|
||||||
}
|
}
|
||||||
|
|
||||||
object Key {
|
object Key {
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package com.topjohnwu.magisk
|
|
||||||
|
|
||||||
import android.os.Process
|
|
||||||
|
|
||||||
object Constants {
|
|
||||||
|
|
||||||
// Paths
|
|
||||||
val MAGISK_PATH = "/sbin/.magisk/img"
|
|
||||||
val MAGISK_LOG = "/cache/magisk.log"
|
|
||||||
|
|
||||||
val USER_ID get() = Process.myUid() / 100000
|
|
||||||
|
|
||||||
const val SNET_REVISION = "b66b1a914978e5f4c4bbfd74a59f4ad371bac107"
|
|
||||||
const val BOOTCTL_REVISION = "9c5dfc1b8245c0b5b524901ef0ff0f8335757b77"
|
|
||||||
|
|
||||||
const val GITHUB_URL = "https://github.com/"
|
|
||||||
const val GITHUB_API_URL = "https://api.github.com/"
|
|
||||||
const val GITHUB_RAW_API_URL = "https://raw.githubusercontent.com/"
|
|
||||||
|
|
||||||
}
|
|
@ -2,7 +2,7 @@ package com.topjohnwu.magisk.data.database
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import com.topjohnwu.magisk.Constants
|
import com.topjohnwu.magisk.Const
|
||||||
import com.topjohnwu.magisk.data.database.base.*
|
import com.topjohnwu.magisk.data.database.base.*
|
||||||
import com.topjohnwu.magisk.model.entity.MagiskPolicy
|
import com.topjohnwu.magisk.model.entity.MagiskPolicy
|
||||||
import com.topjohnwu.magisk.model.entity.toMap
|
import com.topjohnwu.magisk.model.entity.toMap
|
||||||
@ -60,7 +60,7 @@ class PolicyDao(
|
|||||||
|
|
||||||
fun fetchAll() = query<Select> {
|
fun fetchAll() = query<Select> {
|
||||||
condition {
|
condition {
|
||||||
equals("uid/100000", Constants.USER_ID)
|
equals("uid/100000", Const.USER_ID)
|
||||||
}
|
}
|
||||||
}.flattenAsFlowable { it }
|
}.flattenAsFlowable { it }
|
||||||
.map { it.toPolicy(context.packageManager) }
|
.map { it.toPolicy(context.packageManager) }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.topjohnwu.magisk.data.network
|
package com.topjohnwu.magisk.data.network
|
||||||
|
|
||||||
import com.topjohnwu.magisk.Constants
|
import com.topjohnwu.magisk.Const
|
||||||
import com.topjohnwu.magisk.KConfig
|
import com.topjohnwu.magisk.KConfig
|
||||||
import com.topjohnwu.magisk.model.entity.MagiskConfig
|
import com.topjohnwu.magisk.model.entity.MagiskConfig
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
@ -32,11 +32,11 @@ interface GithubRawApiServices {
|
|||||||
|
|
||||||
@GET("$MAGISK_FILES/{$REVISION}/snet.apk")
|
@GET("$MAGISK_FILES/{$REVISION}/snet.apk")
|
||||||
@Streaming
|
@Streaming
|
||||||
fun fetchSafetynet(@Path(REVISION) revision: String = Constants.SNET_REVISION): Single<ResponseBody>
|
fun fetchSafetynet(@Path(REVISION) revision: String = Const.SNET_REVISION): Single<ResponseBody>
|
||||||
|
|
||||||
@GET("$MAGISK_FILES/{$REVISION}/bootctl")
|
@GET("$MAGISK_FILES/{$REVISION}/bootctl")
|
||||||
@Streaming
|
@Streaming
|
||||||
fun fetchBootctl(@Path(REVISION) revision: String = Constants.BOOTCTL_REVISION): Single<ResponseBody>
|
fun fetchBootctl(@Path(REVISION) revision: String = Const.BOOTCTL_REVISION): Single<ResponseBody>
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package com.topjohnwu.magisk.data.repository
|
package com.topjohnwu.magisk.data.repository
|
||||||
|
|
||||||
import com.topjohnwu.magisk.Const
|
import com.topjohnwu.magisk.Const
|
||||||
import com.topjohnwu.magisk.Constants
|
|
||||||
import com.topjohnwu.magisk.data.database.LogDao
|
import com.topjohnwu.magisk.data.database.LogDao
|
||||||
import com.topjohnwu.magisk.data.database.base.suRaw
|
import com.topjohnwu.magisk.data.database.base.suRaw
|
||||||
import com.topjohnwu.magisk.model.entity.MagiskLog
|
import com.topjohnwu.magisk.model.entity.MagiskLog
|
||||||
@ -20,7 +19,7 @@ class LogRepository(
|
|||||||
.map { it.sortByDescending { it.date.time }; it }
|
.map { it.sortByDescending { it.date.time }; it }
|
||||||
.map { it.wrap() }
|
.map { it.wrap() }
|
||||||
|
|
||||||
fun fetchMagiskLogs() = "tail -n 5000 ${Constants.MAGISK_LOG}".suRaw()
|
fun fetchMagiskLogs() = "tail -n 5000 ${Const.MAGISK_LOG}".suRaw()
|
||||||
.filter { it.isNotEmpty() }
|
.filter { it.isNotEmpty() }
|
||||||
.map { Timber.i(it.toString()); it }
|
.map { Timber.i(it.toString()); it }
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ package com.topjohnwu.magisk.di
|
|||||||
import com.squareup.moshi.JsonAdapter
|
import com.squareup.moshi.JsonAdapter
|
||||||
import com.squareup.moshi.Moshi
|
import com.squareup.moshi.Moshi
|
||||||
import com.topjohnwu.magisk.BuildConfig
|
import com.topjohnwu.magisk.BuildConfig
|
||||||
import com.topjohnwu.magisk.Constants
|
import com.topjohnwu.magisk.Const
|
||||||
import com.topjohnwu.magisk.data.network.GithubRawApiServices
|
import com.topjohnwu.magisk.data.network.GithubRawApiServices
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import okhttp3.logging.HttpLoggingInterceptor
|
import okhttp3.logging.HttpLoggingInterceptor
|
||||||
@ -20,7 +20,7 @@ val networkingModule = module {
|
|||||||
single { createConverterFactory() }
|
single { createConverterFactory() }
|
||||||
single { createCallAdapterFactory() }
|
single { createCallAdapterFactory() }
|
||||||
single { createRetrofit(get(), get(), get()) }
|
single { createRetrofit(get(), get(), get()) }
|
||||||
single { createApiService<GithubRawApiServices>(get(), Constants.GITHUB_RAW_API_URL) }
|
single { createApiService<GithubRawApiServices>(get(), Const.Url.GITHUB_RAW_API_URL) }
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createOkHttpClient(): OkHttpClient {
|
fun createOkHttpClient(): OkHttpClient {
|
||||||
|
@ -6,7 +6,7 @@ import androidx.annotation.NonNull
|
|||||||
import androidx.annotation.WorkerThread
|
import androidx.annotation.WorkerThread
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
import com.topjohnwu.magisk.Constants
|
import com.topjohnwu.magisk.Const
|
||||||
import com.topjohnwu.magisk.data.database.base.su
|
import com.topjohnwu.magisk.data.database.base.su
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import kotlinx.android.parcel.Parcelize
|
import kotlinx.android.parcel.Parcelize
|
||||||
@ -48,7 +48,7 @@ data class Module(
|
|||||||
|
|
||||||
@AnyThread
|
@AnyThread
|
||||||
fun File.toModule(): Single<Module> {
|
fun File.toModule(): Single<Module> {
|
||||||
val path = "${Constants.MAGISK_PATH}/$name"
|
val path = "${Const.MAGISK_PATH}/$name"
|
||||||
return "dos2unix < $path/module.prop".su()
|
return "dos2unix < $path/module.prop".su()
|
||||||
.map { it.first().toModule(path) }
|
.map { it.first().toModule(path) }
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ public abstract class FingerprintHelper {
|
|||||||
private FingerprintManager manager;
|
private FingerprintManager manager;
|
||||||
private Cipher cipher;
|
private Cipher cipher;
|
||||||
private CancellationSignal cancel;
|
private CancellationSignal cancel;
|
||||||
|
private static final String SU_KEYSTORE_KEY = "su_key";
|
||||||
|
|
||||||
public static boolean useFingerprint() {
|
public static boolean useFingerprint() {
|
||||||
boolean fp = Config.get(Config.Key.SU_FINGERPRINT);
|
boolean fp = Config.get(Config.Key.SU_FINGERPRINT);
|
||||||
@ -50,7 +51,7 @@ public abstract class FingerprintHelper {
|
|||||||
+ KeyProperties.BLOCK_MODE_CBC + "/"
|
+ KeyProperties.BLOCK_MODE_CBC + "/"
|
||||||
+ KeyProperties.ENCRYPTION_PADDING_PKCS7);
|
+ KeyProperties.ENCRYPTION_PADDING_PKCS7);
|
||||||
keyStore.load(null);
|
keyStore.load(null);
|
||||||
SecretKey key = (SecretKey) keyStore.getKey(Const.SU_KEYSTORE_KEY, null);
|
SecretKey key = (SecretKey) keyStore.getKey(SU_KEYSTORE_KEY, null);
|
||||||
if (key == null) {
|
if (key == null) {
|
||||||
key = generateKey();
|
key = generateKey();
|
||||||
}
|
}
|
||||||
@ -86,7 +87,7 @@ public abstract class FingerprintHelper {
|
|||||||
KeyGenerator keygen = KeyGenerator
|
KeyGenerator keygen = KeyGenerator
|
||||||
.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
|
.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
|
||||||
KeyGenParameterSpec.Builder builder = new KeyGenParameterSpec.Builder(
|
KeyGenParameterSpec.Builder builder = new KeyGenParameterSpec.Builder(
|
||||||
Const.SU_KEYSTORE_KEY,
|
SU_KEYSTORE_KEY,
|
||||||
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
|
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
|
||||||
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
|
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
|
||||||
.setUserAuthenticationRequired(true)
|
.setUserAuthenticationRequired(true)
|
||||||
|
@ -15,7 +15,7 @@ buildscript {
|
|||||||
maven { url 'https://kotlin.bintray.com/kotlinx' }
|
maven { url 'https://kotlin.bintray.com/kotlinx' }
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.5.0-beta03'
|
classpath 'com.android.tools.build:gradle:3.5.0-beta04'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31"
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user