diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt index 6f2a916351..ef60aaa83e 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/Message.kt @@ -15,7 +15,7 @@ abstract class Message { var groupPublicKey: String? = null var openGroupServerMessageID: Long? = null - open val ttl: Long = 2 * 24 * 60 * 60 * 1000 + open val ttl: Long = 14 * 24 * 60 * 60 * 1000 open val isSelfSendValid: Boolean = false // validation diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt index c02cfc4c19..fa6544fc2a 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ClosedGroupControlMessage.kt @@ -19,8 +19,8 @@ class ClosedGroupControlMessage() : ControlMessage() { override val ttl: Long = run { when (kind) { - is Kind.EncryptionKeyPair -> return@run 4 * 24 * 60 * 60 * 1000 - else -> return@run 2 * 24 * 60 * 60 * 1000 + is Kind.EncryptionKeyPair -> 14 * 24 * 60 * 60 * 1000 + else -> 14 * 24 * 60 * 60 * 1000 } } diff --git a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt index fe06cc6c01..2fbf13588f 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/messages/control/ConfigurationMessage.kt @@ -87,7 +87,6 @@ class ConfigurationMessage(var closedGroups: List, var openGroups: } } - override val ttl: Long = 4 * 24 * 60 * 60 * 1000 override val isSelfSendValid: Boolean = true companion object { diff --git a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt index b6b4d6788c..8ae61cdee1 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/sending_receiving/MessageSender.kt @@ -30,7 +30,6 @@ import org.session.libsession.messaging.sending_receiving.attachments.Attachment import org.session.libsession.messaging.sending_receiving.linkpreview.LinkPreview as SignalLinkPreview import org.session.libsession.messaging.sending_receiving.quotes.QuoteModel as SignalQuote - object MessageSender { // Error @@ -146,11 +145,10 @@ object MessageSender { is Destination.OpenGroup -> throw Error.PreconditionFailure("Destination should not be open groups!") } val wrappedMessage = MessageWrapper.wrap(kind, message.sentTimestamp!!, senderPublicKey, ciphertext) - // Calculate proof of work + // Send the result if (destination is Destination.Contact && message is VisibleMessage && !isSelfSend) { SnodeConfiguration.shared.broadcaster.broadcast("calculatingPoW", message.sentTimestamp!!) } - // Send the result val base64EncodedData = Base64.encodeBytes(wrappedMessage) val snodeMessage = SnodeMessage(message.recipient!!, base64EncodedData, message.ttl, message.sentTimestamp!!) if (destination is Destination.Contact && message is VisibleMessage && !isSelfSend) { diff --git a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt index 9be9db1d29..9f8d417ed3 100644 --- a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt +++ b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt @@ -12,6 +12,7 @@ import org.session.libsignal.service.loki.api.utilities.HTTP import org.session.libsignal.service.loki.database.LokiAPIDatabaseProtocol import org.session.libsignal.service.loki.utilities.Broadcaster import org.session.libsignal.service.loki.utilities.prettifiedDescription +import org.session.libsignal.service.loki.utilities.removing05PrefixIfNeeded import org.session.libsignal.service.loki.utilities.retryIfNeeded import org.session.libsignal.utilities.* import org.session.libsignal.utilities.logging.Log @@ -37,16 +38,18 @@ object SnodeAPI { // use port 4433 if API level can handle network security config and enforce pinned certificates private val seedPort = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) 443 else 4433 - private val seedNodePool: Set = setOf( - "https://storage.seed1.loki.network:$seedPort", - "https://storage.seed3.loki.network:$seedPort", - "https://public.loki.foundation:$seedPort" - ) - internal val snodeFailureThreshold = 4 + private val seedNodePool by lazy { + if (useTestnet) { + setOf( "http://public.loki.foundation:38157" ) + } else { + setOf( "https://storage.seed1.loki.network:$seedPort", "https://storage.seed3.loki.network:$seedPort", "https://public.loki.foundation:$seedPort" ) + } + } + private val snodeFailureThreshold = 4 private val targetSwarmSnodeCount = 2 - private val useOnionRequests = true + internal val useTestnet = false internal var powDifficulty = 1 // Error @@ -164,7 +167,7 @@ object SnodeAPI { cachedSwarmCopy.addAll(cachedSwarm) return task { cachedSwarmCopy } } else { - val parameters = mapOf( "pubKey" to publicKey ) + val parameters = mapOf( "pubKey" to if (useTestnet) publicKey.removing05PrefixIfNeeded() else publicKey ) return getRandomSnode().bind { invoke(Snode.Method.GetSwarm, it, publicKey, parameters) }.map(sharedContext) { @@ -177,7 +180,7 @@ object SnodeAPI { fun getRawMessages(snode: Snode, publicKey: String): RawResponsePromise { val lastHashValue = database.getLastMessageHashValue(snode, publicKey) ?: "" - val parameters = mapOf( "pubKey" to publicKey, "lastHash" to lastHashValue ) + val parameters = mapOf( "pubKey" to if (useTestnet) publicKey.removing05PrefixIfNeeded() else publicKey, "lastHash" to lastHashValue ) return invoke(Snode.Method.GetMessages, snode, publicKey, parameters) } @@ -190,7 +193,7 @@ object SnodeAPI { } fun sendMessage(message: SnodeMessage): Promise, Exception> { - val destination = message.recipient + val destination = if (useTestnet) message.recipient.removing05PrefixIfNeeded() else message.recipient return retryIfNeeded(maxRetryCount) { getTargetSnodes(destination).map { swarm -> swarm.map { snode -> diff --git a/libsession/src/main/java/org/session/libsession/snode/SnodeMessage.kt b/libsession/src/main/java/org/session/libsession/snode/SnodeMessage.kt index 5d9c49a8d5..0a653e400b 100644 --- a/libsession/src/main/java/org/session/libsession/snode/SnodeMessage.kt +++ b/libsession/src/main/java/org/session/libsession/snode/SnodeMessage.kt @@ -1,5 +1,7 @@ package org.session.libsession.snode +import org.session.libsignal.service.loki.utilities.removing05PrefixIfNeeded + data class SnodeMessage( // The hex encoded public key of the recipient. val recipient: String, @@ -12,7 +14,7 @@ data class SnodeMessage( ) { internal fun toJSON(): Map { return mutableMapOf( - "pubKey" to recipient, + "pubKey" to if (SnodeAPI.useTestnet) recipient.removing05PrefixIfNeeded() else recipient, "data" to data, "ttl" to ttl.toString(), "timestamp" to timestamp.toString(),