Add SELinux status (#98)

* manager: Get SELinux status and display it at home

Signed-off-by: xiaoleGun <1592501605@qq.com>
Co-authored-by: xiaoleGun <1592501605@qq.com>
This commit is contained in:
weishu
2023-01-21 18:58:33 +08:00
committed by GitHub
parent aced1088f7
commit 6e02cbde8a
6 changed files with 56 additions and 2 deletions

View File

@@ -24,7 +24,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontFamily 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.tooling.preview.Preview
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.annotation.Destination
@@ -34,9 +33,9 @@ import kotlinx.coroutines.launch
import me.weishu.kernelsu.* import me.weishu.kernelsu.*
import me.weishu.kernelsu.R import me.weishu.kernelsu.R
import me.weishu.kernelsu.ui.screen.destinations.SettingScreenDestination 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.LocalSnackbarHost
import me.weishu.kernelsu.ui.util.reboot import me.weishu.kernelsu.ui.util.reboot
import me.weishu.kernelsu.ui.util.getSELinuxStatus
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@RootNavGraph(start = true) @RootNavGraph(start = true)
@@ -227,6 +226,9 @@ private fun InfoCard() {
Spacer(Modifier.height(24.dp)) Spacer(Modifier.height(24.dp))
InfoCardItem(stringResource(R.string.home_securitypatch), Build.VERSION.SECURITY_PATCH) 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) val copiedMessage = stringResource(R.string.home_copied_to_clipboard)
TextButton( TextButton(
modifier = Modifier.align(Alignment.End), modifier = Modifier.align(Alignment.End),

View File

@@ -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<String>()
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)
}
}

View File

@@ -16,6 +16,11 @@
<string name="home_abi">ABI 支持</string> <string name="home_abi">ABI 支持</string>
<string name="home_fingerprint">系统指纹</string> <string name="home_fingerprint">系统指纹</string>
<string name="home_securitypatch">安全补丁</string> <string name="home_securitypatch">安全补丁</string>
<string name="home_selinux_status">SELinux 状态</string>
<string name="selinux_status_disabled">被禁用</string>
<string name="selinux_status_enforcing">强制执行</string>
<string name="selinux_status_permissive">宽容模式</string>
<string name="selinux_status_unknown">未知</string>
<string name="superuser">超级用户</string> <string name="superuser">超级用户</string>
<string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string> <string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string>
<string name="module_failed_to_enable">无法启用模块: %s</string> <string name="module_failed_to_enable">无法启用模块: %s</string>

View File

@@ -16,6 +16,11 @@
<string name="home_abi">ABI 支持</string> <string name="home_abi">ABI 支持</string>
<string name="home_fingerprint">系统指纹</string> <string name="home_fingerprint">系统指纹</string>
<string name="home_securitypatch">安全补丁</string> <string name="home_securitypatch">安全补丁</string>
<string name="home_selinux_status">SELinux 狀態</string>
<string name="selinux_status_disabled">被禁用</string>
<string name="selinux_status_enforcing">強制執行</string>
<string name="selinux_status_permissive">寬容模式</string>
<string name="selinux_status_unknown">未知</string>
<string name="superuser">超級用戶</string> <string name="superuser">超級用戶</string>
<string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string> <string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string>
<string name="module_failed_to_enable">无法启用模块: %s</string> <string name="module_failed_to_enable">无法启用模块: %s</string>

View File

@@ -16,6 +16,11 @@
<string name="home_abi">ABI 支持</string> <string name="home_abi">ABI 支持</string>
<string name="home_fingerprint">系统指纹</string> <string name="home_fingerprint">系统指纹</string>
<string name="home_securitypatch">安全补丁</string> <string name="home_securitypatch">安全补丁</string>
<string name="home_selinux_status">SELinux 狀態</string>
<string name="selinux_status_disabled">被禁用</string>
<string name="selinux_status_enforcing">強制執行</string>
<string name="selinux_status_permissive">寬容模式</string>
<string name="selinux_status_unknown">未知</string>
<string name="superuser">超級用戶</string> <string name="superuser">超級用戶</string>
<string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string> <string name="superuser_failed_to_grant_root">无法为 %d 授予 Root</string>
<string name="module_failed_to_enable">无法启用模块: %s</string> <string name="module_failed_to_enable">无法启用模块: %s</string>

View File

@@ -19,6 +19,11 @@
<string name="home_fingerprint">Fingerprint</string> <string name="home_fingerprint">Fingerprint</string>
<string name="home_securitypatch">Security Patch</string> <string name="home_securitypatch">Security Patch</string>
<string name="home_selinux_status">SELinux status</string>
<string name="selinux_status_disabled">Disabled</string>
<string name="selinux_status_enforcing">Enforcing</string>
<string name="selinux_status_permissive">Permissive</string>
<string name="selinux_status_unknown">Unknown</string>
<string name="superuser">Superuser</string> <string name="superuser">Superuser</string>
<string name="superuser_failed_to_grant_root">Failed to grant root for %d</string> <string name="superuser_failed_to_grant_root">Failed to grant root for %d</string>
<string name="module_failed_to_enable">Failed to enable module: %s</string> <string name="module_failed_to_enable">Failed to enable module: %s</string>