Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62bc5f84 authored by Ricky Wai's avatar Ricky Wai Committed by Android (Google) Code Review
Browse files

Merge "Make Network watchlist use ConfigUpdater to get watchlist"

parents f10a9e75 ebe36246
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -59,8 +59,8 @@ public class NetworkWatchlistManager {
    /**
     * Report network watchlist records if necessary.
     *
     * Watchlist report process will run summarize records into a single report, then the
     * report will be processed by differential privacy framework and store it on disk.
     * Watchlist report process will summarize records into a single report, then the
     * report will be processed by differential privacy framework and stored on disk.
     *
     * @hide
     */
@@ -72,4 +72,18 @@ public class NetworkWatchlistManager {
            e.rethrowFromSystemServer();
        }
    }

    /**
     * Reload network watchlist.
     *
     * @hide
     */
    public void reloadWatchlist() {
        try {
            mNetworkWatchlistManager.reloadWatchlist();
        } catch (RemoteException e) {
            Log.e(TAG, "Unable to reload watchlist");
            e.rethrowFromSystemServer();
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -22,5 +22,6 @@ import android.os.SharedMemory;
interface INetworkWatchlistManager {
    boolean startWatchlistLogging();
    boolean stopWatchlistLogging();
    void reloadWatchlist();
    void reportWatchlistIfNecessary();
}
+8 −0
Original line number Diff line number Diff line
@@ -3870,6 +3870,14 @@
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.updates.NetworkWatchlistInstallReceiver"
                  android:permission="android.permission.UPDATE_CONFIG">
            <intent-filter>
                <action android:name="android.intent.action.UPDATE_NETWORK_WATCHLIST" />
                <data android:scheme="content" android:host="*" android:mimeType="*/*" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.android.server.updates.ApnDbInstallReceiver"
                android:permission="android.permission.UPDATE_CONFIG">
            <intent-filter>
+7 −30
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.text.TextUtils;
import android.util.Slog;

import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.DumpUtils;
import com.android.internal.net.INetworkWatchlistManager;
@@ -92,6 +93,7 @@ public class NetworkWatchlistService extends INetworkWatchlistManager.Stub {
        }
    }

    @GuardedBy("mLoggingSwitchLock")
    private volatile boolean mIsLoggingEnabled = false;
    private final Object mLoggingSwitchLock = new Object();

@@ -220,36 +222,11 @@ public class NetworkWatchlistService extends INetworkWatchlistManager.Stub {
        }
    }

    /**
     * Set a new network watchlist.
     * This method should be called by ConfigUpdater only.
     *
     * @return True if network watchlist is updated.
     */
    public boolean setNetworkSecurityWatchlist(List<byte[]> domainsCrc32Digests,
            List<byte[]> domainsSha256Digests,
            List<byte[]> ipAddressesCrc32Digests,
            List<byte[]> ipAddressesSha256Digests) {
        Slog.i(TAG, "Setting network watchlist");
        if (domainsCrc32Digests == null || domainsSha256Digests == null
                || ipAddressesCrc32Digests == null || ipAddressesSha256Digests == null) {
            Slog.e(TAG, "Parameters cannot be null");
            return false;
        }
        if (domainsCrc32Digests.size() != domainsSha256Digests.size()
                || ipAddressesCrc32Digests.size() != ipAddressesSha256Digests.size()) {
            Slog.e(TAG, "Must need to have the same number of CRC32 and SHA256 digests");
            return false;
        }
        if (domainsSha256Digests.size() + ipAddressesSha256Digests.size()
                > MAX_NUM_OF_WATCHLIST_DIGESTS) {
            Slog.e(TAG, "Total watchlist size cannot exceed " + MAX_NUM_OF_WATCHLIST_DIGESTS);
            return false;
        }
        mSettings.writeSettingsToDisk(domainsCrc32Digests, domainsSha256Digests,
                ipAddressesCrc32Digests, ipAddressesSha256Digests);
        Slog.i(TAG, "Set network watchlist: Success");
        return true;
    @Override
    public void reloadWatchlist() throws RemoteException {
        enforceWatchlistLoggingPermission();
        Slog.i(TAG, "Reloading watchlist");
        mSettings.reloadSettings();
    }

    @Override
+7 −2
Original line number Diff line number Diff line
@@ -21,10 +21,12 @@ import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Environment;
import android.util.Pair;

import com.android.internal.util.HexDump;

import java.io.File;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;
@@ -83,9 +85,12 @@ class WatchlistReportDbHelper extends SQLiteOpenHelper {
        HashMap<String, String> appDigestCNCList;
    }

    static File getSystemWatchlistDbFile() {
        return new File(Environment.getDataSystemDirectory(), NAME);
    }

    private WatchlistReportDbHelper(Context context) {
        super(context, WatchlistSettings.getSystemWatchlistFile(NAME).getAbsolutePath(),
                null, VERSION);
        super(context, getSystemWatchlistDbFile().getAbsolutePath(), null, VERSION);
        // Memory optimization - close idle connections after 30s of inactivity
        setIdleConnectionTimeout(IDLE_CONNECTION_TIMEOUT_MS);
    }
Loading