diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8999926..4c30819 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + { + + @Override + protected String doInBackground(String... strings) { + String url = strings[0]; + File out = new File(strings[1]); + try { + HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); + connection.setConnectTimeout(45000); + connection.setReadTimeout(45000); + connection.addRequestProperty("User-Agent", "Veritas Database Updater"); + if (out.exists()) { + connection.setIfModifiedSince(out.lastModified()); + } + connection.connect(); + int res = connection.getResponseCode(); + if (res != 304) { + if(res == 200) { + if (out.exists()) { + out.delete(); + } + FileOutputStream fileOutputStream = new FileOutputStream(out); + + final byte data[] = new byte[1024]; + int count; + while ((count = connection.getInputStream().read(data, 0, 1024)) != -1) { + fileOutputStream.write(data, 0, count); + } + + fileOutputStream.close(); + publishProgress("Successfully downloaded " + url + "\n"); + } else { + publishProgress("File not downloaded " + res + "\n"); + } + } else { + publishProgress("File not changed " + url + "\n"); + } + connection.disconnect(); + } catch (Exception e) { + e.printStackTrace(); + publishProgress("Failed to download file from " + url + "\n"); + } + + return null; + } + + @Override + protected void onProgressUpdate(String... progress) { + log.append(progress[0] + "\n"); + } + + @Override + protected void onPostExecute(String result) { + + } + } } diff --git a/app/src/main/java/us/spotco/veritas/MainActivity.java b/app/src/main/java/us/spotco/veritas/MainActivity.java index 41d2407..f52a798 100644 --- a/app/src/main/java/us/spotco/veritas/MainActivity.java +++ b/app/src/main/java/us/spotco/veritas/MainActivity.java @@ -4,6 +4,7 @@ import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; +import android.text.method.ScrollingMovementMethod; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -24,10 +25,15 @@ public class MainActivity extends AppCompatActivity { setSupportActionBar(toolbar); TextView logView = findViewById(R.id.txtLogOutput); + logView.setMovementMethod(new ScrollingMovementMethod()); logView.append("Copyright 2017 Spot Communications, Inc.\n"); logView.append("License: GPLv3\n"); logView.append("Powered by ClamAV signatures, License: GPLv3\n"); + logView.append("\nDisclaimer: This is an extremely basic signature scanner\n\n"); + MenuItem databaseUpdateCheckOption = findViewById(R.id.mnuUpdateDatabase); + + final Database database = new Database(this, logView, databaseUpdateCheckOption); final MalwareScanner scanner = new MalwareScanner(this, logView); FloatingActionButton fab = findViewById(R.id.fab); diff --git a/app/src/main/java/us/spotco/veritas/MalwareScanner.java b/app/src/main/java/us/spotco/veritas/MalwareScanner.java index 0cdb952..5557a51 100644 --- a/app/src/main/java/us/spotco/veritas/MalwareScanner.java +++ b/app/src/main/java/us/spotco/veritas/MalwareScanner.java @@ -24,7 +24,12 @@ public class MalwareScanner { } public void startScanner(boolean scanSystem, boolean scanApps, boolean scanInternal, boolean scanExternal) { - malwareScannerTask = new MalwareScannerTask().execute(scanSystem, scanApps, scanInternal, scanExternal); + if(Database.doesDatabaseExist()) { + malwareScannerTask = new MalwareScannerTask().execute(scanSystem, scanApps, scanInternal, scanExternal); + } else { + log.append("No database found... downloading!\n"); + Database.updateDatabase(); + } } public void stopScanner() { diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index b41c17e..f5bb293 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -1,24 +1,15 @@ - + + - - - + android:text="" + android:scrollbars="vertical" + android:maxLines="5000" + android:gravity="bottom" /> + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 3e502d1..6d9c1b1 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -3,6 +3,11 @@ xmlns:tools="http://schemas.android.com/tools" tools:context="us.spotco.veritas.MainActivity"> + Veritas + Update database Scan /system Scan App APKs Scan Internal Storage