From b062e19f8293b142acaa0aee9e45243acf40813c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?T=C6=B0=20M=C3=A3=20T=E1=BA=A7n=20Qu=E1=BA=A3ng?=
 <baobaoxich@gmail.com>
Date: Thu, 24 Feb 2022 06:14:25 +0000
Subject: [PATCH] Add CLI command to restrict all network usage
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Reference: https://review.lineageos.org/c/324695
Signed-off-by: Tư Mã Tần Quảng <baobaoxich@gmail.com>
Change-Id: I07dd734faca6116356fc05af7dff262bec65b4cb
---
 .../net/NetworkPolicyManagerShellCommand.java | 26 +++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java
index eeb5c499282e..be5c4a52bea8 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerShellCommand.java
@@ -18,6 +18,7 @@ package com.android.server.net;
 
 import static android.net.NetworkPolicyManager.POLICY_ALLOW_METERED_BACKGROUND;
 import static android.net.NetworkPolicyManager.POLICY_NONE;
+import static android.net.NetworkPolicyManager.POLICY_REJECT_ALL;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_WIFI;
 import static android.net.NetworkPolicyManager.POLICY_REJECT_CELLULAR;
@@ -86,6 +87,8 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         pw.println("    Adds a UID to the whitelist for restrict background usage.");
         pw.println("  add restrict-background-blacklist UID");
         pw.println("    Adds a UID to the blacklist for restrict background usage.");
+        pw.println("  add restrict-network-usage-blacklist UID");
+        pw.println("    Adds a UID to the blacklist for restrict network usage.");
         pw.println("  add restrict-wifi-data-blacklist UID");
         pw.println("    Adds a UID to the blacklist for restrict Wi-Fi data usage.");
         pw.println("  add restrict-mobile-data-blacklist UID");
@@ -104,6 +107,8 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         pw.println("    Lists UIDs that are whitelisted for restrict background usage.");
         pw.println("  list restrict-background-blacklist");
         pw.println("    Lists UIDs that are blacklisted for restrict background usage.");
+        pw.println("  list restrict-network-usage-blacklist");
+        pw.println("    Lists UIDs that are blacklisted for restrict network usage.");
         pw.println("  list restrict-wifi-data-blacklist");
         pw.println("    Lists UIDs that are blacklisted for restrict Wi-Fi data usage.");
         pw.println("  list restrict-mobile-data-blacklist");
@@ -114,6 +119,8 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         pw.println("    Removes a UID from the whitelist for restrict background usage.");
         pw.println("  remove restrict-background-blacklist UID");
         pw.println("    Removes a UID from the blacklist for restrict background usage.");
+        pw.println("  remove restrict-network-usage-blacklist UID");
+        pw.println("    Removes a UID from the blacklist for restrict network usage.");
         pw.println("  remove restrict-wifi-data-blacklist UID");
         pw.println("    Removes a UID from the blacklist for restrict Wi-Fi data usage.");
         pw.println("  remove restrict-mobile-data-blacklist UID");
@@ -182,6 +189,8 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 return listRestrictBackgroundWhitelist();
             case "restrict-background-blacklist":
                 return listRestrictBackgroundBlacklist();
+            case "restrict-network-usage-blacklist":
+                return listRestrictNetworkUsageBlacklist();
             case "restrict-wifi-data-blacklist":
                 return listRestrictWiFiDataBlacklist();
             case "restrict-mobile-data-blacklist":
@@ -205,6 +214,8 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 return addRestrictBackgroundWhitelist();
             case "restrict-background-blacklist":
                 return addRestrictBackgroundBlacklist();
+            case "restrict-network-usage-blacklist":
+                return addRestrictNetworkUsageBlacklist();
             case "restrict-wifi-data-blacklist":
                 return addRestrictWiFiDataBlacklist();
             case "restrict-mobile-data-blacklist":
@@ -230,6 +241,8 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 return removeRestrictBackgroundWhitelist();
             case "restrict-background-blacklist":
                 return removeRestrictBackgroundBlacklist();
+            case "restrict-network-usage-blacklist":
+                return removeRestrictNetworkUsageBlacklist();
             case "restrict-wifi-data-blacklist":
                 return removeRestrictWiFiDataBlacklist();
             case "restrict-mobile-data-blacklist":
@@ -290,6 +303,11 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
                 POLICY_REJECT_METERED_BACKGROUND);
     }
 
+    private int listRestrictNetworkUsageBlacklist() throws RemoteException {
+        return listUidPolicies("Restrict network usage blacklisted UIDs",
+                POLICY_REJECT_ALL);
+    }
+
     private int listRestrictWiFiDataBlacklist() throws RemoteException {
         return listUidPolicies("Restrict Wi-Fi data blacklisted UIDs",
                 POLICY_REJECT_WIFI);
@@ -377,6 +395,10 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         return setUidPolicy(POLICY_REJECT_METERED_BACKGROUND);
     }
 
+    private int addRestrictNetworkUsageBlacklist() throws RemoteException {
+        return setUidPolicy(POLICY_REJECT_ALL);
+    }
+
     private int addRestrictWiFiDataBlacklist() throws RemoteException {
         return setUidPolicy(POLICY_REJECT_WIFI);
     }
@@ -393,6 +415,10 @@ class NetworkPolicyManagerShellCommand extends ShellCommand {
         return resetUidPolicy("not blacklisted", POLICY_REJECT_METERED_BACKGROUND);
     }
 
+    private int removeRestrictNetworkUsageBlacklist() throws RemoteException {
+        return resetUidPolicy("not blacklisted", POLICY_REJECT_ALL);
+    }
+
     private int removeRestrictWiFiDataBlacklist() throws RemoteException {
         return resetUidPolicy("not blacklisted", POLICY_REJECT_WIFI);
     }
-- 
GitLab