From 203043429b2c9c2f60dbf5a66177c0b80830d5eb Mon Sep 17 00:00:00 2001 From: cyBerta Date: Thu, 8 Mar 2018 01:42:01 +0100 Subject: #8876 introduce blocking OpenvpnServiceConnection for EIP and cancel connections more rigid --- .../main/java/se/leap/bitmaskclient/EipFragment.java | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/EipFragment.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java index 34120859..797452d9 100644 --- a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java @@ -281,24 +281,11 @@ public class EipFragment extends Fragment implements Observer { protected void stopEipIfPossible() { Context context = getContext(); - if (context != null) { - if (isOpenVpnRunningWithoutNetwork()) { - // TODO move to EIP - // TODO see stopEIP function - Bundle resultData = new Bundle(); - resultData.putString(EIP_REQUEST, EIP_ACTION_STOP); - Intent intentUpdate = new Intent(BROADCAST_EIP_EVENT); - intentUpdate.addCategory(Intent.CATEGORY_DEFAULT); - intentUpdate.putExtra(BROADCAST_RESULT_CODE, Activity.RESULT_OK); - intentUpdate.putExtra(BROADCAST_RESULT_KEY, resultData); - Log.d(TAG, "sending broadcast"); - LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intentUpdate); - } else { - EipCommand.stopVPN(getContext()); - } - } else { + if (context == null) { Log.e(TAG, "context is null when trying to stop EIP"); + return; } + EipCommand.stopVPN(context); } private void askPendingStartCancellation() { -- cgit v1.2.3 From 06535bbae263170277ae2e282aa1af33c6423cd3 Mon Sep 17 00:00:00 2001 From: Fup Duck Date: Wed, 11 Apr 2018 21:12:25 +0200 Subject: prevent login to providers who allow anon usage --- app/src/main/java/se/leap/bitmaskclient/EipFragment.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/EipFragment.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java index 098418a9..5dbec7b0 100644 --- a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java @@ -29,7 +29,6 @@ import android.os.Bundle; import android.os.IBinder; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; -import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AlertDialog; import android.support.v7.widget.AppCompatImageView; import android.support.v7.widget.AppCompatTextView; @@ -56,17 +55,12 @@ import se.leap.bitmaskclient.views.VpnStateImage; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static de.blinkt.openvpn.core.ConnectionStatus.LEVEL_NONETWORK; -import static se.leap.bitmaskclient.Constants.BROADCAST_EIP_EVENT; -import static se.leap.bitmaskclient.Constants.BROADCAST_RESULT_CODE; -import static se.leap.bitmaskclient.Constants.BROADCAST_RESULT_KEY; -import static se.leap.bitmaskclient.Constants.EIP_ACTION_STOP; -import static se.leap.bitmaskclient.Constants.EIP_REQUEST; import static se.leap.bitmaskclient.Constants.EIP_RESTART_ON_BOOT; import static se.leap.bitmaskclient.Constants.PROVIDER_KEY; import static se.leap.bitmaskclient.Constants.REQUEST_CODE_LOG_IN; import static se.leap.bitmaskclient.Constants.REQUEST_CODE_SWITCH_PROVIDER; import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES; -import static se.leap.bitmaskclient.ProviderAPI.DOWNLOAD_VPN_CERTIFICATE; +import static se.leap.bitmaskclient.ProviderAPI.UPDATE_INVALID_VPN_CERTIFICATE; import static se.leap.bitmaskclient.ProviderAPI.USER_MESSAGE; import static se.leap.bitmaskclient.R.string.vpn_certificate_user_message; @@ -240,7 +234,7 @@ public class EipFragment extends Fragment implements Observer { askUserToLogIn(getString(vpn_certificate_user_message)); } else { // provider has no VpnCertificate but user is logged in - downloadVpnCertificate(); + updateInvalidVpnCertificate(); } } @@ -449,8 +443,8 @@ public class EipFragment extends Fragment implements Observer { background.setImageAlpha(210); } - private void downloadVpnCertificate() { - ProviderAPICommand.execute(getContext(), DOWNLOAD_VPN_CERTIFICATE, provider); + private void updateInvalidVpnCertificate() { + ProviderAPICommand.execute(getContext(), UPDATE_INVALID_VPN_CERTIFICATE, provider); } private void askUserToLogIn(String userMessage) { -- cgit v1.2.3 From 0d73e7601979c0da3aae23d1961986d2f88316b1 Mon Sep 17 00:00:00 2001 From: Janak Amarasena Date: Sun, 3 Jun 2018 18:53:31 +0530 Subject: Added donation reminders --- .../java/se/leap/bitmaskclient/EipFragment.java | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'app/src/main/java/se/leap/bitmaskclient/EipFragment.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java index 5dbec7b0..86a5d7c66 100644 --- a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java @@ -25,9 +25,11 @@ import android.content.ServiceConnection; import android.content.SharedPreferences; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; +import android.net.Uri; import android.os.Bundle; import android.os.IBinder; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.support.v7.widget.AppCompatImageView; @@ -38,6 +40,10 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.temporal.ChronoUnit; +import java.util.Date; import java.util.Observable; import java.util.Observer; @@ -55,11 +61,16 @@ import se.leap.bitmaskclient.views.VpnStateImage; import static android.view.View.GONE; import static android.view.View.VISIBLE; import static de.blinkt.openvpn.core.ConnectionStatus.LEVEL_NONETWORK; +import static se.leap.bitmaskclient.Constants.DONATION_REMINDER_DURATION; import static se.leap.bitmaskclient.Constants.EIP_RESTART_ON_BOOT; import static se.leap.bitmaskclient.Constants.PROVIDER_KEY; import static se.leap.bitmaskclient.Constants.REQUEST_CODE_LOG_IN; import static se.leap.bitmaskclient.Constants.REQUEST_CODE_SWITCH_PROVIDER; import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES; +import static se.leap.bitmaskclient.Constants.DONATION_URL; +import static se.leap.bitmaskclient.Constants.ENABLE_DONATION; +import static se.leap.bitmaskclient.Constants.ENABLE_DONATION_REMINDER; +import static se.leap.bitmaskclient.Constants.LAST_DONATION_REMINDER_DATE; import static se.leap.bitmaskclient.ProviderAPI.UPDATE_INVALID_VPN_CERTIFICATE; import static se.leap.bitmaskclient.ProviderAPI.USER_MESSAGE; import static se.leap.bitmaskclient.R.string.vpn_certificate_user_message; @@ -102,6 +113,8 @@ public class EipFragment extends Fragment implements Observer { private IOpenVPNServiceInternal mService; private ServiceConnection openVpnConnection; + private final String DATE_PATTERN = "dd/MM/yyyy"; + @Override public void onAttach(Context context) { super.onAttach(context); @@ -151,6 +164,14 @@ public class EipFragment extends Fragment implements Observer { return view; } + @Override + public void onStart() { + super.onStart(); + if (isDonationReminderCallable()){ + showDonationReminder(); + } + } + @Override public void onResume() { super.onResume(); @@ -483,4 +504,65 @@ public class EipFragment extends Fragment implements Observer { mService = null; } } + + private void showDonationReminder() { + Activity activity = getActivity(); + if (activity == null) { + Log.e(TAG, "activity is null when triggering donation reminder"); + return; + } + saveLastDonationReminderDate(); + String message = activity.getString(R.string.donate_message) == null || activity.getString(R.string.donate_message).equals("")? + activity.getString(R.string.donate_default_message):activity.getString(R.string.donate_message); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(activity.getString(R.string.donate_title)) + .setMessage(message) + .setPositiveButton(R.string.donate_button_donate, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(DONATION_URL)); + startActivity(browserIntent); + } + }) + .setNegativeButton(R.string.donate_button_remind_later, new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + } + }) + .show(); + } + + private boolean isDonationReminderCallable(){ + if (!ENABLE_DONATION||!ENABLE_DONATION_REMINDER){ + return false; + } + + if (preferences==null){ + Log.e(TAG, "preferences is null!"); + return false; + } + + String lastDonationReminderDate = preferences.getString(LAST_DONATION_REMINDER_DATE, null); + if (lastDonationReminderDate==null){ + return true; + } + + SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN); + Date lastDate; + try { + lastDate = sdf.parse(lastDonationReminderDate); + } catch (ParseException e) { + e.printStackTrace(); + Log.e(TAG, e.getMessage()); + return false; + } + + Date currentDate = new Date(); + long diffDays = (currentDate.getTime() - lastDate.getTime())/(1000*60*60*24); + return diffDays >= DONATION_REMINDER_DURATION; + } + + private void saveLastDonationReminderDate(){ + SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN); + Date lastDate = new Date(); + preferences.edit().putString(LAST_DONATION_REMINDER_DATE, sdf.format(lastDate)).apply(); + } } -- cgit v1.2.3 From fe3b7520649a1ea62822cd98ce92810ce90d4bfb Mon Sep 17 00:00:00 2001 From: Janak Amarasena Date: Thu, 7 Jun 2018 21:45:51 +0530 Subject: Minor updates according to received feedback --- .../java/se/leap/bitmaskclient/EipFragment.java | 41 ++++++++++++---------- 1 file changed, 23 insertions(+), 18 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/EipFragment.java') diff --git a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java index 86a5d7c66..535322e5 100644 --- a/app/src/main/java/se/leap/bitmaskclient/EipFragment.java +++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java @@ -34,6 +34,7 @@ import android.support.v4.app.Fragment; import android.support.v7.app.AlertDialog; import android.support.v7.widget.AppCompatImageView; import android.support.v7.widget.AppCompatTextView; +import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -44,6 +45,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.temporal.ChronoUnit; import java.util.Date; +import java.util.Locale; import java.util.Observable; import java.util.Observer; @@ -114,6 +116,7 @@ public class EipFragment extends Fragment implements Observer { private ServiceConnection openVpnConnection; private final String DATE_PATTERN = "dd/MM/yyyy"; + private final int ONE_DAY = 86400000; //1000*60*60*24 @Override public void onAttach(Context context) { @@ -167,7 +170,7 @@ public class EipFragment extends Fragment implements Observer { @Override public void onStart() { super.onStart(); - if (isDonationReminderCallable()){ + if (isDonationReminderCallable()) { showDonationReminder(); } } @@ -201,7 +204,6 @@ public class EipFragment extends Fragment implements Observer { } else if (showPendingStartCancellation) { outState.putBoolean(KEY_SHOW_PENDING_START_CANCELLATION, true); alertDialog.dismiss(); - } } @@ -511,11 +513,10 @@ public class EipFragment extends Fragment implements Observer { Log.e(TAG, "activity is null when triggering donation reminder"); return; } - saveLastDonationReminderDate(); - String message = activity.getString(R.string.donate_message) == null || activity.getString(R.string.donate_message).equals("")? - activity.getString(R.string.donate_default_message):activity.getString(R.string.donate_message); - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - builder.setTitle(activity.getString(R.string.donate_title)) + String message = TextUtils.isEmpty(activity.getString(R.string.donate_message)) ? + activity.getString(R.string.donate_default_message) : activity.getString(R.string.donate_message); + AlertDialog.Builder alertBuilder = new AlertDialog.Builder(activity); + alertDialog = alertBuilder.setTitle(activity.getString(R.string.donate_title)) .setMessage(message) .setPositiveButton(R.string.donate_button_donate, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { @@ -526,26 +527,30 @@ public class EipFragment extends Fragment implements Observer { .setNegativeButton(R.string.donate_button_remind_later, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { } - }) - .show(); + }).setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + saveLastDonationReminderDate(); + } + }).show(); } - private boolean isDonationReminderCallable(){ - if (!ENABLE_DONATION||!ENABLE_DONATION_REMINDER){ + private boolean isDonationReminderCallable() { + if (!ENABLE_DONATION || !ENABLE_DONATION_REMINDER) { return false; } - if (preferences==null){ + if (preferences == null) { Log.e(TAG, "preferences is null!"); return false; } - String lastDonationReminderDate = preferences.getString(LAST_DONATION_REMINDER_DATE, null); - if (lastDonationReminderDate==null){ + String lastDonationReminderDate = preferences.getString(LAST_DONATION_REMINDER_DATE, null); + if (lastDonationReminderDate == null) { return true; } - SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN); + SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN, Locale.US); Date lastDate; try { lastDate = sdf.parse(lastDonationReminderDate); @@ -556,12 +561,12 @@ public class EipFragment extends Fragment implements Observer { } Date currentDate = new Date(); - long diffDays = (currentDate.getTime() - lastDate.getTime())/(1000*60*60*24); + long diffDays = (currentDate.getTime() - lastDate.getTime()) / ONE_DAY; return diffDays >= DONATION_REMINDER_DURATION; } - private void saveLastDonationReminderDate(){ - SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN); + private void saveLastDonationReminderDate() { + SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN, Locale.US); Date lastDate = new Date(); preferences.edit().putString(LAST_DONATION_REMINDER_DATE, sdf.format(lastDate)).apply(); } -- cgit v1.2.3