mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-22 09:25:49 +03:00
Merge branch 'develop' into feature/crosssigning_bootstrap
This commit is contained in:
commit
153587bd82
7 changed files with 22 additions and 241 deletions
|
@ -16,6 +16,7 @@ Bugfix 🐛:
|
|||
- Crypto | RiotX sometimes rotate the current device keys (#1170)
|
||||
- RiotX can't restore cross signing keys saved by web in SSSS (#1174)
|
||||
- Cross- Signing | After signin in new session, verification paper trail in DM is off (#1191)
|
||||
- Failed to encrypt message in room (message stays in red), [thanks to pwr22] (#925)
|
||||
|
||||
Translations 🗣:
|
||||
-
|
||||
|
@ -27,7 +28,7 @@ Build 🧱:
|
|||
-
|
||||
|
||||
Other changes:
|
||||
-
|
||||
- Increase File Logger capacities ( + use dev log preferences)
|
||||
|
||||
Changes in RiotX 0.18.1 (2020-03-17)
|
||||
===================================================
|
||||
|
|
|
@ -792,10 +792,11 @@ internal class DefaultCryptoService @Inject constructor(
|
|||
val params = LoadRoomMembersTask.Params(roomId)
|
||||
try {
|
||||
loadRoomMembersTask.execute(params)
|
||||
val userIds = getRoomUserIds(roomId)
|
||||
setEncryptionInRoom(roomId, event.content?.get("algorithm")?.toString(), true, userIds)
|
||||
} catch (throwable: Throwable) {
|
||||
Timber.e(throwable, "## onRoomEncryptionEvent ERROR FAILED TO SETUP CRYPTO ")
|
||||
} finally {
|
||||
val userIds = getRoomUserIds(roomId)
|
||||
setEncryptionInRoom(roomId, event.content?.get("algorithm")?.toString(), true, userIds)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,56 +0,0 @@
|
|||
// /*
|
||||
// * Copyright 2018 New Vector Ltd
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//
|
||||
// package im.vector.matrix.android.internal.crypto.store.db.model
|
||||
//
|
||||
// import im.vector.matrix.android.internal.crypto.IncomingRoomKeyRequest
|
||||
// import im.vector.matrix.android.internal.crypto.model.rest.RoomKeyRequestBody
|
||||
// import io.realm.RealmObject
|
||||
//
|
||||
// internal open class IncomingRoomKeyRequestEntity(
|
||||
// var requestId: String? = null,
|
||||
// var userId: String? = null,
|
||||
// var deviceId: String? = null,
|
||||
// // RoomKeyRequestBody fields
|
||||
// var requestBodyAlgorithm: String? = null,
|
||||
// var requestBodyRoomId: String? = null,
|
||||
// var requestBodySenderKey: String? = null,
|
||||
// var requestBodySessionId: String? = null
|
||||
// ) : RealmObject() {
|
||||
//
|
||||
// fun toIncomingRoomKeyRequest(): IncomingRoomKeyRequest {
|
||||
// return IncomingRoomKeyRequest(
|
||||
// requestId = requestId,
|
||||
// userId = userId,
|
||||
// deviceId = deviceId,
|
||||
// requestBody = RoomKeyRequestBody(
|
||||
// algorithm = requestBodyAlgorithm,
|
||||
// roomId = requestBodyRoomId,
|
||||
// senderKey = requestBodySenderKey,
|
||||
// sessionId = requestBodySessionId
|
||||
// )
|
||||
// )
|
||||
// }
|
||||
//
|
||||
// fun putRequestBody(requestBody: RoomKeyRequestBody?) {
|
||||
// requestBody?.let {
|
||||
// requestBodyAlgorithm = it.algorithm
|
||||
// requestBodyRoomId = it.roomId
|
||||
// requestBodySenderKey = it.senderKey
|
||||
// requestBodySessionId = it.sessionId
|
||||
// }
|
||||
// }
|
||||
// }
|
|
@ -1,37 +0,0 @@
|
|||
// /*
|
||||
// * Copyright (c) 2020 New Vector Ltd
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//
|
||||
// package im.vector.matrix.android.internal.crypto.store.db.model
|
||||
//
|
||||
// import im.vector.matrix.android.internal.crypto.IncomingSecretShareRequest
|
||||
// import io.realm.RealmObject
|
||||
//
|
||||
// internal open class IncomingSecretRequestEntity(
|
||||
// var requestId: String? = null,
|
||||
// var userId: String? = null,
|
||||
// var deviceId: String? = null,
|
||||
// var secretName: String? = null
|
||||
// ) : RealmObject() {
|
||||
//
|
||||
// fun toIncomingSecretShareRequest(): IncomingSecretShareRequest {
|
||||
// return IncomingSecretShareRequest(
|
||||
// requestId = requestId,
|
||||
// userId = userId,
|
||||
// deviceId = deviceId,
|
||||
// secretName = secretName
|
||||
// )
|
||||
// }
|
||||
// }
|
|
@ -1,77 +0,0 @@
|
|||
// /*
|
||||
// * Copyright 2018 New Vector Ltd
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//
|
||||
// package im.vector.matrix.android.internal.crypto.store.db.model
|
||||
//
|
||||
// import im.vector.matrix.android.internal.crypto.OutgoingRoomKeyRequest
|
||||
// import im.vector.matrix.android.internal.crypto.ShareRequestState
|
||||
// import im.vector.matrix.android.internal.crypto.model.rest.RoomKeyRequestBody
|
||||
// import im.vector.matrix.android.internal.crypto.store.db.deserializeFromRealm
|
||||
// import im.vector.matrix.android.internal.crypto.store.db.serializeForRealm
|
||||
// import io.realm.RealmObject
|
||||
// import io.realm.annotations.PrimaryKey
|
||||
//
|
||||
// internal open class OutgoingRoomKeyRequestEntity(
|
||||
// @PrimaryKey var requestId: String? = null,
|
||||
// var cancellationTxnId: String? = null,
|
||||
// // Serialized Json
|
||||
// var recipientsData: String? = null,
|
||||
// // RoomKeyRequestBody fields
|
||||
// var requestBodyAlgorithm: String? = null,
|
||||
// var requestBodyRoomId: String? = null,
|
||||
// var requestBodySenderKey: String? = null,
|
||||
// var requestBodySessionId: String? = null,
|
||||
// // State
|
||||
// var state: Int = 0
|
||||
// ) : RealmObject() {
|
||||
//
|
||||
// /**
|
||||
// * Convert to OutgoingRoomKeyRequest
|
||||
// */
|
||||
// fun toOutgoingRoomKeyRequest(): OutgoingRoomKeyRequest {
|
||||
// val cancellationTxnId = this.cancellationTxnId
|
||||
// return OutgoingRoomKeyRequest(
|
||||
// RoomKeyRequestBody(
|
||||
// algorithm = requestBodyAlgorithm,
|
||||
// roomId = requestBodyRoomId,
|
||||
// senderKey = requestBodySenderKey,
|
||||
// sessionId = requestBodySessionId
|
||||
// ),
|
||||
// getRecipients()!!,
|
||||
// requestId!!,
|
||||
// ShareRequestState.from(state)
|
||||
// ).apply {
|
||||
// this.cancellationTxnId = cancellationTxnId
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private fun getRecipients(): List<Map<String, String>>? {
|
||||
// return deserializeFromRealm(recipientsData)
|
||||
// }
|
||||
//
|
||||
// fun putRecipients(recipients: List<Map<String, String>>?) {
|
||||
// recipientsData = serializeForRealm(recipients)
|
||||
// }
|
||||
//
|
||||
// fun putRequestBody(requestBody: RoomKeyRequestBody?) {
|
||||
// requestBody?.let {
|
||||
// requestBodyAlgorithm = it.algorithm
|
||||
// requestBodyRoomId = it.roomId
|
||||
// requestBodySenderKey = it.senderKey
|
||||
// requestBodySessionId = it.sessionId
|
||||
// }
|
||||
// }
|
||||
// }
|
|
@ -1,63 +0,0 @@
|
|||
// /*
|
||||
// * Copyright (c) 2020 New Vector Ltd
|
||||
// *
|
||||
// * Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// * you may not use this file except in compliance with the License.
|
||||
// * You may obtain a copy of the License at
|
||||
// *
|
||||
// * http://www.apache.org/licenses/LICENSE-2.0
|
||||
// *
|
||||
// * Unless required by applicable law or agreed to in writing, software
|
||||
// * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// * See the License for the specific language governing permissions and
|
||||
// * limitations under the License.
|
||||
// */
|
||||
//
|
||||
// package im.vector.matrix.android.internal.crypto.store.db.model
|
||||
//
|
||||
// import im.vector.matrix.android.internal.crypto.OutgoingSecretRequest
|
||||
// import im.vector.matrix.android.internal.crypto.ShareRequestState
|
||||
// import im.vector.matrix.android.internal.crypto.store.db.deserializeFromRealm
|
||||
// import im.vector.matrix.android.internal.crypto.store.db.serializeForRealm
|
||||
// import io.realm.RealmObject
|
||||
// import io.realm.annotations.PrimaryKey
|
||||
//
|
||||
// internal open class OutgoingSecretRequestEntity(
|
||||
// @PrimaryKey var requestId: String? = null,
|
||||
// var cancellationTxnId: String? = null,
|
||||
// // Serialized Json
|
||||
// var recipientsData: String? = null,
|
||||
// // RoomKeyRequestBody fields
|
||||
// var secretName: String? = null,
|
||||
// // State
|
||||
// var state: Int = 0
|
||||
// ) : RealmObject() {
|
||||
//
|
||||
// /**
|
||||
// * Convert to OutgoingRoomKeyRequest
|
||||
// */
|
||||
// fun toOutgoingSecretRequest(): OutgoingSecretRequest {
|
||||
// val cancellationTxnId = this.cancellationTxnId
|
||||
// return OutgoingSecretRequest(
|
||||
// secretName,
|
||||
// getRecipients() ?: emptyList(),
|
||||
// requestId!!,
|
||||
// ShareRequestState.from(state)
|
||||
// ).apply {
|
||||
// this.cancellationTxnId = cancellationTxnId
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private fun getRecipients(): List<Map<String, String>>? {
|
||||
// return try {
|
||||
// deserializeFromRealm(recipientsData)
|
||||
// } catch (failure: Throwable) {
|
||||
// null
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// fun putRecipients(recipients: List<Map<String, String>>?) {
|
||||
// recipientsData = serializeForRealm(recipients)
|
||||
// }
|
||||
// }
|
|
@ -35,13 +35,25 @@ import java.util.logging.Logger
|
|||
import javax.inject.Inject
|
||||
import javax.inject.Singleton
|
||||
|
||||
private const val LOG_SIZE_BYTES = 20 * 1024 * 1024 // 20MB
|
||||
|
||||
private const val LOG_ROTATION_COUNT = 3
|
||||
private const val SIZE_20MB = 20 * 1024 * 1024
|
||||
private const val SIZE_50MB = 50 * 1024 * 1024
|
||||
|
||||
@Singleton
|
||||
class VectorFileLogger @Inject constructor(val context: Context, private val vectorPreferences: VectorPreferences) : Timber.DebugTree() {
|
||||
|
||||
private val maxLogSizeByte: Int
|
||||
private val logRotationCount: Int
|
||||
|
||||
init {
|
||||
if (vectorPreferences.labAllowedExtendedLogging()) {
|
||||
maxLogSizeByte = SIZE_50MB
|
||||
logRotationCount = 15
|
||||
} else {
|
||||
maxLogSizeByte = SIZE_20MB
|
||||
logRotationCount = 7
|
||||
}
|
||||
}
|
||||
|
||||
private val sLogger = Logger.getLogger("im.vector.riotx")
|
||||
private var sFileHandler: FileHandler? = null
|
||||
private var sCacheDirectory: File? = null
|
||||
|
@ -61,7 +73,7 @@ class VectorFileLogger @Inject constructor(val context: Context, private val vec
|
|||
setLogDirectory(File(logsDirectoryFile))
|
||||
try {
|
||||
if (sCacheDirectory != null) {
|
||||
sFileHandler = FileHandler(sCacheDirectory!!.absolutePath + "/" + sFileName + ".%g.txt", LOG_SIZE_BYTES, LOG_ROTATION_COUNT)
|
||||
sFileHandler = FileHandler(sCacheDirectory!!.absolutePath + "/" + sFileName + ".%g.txt", maxLogSizeByte, logRotationCount)
|
||||
sFileHandler?.formatter = LogFormatter()
|
||||
sLogger.useParentHandlers = false
|
||||
sLogger.level = Level.ALL
|
||||
|
@ -117,7 +129,7 @@ class VectorFileLogger @Inject constructor(val context: Context, private val vec
|
|||
sFileHandler!!.flush()
|
||||
val absPath = sCacheDirectory?.absolutePath ?: return emptyList()
|
||||
|
||||
for (i in 0..LOG_ROTATION_COUNT) {
|
||||
for (i in 0..logRotationCount) {
|
||||
val filepath = "$absPath/$sFileName.$i.txt"
|
||||
val file = File(filepath)
|
||||
if (file.exists()) {
|
||||
|
|
Loading…
Reference in a new issue