Torsten Grote
8b6656a350
Read RestoreSets from encrypted backup metadata file
2019-09-10 16:46:26 -03:00
Torsten Grote
f9c8b657a0
Write an encrypted metadata file for each restore set
2019-09-10 16:46:25 -03:00
Torsten Grote
044ef01ba1
Do not generate new 12-word code when restoring
...
Also allow auto-completion when entering the 12-word code.
This makes testing and entering the code easier
and does not compromise security as the word list is public anyway.
2019-09-10 13:35:58 -03:00
Torsten Grote
1a7fdfa59a
Implement restoring of backup and show progress in UI
...
Note that the progress view is not exact as the progress reporting of
AOSP seems to be buggy.
2019-09-10 13:35:58 -03:00
Torsten Grote
491789e8e0
Add a RestoreActivity that lists available RestoreSets (backups)
...
and allows the user to select one to get restored.
2019-09-10 13:35:57 -03:00
Torsten Grote
aa3aad8fb3
Return actually available RestoreSets
...
Before, we were always returnign a dummy RestoreSet,
if one was actually available or not.
Now, we also include the device name.
Note that it is planned to store the actual device name
and other metadata in an encrypted file
so that the backup server will not learn it.
2019-09-10 13:35:57 -03:00
Steve Soltys
7a7059cda3
Merge pull request #35 from grote/transport
...
Huge refactoring of backup transport
2019-09-09 20:13:59 -04:00
Torsten Grote
c714a4e7e1
Show error notification when backup fails
...
The implementation is rudimentary for now.
E.g. The notification is only shown when a device init fails
which seems to be triggered after the first failure.
2019-09-02 17:07:21 -03:00
Torsten Grote
683268a15f
Add a unit test for checking word list integrity
...
Also does minor clean-ups
2019-09-02 17:03:44 -03:00
Torsten Grote
74aa62a264
Add instrumentation test for testing AES/GCM nonces are really unique
2019-09-02 09:47:53 -03:00
Torsten Grote
e955e021fd
Add a simple instrumentation test for testing on real devices
2019-09-02 09:47:52 -03:00
Torsten Grote
2685f2b48a
Don't show rejected packages (usually 0 size) as failed
...
Also change notification ID to not collide with Nextcloud's ID.
2019-09-02 09:47:52 -03:00
Torsten Grote
e2a3e3d2b7
Raise importance of backup notifications to show them in status bar
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
Steve Soltys
8bc110fe4a
Merge pull request #32 from chirayudesai/prebuilt
...
Android.mk: Actually make it work
2019-08-01 14:00:35 -04:00
Chirayu Desai
1f7409af57
Android.mk: Don't dex preopt
...
* Dex preopting doesn't seem to play nice with kotlin, so let's
just disable pre optimization for this app for now.
2019-08-01 19:54:55 +05:30
Chirayu Desai
045b1c9eef
Android.mk: This is a privileged module
...
* Again, got left out in the prebuilt commit.
2019-08-01 19:54:22 +05:30
Chirayu Desai
e44966200b
Android.mk: Re-add required modules
...
* This got accidentally left out in the prebuilt commit
2019-08-01 19:53:58 +05:30
Steve Soltys
726cea0a09
Merge pull request #31 from chirayudesai/prebuilt
...
Android.mk: use prebuilt apk
2019-07-31 14:02:27 -04:00
Chirayu Desai
6136f589c1
Android.mk: Download prebuilt apk instead of building it
...
* With the upcoming changes, and the increasing number of external
libraries being used, plus the usage of Kotlin, it's getting harder
and harder to build this with the AOSP build system.
* It's best to leverage the existing gradle build system instead,
and use the apk that builds.
* Add a script which downloads the apk matching the tag if a tag is
checked out, otherwise downloads the latest.
2019-07-31 23:22:35 +05:30
Steve Soltys
d41ad38a78
Merge pull request #30 from grote/settings-gui
...
Add a new Settings GUI
2019-07-26 17:36:53 -04:00
Torsten Grote
7b1e63a37f
Fix Travis CI and add build cache
...
Also remove relicts from Android.mk file
2019-07-26 11:41:45 +02:00
Torsten Grote
87b25aa4ec
Re-implement manual backup run and show notification during manual backups
2019-07-09 10:41:58 +02:00
Torsten Grote
4c79d41963
Show Backup Location screen before letting user choose backup folder
...
This screen can also be reached by tapping the previously inactive backup location setting.
2019-07-09 10:25:30 +02:00
Torsten Grote
3e64c3686f
Use Android's hardware-backed keystore to store backup key
...
This commit also disables the old UI as it does not work with the new key
2019-07-08 13:21:32 +02:00
Torsten Grote
66c0919eb5
Let user write down recovery code on first start
2019-07-08 13:21:32 +02:00
Torsten Grote
ee6cf38312
Migrate SettingsActivity and Fragment to Kotlin
2019-07-04 08:45:23 +02:00
Torsten Grote
c801502e81
Migrate SettingsManager to Kotlin
2019-07-04 08:25:37 +02:00
Torsten Grote
3d5911d41d
Add a SettingsViewModel in Kotlin including the Kotlin deps
2019-07-03 19:44:37 +02:00
Torsten Grote
b983414295
Add custom settings UI
2019-07-03 12:46:55 +02:00
Torsten Grote
3981d3d8cc
Use latest stable AndroidX libraries
2019-07-03 12:46:54 +02:00
Torsten Grote
7fd3810fbf
Add AndroidX dependencies
2019-06-17 10:34:49 -03:00
Steve Soltys
bd599db492
Merge pull request #29 from grote/full-key-value-backups
...
Fix backup state handling, end of backup detection
2019-06-14 17:34:44 -04: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
2f2fba8305
Pre-select all packages and give option to unselect all
2019-06-14 16:33:04 -03:00
Steve Soltys
1185e8dc71
Merge pull request #28 from grote/upgrade-android-jar
...
Upgrade android jars
2019-06-14 15:23:25 -04:00
Torsten Grote
ad89ea4187
Use new IBackupManager API to filter eligable packages
...
There's also a bit of refactoring for simplifying the PackageService
usage.
Fixes #26 by adding com.android.externalstorage to ignore list
2019-06-14 07:04:21 -03:00
Torsten Grote
3a9aec56b2
Upgrade android.jar to API 28
2019-06-14 07:04:19 -03:00
Steve Soltys
a18806cf99
Merge pull request #27 from grote/background-backups
...
Background backups
2019-06-13 20:33:47 -04: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
b17a55ac57
Target API 28
2019-06-11 11:57:10 -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
540147470d
Allow the user to schedule full background backups
2019-06-11 09:28:03 -03:00
Steve Soltys
e079aaff1b
Merge pull request #25 from grote/store-backup-key
...
Store backup passphrase insecurely for now
2019-06-05 17:42:31 -04:00