add explicit error message for outdated backup files
This commit is contained in:
parent
b4c3334d7e
commit
8ba90f266e
|
@ -30,6 +30,7 @@ import eu.siacs.conversations.databinding.DialogEnterPasswordBinding;
|
||||||
import eu.siacs.conversations.services.ImportBackupService;
|
import eu.siacs.conversations.services.ImportBackupService;
|
||||||
import eu.siacs.conversations.ui.adapter.BackupFileAdapter;
|
import eu.siacs.conversations.ui.adapter.BackupFileAdapter;
|
||||||
import eu.siacs.conversations.ui.util.SettingsUtils;
|
import eu.siacs.conversations.ui.util.SettingsUtils;
|
||||||
|
import eu.siacs.conversations.utils.BackupFileHeader;
|
||||||
import eu.siacs.conversations.utils.ThemeHelper;
|
import eu.siacs.conversations.utils.ThemeHelper;
|
||||||
|
|
||||||
public class ImportBackupActivity extends ActionBarActivity implements ServiceConnection, ImportBackupService.OnBackupFilesLoaded, BackupFileAdapter.OnItemClickedListener, ImportBackupService.OnBackupProcessed {
|
public class ImportBackupActivity extends ActionBarActivity implements ServiceConnection, ImportBackupService.OnBackupFilesLoaded, BackupFileAdapter.OnItemClickedListener, ImportBackupService.OnBackupProcessed {
|
||||||
|
@ -131,6 +132,8 @@ public class ImportBackupActivity extends ActionBarActivity implements ServiceCo
|
||||||
try {
|
try {
|
||||||
final ImportBackupService.BackupFile backupFile = ImportBackupService.BackupFile.read(this, uri);
|
final ImportBackupService.BackupFile backupFile = ImportBackupService.BackupFile.read(this, uri);
|
||||||
showEnterPasswordDialog(backupFile, finishOnCancel);
|
showEnterPasswordDialog(backupFile, finishOnCancel);
|
||||||
|
} catch (final BackupFileHeader.OutdatedBackupFileVersion e) {
|
||||||
|
Snackbar.make(binding.coordinator, R.string.outdated_backup_file_format, Snackbar.LENGTH_LONG).show();
|
||||||
} catch (final IOException | IllegalArgumentException e) {
|
} catch (final IOException | IllegalArgumentException e) {
|
||||||
Log.d(Config.LOGTAG, "unable to open backup file " + uri, e);
|
Log.d(Config.LOGTAG, "unable to open backup file " + uri, e);
|
||||||
Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show();
|
Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show();
|
||||||
|
|
|
@ -50,17 +50,19 @@ public class BackupFileHeader {
|
||||||
|
|
||||||
public static BackupFileHeader read(DataInputStream inputStream) throws IOException {
|
public static BackupFileHeader read(DataInputStream inputStream) throws IOException {
|
||||||
final int version = inputStream.readInt();
|
final int version = inputStream.readInt();
|
||||||
|
final String app = inputStream.readUTF();
|
||||||
|
final String jid = inputStream.readUTF();
|
||||||
|
long timestamp = inputStream.readLong();
|
||||||
|
final byte[] iv = new byte[12];
|
||||||
|
inputStream.readFully(iv);
|
||||||
|
final byte[] salt = new byte[16];
|
||||||
|
inputStream.readFully(salt);
|
||||||
|
if (version < VERSION) {
|
||||||
|
throw new OutdatedBackupFileVersion();
|
||||||
|
}
|
||||||
if (version != VERSION) {
|
if (version != VERSION) {
|
||||||
throw new IllegalArgumentException("Backup File version was " + version + " but app only supports version " + VERSION);
|
throw new IllegalArgumentException("Backup File version was " + version + " but app only supports version " + VERSION);
|
||||||
}
|
}
|
||||||
String app = inputStream.readUTF();
|
|
||||||
String jid = inputStream.readUTF();
|
|
||||||
long timestamp = inputStream.readLong();
|
|
||||||
byte[] iv = new byte[12];
|
|
||||||
inputStream.readFully(iv);
|
|
||||||
byte[] salt = new byte[16];
|
|
||||||
inputStream.readFully(salt);
|
|
||||||
|
|
||||||
return new BackupFileHeader(app, Jid.of(jid), timestamp, iv, salt);
|
return new BackupFileHeader(app, Jid.of(jid), timestamp, iv, salt);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -84,4 +86,8 @@ public class BackupFileHeader {
|
||||||
public long getTimestamp() {
|
public long getTimestamp() {
|
||||||
return timestamp;
|
return timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class OutdatedBackupFileVersion extends RuntimeException {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -894,6 +894,7 @@
|
||||||
<string name="event">Event</string>
|
<string name="event">Event</string>
|
||||||
<string name="open_backup">Open backup</string>
|
<string name="open_backup">Open backup</string>
|
||||||
<string name="not_a_backup_file">The file you selected is not a Conversations backup file</string>
|
<string name="not_a_backup_file">The file you selected is not a Conversations backup file</string>
|
||||||
|
<string name="outdated_backup_file_format">You are trying to import an outdated backup file format</string>
|
||||||
<string name="account_already_setup">This account has already been setup</string>
|
<string name="account_already_setup">This account has already been setup</string>
|
||||||
<string name="please_enter_password">Please enter the password for this account</string>
|
<string name="please_enter_password">Please enter the password for this account</string>
|
||||||
<string name="unable_to_perform_this_action">Could not perform this action</string>
|
<string name="unable_to_perform_this_action">Could not perform this action</string>
|
||||||
|
|
Loading…
Reference in a new issue