summaryrefslogtreecommitdiff
path: root/permissionse/src/main/java
diff options
context:
space:
mode:
authorGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2022-11-06 18:19:17 +0000
committerGuillaume Jacquart <guillaume.jacquart@hoodbrains.com>2022-11-06 18:19:17 +0000
commit99b27efb59ba642bfca0c6fbabfaa2c6631e15b9 (patch)
treec55aed6119dff29a84d7120bedf88e2df1775597 /permissionse/src/main/java
parent9701ef06a47560ca429f1e7fffd0958b376ec628 (diff)
parentfdeecefd34c00b225bd58f6cc7135a95e21728f1 (diff)
Merge branch '5561-name_the_vpn_already_running' into 'main'
5561: display name of other VPNrunning always on. See merge request e/os/advanced-privacy!96
Diffstat (limited to 'permissionse/src/main/java')
-rw-r--r--permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt67
1 files changed, 61 insertions, 6 deletions
diff --git a/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt b/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt
index fe5b7ac..83711dd 100644
--- a/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt
+++ b/permissionse/src/main/java/foundation/e/privacymodules/permissions/PermissionsPrivacyModule.kt
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2022 E FOUNDATION
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
package foundation.e.privacymodules.permissions
import android.annotation.TargetApi
@@ -18,10 +35,10 @@ import foundation.e.privacymodules.permissions.data.ApplicationDescription
/**
* Implements [IPermissionsPrivacyModule] with all privileges of a system app.
*/
-class PermissionsPrivacyModule(context: Context): APermissionsPrivacyModule(context) {
+class PermissionsPrivacyModule(context: Context) : APermissionsPrivacyModule(context) {
- private val appOpsManager: AppOpsManager get()
- = context.getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager
+ private val appOpsManager: AppOpsManager
+ get() = context.getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager
/**
* @see IPermissionsPrivacyModule.toggleDangerousPermission
@@ -67,7 +84,7 @@ class PermissionsPrivacyModule(context: Context): APermissionsPrivacyModule(cont
}
override fun setVpnPackageAuthorization(packageName: String): Boolean {
- return when(Build.VERSION.SDK_INT) {
+ return when (Build.VERSION.SDK_INT) {
29 -> setVpnPackageAuthorizationSDK29(packageName)
30 -> setVpnPackageAuthorizationSDK30(packageName)
31, 32 -> setVpnPackageAuthorizationSDK32(packageName)
@@ -81,7 +98,8 @@ class PermissionsPrivacyModule(context: Context): APermissionsPrivacyModule(cont
@TargetApi(29)
private fun setVpnPackageAuthorizationSDK29(packageName: String): Boolean {
val service: IConnectivityManager = IConnectivityManager.Stub.asInterface(
- ServiceManager.getService(Context.CONNECTIVITY_SERVICE))
+ ServiceManager.getService(Context.CONNECTIVITY_SERVICE)
+ )
try {
if (service.prepareVpn(null, packageName, UserHandle.myUserId())) {
@@ -101,7 +119,8 @@ class PermissionsPrivacyModule(context: Context): APermissionsPrivacyModule(cont
@TargetApi(30)
private fun setVpnPackageAuthorizationSDK30(packageName: String): Boolean {
val service: IConnectivityManager = IConnectivityManager.Stub.asInterface(
- ServiceManager.getService(Context.CONNECTIVITY_SERVICE))
+ ServiceManager.getService(Context.CONNECTIVITY_SERVICE)
+ )
try {
if (service.prepareVpn(null, packageName, UserHandle.myUserId())) {
@@ -136,4 +155,40 @@ class PermissionsPrivacyModule(context: Context): APermissionsPrivacyModule(cont
}
return false
}
+
+ override fun getAlwaysOnVpnPackage(): String? {
+ return when (Build.VERSION.SDK_INT) {
+ 29, 30 -> getAlwaysOnVpnPackageSDK29()
+ 31, 32 -> getAlwaysOnVpnPackageSDK32()
+ else -> {
+ Log.e("Permissions-e", "Bad android sdk version")
+ null
+ }
+ }
+ }
+
+ @TargetApi(29)
+ private fun getAlwaysOnVpnPackageSDK29(): String? {
+ val service: IConnectivityManager = IConnectivityManager.Stub.asInterface(
+ ServiceManager.getService(Context.CONNECTIVITY_SERVICE)
+ )
+
+ return try {
+ service.getAlwaysOnVpnPackage(UserHandle.myUserId())
+ } catch (e: java.lang.Exception) {
+ Log.e("Permissions-e", "Bad android sdk version ", e)
+ return null
+ }
+ }
+
+ @TargetApi(31)
+ private fun getAlwaysOnVpnPackageSDK32(): String? {
+ val vpnManager = context.getSystemService(Context.VPN_MANAGEMENT_SERVICE) as VpnManager
+ return try {
+ vpnManager.getAlwaysOnVpnPackageForUser(UserHandle.myUserId())
+ } catch (e: java.lang.Exception) {
+ Log.e("Permissions-e", "Bad android sdk version ", e)
+ return null
+ }
+ }
}