mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-19 14:19:53 +01:00
Handle transport properties correctly in backup and recovery
This commit is contained in:
@@ -25,8 +25,11 @@ import org.briarproject.bramble.api.identity.IdentityManager;
|
|||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
import org.briarproject.bramble.api.plugin.BluetoothConstants;
|
||||||
|
import org.briarproject.bramble.api.plugin.LanTcpConstants;
|
||||||
import org.briarproject.bramble.api.plugin.TorConstants;
|
import org.briarproject.bramble.api.plugin.TorConstants;
|
||||||
import org.briarproject.bramble.api.plugin.TransportId;
|
import org.briarproject.bramble.api.plugin.TransportId;
|
||||||
|
import org.briarproject.bramble.api.plugin.WanTcpConstants;
|
||||||
import org.briarproject.bramble.api.properties.TransportProperties;
|
import org.briarproject.bramble.api.properties.TransportProperties;
|
||||||
import org.briarproject.bramble.api.properties.TransportPropertyManager;
|
import org.briarproject.bramble.api.properties.TransportPropertyManager;
|
||||||
import org.briarproject.bramble.api.sync.Group;
|
import org.briarproject.bramble.api.sync.Group;
|
||||||
@@ -57,6 +60,7 @@ import org.briarproject.briar.client.ConversationClientImpl;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -66,7 +70,6 @@ import java.util.Set;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import static java.util.Collections.singletonMap;
|
|
||||||
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
|
import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull;
|
||||||
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
|
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
|
||||||
import static org.briarproject.briar.socialbackup.MessageType.BACKUP;
|
import static org.briarproject.briar.socialbackup.MessageType.BACKUP;
|
||||||
@@ -465,9 +468,13 @@ class SocialBackupManagerImpl extends ConversationClientImpl
|
|||||||
private Map<TransportId, TransportProperties> getTransportProperties(
|
private Map<TransportId, TransportProperties> getTransportProperties(
|
||||||
Transaction txn, ContactId c) throws DbException {
|
Transaction txn, ContactId c) throws DbException {
|
||||||
// TODO: Include filtered properties for other transports
|
// TODO: Include filtered properties for other transports
|
||||||
TransportProperties p = transportPropertyManager
|
TransportId ids[] = { TorConstants.ID, LanTcpConstants.ID, BluetoothConstants.ID };
|
||||||
.getRemoteProperties(txn, c, TorConstants.ID);
|
Map<TransportId, TransportProperties> props = new HashMap();
|
||||||
return singletonMap(TorConstants.ID, p);
|
for (TransportId id : ids) {
|
||||||
|
props.put(id, transportPropertyManager
|
||||||
|
.getRemoteProperties(txn, c, id));
|
||||||
|
}
|
||||||
|
return props;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendShardMessage(Transaction txn, Contact custodian,
|
private void sendShardMessage(Transaction txn, Contact custodian,
|
||||||
@@ -561,7 +568,7 @@ class SocialBackupManagerImpl extends ConversationClientImpl
|
|||||||
db.deleteMessageMetadata(txn, prevId);
|
db.deleteMessageMetadata(txn, prevId);
|
||||||
}
|
}
|
||||||
sendBackupMessage(txn, custodian, newVersion, payload);
|
sendBackupMessage(txn, custodian, newVersion, payload);
|
||||||
} catch (NoSuchContactException|NoSuchGroupException e){
|
} catch (NoSuchContactException | NoSuchGroupException e) {
|
||||||
// The custodian is no longer a contact - continue
|
// The custodian is no longer a contact - continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.briarproject.briar.socialbackup.recovery;
|
|||||||
|
|
||||||
import org.briarproject.bramble.api.FormatException;
|
import org.briarproject.bramble.api.FormatException;
|
||||||
import org.briarproject.bramble.api.contact.Contact;
|
import org.briarproject.bramble.api.contact.Contact;
|
||||||
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
import org.briarproject.bramble.api.contact.ContactManager;
|
import org.briarproject.bramble.api.contact.ContactManager;
|
||||||
import org.briarproject.bramble.api.crypto.SecretKey;
|
import org.briarproject.bramble.api.crypto.SecretKey;
|
||||||
import org.briarproject.bramble.api.db.DatabaseComponent;
|
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||||
@@ -9,6 +10,7 @@ import org.briarproject.bramble.api.db.DbException;
|
|||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.lifecycle.IoExecutor;
|
import org.briarproject.bramble.api.lifecycle.IoExecutor;
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||||
|
import org.briarproject.bramble.api.properties.TransportPropertyManager;
|
||||||
import org.briarproject.briar.api.socialbackup.BackupPayload;
|
import org.briarproject.briar.api.socialbackup.BackupPayload;
|
||||||
import org.briarproject.briar.api.socialbackup.ContactData;
|
import org.briarproject.briar.api.socialbackup.ContactData;
|
||||||
import org.briarproject.briar.api.socialbackup.DarkCrystal;
|
import org.briarproject.briar.api.socialbackup.DarkCrystal;
|
||||||
@@ -34,6 +36,7 @@ public class RestoreAccountImpl implements RestoreAccount {
|
|||||||
private final Executor ioExecutor;
|
private final Executor ioExecutor;
|
||||||
private final DatabaseComponent db;
|
private final DatabaseComponent db;
|
||||||
private final ContactManager contactManager;
|
private final ContactManager contactManager;
|
||||||
|
private final TransportPropertyManager transportPropertyManager;
|
||||||
private final LifecycleManager lifecycleManager;
|
private final LifecycleManager lifecycleManager;
|
||||||
private SecretKey secretKey;
|
private SecretKey secretKey;
|
||||||
private final BackupPayloadDecoder backupPayloadDecoder;
|
private final BackupPayloadDecoder backupPayloadDecoder;
|
||||||
@@ -48,13 +51,15 @@ public class RestoreAccountImpl implements RestoreAccount {
|
|||||||
BackupPayloadDecoder backupPayloadDecoder, DatabaseComponent db,
|
BackupPayloadDecoder backupPayloadDecoder, DatabaseComponent db,
|
||||||
@IoExecutor Executor ioExecutor,
|
@IoExecutor Executor ioExecutor,
|
||||||
ContactManager contactManager,
|
ContactManager contactManager,
|
||||||
LifecycleManager lifecycleManager) {
|
LifecycleManager lifecycleManager,
|
||||||
|
TransportPropertyManager transportPropertyManager) {
|
||||||
this.darkCrystal = darkCrystal;
|
this.darkCrystal = darkCrystal;
|
||||||
this.backupPayloadDecoder = backupPayloadDecoder;
|
this.backupPayloadDecoder = backupPayloadDecoder;
|
||||||
this.db = db;
|
this.db = db;
|
||||||
this.ioExecutor = ioExecutor;
|
this.ioExecutor = ioExecutor;
|
||||||
this.lifecycleManager = lifecycleManager;
|
this.lifecycleManager = lifecycleManager;
|
||||||
this.contactManager = contactManager;
|
this.contactManager = contactManager;
|
||||||
|
this.transportPropertyManager = transportPropertyManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getNumberOfShards() {
|
public int getNumberOfShards() {
|
||||||
@@ -130,8 +135,10 @@ public class RestoreAccountImpl implements RestoreAccount {
|
|||||||
for (ContactData contactData : socialBackup.getContacts()) {
|
for (ContactData contactData : socialBackup.getContacts()) {
|
||||||
Contact c = contactData.getContact();
|
Contact c = contactData.getContact();
|
||||||
LOG.info("Adding contact " + c.getAuthor().getName() + " " + c.getAlias());
|
LOG.info("Adding contact " + c.getAuthor().getName() + " " + c.getAlias());
|
||||||
contactManager.addContact(txn, c.getAuthor(), localAuthorId,
|
ContactId contactId = contactManager.addContact(txn, c.getAuthor(), localAuthorId,
|
||||||
c.getHandshakePublicKey(), c.isVerified());
|
c.getHandshakePublicKey(), c.isVerified());
|
||||||
|
transportPropertyManager.addRemoteProperties(txn, contactId,
|
||||||
|
contactData.getProperties());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (DbException e) {
|
} catch (DbException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user