mirror of
https://github.com/MaintainTeam/Hypatia.git
synced 2025-03-01 05:48:23 +03:00
Fix issue with no databases on service start
This commit is contained in:
parent
21dfafd0af
commit
23774983ab
4 changed files with 30 additions and 23 deletions
|
@ -6,8 +6,8 @@ android {
|
|||
applicationId "us.spotco.malwarescanner"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 17
|
||||
versionName "1.8"
|
||||
versionCode 18
|
||||
versionName "1.9"
|
||||
}
|
||||
buildTypes {
|
||||
debug {
|
||||
|
|
|
@ -26,9 +26,33 @@ class Database {
|
|||
|
||||
public Database(Context context, TextView log) {
|
||||
Database.log = log;
|
||||
initDatabase(context);
|
||||
}
|
||||
|
||||
public static boolean areDatabasesAvailable() {
|
||||
return databasePath != null && databasePath.listFiles().length > 0;
|
||||
}
|
||||
|
||||
public static boolean isDatabaseLoaded() {
|
||||
return signaturesMD5.size() > 0 && signaturesSHA1.size() > 0 && signaturesSHA256.size() > 0;
|
||||
}
|
||||
|
||||
public static int getSignatureCount() {
|
||||
return signaturesMD5.size() + signaturesSHA1.size() + signaturesSHA256.size();
|
||||
}
|
||||
|
||||
public static void updateDatabase(ArrayList<SignatureDatabase> signatureDatabases) {
|
||||
for (SignatureDatabase signatureDatabase : signatureDatabases) {
|
||||
new Downloader().execute(signatureDatabase.getUrl(), databasePath + "/" + signatureDatabase.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void initDatabase(Context context) {
|
||||
databasePath = new File(context.getFilesDir() + "/signatures/");
|
||||
databasePath.mkdir();
|
||||
|
||||
signatureDatabases.clear();
|
||||
|
||||
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/doppelstern.hdb"));
|
||||
|
@ -48,26 +72,9 @@ class Database {
|
|||
signatureDatabases.add(new SignatureDatabase("https://spotco.us/Theia/winnow_malware.hdb"));
|
||||
}
|
||||
|
||||
public static boolean areDatabasesAvailable() {
|
||||
return databasePath.listFiles().length > 0;
|
||||
}
|
||||
|
||||
public static boolean isDatabaseLoaded() {
|
||||
return signaturesMD5.size() > 0 && signaturesSHA1.size() > 0 && signaturesSHA256.size() > 0;
|
||||
}
|
||||
|
||||
public static int getSignatureCount() {
|
||||
return signaturesMD5.size() + signaturesSHA1.size() + signaturesSHA256.size();
|
||||
}
|
||||
|
||||
public static void updateDatabase(ArrayList<SignatureDatabase> signatureDatabases) {
|
||||
for (SignatureDatabase signatureDatabase : signatureDatabases) {
|
||||
new Downloader().execute(signatureDatabase.getUrl(), databasePath + "/" + signatureDatabase.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public static void loadDatabase(boolean ignoreifLoaded, ArrayList<SignatureDatabase> signatureDatabases) {
|
||||
public static void loadDatabase(Context context, boolean ignoreifLoaded, ArrayList<SignatureDatabase> signatureDatabases) {
|
||||
if (!isDatabaseLoaded() || !ignoreifLoaded && isDatabaseLoaded()) {
|
||||
initDatabase(context);
|
||||
signaturesMD5.clear();
|
||||
signaturesSHA1.clear();
|
||||
signaturesSHA256.clear();
|
||||
|
|
|
@ -112,7 +112,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
case R.id.mnuUpdateDatabase:
|
||||
Database.updateDatabase(Database.signatureDatabases);
|
||||
if (Database.isDatabaseLoaded()) {
|
||||
Database.loadDatabase(false, Database.signatureDatabases);
|
||||
Database.loadDatabase(getApplicationContext(), false, Database.signatureDatabases);
|
||||
}
|
||||
break;
|
||||
case R.id.toggleRealtime:
|
||||
|
|
|
@ -74,7 +74,7 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
|
|||
|
||||
publishProgress(filesToScan[0].size() + " files pending scan\n", true);
|
||||
|
||||
Database.loadDatabase(true, Database.signatureDatabases);
|
||||
Database.loadDatabase(context, true, Database.signatureDatabases);
|
||||
publishProgress("Loaded database with " + Database.getSignatureCount() + " signatures\n", true);
|
||||
|
||||
//Get file hashes
|
||||
|
|
Loading…
Add table
Reference in a new issue