mirror of
https://github.com/MaintainTeam/Hypatia.git
synced 2025-03-01 05:48:23 +03:00
Allow selection of enabled databases
This commit is contained in:
parent
58eaa3d7ab
commit
71883023e6
5 changed files with 78 additions and 20 deletions
|
@ -6,8 +6,8 @@ android {
|
||||||
applicationId "us.spotco.malwarescanner"
|
applicationId "us.spotco.malwarescanner"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 26
|
targetSdkVersion 26
|
||||||
versionCode 20
|
versionCode 21
|
||||||
versionName "1.9"
|
versionName "2.0"
|
||||||
}
|
}
|
||||||
buildTypes {
|
buildTypes {
|
||||||
debug {
|
debug {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package us.spotco.malwarescanner;
|
package us.spotco.malwarescanner;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
@ -54,12 +55,12 @@ class Database {
|
||||||
|
|
||||||
signatureDatabases.clear();
|
signatureDatabases.clear();
|
||||||
|
|
||||||
|
SharedPreferences prefs = context.getSharedPreferences(BuildConfig.APPLICATION_ID, Context.MODE_PRIVATE);
|
||||||
|
if (prefs.getBoolean("SIGNATURES_EXTENDED", false)) {
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/bofhland_malware_attach.hdb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/bofhland_malware_attach.hdb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/crdfam.clamav.hdb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/crdfam.clamav.hdb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/doppelstern.hdb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/doppelstern.hdb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/hackingteam.hsb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/hackingteam.hsb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/main.hdb"));
|
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/main.hsb"));
|
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/malware.expert.hdb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/malware.expert.hdb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/malwarehash.hsb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/malwarehash.hsb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/porcupine.hsb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/porcupine.hsb"));
|
||||||
|
@ -72,6 +73,19 @@ class Database {
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/winnow_extended_malware.hdb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/winnow_extended_malware.hdb"));
|
||||||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/winnow_malware.hdb"));
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/winnow_malware.hdb"));
|
||||||
}
|
}
|
||||||
|
if (prefs.getBoolean("SIGNATURES_CLAMAV-MAIN", false)) {
|
||||||
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/main.hdb"));
|
||||||
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/main.hsb"));
|
||||||
|
}
|
||||||
|
if (prefs.getBoolean("SIGNATURES_CLAMAV-DAILY", false)) {
|
||||||
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/daily.hdb"));
|
||||||
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/daily.hsb"));
|
||||||
|
}
|
||||||
|
if (prefs.getBoolean("SIGNATURES_CLAMAV-ANDROID", true)) {
|
||||||
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/Android.hdb"));
|
||||||
|
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/Android.hsb"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void loadDatabase(Context context, boolean ignoreifLoaded, THashSet<SignatureDatabase> signatureDatabases) {
|
public static void loadDatabase(Context context, boolean ignoreifLoaded, THashSet<SignatureDatabase> signatureDatabases) {
|
||||||
if (!isDatabaseLoaded() || !ignoreifLoaded && isDatabaseLoaded()) {
|
if (!isDatabaseLoaded() || !ignoreifLoaded && isDatabaseLoaded()) {
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
package us.spotco.malwarescanner;
|
package us.spotco.malwarescanner;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
|
@ -85,12 +88,48 @@ public class MainActivity extends AppCompatActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void selectDatabases() {
|
||||||
|
final String[] databases = {"ClamAV: Android Only", "ClamAV: Main", "ClamAV: Daily (NOT RECOMMENDED)", "3rd Parties: Extended"};
|
||||||
|
final boolean[] databaseDefaults = {
|
||||||
|
prefs.getBoolean("SIGNATURES_CLAMAV-ANDROID", true),
|
||||||
|
prefs.getBoolean("SIGNATURES_CLAMAV-MAIN", false),
|
||||||
|
prefs.getBoolean("SIGNATURES_CLAMAV-DAILY", false),
|
||||||
|
prefs.getBoolean("SIGNATURES_EXTENDED", false)};
|
||||||
|
|
||||||
|
Dialog dialog;
|
||||||
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
|
builder.setTitle(R.string.lblSelectDatabasesTitle);
|
||||||
|
|
||||||
|
builder.setMultiChoiceItems(databases, databaseDefaults, new DialogInterface.OnMultiChoiceClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialogInterface, int i, boolean selected) {
|
||||||
|
databaseDefaults[i] = selected;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialogInterface, int i) {
|
||||||
|
prefs.edit().putBoolean("SIGNATURES_CLAMAV-ANDROID", databaseDefaults[0]).apply();
|
||||||
|
prefs.edit().putBoolean("SIGNATURES_CLAMAV-MAIN", databaseDefaults[1]).apply();
|
||||||
|
prefs.edit().putBoolean("SIGNATURES_CLAMAV-DAILY", databaseDefaults[2]).apply();
|
||||||
|
prefs.edit().putBoolean("SIGNATURES_EXTENDED", databaseDefaults[3]).apply();
|
||||||
|
updateDatabase();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dialog = builder.create();
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final boolean onOptionsItemSelected(MenuItem item) {
|
public final boolean onOptionsItemSelected(MenuItem item) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.mnuUpdateDatabase:
|
case R.id.mnuUpdateDatabase:
|
||||||
updateDatabase();
|
updateDatabase();
|
||||||
break;
|
break;
|
||||||
|
case R.id.mnuSelectDatabases:
|
||||||
|
selectDatabases();
|
||||||
|
break;
|
||||||
case R.id.toggleRealtime:
|
case R.id.toggleRealtime:
|
||||||
Intent realtimeScanner = new Intent(getApplicationContext(), MalwareScannerService.class);
|
Intent realtimeScanner = new Intent(getApplicationContext(), MalwareScannerService.class);
|
||||||
if (!item.isChecked()) {
|
if (!item.isChecked()) {
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
<item
|
<item
|
||||||
android:id="@+id/mnuUpdateDatabase"
|
android:id="@+id/mnuUpdateDatabase"
|
||||||
android:title="@string/lblUpdateDatabase" />
|
android:title="@string/lblUpdateDatabase" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/mnuSelectDatabases"
|
||||||
|
android:title="@string/lblSelectDatabases" />
|
||||||
<item
|
<item
|
||||||
android:id="@+id/toggleRealtime"
|
android:id="@+id/toggleRealtime"
|
||||||
android:title="@string/lblRealtimeScannerToggle"
|
android:title="@string/lblRealtimeScannerToggle"
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Theia</string>
|
<string name="app_name">Theia</string>
|
||||||
<string name="lblUpdateDatabase">Update database</string>
|
<string name="lblUpdateDatabase">Update databases</string>
|
||||||
|
<string name="lblSelectDatabases">Select databases</string>
|
||||||
|
<string name="lblSelectDatabasesTitle">Select databases to enable</string>
|
||||||
<string name="lblStartRealtime">Start realtime scanner</string>
|
<string name="lblStartRealtime">Start realtime scanner</string>
|
||||||
<string name="lblScanSystem">Scan /system</string>
|
<string name="lblScanSystem">Scan /system</string>
|
||||||
<string name="lblScanApps">Scan App APKs</string>
|
<string name="lblScanApps">Scan App APKs</string>
|
||||||
|
|
Loading…
Add table
Reference in a new issue