From 268112b6e4c1474ceab31c3d8980f3e8e894069d Mon Sep 17 00:00:00 2001 From: Felix Prahl-Kamps Date: Mon, 17 Jun 2019 12:02:05 +0200 Subject: [PATCH] fix display wrong email add server url to sync view replace some icons --- README.md | 11 +--- .../mispbump/activities/SyncActivity.java | 16 +++-- .../mispbump/activities/UploadActivity.java | 47 ++++---------- .../circl/mispbump/adapters/SyncAdapter.java | 16 +++-- .../fragments/SyncOptionsFragment.java | 30 ++++++++- .../mispbump/models/UploadInformation.java | 2 +- .../bottom_navigation_color_states.xml | 5 -- .../main/res/drawable/ic_alternate_email.xml | 10 +++ .../drawable/ic_cloud_download_black_24dp.xml | 9 --- .../drawable/ic_cloud_download_light_24dp.xml | 5 -- app/src/main/res/drawable/ic_email.xml | 9 +++ .../main/res/drawable/ic_email_black_24dp.xml | 9 --- app/src/main/res/drawable/ic_key.xml | 12 ++-- app/src/main/res/drawable/ic_link.xml | 9 +++ .../main/res/drawable/ic_verified_user.xml | 9 +++ app/src/main/res/layout/viewholder_sync.xml | 63 +++++++++---------- 16 files changed, 135 insertions(+), 127 deletions(-) delete mode 100644 app/src/main/res/drawable/bottom_navigation_color_states.xml create mode 100644 app/src/main/res/drawable/ic_alternate_email.xml delete mode 100644 app/src/main/res/drawable/ic_cloud_download_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_cloud_download_light_24dp.xml create mode 100644 app/src/main/res/drawable/ic_email.xml delete mode 100644 app/src/main/res/drawable/ic_email_black_24dp.xml create mode 100644 app/src/main/res/drawable/ic_link.xml create mode 100644 app/src/main/res/drawable/ic_verified_user.xml diff --git a/README.md b/README.md index b1da1cd..e4babc8 100644 --- a/README.md +++ b/README.md @@ -1,17 +1,8 @@ # What does this app? 1. Exchange public keys to make following communication private (via QR code) + Diffie Hellman key exchange -2. Exchange information needed to sync two MISP instances +2. Exchange encrypted information needed to sync two MISP instances 3. Upload information to MISP instance. -# Problems -+ Androidx migration - bug in material design dependency (just for editor) -+ Loading of self signed certificates (currently not supported) - -# TODOs -+ custom password for syncUser -+ upload ack screen -+ translation - # MISPBump ![Alt text](./poster/mispbump.png) diff --git a/app/src/main/java/lu/circl/mispbump/activities/SyncActivity.java b/app/src/main/java/lu/circl/mispbump/activities/SyncActivity.java index 2d91574..095644c 100644 --- a/app/src/main/java/lu/circl/mispbump/activities/SyncActivity.java +++ b/app/src/main/java/lu/circl/mispbump/activities/SyncActivity.java @@ -126,10 +126,11 @@ public class SyncActivity extends AppCompatActivity { public void onClick(View v) { switch (currentSyncState) { case settings: - uploadInformation.setCached(syncOptionsFragment.cache.isChecked()); - uploadInformation.setPush(syncOptionsFragment.push.isChecked()); - uploadInformation.setPull(syncOptionsFragment.pull.isChecked()); - uploadInformation.setAllowSelfSigned(syncOptionsFragment.allowSelfSigned.isChecked()); + uploadInformation = new UploadInformation(); + uploadInformation.setAllowSelfSigned(syncOptionsFragment.getAllowSelfSigned()); + uploadInformation.setPush(syncOptionsFragment.getPush()); + uploadInformation.setPull(syncOptionsFragment.getPull()); + uploadInformation.setCached(syncOptionsFragment.getCache()); switchState(SyncState.publicKeyExchange); break; @@ -281,7 +282,6 @@ public class SyncActivity extends AppCompatActivity { switch (currentSyncState) { case settings: String fragTag = SyncOptionsFragment.class.getSimpleName(); - syncOptionsFragment = (SyncOptionsFragment) fragmentManager.findFragmentByTag(fragTag); if (syncOptionsFragment == null) { @@ -331,11 +331,9 @@ public class SyncActivity extends AppCompatActivity { syncInformation.syncUserAuthkey = new RandomString(40).nextString(); syncInformation.baseUrl = preferenceManager.getServerUrl(); syncInformation.syncUserPassword = new RandomString(16).nextString(); + syncInformation.syncUserEmail = preferenceManager.getUserInfo().email; - String myEmailDomain = preferenceManager.getUserInfo().email.split("@")[1]; - syncInformation.syncUserEmail = "syncuser_[ORG]@" + myEmailDomain; - - uploadInformation = new UploadInformation(syncInformation); + uploadInformation.setLocal(syncInformation); // encrypt serialized content String encrypted = diffieHellman.encrypt(new Gson().toJson(syncInformation)); diff --git a/app/src/main/java/lu/circl/mispbump/activities/UploadActivity.java b/app/src/main/java/lu/circl/mispbump/activities/UploadActivity.java index 01cae03..6c02aac 100644 --- a/app/src/main/java/lu/circl/mispbump/activities/UploadActivity.java +++ b/app/src/main/java/lu/circl/mispbump/activities/UploadActivity.java @@ -108,11 +108,12 @@ public class UploadActivity extends AppCompatActivity { User syncUser = new User(); syncUser.org_id = organisation.id; syncUser.role_id = User.ROLE_SYNC_USER; + syncUser.email = uploadInformation.getRemote().syncUserEmail; - String emailSaveOrgName = organisation.name.replace(" ", "").toLowerCase(); - String syncUserEmailFormat = uploadInformation.getRemote().syncUserEmail; - syncUser.email = syncUserEmailFormat.replace("[ORG]", emailSaveOrgName); - uploadInformation.getRemote().syncUserEmail = syncUser.email; +// String emailSaveOrgName = organisation.name.replace(" ", "").toLowerCase(); +// String syncUserEmailFormat = uploadInformation.getRemote().syncUserEmail; +// syncUser.email = syncUserEmailFormat.replace("[ORG]", emailSaveOrgName); +// uploadInformation.getLocal().syncUserEmail = syncUser.email; syncUser.password = uploadInformation.getRemote().syncUserPassword; syncUser.authkey = uploadInformation.getRemote().syncUserAuthkey; @@ -126,28 +127,7 @@ public class UploadActivity extends AppCompatActivity { public void available() { availableAction.setCurrentUploadState(UploadAction.UploadState.DONE); orgAction.setCurrentUploadState(UploadAction.UploadState.LOADING); - - Thread t = new Thread(new Runnable() { - @Override - public void run() { - try { - int orgId = organisationExists(); - if (orgId != -1) { - Snackbar.make(rootLayout, "exists", Snackbar.LENGTH_INDEFINITE).show(); - uploadInformation.getRemote().organisation.id = orgId; - // TODO if exists: add User - } else { - restClient.addOrganisation(uploadInformation.getRemote().organisation, organisationCallback); - Snackbar.make(rootLayout, "does not exist", Snackbar.LENGTH_INDEFINITE).show(); - } - } catch (IOException e) { - Snackbar.make(rootLayout, "Some error", Snackbar.LENGTH_INDEFINITE).show(); - e.printStackTrace(); - } - } - }); - - t.start(); + restClient.addOrganisation(uploadInformation.getRemote().organisation, organisationCallback); } @Override @@ -183,15 +163,11 @@ public class UploadActivity extends AppCompatActivity { @Override public void failure(String error) { - - - // IF error = org already exists: - // resClient.addUser() - orgAction.setCurrentUploadState(UploadAction.UploadState.ERROR); + orgAction.setError(error); + uploadInformation.setCurrentSyncStatus(UploadInformation.SyncStatus.FAILURE); preferenceManager.addUploadInformation(uploadInformation); - Snackbar.make(rootLayout, error, Snackbar.LENGTH_LONG).show(); } }; @@ -205,6 +181,7 @@ public class UploadActivity extends AppCompatActivity { server.url = uploadInformation.getRemote().baseUrl; server.remote_org_id = uploadInformation.getRemote().organisation.id; server.authkey = uploadInformation.getLocal().syncUserAuthkey; + server.pull = uploadInformation.isPull(); server.push = uploadInformation.isPush(); server.caching_enabled = uploadInformation.isCached(); @@ -216,9 +193,10 @@ public class UploadActivity extends AppCompatActivity { @Override public void failure(String error) { userAction.setCurrentUploadState(UploadAction.UploadState.ERROR); + userAction.setError(error); + uploadInformation.setCurrentSyncStatus(UploadInformation.SyncStatus.FAILURE); preferenceManager.addUploadInformation(uploadInformation); - Snackbar.make(rootLayout, error, Snackbar.LENGTH_LONG).show(); } }; @@ -244,9 +222,10 @@ public class UploadActivity extends AppCompatActivity { @Override public void failure(String error) { serverAction.setCurrentUploadState(UploadAction.UploadState.ERROR); + serverAction.setError(error); + uploadInformation.setCurrentSyncStatus(UploadInformation.SyncStatus.FAILURE); preferenceManager.addUploadInformation(uploadInformation); - Snackbar.make(rootLayout, error, Snackbar.LENGTH_LONG).show(); } }; diff --git a/app/src/main/java/lu/circl/mispbump/adapters/SyncAdapter.java b/app/src/main/java/lu/circl/mispbump/adapters/SyncAdapter.java index 973d443..1a305de 100644 --- a/app/src/main/java/lu/circl/mispbump/adapters/SyncAdapter.java +++ b/app/src/main/java/lu/circl/mispbump/adapters/SyncAdapter.java @@ -29,7 +29,7 @@ public class SyncAdapter extends RecyclerView.Adapter deleteListener, retryListener; static class SyncViewHolder extends RecyclerView.ViewHolder { - MaterialPreferenceText email, password; + MaterialPreferenceText baseUrl, email, password, authkey; TextView orgName, date; ImageView syncStatus; ImageButton retry, delete; @@ -57,8 +57,10 @@ public class SyncAdapter extends RecyclerView.Adapter - - - - \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_alternate_email.xml b/app/src/main/res/drawable/ic_alternate_email.xml new file mode 100644 index 0000000..c026c3c --- /dev/null +++ b/app/src/main/res/drawable/ic_alternate_email.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_cloud_download_black_24dp.xml b/app/src/main/res/drawable/ic_cloud_download_black_24dp.xml deleted file mode 100644 index 261c312..0000000 --- a/app/src/main/res/drawable/ic_cloud_download_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_cloud_download_light_24dp.xml b/app/src/main/res/drawable/ic_cloud_download_light_24dp.xml deleted file mode 100644 index 0feb270..0000000 --- a/app/src/main/res/drawable/ic_cloud_download_light_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_email.xml b/app/src/main/res/drawable/ic_email.xml new file mode 100644 index 0000000..d386fca --- /dev/null +++ b/app/src/main/res/drawable/ic_email.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_email_black_24dp.xml b/app/src/main/res/drawable/ic_email_black_24dp.xml deleted file mode 100644 index ce97ab8..0000000 --- a/app/src/main/res/drawable/ic_email_black_24dp.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_key.xml b/app/src/main/res/drawable/ic_key.xml index ae7aa7b..7cd3b6b 100644 --- a/app/src/main/res/drawable/ic_key.xml +++ b/app/src/main/res/drawable/ic_key.xml @@ -1,5 +1,9 @@ - - + + diff --git a/app/src/main/res/drawable/ic_link.xml b/app/src/main/res/drawable/ic_link.xml new file mode 100644 index 0000000..4f7a120 --- /dev/null +++ b/app/src/main/res/drawable/ic_link.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_verified_user.xml b/app/src/main/res/drawable/ic_verified_user.xml new file mode 100644 index 0000000..d42b282 --- /dev/null +++ b/app/src/main/res/drawable/ic_verified_user.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/viewholder_sync.xml b/app/src/main/res/layout/viewholder_sync.xml index 2d262e7..693c233 100644 --- a/app/src/main/res/layout/viewholder_sync.xml +++ b/app/src/main/res/layout/viewholder_sync.xml @@ -73,13 +73,24 @@ android:visibility="visible"> + + @@ -88,13 +99,23 @@ android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/email" app:pref_icon="@drawable/ic_key" app:subText="000000000000" app:text="Password" /> + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file