From 07e648a092a726e951e3deb371bf116570a992bf Mon Sep 17 00:00:00 2001 From: Elie Gambache Date: Mon, 19 May 2025 20:07:50 +0300 Subject: [PATCH 1/3] Add `hasUnmodestImage` property to AppPolicy and implementations Introduce a new `hasUnmodestImage` property in the `AppPolicy` interface and implement it across all policy types (`ModeBasedPolicy`, `MultiModePolicy`, `FixedPolicy`). This property defaults to `false` and enhances the flexibility of handling image-related policies. --- .../io/github/kdroidfilter/database/core/policies/AppPolicy.kt | 2 ++ .../github/kdroidfilter/database/core/policies/FixedPolicy.kt | 1 + .../kdroidfilter/database/core/policies/ModeBasedPolicy.kt | 3 ++- .../kdroidfilter/database/core/policies/MultiModePolicy.kt | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt index 699173d..c881007 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt @@ -9,6 +9,8 @@ sealed interface AppPolicy { val packageName: String val category: AppCategory val minimumVersionCode: Int + + val hasUnmodestImage : Boolean val detectionRules: List } diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt index 50815e1..6faeef5 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt @@ -14,5 +14,6 @@ data class FixedPolicy( override val category: AppCategory, val networkPolicy: NetworkPolicy, override val minimumVersionCode: Int, + override val hasUnmodestImage: Boolean = false, override val detectionRules: List = emptyList() ) : AppPolicy \ No newline at end of file diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt index 4fc1f56..251d155 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt @@ -15,5 +15,6 @@ data class ModeBasedPolicy( override val category: AppCategory, val modePolicies: Map, override val minimumVersionCode: Int, + override val hasUnmodestImage: Boolean = false, override val detectionRules: List = emptyList() -) : AppPolicy \ No newline at end of file +) : AppPolicy diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt index 6cdc9ac..c5f24ba 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt @@ -40,6 +40,7 @@ data class MultiModePolicy( override val category: AppCategory, val modeVariants: List, override val minimumVersionCode: Int, + override val hasUnmodestImage: Boolean = false, override val detectionRules: List = emptyList() ) : AppPolicy { From 7b466816b6bd96270ae5ea92f407364ef9c6c87a Mon Sep 17 00:00:00 2001 From: Elie Gambache Date: Mon, 19 May 2025 20:11:41 +0300 Subject: [PATCH 2/3] Add `isPotentiallyDangerous` property to AppPolicy implementations This update introduces a new `isPotentiallyDangerous` property to the `AppPolicy` interface and its implementations (`ModeBasedPolicy`, `MultiModePolicy`, and `FixedPolicy`). It allows for marking policies that may pose potential risks, enhancing classification capabilities. --- .../io/github/kdroidfilter/database/core/policies/AppPolicy.kt | 1 + .../github/kdroidfilter/database/core/policies/FixedPolicy.kt | 3 ++- .../kdroidfilter/database/core/policies/ModeBasedPolicy.kt | 1 + .../kdroidfilter/database/core/policies/MultiModePolicy.kt | 1 + 4 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt index c881007..2dcf7d1 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/AppPolicy.kt @@ -11,6 +11,7 @@ sealed interface AppPolicy { val minimumVersionCode: Int val hasUnmodestImage : Boolean + val isPotentiallyDangerous : Boolean val detectionRules: List } diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt index 6faeef5..972d3f5 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/FixedPolicy.kt @@ -15,5 +15,6 @@ data class FixedPolicy( val networkPolicy: NetworkPolicy, override val minimumVersionCode: Int, override val hasUnmodestImage: Boolean = false, + override val isPotentiallyDangerous: Boolean = false, override val detectionRules: List = emptyList() -) : AppPolicy \ No newline at end of file +) : AppPolicy diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt index 251d155..ab76178 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/ModeBasedPolicy.kt @@ -16,5 +16,6 @@ data class ModeBasedPolicy( val modePolicies: Map, override val minimumVersionCode: Int, override val hasUnmodestImage: Boolean = false, + override val isPotentiallyDangerous: Boolean = false, override val detectionRules: List = emptyList() ) : AppPolicy diff --git a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt index c5f24ba..3144f45 100644 --- a/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt +++ b/core/src/commonMain/kotlin/io/github/kdroidfilter/database/core/policies/MultiModePolicy.kt @@ -41,6 +41,7 @@ data class MultiModePolicy( val modeVariants: List, override val minimumVersionCode: Int, override val hasUnmodestImage: Boolean = false, + override val isPotentiallyDangerous: Boolean = false, override val detectionRules: List = emptyList() ) : AppPolicy { From 7aed13bd89eaaa4d69cbd327cd27b0b3be16f90c Mon Sep 17 00:00:00 2001 From: Elie Gambache Date: Mon, 19 May 2025 20:16:27 +0300 Subject: [PATCH 3/3] Add optional flags for content and risk warnings Introduce `hasUnmodestImage` and `isPotentiallyDangerous` flags to enhance app filtering and user awareness. These flags restrict app access by default unless users acknowledge and accept the associated risks. Included examples demonstrate proper usage scenarios. --- README.MD | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/README.MD b/README.MD index 56f92ea..e6d479f 100644 --- a/README.MD +++ b/README.MD @@ -235,3 +235,51 @@ Both modes block all outbound Internet traffic; the distinction is mainly about * Pick **`OFFLINE`** for apps that work perfectly without any network so you avoid showing an unnecessary notification. --- + +### ⚠️ Optional Flags: Content and Risk Warnings + +You can optionally include the following boolean flags in your policy files to help with sensitive app filtering and user awareness: + +* **`hasUnmodestImage`**: Set to `true` if the app contains unfiltered, inappropriate or immodest visual content (e.g. uncovered women in media banners, icons, or previews). This indicates that the user must explicitly accept the risk in order to use the app. + +* **`isPotentiallyDangerous`**: Set to `true` if the app can pose a technical or security risk, such as remote access tools or apps capable of controlling other devices over open internet connections. This flag helps apply stricter rules or prompt additional warnings. + +These fields are optional but enforced by default: apps with these flags will not appear in the store or be granted internet access unless the user has explicitly accepted the associated risk. + +Apps marked with either of these flags will only appear in the store or receive internet access **if the user has explicitly acknowledged the risk** and chosen to enable them manually. + +--- + +### 🔄 Example: Risky Applications + +#### 1. Bank App with Inappropriate Visuals + +```json +{ + "type": "Fixed", + "packageName": "com.example.fakebank", + "category": "FINANCE", + "minimumVersionCode": 100, + "hasUnmodestImage": true, + "networkPolicy": { + "mode": "FULL_OPEN" + } +} +``` + +#### 2. Remote Access Tool + +```json +{ + "type": "Fixed", + "packageName": "com.example.remotecontrol", + "category": "TOOLS", + "minimumVersionCode": 50, + "isPotentiallyDangerous": true, + "networkPolicy": { + "mode": "FULL_OPEN" + } +} +``` + +Both of these apps are tagged for additional caution. They will only be functional or visible if the user has agreed to unlock them by accepting the risks.