Censor user should try to migrate
This commit is contained in:
parent
25d1fb96a6
commit
e19204fc16
72
src/user.rs
72
src/user.rs
|
@ -743,20 +743,66 @@ impl User {
|
|||
}
|
||||
} else {
|
||||
// LA has identified this bucket as blocked. This change
|
||||
// will not be reverted, so replace the primary credential
|
||||
// with a new level 0 credential and work on gaining trust
|
||||
// for that one.
|
||||
let res = Self::get_new_credential(&config).await;
|
||||
if res.is_ok() {
|
||||
let (new_cred, bl) = res.unwrap();
|
||||
let fingerprint = bl.get_hashed_fingerprint();
|
||||
if !bridges.contains_key(&fingerprint) {
|
||||
let bridge = Bridge::from_bridge_line(&bl);
|
||||
bridges.insert(fingerprint, bridge);
|
||||
// will not be reverted, so either migrate or replace the
|
||||
// primary credential with a new level 0 credential and work
|
||||
// on gaining trust for that one.
|
||||
|
||||
// Migrate if able
|
||||
if level >= MIN_TRUST_LEVEL {
|
||||
if let Ok(migcred) = check_blockage(
|
||||
&config.la_net,
|
||||
&self.primary_cred,
|
||||
get_lox_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await
|
||||
{
|
||||
if let Ok(cred) = blockage_migration(
|
||||
&config.la_net,
|
||||
&self.primary_cred,
|
||||
&migcred,
|
||||
get_lox_pub(&config.la_pubkeys),
|
||||
get_migration_pub(&config.la_pubkeys),
|
||||
)
|
||||
.await
|
||||
{
|
||||
self.primary_cred = cred;
|
||||
|
||||
// You can't migrate to level 3 or 4, so the
|
||||
// censor doesn't want this new credential
|
||||
|
||||
// Download bucket to see if bridge is still
|
||||
// reachable and if we have any new bridges
|
||||
let (bucket, _reachcred) =
|
||||
get_bucket(&config.la_net, &self.primary_cred).await?;
|
||||
|
||||
// Make sure each bridge is in global bridges
|
||||
// set and known by censor
|
||||
for bridgeline in bucket {
|
||||
if bridgeline != BridgeLine::default() {
|
||||
if !bridges.contains_key(&bridgeline.get_hashed_fingerprint()) {
|
||||
let bridge = Bridge::from_bridge_line(&bridgeline);
|
||||
bridges.insert(bridgeline.get_hashed_fingerprint(), bridge);
|
||||
}
|
||||
censor.learn_bridge(&bridgeline.get_hashed_fingerprint());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// If unable to migrate, try to get a new open-entry
|
||||
// credential and start over
|
||||
let res = Self::get_new_credential(&config).await;
|
||||
if res.is_ok() {
|
||||
let (new_cred, bl) = res.unwrap();
|
||||
let fingerprint = bl.get_hashed_fingerprint();
|
||||
if !bridges.contains_key(&fingerprint) {
|
||||
let bridge = Bridge::from_bridge_line(&bl);
|
||||
bridges.insert(fingerprint, bridge);
|
||||
}
|
||||
censor.learn_bridge(&fingerprint);
|
||||
// Censor doesn't want new_cred yet
|
||||
self.primary_cred = new_cred;
|
||||
}
|
||||
censor.learn_bridge(&fingerprint);
|
||||
// Censor doesn't want new_cred yet
|
||||
self.primary_cred = new_cred;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue