Commit graph

39 commits

Author SHA1 Message Date
Torsten Grote
e955e021fd
Add a simple instrumentation test for testing on real devices 2019-09-02 09:47:52 -03:00
Torsten Grote
bd968be0b1
Remove BackupJobService as the OS is scheduling its own backups 2019-09-02 09:47:52 -03:00
Torsten Grote
a6e971609c
Implement clearing full backup data from storage 2019-09-02 09:47:51 -03:00
Torsten Grote
1ee443a3d8
Add a unique ID to the device folder name to avoid collisions
when using several devices of the same model with the same account
2019-09-02 09:47:51 -03:00
Torsten Grote
2ce625ac87
Huge refactoring of backup transport
* to get rid of global state
* to have a testable architecture
* to allow for authenticated encryption
* to have a backup format version
* to potentially allow for other storage plugins
2019-09-02 09:47:49 -03:00
Torsten Grote
c801502e81
Migrate SettingsManager to Kotlin 2019-07-04 08:25:37 +02:00
Torsten Grote
b983414295
Add custom settings UI 2019-07-03 12:46:55 +02:00
Torsten Grote
7b95256ba5
Fix detection of the end of backup
For the current transport it is important to know when the backup ends,
because it resets its state only then and closes the ZIP file.

The detection was broken,
because some packages didn't have data to back up (LOG_EVENT_ID_NO_DATA_TO_SEND),
so the transport's methods weren't called and the package counter not updated.

The hacky solution is to use the BackupObserver to call back into the
transport at the end of backup.
Ideally, future transports won't need to know when the backup finishes.
2019-06-14 16:33:05 -03:00
Torsten Grote
84d91290ac
Let the BackupManager know that we use client-side encryption 2019-06-14 16:33:04 -03:00
Torsten Grote
d678566967
Exclude key-value backup apps for now
We do this as a temporary fix, because our backup methods are not called
which are updating the package counter. So our mechanism to find out
about the end of the backup is broken. Excluding key-value backups fixes
it for now.
2019-06-12 11:01:56 -03:00
Torsten Grote
7fcd9aa091
Resolve review comments about backup compontent refactoring 2019-06-12 09:19:38 -03:00
Torsten Grote
92ce6c1a5c
Refactor transport components to eliminate need to initialize and reset transport 2019-06-11 20:53:44 -03:00
Torsten Grote
2037291f81
Don't start transport service in foreground
Start it on-deman instead.

This way, we don't need a foreground service and thus can target API 28
2019-06-11 10:18:20 -03:00
Torsten Grote
8a0fe3c513
Store backup passphrase insecurely for now
This is being done to implement automatic background updates
and not supposed to be part of a release.

The backup key will later be generated and shown to the user instead of
allowing them to choose their own.
2019-06-05 16:45:04 -03:00
Torsten Grote
2434fe30f4
Several small nitpicks and fixes 2019-06-04 09:04:25 -03:00
Steve Soltys
04543a1014 Fix transport encryption
Prior to this commit, some of the application data was not included during encryption. This is a breaking change, any backups made prior to this commit can no longer be restored.

1. Encrypt 'full' backup data.
2. Increase number of key generation iterations to 32767.
3. Change cipher to 'AES/CBC/PKCS5Padding'.
2019-03-14 20:09:06 -04:00
Steve Soltys
0b5cc1a798 Fix logging in content provider restore component 2019-02-22 01:11:05 -05:00
Steve Soltys
bd0c41c2d3 Stop regenerating secret key for each package 2019-02-22 01:02:06 -05:00
Steve Soltys
9b979b3693 Move cipher logic out of backup and restore components 2019-02-21 21:51:46 -05:00
Steve Soltys
b182e743e8 Add support for encrypted backups
1. Add prompt for entering password during backup and restore.
2. Use PBKDF2 to generate a secret key that is used to encrypt backups.
3. Store salt in backup zip file.
4. Fetch salt from backup zip file during restore and use it to decrypt restoration data.
2019-02-15 02:46:24 -05:00
Steve Soltys
7c3bff31f0 Make transport service start in foreground to resolve #13 2018-12-15 03:34:34 -05:00
Steve Soltys
cc4b629a89 Automatically start transport service when application launches 2018-11-11 21:00:00 -05:00
Steve Soltys
2fa09be854 Merge branch 'master' into feature/standalone 2018-11-11 20:53:57 -05:00
Steve Soltys
e8720189f3 Add experimental support for standalone builds 2018-11-07 22:04:37 -05:00
Steve Soltys
072e9a1b02 Remove Gradle as build system
This application must be compiled with the operating system, so Gradle is unnecessary.
2017-11-08 23:56:49 -05:00
Steve Soltys
0bd1596056 Fix #2
The output file descriptor was not being closed after each chunk was written.
1. The output stream will no longer be stored in the restore state.
2. The output file descriptor will be closed after a chunk is transferred.
2017-11-08 23:21:27 -05:00
Steve Soltys
09ff3ba493 Clean up packaging of content provider backup/restore components 2017-10-23 20:02:40 -04:00
Steve Soltys
b9239143e0 Clean up ContentProviderBackupComponent 2017-10-23 20:00:25 -04:00
Steve Soltys
765b8b2540 Stop clearing the backup state after a package is rejected 2017-10-18 23:00:20 -04:00
Steve Soltys
312a13a913 Clean up logging in ContentProviderBackupComponent 2017-10-17 23:39:30 -04:00
Steve Soltys
f5e723b1a1 Clean up full transport logic in ContentProviderBackupComponent 2017-10-17 23:34:59 -04:00
Steve Soltys
93c91db524 Move full restore logic into separate function 2017-10-09 21:21:15 -04:00
Steve Soltys
f41d211ddc Add support for incremental and full backup directory configuration 2017-10-09 20:40:25 -04:00
Steve Soltys
677b950dea Switch selected package list data type to Set 2017-10-09 20:25:40 -04:00
Steve Soltys
facb7029b9 Add initialization functions to ConfigurableBackupTransport 2017-10-09 20:02:41 -04:00
Steve Soltys
0a978c37e8 Clean up transport logic in ContentProviderRestoreComponent 2017-10-04 21:11:02 -04:00
Steve Soltys
a1a8329299 Clean up logging in ContentProviderRestoreComponent 2017-10-03 22:38:09 -04:00
Steve Soltys
e27a8b308f Switch to builder pattern for ContentProviderBackupConfiguration 2017-09-22 00:10:30 -04:00
Steve Soltys
2497a94e4c Initial commit 2017-09-21 00:30:28 -04:00