From 1483e4d80307040ef502ace96b010b4e1b35ed0d Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 10 Nov 2020 13:21:45 +0100 Subject: [PATCH] Use default db path for call history & zrtp secrets + added migration from existing database files --- .../java/org/linphone/core/CoreContext.kt | 2 - .../java/org/linphone/core/CorePreferences.kt | 60 +++++++++++++++---- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/linphone/core/CoreContext.kt b/app/src/main/java/org/linphone/core/CoreContext.kt index 68c33d7ed..24b4b60ff 100644 --- a/app/src/main/java/org/linphone/core/CoreContext.kt +++ b/app/src/main/java/org/linphone/core/CoreContext.kt @@ -253,8 +253,6 @@ class CoreContext(val context: Context, coreConfig: Config) { private fun configureCore() { Log.i("[Context] Configuring Core") - core.zrtpSecretsFile = corePreferences.zrtpSecretsPath - core.callLogsDatabasePath = corePreferences.callHistoryDatabasePath core.staticPicture = corePreferences.staticPicturePath initUserCertificates() diff --git a/app/src/main/java/org/linphone/core/CorePreferences.kt b/app/src/main/java/org/linphone/core/CorePreferences.kt index a15b1dc73..aaef59c00 100644 --- a/app/src/main/java/org/linphone/core/CorePreferences.kt +++ b/app/src/main/java/org/linphone/core/CorePreferences.kt @@ -21,6 +21,7 @@ package org.linphone.core import android.content.Context import java.io.File +import java.io.FileInputStream import java.io.FileOutputStream import org.linphone.LinphoneApplication.Companion.coreContext import org.linphone.compatibility.Compatibility @@ -277,10 +278,18 @@ class CorePreferences constructor(private val context: Context) { get() = config.getString("app", "rls_uri", "sip:rls@sip.linphone.org")!! val conferenceServerUri: String - get() = config.getString("app", "default_conference_factory_uri", "sip:conference-factory@sip.linphone.org")!! + get() = config.getString( + "app", + "default_conference_factory_uri", + "sip:conference-factory@sip.linphone.org" + )!! val limeX3dhServerUrl: String - get() = config.getString("app", "default_lime_x3dh_server_url", "https://lime.linphone.org/lime-server/lime-server.php")!! + get() = config.getString( + "app", + "default_lime_x3dh_server_url", + "https://lime.linphone.org/lime-server/lime-server.php" + )!! val allowMultipleFilesAndTextInSameMessage: Boolean get() = config.getBool("app", "allow_multiple_files_and_text_in_same_message", true) @@ -295,7 +304,11 @@ class CorePreferences constructor(private val context: Context) { get() = config.getBool("app", "show_border_on_big_contact_avatar", true) val checkIfUpdateAvailableUrl: String? - get() = config.getString("misc", "version_check_url_root", "https://linphone.org/releases/android/RELEASE") + get() = config.getString( + "misc", + "version_check_url_root", + "https://linphone.org/releases/android/RELEASE" + ) val checkUpdateAvailableInterval: Int get() = config.getInt("app", "version_check_interval", 86400000) @@ -398,12 +411,6 @@ class CorePreferences constructor(private val context: Context) { val userCertificatesPath: String get() = context.filesDir.absolutePath + "/user-certs" - val zrtpSecretsPath: String - get() = context.filesDir.absolutePath + "/zrtp_secrets" - - val callHistoryDatabasePath: String - get() = context.filesDir.absolutePath + "/linphone-log-history.db" - val staticPicturePath: String get() = context.filesDir.absolutePath + "/share/images/nowebcamcif.jpg" @@ -417,6 +424,9 @@ class CorePreferences constructor(private val context: Context) { copy("linphonerc_factory", factoryConfigPath, true) copy("assistant_linphone_default_values", linphoneDefaultValuesPath, true) copy("assistant_default_values", defaultValuesPath, true) + + move(context.filesDir.absolutePath + "/linphone-log-history.db", context.filesDir.absolutePath + "/call-history.db") + move(context.filesDir.absolutePath + "/zrtp_secrets", context.filesDir.absolutePath + "/zrtp-secrets.db") } fun getString(resource: Int): String { @@ -427,11 +437,11 @@ class CorePreferences constructor(private val context: Context) { val outFile = File(to) if (outFile.exists()) { if (!overrideIfExists) { - Log.i("[Preferences] File $to already exists") + android.util.Log.i(context.getString(org.linphone.R.string.app_name), "[Preferences] File $to already exists") return } } - Log.i("[Preferences] Overriding $to by $from asset") + android.util.Log.i(context.getString(org.linphone.R.string.app_name), "[Preferences] Overriding $to by $from asset") val outStream = FileOutputStream(outFile) val inFile = context.assets.open(from) @@ -447,4 +457,32 @@ class CorePreferences constructor(private val context: Context) { outStream.flush() outStream.close() } + + private fun move(from: String, to: String, overrideIfExists: Boolean = false) { + val inFile = File(from) + val outFile = File(to) + if (inFile.exists()) { + if (outFile.exists() && !overrideIfExists) { + android.util.Log.w(context.getString(org.linphone.R.string.app_name), "[Preferences] Can't move [$from] to [$to], destination file already exists") + } else { + val inStream = FileInputStream(inFile) + val outStream = FileOutputStream(outFile) + + val buffer = ByteArray(1024) + var read: Int + while (inStream.read(buffer).also { read = it } != -1) { + outStream.write(buffer, 0, read) + } + + inStream.close() + outStream.flush() + outStream.close() + + inFile.delete() + android.util.Log.i(context.getString(org.linphone.R.string.app_name), "[Preferences] Successfully moved [$from] to [$to]") + } + } else { + android.util.Log.w(context.getString(org.linphone.R.string.app_name), "[Preferences] Can't move [$from] to [$to], source file doesn't exists") + } + } }