mirror of
https://github.com/MaintainTeam/Hypatia.git
synced 2025-03-01 05:48:23 +03:00
Add the German string translations, credit Petra Mirelli
https://gitlab.com/divested-mobile/hypatia/-/issues/1
This commit is contained in:
parent
415ff8d25e
commit
a85f812d04
14 changed files with 150 additions and 24 deletions
BIN
.idea/caches/build_file_checksums.ser
generated
BIN
.idea/caches/build_file_checksums.ser
generated
Binary file not shown.
6
.idea/compiler.xml
generated
Normal file
6
.idea/compiler.xml
generated
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<bytecodeTargetLevel target="1.8" />
|
||||||
|
</component>
|
||||||
|
</project>
|
12
.idea/gradle.xml
generated
12
.idea/gradle.xml
generated
|
@ -1,14 +1,20 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<compositeConfiguration>
|
<option name="testRunner" value="PLATFORM" />
|
||||||
<compositeBuild compositeDefinitionSource="SCRIPT" />
|
|
||||||
</compositeConfiguration>
|
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
<option value="$PROJECT_DIR$/app" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
<option name="resolveModulePerSourceSet" value="false" />
|
<option name="resolveModulePerSourceSet" value="false" />
|
||||||
|
<option name="useQualifiedModuleNames" value="true" />
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
|
25
.idea/jarRepositories.xml
generated
Normal file
25
.idea/jarRepositories.xml
generated
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RemoteRepositoriesConfiguration">
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Maven Central repository" />
|
||||||
|
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="jboss.community" />
|
||||||
|
<option name="name" value="JBoss Community repository" />
|
||||||
|
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="BintrayJCenter" />
|
||||||
|
<option name="name" value="BintrayJCenter" />
|
||||||
|
<option name="url" value="https://jcenter.bintray.com/" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="Google" />
|
||||||
|
<option name="name" value="Google" />
|
||||||
|
<option name="url" value="https://dl.google.com/dl/android/maven2/" />
|
||||||
|
</remote-repository>
|
||||||
|
</component>
|
||||||
|
</project>
|
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
|
@ -5,7 +5,7 @@
|
||||||
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
|
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
|
||||||
</configurations>
|
</configurations>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|
2
.idea/modules.xml
generated
2
.idea/modules.xml
generated
|
@ -3,7 +3,7 @@
|
||||||
<component name="ProjectModuleManager">
|
<component name="ProjectModuleManager">
|
||||||
<modules>
|
<modules>
|
||||||
<module fileurl="file://$PROJECT_DIR$/Veritas.iml" filepath="$PROJECT_DIR$/Veritas.iml" />
|
<module fileurl="file://$PROJECT_DIR$/Veritas.iml" filepath="$PROJECT_DIR$/Veritas.iml" />
|
||||||
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
|
<module fileurl="file://$PROJECT_DIR$/.idea/modules/app/Veritas.app.iml" filepath="$PROJECT_DIR$/.idea/modules/app/Veritas.app.iml" />
|
||||||
</modules>
|
</modules>
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
|
@ -6,7 +6,7 @@ android {
|
||||||
applicationId "us.spotco.malwarescanner"
|
applicationId "us.spotco.malwarescanner"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 26
|
targetSdkVersion 26
|
||||||
versionCode 41
|
versionCode 42
|
||||||
versionName "3.0"
|
versionName "3.0"
|
||||||
resConfigs "en"
|
resConfigs "en"
|
||||||
vectorDrawables.useSupportLibrary = true
|
vectorDrawables.useSupportLibrary = true
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:largeHeap="true"
|
android:largeHeap="true"
|
||||||
android:requestLegacyExternalStorage="true"
|
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/AppTheme"
|
android:theme="@style/AppTheme"
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class DownloaderTask extends AsyncTask<Object, String, String> {
|
||||||
protected String doInBackground(Object... objects) {
|
protected String doInBackground(Object... objects) {
|
||||||
String url = (String) objects[0];
|
String url = (String) objects[0];
|
||||||
File out = new File((String) objects[1]);
|
File out = new File((String) objects[1]);
|
||||||
publishProgress("Downloading " + url);
|
publishProgress(Utils.getContext().getString(R.string.main_database_downloading, url));
|
||||||
try {
|
try {
|
||||||
HttpURLConnection connection = Utils.getConnection(url);
|
HttpURLConnection connection = Utils.getConnection(url);
|
||||||
if (out.exists()) {
|
if (out.exists()) {
|
||||||
|
@ -51,18 +51,18 @@ public class DownloaderTask extends AsyncTask<Object, String, String> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fileOutputStream.close();
|
fileOutputStream.close();
|
||||||
publishProgress("Successfully downloaded\n");
|
publishProgress(Utils.getContext().getString(R.string.main_database_download_success) + "\n");
|
||||||
} else {
|
} else {
|
||||||
publishProgress("File not downloaded, response code " + res + "\n");
|
publishProgress(Utils.getContext().getString(R.string.main_database_download_error, res + "") + "\n");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
publishProgress("File not changed\n");
|
publishProgress(Utils.getContext().getString(R.string.main_database_not_changed) + "\n");
|
||||||
}
|
}
|
||||||
connection.disconnect();
|
connection.disconnect();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
out.delete();
|
out.delete();
|
||||||
publishProgress("Failed to download, check logcat\n");
|
publishProgress(Utils.getContext().getString(R.string.main_database_download_error_logcat) + "\n");
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
|
||||||
@Override
|
@Override
|
||||||
protected final void onPreExecute() {
|
protected final void onPreExecute() {
|
||||||
scanTime = SystemClock.elapsedRealtime();
|
scanTime = SystemClock.elapsedRealtime();
|
||||||
returnResult("Starting scan...", true);
|
returnResult(Utils.getContext().getString(R.string.main_starting_scan), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -62,18 +62,18 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
|
||||||
fileHashesSHA1.clear();
|
fileHashesSHA1.clear();
|
||||||
fileHashesSHA256.clear();
|
fileHashesSHA256.clear();
|
||||||
|
|
||||||
publishProgress(filesToScan[0].size() + " files pending scan\n", true);
|
publishProgress( Utils.getContext().getString(R.string.main_files_pending_scan, filesToScan[0].size() + "") + "\n", true);
|
||||||
|
|
||||||
DatabaseManager.loadAllAvailableDatabases(false);
|
DatabaseManager.loadAllAvailableDatabases(false);
|
||||||
if (Signatures.getSignatureCount() >= 0) {
|
if (Signatures.getSignatureCount() >= 0) {
|
||||||
publishProgress("Loaded database with " + Signatures.getSignatureCount() + " signatures\n", true);
|
publishProgress(Utils.getContext().getString(R.string.main_database_loaded, Signatures.getSignatureCount() + "") + "\n", true);
|
||||||
|
|
||||||
//Get file hashes
|
//Get file hashes
|
||||||
publishProgress("Hashing files...", true);
|
publishProgress(Utils.getContext().getString(R.string.main_hashing_files), true);
|
||||||
for (File file : filesToScan[0]) {
|
for (File file : filesToScan[0]) {
|
||||||
getFileHashes(file);
|
getFileHashes(file);
|
||||||
}
|
}
|
||||||
publishProgress("Calculated MD5/SHA-1/SHA-256 hashes for all files\n", true);
|
publishProgress(Utils.getContext().getString(R.string.main_hash_scan_done) + "\n", true);
|
||||||
|
|
||||||
//Check the hashes
|
//Check the hashes
|
||||||
checkSignature("MD5", fileHashesMD5, Signatures.MD5);
|
checkSignature("MD5", fileHashesMD5, Signatures.MD5);
|
||||||
|
@ -86,9 +86,9 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
|
||||||
fileHashesSHA256.clear();
|
fileHashesSHA256.clear();
|
||||||
System.gc();
|
System.gc();
|
||||||
Utils.amtFilesScanned += filesToScan[0].size();
|
Utils.amtFilesScanned += filesToScan[0].size();
|
||||||
publishProgress("Scan completed in " + ((SystemClock.elapsedRealtime() - scanTime) / 1000) + " seconds!\n\n\n\n", true);
|
publishProgress(Utils.getContext().getString(R.string.main_scanning_done, ((SystemClock.elapsedRealtime() - scanTime) / 1000) + "") + "\n\n\n\n", true);
|
||||||
} else {
|
} else {
|
||||||
publishProgress("No database available, not scanning...", true);
|
publishProgress(Utils.getContext().getString(R.string.main_no_database_available), true);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -106,9 +106,9 @@ class MalwareScanner extends AsyncTask<Set<File>, Object, String> {
|
||||||
publishProgress(result + " in " + file.getValue().toString().replaceAll(Environment.getExternalStorageDirectory().toString(), "~"), false);
|
publishProgress(result + " in " + file.getValue().toString().replaceAll(Environment.getExternalStorageDirectory().toString(), "~"), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
publishProgress("Checked all " + hashType + " hashes against signature databases\n", true);
|
publishProgress(Utils.getContext().getString(R.string.main_hash_scan_done, hashType) + "\n", true);
|
||||||
} else {
|
} else {
|
||||||
publishProgress("No " + hashType + " signatures available\n", true);
|
publishProgress(Utils.getContext().getString(R.string.main_no_hashes_available, hashType) + "\n", true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,7 @@ public class MalwareScannerService extends Service {
|
||||||
}
|
}
|
||||||
malwareMonitors.clear();
|
malwareMonitors.clear();
|
||||||
System.gc();
|
System.gc();
|
||||||
//Toast.makeText(this, "Hypatia: Realtime Scanning Stopped", Toast.LENGTH_SHORT).show();
|
//Toast.makeText(this, "Hypatia: Realtime Scanning Stopped", Toast.LENGTH_SHORT).show(); //TODO: Move to strings.xml
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setForeground() {
|
private void setForeground() {
|
||||||
|
@ -134,7 +134,7 @@ public class MalwareScannerService extends Service {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateForegroundNotification() {
|
private void updateForegroundNotification() {
|
||||||
foregroundNotification.setSubText(Utils.amtFilesScanned + " files scanned");
|
foregroundNotification.setSubText(Utils.amtFilesScanned + " files scanned"); //TODO: Move to strings.xml
|
||||||
notificationManager.notify(-1, foregroundNotification.build());
|
notificationManager.notify(-1, foregroundNotification.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,10 @@ public class Utils {
|
||||||
Utils.context = context;
|
Utils.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Context getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
public static SharedPreferences getPrefs(Context context) {
|
public static SharedPreferences getPrefs(Context context) {
|
||||||
return PreferenceManager.getDefaultSharedPreferences(context);
|
return PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
}
|
}
|
||||||
|
|
69
app/src/main/res/values-de/strings.xml
Normal file
69
app/src/main/res/values-de/strings.xml
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
<resources>
|
||||||
|
<string name="app_name">Hypatia V3</string>
|
||||||
|
|
||||||
|
<!-- START MainActivity -->
|
||||||
|
<string name="title_scanner">Scanner</string>
|
||||||
|
<string name="title_log">Verlauf</string>
|
||||||
|
<string name="title_databases">Datenbanken</string>
|
||||||
|
<string name="title_settings">Einstellungen</string>
|
||||||
|
|
||||||
|
<string name="main_database_updating">Update der %s Datenbank...</string>
|
||||||
|
<string name="main_database_downloading">Download von %s</string>
|
||||||
|
<string name="main_database_download_success">Erfolgreich heruntergeladen</string>
|
||||||
|
<string name="main_database_download_error">Datei wurde nicht heruntergeladen. Fehlercode %s</string>
|
||||||
|
<string name="main_no_database_available">Keine Datenbank verfügbar. Scan wird abgebrochen...</string>
|
||||||
|
<string name="main_database_not_changed">Datei wurd nicht geändert</string>
|
||||||
|
<string name="main_database_download_error_logcat">Download ist fehlgeschlagen. Für weitere Details bitte in logcat nachsehen</string>
|
||||||
|
|
||||||
|
<string name="main_starting_scan">Scan startet...</string>
|
||||||
|
<string name="main_files_pending_scan">%s Dateien, die zur Überprüfung vorgesehen sind</string>
|
||||||
|
<string name="main_database_loaded">Datenbank mit %s Signaturen geladen</string>
|
||||||
|
<string name="main_hashing_files">Generiere Hashes für Dateien...</string>
|
||||||
|
<string name="main_hashing_done">Hashes für alle Dateien generiert</string>
|
||||||
|
<string name="main_hash_scan_done">Alle %s Hashes wurden mit den Signatur-Datenbanken abgeglichen</string>
|
||||||
|
<string name="main_no_hashes_available">Keine %s Hash-Signaturen verfügbar</string>
|
||||||
|
<string name="main_scanning_done">Scan nach %s Sekunden abgeschlossen!</string>
|
||||||
|
<!-- END MainActivity -->
|
||||||
|
|
||||||
|
<!-- START NOTIFICATIONS -->
|
||||||
|
<string name="notif_scanner_realtime">Malware-Erkennung</string>
|
||||||
|
<string name="notif_scanner_realtime_channel">Dient zur Warnung in Echtzeit wenn Malware erkannt wird</string>
|
||||||
|
<string name="notif_scanner_realtime_context">Bekannte Malware wird in Echtzeit erkannt</string>
|
||||||
|
<!-- END NOTIFICATIONS -->
|
||||||
|
|
||||||
|
<!-- START TOASTS -->
|
||||||
|
<string name="toast_orbot_unavailable">Für dieses Feature wird Orbot benöntigt</string>
|
||||||
|
<!-- END TOASTS -->
|
||||||
|
|
||||||
|
<!-- START SettingsFragment -->
|
||||||
|
<string name="settings_category_scanner_realtime">Echtzeit-Scanner</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_enabled">Echtzeit-Scannen</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_enabled_summary">Überwachung auf Bedrohungen in Echtzeit mit den folgenden Einstellungen</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_apps">Apps scannen</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_apps_summary">Apps während der Installation scannen</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_internal">Internen Speicher überwachen</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_internal_summary">Rekursive Überwachung des internen Speichers</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_external">Externen Speicher überwachen</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_external_summary">Rekursive Überwachung des externen Speichers</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_system">System überwachen</string>
|
||||||
|
<string name="settings_pref_scanner_realtime_path_system_summary">Warnung bei Änderungen an /system</string>
|
||||||
|
|
||||||
|
<string name="settings_category_optimizations">Optimierungen</string>
|
||||||
|
<string name="settings_pref_optimizations_scanner_max_size">Maximale Datei-Größe</string>
|
||||||
|
<string name="settings_pref_optimizations_scanner_max_size_summary">Dateien, die größer als diese Angabe in Megabyte sind, werden nicht gescannt</string>
|
||||||
|
<string name="settings_pref_optimizations_database_hash_length">Maximale Hash-Länge</string>
|
||||||
|
<string name="settings_pref_optimizations_database_hash_length_summary">Geringerer Belegung des Arbeitsspeicher bei Gefahr von vermehrten Fehlalarmen (false positives)</string>
|
||||||
|
<string name="settings_pref_optimizations_database_trim">Variantennamen abkürzen</string>
|
||||||
|
<string name="settings_pref_optimizations_database_trim_summary">Geringere Belastung des Arbeitsspeichers auf Kosten von detaillierten Erkennungsmeldungen</string>
|
||||||
|
|
||||||
|
<string name="settings_category_network">Netzwerk</string>
|
||||||
|
<string name="settings_pref_network_tor">Onion-Routing</string>
|
||||||
|
<string name="settings_pref_network_tor_summary">Alle Netzwerk-Requests über Tor leiten</string>
|
||||||
|
|
||||||
|
<string name="settings_category_other">Sonstiges</string>
|
||||||
|
<string name="settings_pref_other_third_party">Dritt-Anbieter-Zugriff erlauben</string>
|
||||||
|
<string name="settings_pref_other_third_party_summary">Anderen Apps erlauben das Scannen von Objekten aufzurufen</string>
|
||||||
|
<string name="settings_pref_network_database_repo">Datenbank-Repository</string>
|
||||||
|
<string name="settings_pref_network_database_repo_summary">API von der die Datenbanken bezogen werden sollen</string>
|
||||||
|
<!-- END SettingsFragment -->
|
||||||
|
</resources>
|
|
@ -6,6 +6,23 @@
|
||||||
<string name="title_log">History</string>
|
<string name="title_log">History</string>
|
||||||
<string name="title_databases">Databases</string>
|
<string name="title_databases">Databases</string>
|
||||||
<string name="title_settings">Settings</string>
|
<string name="title_settings">Settings</string>
|
||||||
|
|
||||||
|
<string name="main_database_updating">Updating %s databases...</string>
|
||||||
|
<string name="main_database_downloading">Downloading %s</string>
|
||||||
|
<string name="main_database_download_success">Successfully downloaded</string>
|
||||||
|
<string name="main_database_download_error">File not downloaded, response code %s</string>
|
||||||
|
<string name="main_no_database_available">No database available, not scanning...</string>
|
||||||
|
<string name="main_database_not_changed">File not changed</string>
|
||||||
|
<string name="main_database_download_error_logcat">Failed to download, check logcat</string>
|
||||||
|
|
||||||
|
<string name="main_starting_scan">Starting scan...</string>
|
||||||
|
<string name="main_files_pending_scan">%s files pending scan</string>
|
||||||
|
<string name="main_database_loaded">Loaded database with %s signatures</string>
|
||||||
|
<string name="main_hashing_files">Hashing files...</string>
|
||||||
|
<string name="main_hashing_done">Calculated hashes for all files</string>
|
||||||
|
<string name="main_hash_scan_done">Checked all %s hashes against signature databases</string>
|
||||||
|
<string name="main_no_hashes_available">No %s hashes signatures available</string>
|
||||||
|
<string name="main_scanning_done">Scan completed in %s seconds!</string>
|
||||||
<!-- END MainActivity -->
|
<!-- END MainActivity -->
|
||||||
|
|
||||||
<!-- START NOTIFICATIONS -->
|
<!-- START NOTIFICATIONS -->
|
||||||
|
@ -49,4 +66,4 @@
|
||||||
<string name="settings_pref_network_database_repo">Database repo</string>
|
<string name="settings_pref_network_database_repo">Database repo</string>
|
||||||
<string name="settings_pref_network_database_repo_summary">API to request databases from</string>
|
<string name="settings_pref_network_database_repo_summary">API to request databases from</string>
|
||||||
<!-- END SettingsFragment -->
|
<!-- END SettingsFragment -->
|
||||||
</resources>
|
</resources>
|
Loading…
Add table
Reference in a new issue