diff --git a/.idea/misc.xml b/.idea/misc.xml index da7759f..93a9df2 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -38,7 +38,7 @@ - + diff --git a/app/src/main/java/lu/circl/mispbump/activities/LoginActivity.java b/app/src/main/java/lu/circl/mispbump/activities/LoginActivity.java index 4a50402..fdcbd5f 100644 --- a/app/src/main/java/lu/circl/mispbump/activities/LoginActivity.java +++ b/app/src/main/java/lu/circl/mispbump/activities/LoginActivity.java @@ -10,14 +10,10 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; -import android.text.Editable; import android.text.TextUtils; -import android.text.TextWatcher; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.webkit.WebSettings; -import android.webkit.WebView; import android.widget.Button; import android.widget.ProgressBar; @@ -26,9 +22,9 @@ import java.util.Objects; import lu.circl.mispbump.R; import lu.circl.mispbump.auxiliary.DialogManager; import lu.circl.mispbump.auxiliary.PreferenceManager; -import lu.circl.mispbump.restful_client.MispRestClient; -import lu.circl.mispbump.restful_client.Organisation; -import lu.circl.mispbump.restful_client.User; +import lu.circl.mispbump.auxiliary.MispRestClient; +import lu.circl.mispbump.models.restModels.Organisation; +import lu.circl.mispbump.models.restModels.User; /** * This activity is shown when the current device has no misp user and organisation associated with it. diff --git a/app/src/main/java/lu/circl/mispbump/activities/ProfileActivity.java b/app/src/main/java/lu/circl/mispbump/activities/ProfileActivity.java index f959baf..8ff08dc 100644 --- a/app/src/main/java/lu/circl/mispbump/activities/ProfileActivity.java +++ b/app/src/main/java/lu/circl/mispbump/activities/ProfileActivity.java @@ -13,6 +13,8 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; + +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -24,10 +26,10 @@ import java.util.Random; import lu.circl.mispbump.R; import lu.circl.mispbump.auxiliary.PreferenceManager; import lu.circl.mispbump.auxiliary.TileDrawable; -import lu.circl.mispbump.custom_views.MaterialPreferenceText; -import lu.circl.mispbump.restful_client.MispRestClient; -import lu.circl.mispbump.restful_client.Organisation; -import lu.circl.mispbump.restful_client.User; +import lu.circl.mispbump.customViews.MaterialPreferenceText; +import lu.circl.mispbump.auxiliary.MispRestClient; +import lu.circl.mispbump.models.restModels.Organisation; +import lu.circl.mispbump.models.restModels.User; import lu.circl.mispbump.security.KeyStoreWrapper; public class ProfileActivity extends AppCompatActivity { @@ -47,11 +49,11 @@ public class ProfileActivity extends AppCompatActivity { mispRestClient = MispRestClient.getInstance(this); preferenceManager = PreferenceManager.getInstance(this); - initializeViews(); + init(); populateInformationViews(); } - private void initializeViews() { + private void init() { rootLayout = findViewById(R.id.rootLayout); ImageView headerBg = findViewById(R.id.headerBg); @@ -79,21 +81,27 @@ public class ProfileActivity extends AppCompatActivity { TextView name = findViewById(R.id.orgName); name.setText(organisation.name); - MaterialPreferenceText uuid = findViewById(R.id.uuid); - uuid.setSubText(organisation.uuid); + final MaterialPreferenceText uuid = findViewById(R.id.uuid); + uuid.setSubtitle(organisation.uuid); +// uuid.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// Snackbar.make(rootLayout, "Copied to clipboard", Snackbar.LENGTH_LONG).show(); +// } +// }); MaterialPreferenceText nationality = findViewById(R.id.nationality); - nationality.setSubText(organisation.nationality); + nationality.setSubtitle(organisation.nationality); MaterialPreferenceText sector = findViewById(R.id.sector); if (organisation.sector == null) { sector.setVisibility(View.GONE); } else { - sector.setSubText(organisation.sector); + sector.setSubtitle(organisation.sector); } MaterialPreferenceText description = findViewById(R.id.description); - description.setSubText(organisation.description); + description.setSubtitle(organisation.description); } @Override diff --git a/app/src/main/java/lu/circl/mispbump/activities/StartUpActivity.java b/app/src/main/java/lu/circl/mispbump/activities/StartUpActivity.java index e0f5b18..af341b9 100644 --- a/app/src/main/java/lu/circl/mispbump/activities/StartUpActivity.java +++ b/app/src/main/java/lu/circl/mispbump/activities/StartUpActivity.java @@ -5,7 +5,7 @@ import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import lu.circl.mispbump.auxiliary.PreferenceManager; -import lu.circl.mispbump.restful_client.User; +import lu.circl.mispbump.models.restModels.User; public class StartUpActivity extends AppCompatActivity { 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 095644c..c4a3cda 100644 --- a/app/src/main/java/lu/circl/mispbump/activities/SyncActivity.java +++ b/app/src/main/java/lu/circl/mispbump/activities/SyncActivity.java @@ -28,8 +28,8 @@ import lu.circl.mispbump.R; import lu.circl.mispbump.auxiliary.PreferenceManager; import lu.circl.mispbump.auxiliary.QrCodeGenerator; import lu.circl.mispbump.auxiliary.RandomString; -import lu.circl.mispbump.cam.CameraFragment; -import lu.circl.mispbump.custom_views.ExtendedBottomSheetBehavior; +import lu.circl.mispbump.fragments.CameraFragment; +import lu.circl.mispbump.customViews.ExtendedBottomSheetBehavior; import lu.circl.mispbump.fragments.SyncOptionsFragment; import lu.circl.mispbump.models.SyncInformation; import lu.circl.mispbump.models.UploadInformation; 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 7110f38..cbb8dc3 100644 --- a/app/src/main/java/lu/circl/mispbump/activities/UploadActivity.java +++ b/app/src/main/java/lu/circl/mispbump/activities/UploadActivity.java @@ -18,15 +18,14 @@ import java.util.List; import java.util.UUID; import lu.circl.mispbump.R; -import lu.circl.mispbump.auxiliary.DialogManager; import lu.circl.mispbump.auxiliary.PreferenceManager; -import lu.circl.mispbump.custom_views.UploadAction; +import lu.circl.mispbump.customViews.UploadAction; import lu.circl.mispbump.models.UploadInformation; -import lu.circl.mispbump.restful_client.MispRestClient; -import lu.circl.mispbump.restful_client.MispServer; -import lu.circl.mispbump.restful_client.Organisation; -import lu.circl.mispbump.restful_client.Server; -import lu.circl.mispbump.restful_client.User; +import lu.circl.mispbump.auxiliary.MispRestClient; +import lu.circl.mispbump.models.restModels.MispServer; +import lu.circl.mispbump.models.restModels.Organisation; +import lu.circl.mispbump.models.restModels.Server; +import lu.circl.mispbump.models.restModels.User; public class UploadActivity extends AppCompatActivity { @@ -207,11 +206,6 @@ public class UploadActivity extends AppCompatActivity { } - @Override - public void success(MispServer server) { - - } - @Override public void success(Server server) { serverAction.setCurrentUploadState(UploadAction.UploadState.DONE); diff --git a/app/src/main/java/lu/circl/mispbump/auxiliary/KeyValue.java b/app/src/main/java/lu/circl/mispbump/auxiliary/KeyValue.java deleted file mode 100644 index b0e02e1..0000000 --- a/app/src/main/java/lu/circl/mispbump/auxiliary/KeyValue.java +++ /dev/null @@ -1,16 +0,0 @@ -package lu.circl.mispbump.auxiliary; - -public class KeyValue { - public K key; - public V value; - - /** - * Generates a generic key value pair. - * @param key key - * @param value value - */ - public KeyValue(K key, V value) { - this.key = key; - this.value = value; - } -} diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/MispRestClient.java b/app/src/main/java/lu/circl/mispbump/auxiliary/MispRestClient.java similarity index 80% rename from app/src/main/java/lu/circl/mispbump/restful_client/MispRestClient.java rename to app/src/main/java/lu/circl/mispbump/auxiliary/MispRestClient.java index f399fa3..f4fae0a 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/MispRestClient.java +++ b/app/src/main/java/lu/circl/mispbump/auxiliary/MispRestClient.java @@ -1,15 +1,13 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.auxiliary; import android.annotation.SuppressLint; import android.content.Context; -import android.util.Log; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.net.NoRouteToHostException; -import java.security.cert.CertPathValidatorException; import java.security.cert.CertificateException; import java.util.Iterator; import java.util.List; @@ -22,7 +20,14 @@ import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; -import lu.circl.mispbump.auxiliary.PreferenceManager; +import lu.circl.mispbump.interfaces.MispRestInterface; +import lu.circl.mispbump.models.restModels.MispOrganisation; +import lu.circl.mispbump.models.restModels.MispServer; +import lu.circl.mispbump.models.restModels.MispUser; +import lu.circl.mispbump.models.restModels.Organisation; +import lu.circl.mispbump.models.restModels.Server; +import lu.circl.mispbump.models.restModels.User; +import lu.circl.mispbump.models.restModels.Version; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; @@ -39,6 +44,7 @@ import retrofit2.converter.gson.GsonConverterFactory; */ public class MispRestClient { + public interface AvailableCallback { void available(); @@ -60,8 +66,6 @@ public class MispRestClient { public interface ServerCallback { void success(List servers); - void success(MispServer server); - void success(Server server); void failure(String error); @@ -69,8 +73,9 @@ public class MispRestClient { private static MispRestClient instance; + private PreferenceManager preferenceManager; - private MispRestService mispRestService; + private MispRestInterface mispRestInterface; public static MispRestClient getInstance(Context context) { @@ -95,64 +100,68 @@ public class MispRestClient { Retrofit retrofit = new Retrofit.Builder() .baseUrl(url) .addConverterFactory(GsonConverterFactory.create()) - .client(getUnsafeOkHttpClient()) + .client(getCustomClient(true, false)) .build(); - mispRestService = retrofit.create(MispRestService.class); + mispRestInterface = retrofit.create(MispRestInterface.class); } catch (IllegalArgumentException e) { throw new RuntimeException(e); } } /** - * NOTE: for development only! - *

- * Accepts all certificates including self signed. * - * @return {@link OkHttpClient} which accepts all certificates + * @param unsafe whether to accept all certificates or only trusted ones + * @param logging whether to log Retrofit calls (for debugging) + * @return {@link OkHttpClient} */ - private OkHttpClient getUnsafeOkHttpClient() { + private OkHttpClient getCustomClient(boolean unsafe, boolean logging) { try { - // Create a trust manager that does not validate certificate chains - final TrustManager[] trustAllCerts = new TrustManager[]{ - new X509TrustManager() { - @SuppressLint("TrustAllX509TrustManager") - @Override - public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { - } - - @SuppressLint("TrustAllX509TrustManager") - @Override - public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { - } - - @Override - public java.security.cert.X509Certificate[] getAcceptedIssuers() { - return new java.security.cert.X509Certificate[]{}; - } - } - }; - - // Install the all-trusting trust manager - final SSLContext sslContext = SSLContext.getInstance("SSL"); - sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); - - // Create an ssl socket factory with our all-trusting manager - final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); OkHttpClient.Builder builder = new OkHttpClient.Builder(); - builder.sslSocketFactory(sslSocketFactory, (X509TrustManager)trustAllCerts[0]); - builder.hostnameVerifier(new HostnameVerifier() { - @Override - public boolean verify(String hostname, SSLSession session) { - return true; - } - }); - // create logging interceptor - HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); - interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); - builder.addInterceptor(interceptor); + if (unsafe) { + // Create a trust manager that does not validate certificate chains + final TrustManager[] trustAllCerts = new TrustManager[]{ + new X509TrustManager() { + @SuppressLint("TrustAllX509TrustManager") + @Override + public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @SuppressLint("TrustAllX509TrustManager") + @Override + public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public java.security.cert.X509Certificate[] getAcceptedIssuers() { + return new java.security.cert.X509Certificate[]{}; + } + } + }; + + // Install the all-trusting trust manager + final SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, trustAllCerts, new java.security.SecureRandom()); + + // Create an ssl socket factory with our all-trusting manager + final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); + + builder.sslSocketFactory(sslSocketFactory, (X509TrustManager)trustAllCerts[0]); + builder.hostnameVerifier(new HostnameVerifier() { + @Override + public boolean verify(String hostname, SSLSession session) { + return true; + } + }); + } + + if (logging) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + builder.addInterceptor(interceptor); + } // create authorization interceptor builder.addInterceptor(new Interceptor() { @@ -167,12 +176,12 @@ public class MispRestClient { }); return builder.build(); + } catch (Exception e) { throw new RuntimeException(e); } } - // status routes /** * Check via pyMispRoute if server is available @@ -180,7 +189,7 @@ public class MispRestClient { * @param callback {@link AvailableCallback} */ public void isAvailable(final AvailableCallback callback) { - Call call = mispRestService.pyMispVersion(); + Call call = mispRestInterface.pyMispVersion(); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { @@ -203,7 +212,7 @@ public class MispRestClient { }); } - // user routes + /** * Fetches information about the user that is associated with saved auth key. @@ -211,7 +220,7 @@ public class MispRestClient { * @param callback {@link UserCallback} wrapper to return user directly */ public void getMyUser(final UserCallback callback) { - Call call = mispRestService.getMyUserInformation(); + Call call = mispRestInterface.getMyUserInformation(); call.enqueue(new Callback() { @Override @@ -242,7 +251,7 @@ public class MispRestClient { * @param callback {@link UserCallback} wrapper to return user directly */ public void getUser(int userId, final UserCallback callback) { - Call call = mispRestService.getUser(userId); + Call call = mispRestInterface.getUser(userId); call.enqueue(new Callback() { @Override @@ -273,7 +282,7 @@ public class MispRestClient { * @param callback {@link UserCallback} wrapper to return the created user directly */ public void addUser(User user, final UserCallback callback) { - Call call = mispRestService.addUser(user); + Call call = mispRestInterface.addUser(user); call.enqueue(new Callback() { @Override @@ -294,7 +303,7 @@ public class MispRestClient { } - // organisation routes + // --- organisation routes --- /** * Get an organisation by a given organisation id. @@ -303,7 +312,7 @@ public class MispRestClient { * @param callback {@link OrganisationCallback} wrapper to return a organisation directly */ public void getOrganisation(int orgId, final OrganisationCallback callback) { - Call call = mispRestService.getOrganisation(orgId); + Call call = mispRestInterface.getOrganisation(orgId); call.enqueue(new Callback() { @Override @@ -327,7 +336,7 @@ public class MispRestClient { } public Organisation[] getAllOrganisations() throws IOException { - Call> call = mispRestService.getAllOrganisations(); + Call> call = mispRestInterface.getAllOrganisations(); Response> response = call.execute(); List mispOrganisations = response.body(); @@ -374,7 +383,7 @@ public class MispRestClient { * @param callback {@link OrganisationCallback} wrapper to return the created organisation directly */ public void addOrganisation(Organisation organisation, final OrganisationCallback callback) { - Call call = mispRestService.addOrganisation(organisation); + Call call = mispRestInterface.addOrganisation(organisation); call.enqueue(new Callback() { @Override @@ -394,7 +403,7 @@ public class MispRestClient { }); } - // server routes + // --- server routes --- /** * Get all servers on MISP instance. @@ -402,7 +411,7 @@ public class MispRestClient { * @param callback {@link OrganisationCallback} wrapper to return a list of servers directly */ public void getServers(final ServerCallback callback) { - Call> call = mispRestService.getServers(); + Call> call = mispRestInterface.getServers(); call.enqueue(new Callback>() { @Override @@ -428,7 +437,7 @@ public class MispRestClient { * @param callback {@link ServerCallback} wrapper to return the created server directly */ public void addServer(Server server, final ServerCallback callback) { - Call call = mispRestService.addServer(server); + Call call = mispRestInterface.addServer(server); call.enqueue(new Callback() { @Override @@ -447,7 +456,7 @@ public class MispRestClient { }); } - // error parsing + // --- error parsing --- /** * Converts error {@link Response}s to human readable info. diff --git a/app/src/main/java/lu/circl/mispbump/auxiliary/PreferenceManager.java b/app/src/main/java/lu/circl/mispbump/auxiliary/PreferenceManager.java index f6b2759..0374059 100644 --- a/app/src/main/java/lu/circl/mispbump/auxiliary/PreferenceManager.java +++ b/app/src/main/java/lu/circl/mispbump/auxiliary/PreferenceManager.java @@ -20,8 +20,8 @@ import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import lu.circl.mispbump.models.UploadInformation; -import lu.circl.mispbump.restful_client.Organisation; -import lu.circl.mispbump.restful_client.User; +import lu.circl.mispbump.models.restModels.Organisation; +import lu.circl.mispbump.models.restModels.User; import lu.circl.mispbump.security.KeyStoreWrapper; public class PreferenceManager { diff --git a/app/src/main/java/lu/circl/mispbump/cam/AutoFitTextureView.java b/app/src/main/java/lu/circl/mispbump/customViews/AutoFitTextureView.java similarity index 98% rename from app/src/main/java/lu/circl/mispbump/cam/AutoFitTextureView.java rename to app/src/main/java/lu/circl/mispbump/customViews/AutoFitTextureView.java index 1574f8f..b623747 100644 --- a/app/src/main/java/lu/circl/mispbump/cam/AutoFitTextureView.java +++ b/app/src/main/java/lu/circl/mispbump/customViews/AutoFitTextureView.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.cam; +package lu.circl.mispbump.customViews; /* * Copyright 2014 The Android Open Source Project diff --git a/app/src/main/java/lu/circl/mispbump/custom_views/ExtendedBottomSheetBehavior.java b/app/src/main/java/lu/circl/mispbump/customViews/ExtendedBottomSheetBehavior.java similarity index 78% rename from app/src/main/java/lu/circl/mispbump/custom_views/ExtendedBottomSheetBehavior.java rename to app/src/main/java/lu/circl/mispbump/customViews/ExtendedBottomSheetBehavior.java index 3f4f05a..e00643c 100644 --- a/app/src/main/java/lu/circl/mispbump/custom_views/ExtendedBottomSheetBehavior.java +++ b/app/src/main/java/lu/circl/mispbump/customViews/ExtendedBottomSheetBehavior.java @@ -1,5 +1,7 @@ -package lu.circl.mispbump.custom_views; +package lu.circl.mispbump.customViews; +import android.content.Context; +import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; @@ -7,14 +9,24 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout; import com.google.android.material.bottomsheet.BottomSheetBehavior; +import java.util.ConcurrentModificationException; + /** * Can disable touch input on bottom sheet. + * * @param */ public class ExtendedBottomSheetBehavior extends BottomSheetBehavior { private boolean swipeable = false; + public ExtendedBottomSheetBehavior() { + super(); + } + + public ExtendedBottomSheetBehavior(Context context, AttributeSet attributeSet) { + super(context, attributeSet); + } @Override public boolean onInterceptTouchEvent(CoordinatorLayout parent, V child, MotionEvent event) { diff --git a/app/src/main/java/lu/circl/mispbump/customViews/MaterialPreferenceText.java b/app/src/main/java/lu/circl/mispbump/customViews/MaterialPreferenceText.java new file mode 100644 index 0000000..dce0ec5 --- /dev/null +++ b/app/src/main/java/lu/circl/mispbump/customViews/MaterialPreferenceText.java @@ -0,0 +1,79 @@ +package lu.circl.mispbump.customViews; + +import android.content.Context; +import android.content.res.TypedArray; + +import androidx.annotation.Nullable; +import androidx.constraintlayout.widget.ConstraintLayout; + +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; + +import lu.circl.mispbump.R; + +public class MaterialPreferenceText extends ConstraintLayout { + + private View rootView; + private ImageView icon; + private TextView title, subtitle; + + + public MaterialPreferenceText(Context context, AttributeSet attrs) { + super(context, attrs); + + View view = LayoutInflater.from(context).inflate(R.layout.material_preference_text, this); + + rootView = view.findViewById(R.id.rootLayout); + + TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MaterialPreferenceText); + + icon = view.findViewById(R.id.material_preference_src); + icon.setImageResource(a.getResourceId(R.styleable.MaterialPreferenceText_pref_icon, 0x0)); + + title = view.findViewById(R.id.material_preference_title); + title.setText(a.getString(R.styleable.MaterialPreferenceText_title)); + + subtitle = view.findViewById(R.id.material_preference_subtitle); + subtitle.setText(a.getString(R.styleable.MaterialPreferenceText_subtitle)); + + a.recycle(); + } + + + public void setTitle(String title) { + this.title.setText(title); + } + + public String getTitle() { + return this.title.getText().toString(); + } + + + public void setSubtitle(String subtitle) { + this.subtitle.setText(subtitle); + } + + public String getSubtitle() { + return this.subtitle.getText().toString(); + } + + + public void setDrawable(int resourceId) { + this.icon.setImageResource(resourceId); + } + + public void setDrawable(Drawable drawable) { + this.icon.setImageDrawable(drawable); + } + + + @Override + public void setOnClickListener(@Nullable OnClickListener l) { + rootView.setOnClickListener(l); + } +} diff --git a/app/src/main/java/lu/circl/mispbump/custom_views/UploadAction.java b/app/src/main/java/lu/circl/mispbump/customViews/UploadAction.java similarity index 96% rename from app/src/main/java/lu/circl/mispbump/custom_views/UploadAction.java rename to app/src/main/java/lu/circl/mispbump/customViews/UploadAction.java index 221fc74..89ef1b6 100644 --- a/app/src/main/java/lu/circl/mispbump/custom_views/UploadAction.java +++ b/app/src/main/java/lu/circl/mispbump/customViews/UploadAction.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.custom_views; +package lu.circl.mispbump.customViews; import android.content.Context; import android.content.res.ColorStateList; @@ -39,11 +39,10 @@ public class UploadAction extends LinearLayoutCompat { public UploadAction(Context context, AttributeSet attrs) { super(context, attrs); - this.context = context; TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.UploadAction); - String title = a.getString(R.styleable.UploadAction_title); + String title = a.getString(R.styleable.UploadAction_description); a.recycle(); LayoutInflater inflater = LayoutInflater.from(context); @@ -72,7 +71,6 @@ public class UploadAction extends LinearLayoutCompat { } public void setCurrentUploadState(UploadState state) { - currentUploadState = state; progressBar.setVisibility(GONE); diff --git a/app/src/main/java/lu/circl/mispbump/custom_views/MaterialPreferenceText.java b/app/src/main/java/lu/circl/mispbump/custom_views/MaterialPreferenceText.java deleted file mode 100644 index b00de52..0000000 --- a/app/src/main/java/lu/circl/mispbump/custom_views/MaterialPreferenceText.java +++ /dev/null @@ -1,42 +0,0 @@ -package lu.circl.mispbump.custom_views; - -import android.content.Context; -import android.content.res.TypedArray; -import androidx.constraintlayout.widget.ConstraintLayout; -import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import lu.circl.mispbump.R; - -public class MaterialPreferenceText extends ConstraintLayout { - - private View baseView; - private TextView title, subtitle; - - public MaterialPreferenceText(Context context, AttributeSet attrs) { - super(context, attrs); - - LayoutInflater inflater = LayoutInflater.from(context); - baseView = inflater.inflate(R.layout.material_preference_text, this); - - TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.MaterialPreferenceText); - - ImageView icon = baseView.findViewById(R.id.material_preference_src); - icon.setImageResource(a.getResourceId(R.styleable.MaterialPreferenceText_pref_icon, 0x0)); - - title = baseView.findViewById(R.id.material_preference_title); - title.setText(a.getString(R.styleable.MaterialPreferenceText_text)); - - subtitle = baseView.findViewById(R.id.material_preference_subtitle); - subtitle.setText(a.getString(R.styleable.MaterialPreferenceText_subText)); - - a.recycle(); - } - - public void setSubText(String subText) { - subtitle.setText(subText); - } -} diff --git a/app/src/main/java/lu/circl/mispbump/cam/CameraFragment.java b/app/src/main/java/lu/circl/mispbump/fragments/CameraFragment.java similarity index 99% rename from app/src/main/java/lu/circl/mispbump/cam/CameraFragment.java rename to app/src/main/java/lu/circl/mispbump/fragments/CameraFragment.java index 7cbc4f4..a0f9d62 100644 --- a/app/src/main/java/lu/circl/mispbump/cam/CameraFragment.java +++ b/app/src/main/java/lu/circl/mispbump/fragments/CameraFragment.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.cam; +package lu.circl.mispbump.fragments; import android.Manifest; import android.animation.Animator; @@ -63,6 +63,7 @@ import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; import lu.circl.mispbump.R; +import lu.circl.mispbump.customViews.AutoFitTextureView; public class CameraFragment extends Fragment implements ActivityCompat.OnRequestPermissionsResultCallback { diff --git a/app/src/main/java/lu/circl/mispbump/fragments/HomeFragment.java b/app/src/main/java/lu/circl/mispbump/fragments/HomeFragment.java deleted file mode 100644 index 25c15b8..0000000 --- a/app/src/main/java/lu/circl/mispbump/fragments/HomeFragment.java +++ /dev/null @@ -1,6 +0,0 @@ -package lu.circl.mispbump.fragments; - -import androidx.fragment.app.Fragment; - -public class HomeFragment extends Fragment { -} diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/MispRestService.java b/app/src/main/java/lu/circl/mispbump/interfaces/MispRestInterface.java similarity index 70% rename from app/src/main/java/lu/circl/mispbump/restful_client/MispRestService.java rename to app/src/main/java/lu/circl/mispbump/interfaces/MispRestInterface.java index 4eb6430..3f108db 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/MispRestService.java +++ b/app/src/main/java/lu/circl/mispbump/interfaces/MispRestInterface.java @@ -1,7 +1,14 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.interfaces; import java.util.List; +import lu.circl.mispbump.models.restModels.MispOrganisation; +import lu.circl.mispbump.models.restModels.MispServer; +import lu.circl.mispbump.models.restModels.MispUser; +import lu.circl.mispbump.models.restModels.Organisation; +import lu.circl.mispbump.models.restModels.Server; +import lu.circl.mispbump.models.restModels.User; +import lu.circl.mispbump.models.restModels.Version; import retrofit2.Call; import retrofit2.http.Body; import retrofit2.http.GET; @@ -11,7 +18,7 @@ import retrofit2.http.Path; /** * RetroFit2 interface for communication with misp instances */ -public interface MispRestService { +public interface MispRestInterface { // settings routes @@ -45,9 +52,6 @@ public interface MispRestService { @GET("servers/index") Call> getServers(); -// @POST("servers/add") -// Call addServer(@Body MispServer server); - @POST("servers/add") Call addServer(@Body Server server); } \ No newline at end of file diff --git a/app/src/main/java/lu/circl/mispbump/models/SyncInformation.java b/app/src/main/java/lu/circl/mispbump/models/SyncInformation.java index a0f7161..9f95f61 100644 --- a/app/src/main/java/lu/circl/mispbump/models/SyncInformation.java +++ b/app/src/main/java/lu/circl/mispbump/models/SyncInformation.java @@ -1,6 +1,6 @@ package lu.circl.mispbump.models; -import lu.circl.mispbump.restful_client.Organisation; +import lu.circl.mispbump.models.restModels.Organisation; /** * A Class that holds the information needed synchronize two misp instances. diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/MispOrganisation.java b/app/src/main/java/lu/circl/mispbump/models/restModels/MispOrganisation.java similarity index 82% rename from app/src/main/java/lu/circl/mispbump/restful_client/MispOrganisation.java rename to app/src/main/java/lu/circl/mispbump/models/restModels/MispOrganisation.java index 5bd9cd4..033ec5f 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/MispOrganisation.java +++ b/app/src/main/java/lu/circl/mispbump/models/restModels/MispOrganisation.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.models.restModels; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/MispServer.java b/app/src/main/java/lu/circl/mispbump/models/restModels/MispServer.java similarity index 93% rename from app/src/main/java/lu/circl/mispbump/restful_client/MispServer.java rename to app/src/main/java/lu/circl/mispbump/models/restModels/MispServer.java index 1c7b9b3..1e6eaad 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/MispServer.java +++ b/app/src/main/java/lu/circl/mispbump/models/restModels/MispServer.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.models.restModels; import java.util.List; import com.google.gson.annotations.Expose; diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/MispUser.java b/app/src/main/java/lu/circl/mispbump/models/restModels/MispUser.java similarity index 84% rename from app/src/main/java/lu/circl/mispbump/restful_client/MispUser.java rename to app/src/main/java/lu/circl/mispbump/models/restModels/MispUser.java index 4bcb275..f4936eb 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/MispUser.java +++ b/app/src/main/java/lu/circl/mispbump/models/restModels/MispUser.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.models.restModels; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/Organisation.java b/app/src/main/java/lu/circl/mispbump/models/restModels/Organisation.java similarity index 97% rename from app/src/main/java/lu/circl/mispbump/restful_client/Organisation.java rename to app/src/main/java/lu/circl/mispbump/models/restModels/Organisation.java index f24bd59..acfdb37 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/Organisation.java +++ b/app/src/main/java/lu/circl/mispbump/models/restModels/Organisation.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.models.restModels; /** * Information gathered from Misp API about a organisation. diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/Server.java b/app/src/main/java/lu/circl/mispbump/models/restModels/Server.java similarity index 98% rename from app/src/main/java/lu/circl/mispbump/restful_client/Server.java rename to app/src/main/java/lu/circl/mispbump/models/restModels/Server.java index 99ba9ad..d9f3d52 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/Server.java +++ b/app/src/main/java/lu/circl/mispbump/models/restModels/Server.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.models.restModels; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/User.java b/app/src/main/java/lu/circl/mispbump/models/restModels/User.java similarity index 98% rename from app/src/main/java/lu/circl/mispbump/restful_client/User.java rename to app/src/main/java/lu/circl/mispbump/models/restModels/User.java index 4535419..387aac0 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/User.java +++ b/app/src/main/java/lu/circl/mispbump/models/restModels/User.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.models.restModels; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/lu/circl/mispbump/restful_client/Version.java b/app/src/main/java/lu/circl/mispbump/models/restModels/Version.java similarity index 75% rename from app/src/main/java/lu/circl/mispbump/restful_client/Version.java rename to app/src/main/java/lu/circl/mispbump/models/restModels/Version.java index 5ba921e..b6c0658 100644 --- a/app/src/main/java/lu/circl/mispbump/restful_client/Version.java +++ b/app/src/main/java/lu/circl/mispbump/models/restModels/Version.java @@ -1,4 +1,4 @@ -package lu.circl.mispbump.restful_client; +package lu.circl.mispbump.models.restModels; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index f39fdea..b656680 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -6,6 +6,8 @@ android:id="@+id/rootLayout" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/white" + android:descendantFocusability="blocksDescendants" tools:context=".activities.ProfileActivity"> - - - - - + app:title="UUID"/> - + app:title="Nationality"/> - - - + app:title="Sector"/> - + diff --git a/app/src/main/res/layout/activity_sync.xml b/app/src/main/res/layout/activity_sync.xml index 6c823e7..93ff1d4 100644 --- a/app/src/main/res/layout/activity_sync.xml +++ b/app/src/main/res/layout/activity_sync.xml @@ -1,4 +1,5 @@ + - - - - - - + android:foreground="?attr/selectableItemBackground"> + tools:ignore="ContentDescription" /> - - - + + + - + \ No newline at end of file