diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt index 11db384d..6c22704c 100644 --- a/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/screen/Home.kt @@ -24,7 +24,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontFamily -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.ramcosta.composedestinations.annotation.Destination @@ -34,9 +33,9 @@ import kotlinx.coroutines.launch import me.weishu.kernelsu.* import me.weishu.kernelsu.R import me.weishu.kernelsu.ui.screen.destinations.SettingScreenDestination -import me.weishu.kernelsu.ui.util.LinkifyText import me.weishu.kernelsu.ui.util.LocalSnackbarHost import me.weishu.kernelsu.ui.util.reboot +import me.weishu.kernelsu.ui.util.getSELinuxStatus @OptIn(ExperimentalMaterial3Api::class) @RootNavGraph(start = true) @@ -227,6 +226,9 @@ private fun InfoCard() { Spacer(Modifier.height(24.dp)) InfoCardItem(stringResource(R.string.home_securitypatch), Build.VERSION.SECURITY_PATCH) + Spacer(Modifier.height(24.dp)) + InfoCardItem(stringResource(R.string.home_selinux_status), getSELinuxStatus()) + val copiedMessage = stringResource(R.string.home_copied_to_clipboard) TextButton( modifier = Modifier.align(Alignment.End), diff --git a/manager/app/src/main/java/me/weishu/kernelsu/ui/util/SELinuxChecker.kt b/manager/app/src/main/java/me/weishu/kernelsu/ui/util/SELinuxChecker.kt new file mode 100644 index 00000000..d51fd91e --- /dev/null +++ b/manager/app/src/main/java/me/weishu/kernelsu/ui/util/SELinuxChecker.kt @@ -0,0 +1,32 @@ +package me.weishu.kernelsu.ui.util + +import androidx.compose.ui.res.stringResource +import androidx.compose.runtime.Composable +import com.topjohnwu.superuser.Shell +import me.weishu.kernelsu.R + +@Composable +fun getSELinuxStatus(): String { + val shell = Shell.Builder.create() + .setFlags(Shell.FLAG_REDIRECT_STDERR) + .build("sh") + + val list = ArrayList() + val result = shell.newJob().add("getenforce").to(list, list).exec() + val output = result.out.joinToString("\n").trim() + + if (result.isSuccess) { + return when (output) { + "Enforcing" -> stringResource(R.string.selinux_status_enforcing) + "Permissive" -> stringResource(R.string.selinux_status_permissive) + "Disabled" -> stringResource(R.string.selinux_status_disabled) + else -> stringResource(R.string.selinux_status_unknown) + } + } + + return if (output.endsWith("Permission denied")) { + stringResource(R.string.selinux_status_enforcing) + } else { + stringResource(R.string.selinux_status_unknown) + } +} diff --git a/manager/app/src/main/res/values-zh-rCN/strings.xml b/manager/app/src/main/res/values-zh-rCN/strings.xml index b8f61e4a..4a16d391 100644 --- a/manager/app/src/main/res/values-zh-rCN/strings.xml +++ b/manager/app/src/main/res/values-zh-rCN/strings.xml @@ -16,6 +16,11 @@ ABI 支持 系统指纹 安全补丁 + SELinux 状态 + 被禁用 + 强制执行 + 宽容模式 + 未知 超级用户 无法为 %d 授予 Root 无法启用模块: %s diff --git a/manager/app/src/main/res/values-zh-rHK/strings.xml b/manager/app/src/main/res/values-zh-rHK/strings.xml index b5449d6e..0fa36b13 100644 --- a/manager/app/src/main/res/values-zh-rHK/strings.xml +++ b/manager/app/src/main/res/values-zh-rHK/strings.xml @@ -16,6 +16,11 @@ ABI 支持 系统指纹 安全补丁 + SELinux 狀態 + 被禁用 + 強制執行 + 寬容模式 + 未知 超級用戶 无法为 %d 授予 Root 无法启用模块: %s diff --git a/manager/app/src/main/res/values-zh-rTW/strings.xml b/manager/app/src/main/res/values-zh-rTW/strings.xml index e983b435..6f3d7f06 100644 --- a/manager/app/src/main/res/values-zh-rTW/strings.xml +++ b/manager/app/src/main/res/values-zh-rTW/strings.xml @@ -16,6 +16,11 @@ ABI 支持 系统指纹 安全补丁 + SELinux 狀態 + 被禁用 + 強制執行 + 寬容模式 + 未知 超級用戶 无法为 %d 授予 Root 无法启用模块: %s diff --git a/manager/app/src/main/res/values/strings.xml b/manager/app/src/main/res/values/strings.xml index 8ba7e6d9..7fc1ded8 100644 --- a/manager/app/src/main/res/values/strings.xml +++ b/manager/app/src/main/res/values/strings.xml @@ -19,6 +19,11 @@ Fingerprint Security Patch + SELinux status + Disabled + Enforcing + Permissive + Unknown Superuser Failed to grant root for %d Failed to enable module: %s