diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java index 14480c3f6eb44bff3c9e08053ccbc33a4d1acd12..2a1bf7807b76460f53f88a8e95e503a9f94761a9 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java @@ -7,8 +7,6 @@ import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.duplex.DuplexTransportConnection; import org.briarproject.bramble.api.transport.StreamContext; -import javax.annotation.Nullable; - public interface MailboxManager { /** * Connection to a contact's mailbox @@ -23,24 +21,16 @@ public interface MailboxManager { void handleOutgoingPrivateMailboxConnection(ContactId contactId, DuplexTransportConnection connection, TransportId transportId); - /** - * Connection from Owner to mailbox - */ - void handleIncomingMailboxOwnerConnection(StreamContext ctx, - TransportId transportId, TransportConnectionReader reader, - TransportConnectionWriter writer); - - /** - * Connection from contact (of owner) to mailbox - */ - void handleInomingOwnerContactConnection(StreamContext ctx, - TransportId transportId, TransportConnectionReader reader, - TransportConnectionWriter writer); - /** * Contacts without private mailbox which have been introduced * to private mailbox */ void handleContactWithoutMailbox(MailboxInfo mailboxInfo); + + /** + * Handle incoming connections from owner or contacts + */ + void handleIncomingConnection(StreamContext ctx, TransportId transportId, + TransportConnectionReader reader, TransportConnectionWriter writer); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java index f5723ddf732b6c66b945158e742e819dd652c902..f73c9ce57603fc2702e8cf7893d91f7348ddd4a9 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreEagerSingletons.java @@ -6,6 +6,7 @@ import org.briarproject.bramble.db.DatabaseExecutorModule; import org.briarproject.bramble.identity.IdentityModule; import org.briarproject.bramble.lifecycle.LifecycleModule; import org.briarproject.bramble.mailbox.MailboxModule; +import org.briarproject.bramble.mailbox.introduction.MailboxIntroductionModule; import org.briarproject.bramble.plugin.PluginModule; import org.briarproject.bramble.properties.PropertiesModule; import org.briarproject.bramble.reporting.ReportingModule; @@ -40,4 +41,6 @@ public interface BrambleCoreEagerSingletons { void inject(VersioningModule.EagerSingletons init); + void inject(MailboxIntroductionModule.EagerSingletons init); + } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java index 3419aea43272a8ccdfb75e99be83788f97336dc9..62ceff1a6dae922273b2e82451f267d66e4e608d 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/BrambleCoreModule.java @@ -12,6 +12,7 @@ import org.briarproject.bramble.identity.IdentityModule; import org.briarproject.bramble.keyagreement.KeyAgreementModule; import org.briarproject.bramble.lifecycle.LifecycleModule; import org.briarproject.bramble.mailbox.MailboxModule; +import org.briarproject.bramble.mailbox.introduction.MailboxIntroductionModule; import org.briarproject.bramble.plugin.PluginModule; import org.briarproject.bramble.properties.PropertiesModule; import org.briarproject.bramble.record.RecordModule; @@ -39,6 +40,7 @@ import dagger.Module; KeyAgreementModule.class, LifecycleModule.class, MailboxModule.class, + MailboxIntroductionModule.class, PluginModule.class, PropertiesModule.class, RecordModule.class, @@ -59,6 +61,7 @@ public class BrambleCoreModule { c.inject(new DatabaseExecutorModule.EagerSingletons()); c.inject(new IdentityModule.EagerSingletons()); c.inject(new LifecycleModule.EagerSingletons()); + c.inject(new MailboxIntroductionModule.EagerSingletons()); c.inject(new PluginModule.EagerSingletons()); c.inject(new PropertiesModule.EagerSingletons()); c.inject(new ReportingModule.EagerSingletons()); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java index f5b3da2f693d19ec2f8d1ec470c92812d9193fa1..99081c919ab82dc8e1194b1810e5d354685fcb97 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java @@ -6,7 +6,9 @@ import org.briarproject.bramble.api.data.BdfReader; import org.briarproject.bramble.api.data.BdfReaderFactory; import org.briarproject.bramble.api.data.BdfWriter; import org.briarproject.bramble.api.data.BdfWriterFactory; +import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.mailbox.MailboxInfo; import org.briarproject.bramble.api.mailbox.MailboxManager; @@ -36,7 +38,10 @@ import java.util.logging.Logger; import javax.inject.Inject; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.api.contact.ContactType.*; +import static org.briarproject.bramble.api.contact.ContactType.CONTACT_MAILBOX; +import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_CONTACT; +import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_OWNER; +import static org.briarproject.bramble.api.contact.ContactType.PRIVATE_MAILBOX; import static org.briarproject.bramble.api.transport.TransportConstants.TAG_LENGTH; import static org.briarproject.bramble.util.LogUtils.logException; @@ -44,6 +49,7 @@ public class MailboxManagerImpl implements MailboxManager { private static final Logger LOG = Logger.getLogger(MailboxManagerImpl.class.getName()); private Executor ioExecutor; + private final DatabaseComponent db; private MailboxSessionFactory mailboxSessionFactory; private ConnectionRegistry connectionRegistry; private StreamWriterFactory streamWriterFactory; @@ -57,6 +63,7 @@ public class MailboxManagerImpl implements MailboxManager { @Inject public MailboxManagerImpl(@IoExecutor Executor ioExecutor, + DatabaseComponent db, KeyManager keyManager, MailboxSessionFactory mailboxSessionFactory, ConnectionRegistry connectionRegistry, StreamWriterFactory streamWriterFactory, @@ -64,6 +71,7 @@ public class MailboxManagerImpl implements MailboxManager { BdfReaderFactory bdfReaderFactory, BdfWriterFactory bdfWriterFactory) { this.ioExecutor = ioExecutor; + this.db = db; this.keyManager = keyManager; this.mailboxSessionFactory = mailboxSessionFactory; this.connectionRegistry = connectionRegistry; @@ -90,8 +98,7 @@ public class MailboxManagerImpl implements MailboxManager { PRIVATE_MAILBOX, contactId)); } - @Override - public void handleIncomingMailboxOwnerConnection(StreamContext ctx, + private void handleIncomingMailboxOwnerConnection(StreamContext ctx, TransportId transportId, TransportConnectionReader reader, TransportConnectionWriter writer) { @@ -100,8 +107,7 @@ public class MailboxManagerImpl implements MailboxManager { MAILBOX_OWNER)); } - @Override - public void handleInomingOwnerContactConnection(StreamContext ctx, + private void handleIncomingOwnerContactConnection(StreamContext ctx, TransportId transportId, TransportConnectionReader reader, TransportConnectionWriter writer) { ioExecutor.execute( @@ -121,6 +127,40 @@ public class MailboxManagerImpl implements MailboxManager { .handleContactWithoutPrivateMailbox(mailboxInfo)); } + @Override + public void handleIncomingConnection(StreamContext ctx, + TransportId transportId, TransportConnectionReader reader, + TransportConnectionWriter writer) { + Transaction txn = null; + try { + txn = db.startTransaction(true); + ContactType type = db.getContactType(txn, ctx.getContactId()); + switch (type) { + case MAILBOX_OWNER: + handleIncomingMailboxOwnerConnection(ctx, + transportId, reader, writer); + return; + case MAILBOX_CONTACT: + handleIncomingOwnerContactConnection(ctx, + transportId, reader, writer); + return; + } + db.commitTransaction(txn); + } catch (DbException e) { + logException(LOG, WARNING, e); + try { + reader.dispose(true, true); + } catch (IOException ioException) { + logException(LOG, WARNING, ioException); + } + return; + } finally { + if (txn != null) + db.endTransaction(txn); + } + + } + private class ManageMailboxConnection implements Runnable { private boolean incoming; diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/MailboxMessageEncoderImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/MailboxMessageEncoderImpl.java index 66e8b51800c8466354a3ebbbe8407fb518e2da68..a7ea53da4726b8ff6df96be606545b05e63b36e0 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/MailboxMessageEncoderImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/MailboxMessageEncoderImpl.java @@ -118,7 +118,7 @@ class MailboxMessageEncoderImpl implements MailboxMessageEncoder { Map<TransportId, TransportProperties> transportProperties, byte[] mac, byte[] signature, long messageCounter) { BdfList body = BdfList.of(MAILBOX_AUTH.getValue(), sessionId, - previousMessageId, contactId, + previousMessageId, contactId.getInt(), clientHelper.toDictionary(transportProperties), mac, signature, messageCounter); return createMessage(contactGroupId, timestamp, body); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/OwnerProtocolEngine.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/OwnerProtocolEngine.java index 3888b7510e55f77c6b3f6c2fc6bcb87ad939f806..92ea004e571db790effc143aed3bc616f5ebc53f 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/OwnerProtocolEngine.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/introduction/OwnerProtocolEngine.java @@ -130,6 +130,7 @@ class OwnerProtocolEngine extends AbstractProtocolEngine<OwnerSession> { identityManager.getLocalAuthor().getId()); db.setMailboxForContact(txn, c.getId(), null, m.getContactId()); txn.attach(new MailboxIntroductionSucceededEvent(c)); + LOG.info("MI succ"); return new OwnerSession(s.getSessionId(), ADDED, s.getRequestTimestamp(), new Introducee(s.getMailbox(), m.getMessageId(), @@ -184,6 +185,7 @@ class OwnerProtocolEngine extends AbstractProtocolEngine<OwnerSession> { private OwnerSession onLocalRequest(Transaction txn, OwnerSession s, long timestamp) throws DbException { + LOG.info("LOCAL REQUEST"); // Send REQUEST messages long maxIntroduceeTimestamp = Math.max(getLocalTimestamp(s, s.getMailbox()), diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java index 91847693c728c55af9c58b6387f2f67855848cc2..bfd3d59124452490c7e9afe8b25c75b0c8754154 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/ConnectionManagerImpl.java @@ -1,10 +1,9 @@ package org.briarproject.bramble.plugin; +import org.briarproject.bramble.api.BrambleConfig; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DbException; -import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.mailbox.MailboxManager; import org.briarproject.bramble.api.plugin.ConnectionManager; @@ -42,6 +41,7 @@ class ConnectionManagerImpl implements ConnectionManager { private final KeyManager keyManager; private final MailboxManager mailboxManager; private final DatabaseComponent db; + private final BrambleConfig brambleConfig; private final StreamReaderFactory streamReaderFactory; private final StreamWriterFactory streamWriterFactory; private final SyncSessionFactory syncSessionFactory; @@ -52,6 +52,7 @@ class ConnectionManagerImpl implements ConnectionManager { KeyManager keyManager, MailboxManager mailboxManager, DatabaseComponent db, + BrambleConfig brambleConfig, StreamReaderFactory streamReaderFactory, StreamWriterFactory streamWriterFactory, SyncSessionFactory syncSessionFactory, @@ -60,6 +61,7 @@ class ConnectionManagerImpl implements ConnectionManager { this.keyManager = keyManager; this.mailboxManager = mailboxManager; this.db = db; + this.brambleConfig = brambleConfig; this.streamReaderFactory = streamReaderFactory; this.streamWriterFactory = streamWriterFactory; this.syncSessionFactory = syncSessionFactory; @@ -267,31 +269,13 @@ class ConnectionManagerImpl implements ConnectionManager { disposeReader(false, false); return; } - contactId = ctx.getContactId(); - Transaction txn = null; - try { - txn = db.startTransaction(true); - ContactType type = db.getContactType(txn, contactId); - switch (type) { - case MAILBOX_OWNER: - mailboxManager.handleIncomingMailboxOwnerConnection(ctx, - transportId, reader, writer); - return; - case MAILBOX_CONTACT: - mailboxManager.handleInomingOwnerContactConnection(ctx, - transportId, reader, writer); - return; - } - db.commitTransaction(txn); - } catch (DbException e) { - logException(LOG, WARNING, e); - disposeReader(true, true); + if (brambleConfig.isMailbox()) { + mailboxManager + .handleIncomingConnection(ctx, transportId, reader, + writer); return; - }finally { - if (txn != null) - db.endTransaction(txn); } - + contactId = ctx.getContactId(); connectionRegistry.registerConnection(contactId, transportId, true); // Start the outgoing session on another thread ioExecutor.execute(this::runOutgoingSession); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java index 8b140969c714b4d85c2b1333f3cfa1440493f14c..38422eb9af88a467d5ff6f3749d1f2da873b40ce 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/Poller.java @@ -111,10 +111,12 @@ class Poller implements EventListener { } private void connectToContact(ContactId c) { + /* for (SimplexPlugin s : pluginManager.getSimplexPlugins()) if (s.shouldPoll()) connectToContact(c, s); for (DuplexPlugin d : pluginManager.getDuplexPlugins()) if (d.shouldPoll()) connectToContact(c, d); + */ } private void connectToContact(ContactId c, TransportId t) { diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/mailbox/MailboxPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/mailbox/MailboxPlugin.java new file mode 100644 index 0000000000000000000000000000000000000000..81d2bfa76f5a6f39de0e0256343b06ac6f7630d7 --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/mailbox/MailboxPlugin.java @@ -0,0 +1,99 @@ +package org.briarproject.bramble.plugin.mailbox; + +import org.briarproject.bramble.api.contact.ContactId; +import org.briarproject.bramble.api.mailbox.MailboxConstants; +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; +import org.briarproject.bramble.api.plugin.TransportConnectionReader; +import org.briarproject.bramble.api.plugin.TransportConnectionWriter; +import org.briarproject.bramble.api.plugin.TransportId; +import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin; +import org.briarproject.bramble.api.plugin.simplex.SimplexPluginCallback; +import org.briarproject.bramble.api.properties.TransportProperties; + +import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Logger; + +import javax.annotation.Nullable; + +@MethodsNotNullByDefault +@ParametersNotNullByDefault +class MailboxPlugin implements SimplexPlugin { + + private static final Logger LOG = + Logger.getLogger(MailboxPlugin.class.getName()); + + private final SimplexPluginCallback callback; + protected final int maxLatency; + protected final int maxIdleTime; + protected final AtomicBoolean used = new AtomicBoolean(false); + + protected volatile boolean running = false; + + MailboxPlugin(SimplexPluginCallback callback, int maxLatency, + int maxIdleTime) { + this.callback = callback; + this.maxLatency = maxLatency; + this.maxIdleTime = maxIdleTime; + callback.transportEnabled(); + } + + @Override + public TransportId getId() { + return MailboxConstants.ID; + } + + @Override + public int getMaxLatency() { + return maxLatency; + } + + @Override + public int getMaxIdleTime() { + return maxIdleTime; + } + + @Override + public void start() { + if (used.getAndSet(true)) throw new IllegalStateException(); + running = true; + } + + @Override + public void stop() { + running = false; + } + + @Override + public boolean isRunning() { + return running; + } + + @Override + public boolean shouldPoll() { + return false; + } + + @Override + public int getPollingInterval() { + throw new UnsupportedOperationException(); + } + + @Override + public void poll(Map<ContactId, TransportProperties> contacts) { + throw new UnsupportedOperationException(); + } + + @Nullable + @Override + public TransportConnectionReader createReader(TransportProperties p) { + throw new UnsupportedOperationException(); + } + + @Nullable + @Override + public TransportConnectionWriter createWriter(TransportProperties p) { + throw new UnsupportedOperationException(); + } +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/mailbox/MailboxPluginFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/mailbox/MailboxPluginFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..7e825e1c4aeae16ccf5d45ea5d9c97a7c3c3f54c --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/mailbox/MailboxPluginFactory.java @@ -0,0 +1,42 @@ +package org.briarproject.bramble.plugin.mailbox; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; +import org.briarproject.bramble.api.plugin.TransportId; +import org.briarproject.bramble.api.plugin.simplex.SimplexPlugin; +import org.briarproject.bramble.api.plugin.simplex.SimplexPluginCallback; +import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory; + +import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; + +import static org.briarproject.bramble.api.mailbox.MailboxConstants.ID; + + +@Immutable +@NotNullByDefault +public class MailboxPluginFactory implements SimplexPluginFactory { + + private static final int MAX_LATENCY = 604800 * 1000; // 1 week + private static final int MAX_IDLE_TIME = 30 * 1000; // 30 seconds + private static final int MIN_POLLING_INTERVAL = 60 * 1000; // 1 minute + private static final int MAX_POLLING_INTERVAL = 10 * 60 * 1000; // 10 mins + + public MailboxPluginFactory() { + } + + @Override + public TransportId getId() { + return ID; + } + + @Override + public int getMaxLatency() { + return MAX_LATENCY; + } + + @Nullable + @Override + public SimplexPlugin createPlugin(SimplexPluginCallback callback) { + return new MailboxPlugin(callback, MAX_LATENCY, MAX_IDLE_TIME); + } +} diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/introduction/MailboxIntroductionIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/introduction/MailboxIntroductionIntegrationTest.java index 39b59655b615823d2b9214f161372ce0a828b0a9..ec1323bef2238c6d64f84d19a8b22711300d17f1 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/introduction/MailboxIntroductionIntegrationTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/introduction/MailboxIntroductionIntegrationTest.java @@ -110,10 +110,18 @@ public class MailboxIntroductionIntegrationTest extends @Test public void testIntroductionSession() throws Exception { addListeners(true, true, true); - + sync0To1(1, true); + sync1To0(1, true); sync0ToMailbox(1, true); syncMailboxTo0(1, true); - sync1To0(1, true); + sync0To1(1, true); +/* + sync0ToMailbox(1, true); + sync0ToMailbox(1, true); + syncMailboxTo0(1, true); + sync0To1(1, true); + sync1To0(1,true); + */ /* // sync first REQUEST message sync0ToMailbox(1, true); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java index 24d6932aadcf606d402ec84f1787e905bbfff194..4af33e87319a58d06240695f13c79e522a61982f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.StrictMode; +import org.briarproject.bramble.api.BrambleConfig; import org.briarproject.bramble.api.crypto.CryptoComponent; import org.briarproject.bramble.api.crypto.PublicKey; import org.briarproject.bramble.api.db.DatabaseConfig; @@ -25,6 +26,7 @@ import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.Scheduler; import org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPluginFactory; +import org.briarproject.bramble.plugin.mailbox.MailboxPluginFactory; import org.briarproject.bramble.plugin.tcp.AndroidLanTcpPluginFactory; import org.briarproject.bramble.plugin.tor.AndroidTorPluginFactory; import org.briarproject.bramble.plugin.tor.CircumventionProvider; @@ -39,6 +41,7 @@ import org.briarproject.briar.api.android.ScreenFilterMonitor; import java.io.File; import java.security.GeneralSecurityException; import java.security.SecureRandom; +import java.util.Arrays; import java.util.Collection; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; @@ -52,7 +55,6 @@ import dagger.Provides; import static android.content.Context.MODE_PRIVATE; import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; import static org.briarproject.bramble.api.reporting.ReportingConstants.DEV_ONION_ADDRESS; import static org.briarproject.bramble.api.reporting.ReportingConstants.DEV_PUBLIC_KEY_HEX; @@ -82,6 +84,12 @@ public class AppModule { return application; } + @Provides + @Singleton + BrambleConfig provideBrambleConfig() { + return () -> false; + } + @Provides @Singleton DatabaseConfig provideDatabaseConfig(Application app) { @@ -124,7 +132,7 @@ public class AppModule { @Override public Collection<SimplexPluginFactory> getSimplexFactories() { - return emptyList(); + return Arrays.asList(new MailboxPluginFactory()); } @Override diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.java b/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.java index b2a61364afc4de0a0f3096a75016bb5440c37f7c..b7930207a9d29aa458a7b1711f9048cf0d3bbe3a 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.java +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/AppModule.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.os.StrictMode; +import org.briarproject.bramble.api.BrambleConfig; import org.briarproject.bramble.api.crypto.CryptoComponent; import org.briarproject.bramble.api.crypto.PublicKey; import org.briarproject.bramble.api.db.DatabaseConfig; @@ -24,6 +25,7 @@ import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.Scheduler; import org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPluginFactory; +import org.briarproject.bramble.plugin.mailbox.MailboxPluginFactory; import org.briarproject.bramble.plugin.tcp.AndroidLanTcpPluginFactory; import org.briarproject.bramble.plugin.tor.AndroidTorPluginFactory; import org.briarproject.bramble.plugin.tor.CircumventionProvider; @@ -38,6 +40,7 @@ import org.briarproject.mailbox.api.android.ScreenFilterMonitor; import java.io.File; import java.security.GeneralSecurityException; import java.security.SecureRandom; +import java.util.Arrays; import java.util.Collection; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; @@ -51,7 +54,6 @@ import dagger.Provides; import static android.content.Context.MODE_PRIVATE; import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; import static org.briarproject.bramble.api.reporting.ReportingConstants.DEV_ONION_ADDRESS; import static org.briarproject.bramble.api.reporting.ReportingConstants.DEV_PUBLIC_KEY_HEX; @@ -79,6 +81,12 @@ public class AppModule { return application; } + @Provides + @Singleton + BrambleConfig provideBrambleConfig() { + return () -> true; + } + @Provides @Singleton DatabaseConfig provideDatabaseConfig(Application app) { @@ -121,7 +129,7 @@ public class AppModule { @Override public Collection<SimplexPluginFactory> getSimplexFactories() { - return emptyList(); + return Arrays.asList(new MailboxPluginFactory()); } @Override