summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java83
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java48
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/Dashboard.java26
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/EipFragment.java (renamed from app/src/main/java/se/leap/bitmaskclient/VpnFragment.java)107
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/LoginActivity.java5
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/MainActivity.java8
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/Provider.java15
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java2
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java (renamed from app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java)54
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/StartActivity.java11
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EIP.java48
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java127
14 files changed, 315 insertions, 239 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java b/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
index bd8ae228..fbb27b58 100644
--- a/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/AbstractProviderDetailActivity.java
@@ -22,8 +22,6 @@ import butterknife.InjectView;
import static se.leap.bitmaskclient.Constants.PROVIDER_ALLOW_ANONYMOUS;
import static se.leap.bitmaskclient.Constants.PROVIDER_KEY;
import static se.leap.bitmaskclient.Constants.REQUEST_CODE_CONFIGURE_LEAP;
-import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
-import static se.leap.bitmaskclient.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
public abstract class AbstractProviderDetailActivity extends ConfigWizardBaseActivity {
@@ -42,8 +40,8 @@ public abstract class AbstractProviderDetailActivity extends ConfigWizardBaseAct
try {
JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
- setProviderHeaderText(getProviderName());
- description.setText(providerJson.getJSONObject(Provider.DESCRIPTION).getString("en"));
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
+ description.setText(ConfigHelper.getDescription(preferences));
// Show only the options allowed by the provider
ArrayList<String> optionsList = new ArrayList<>();
@@ -74,7 +72,9 @@ public abstract class AbstractProviderDetailActivity extends ConfigWizardBaseAct
intent = new Intent(getApplicationContext(), SignupActivity.class);
} else {
Log.d(TAG, "use anonymously selected");
- setResult(RESULT_OK);
+ intent = new Intent();
+ intent.putExtra(Provider.KEY, provider);
+ setResult(RESULT_OK, intent);
finish();
return;
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java b/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java
index ccdf5064..741a6f56 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ConfigHelper.java
@@ -18,8 +18,10 @@ package se.leap.bitmaskclient;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.util.Log;
+import org.jetbrains.annotations.NotNull;
import org.json.JSONException;
import org.json.JSONObject;
import org.spongycastle.util.encoders.Base64;
@@ -45,6 +47,7 @@ import java.security.cert.X509Certificate;
import java.security.interfaces.RSAPrivateKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Locale;
import static android.R.attr.name;
import static se.leap.bitmaskclient.Constants.PROVIDER_CONFIGURED;
@@ -261,16 +264,6 @@ public class ConfigHelper {
}
- public static String getCurrentProviderName(@NonNull SharedPreferences preferences) {
- try {
- JSONObject providerDefintion = new JSONObject(preferences.getString(Provider.KEY, ""));
- return providerDefintion.getString(Provider.DOMAIN);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- return null;
- }
-
public static boolean providerInSharedPreferences(@NonNull SharedPreferences preferences) {
return preferences.getBoolean(PROVIDER_CONFIGURED, false);
}
@@ -288,4 +281,74 @@ public class ConfigHelper {
return provider;
}
+ public static String getProviderName(String provider) {
+ return getProviderName(null, provider);
+ }
+
+ public static String getProviderName(@Nullable SharedPreferences preferences) {
+ return getProviderName(preferences,null);
+ }
+
+ public static String getProviderName(@Nullable SharedPreferences preferences, @Nullable String provider) {
+ if (provider == null && preferences != null) {
+ provider = preferences.getString(Provider.KEY, "");
+ }
+ try {
+ JSONObject providerJson = new JSONObject(provider);
+ String lang = Locale.getDefault().getLanguage();
+ return providerJson.getJSONObject(Provider.NAME).getString(lang);
+ } catch (JSONException e) {
+ try {
+ JSONObject providerJson = new JSONObject(provider);
+ return providerJson.getJSONObject(Provider.NAME).getString("en");
+ } catch (JSONException e2) {
+ return null;
+ }
+ } catch (NullPointerException npe) {
+ return null;
+ }
+ }
+
+ public static String getProviderDomain(SharedPreferences preferences) {
+ return getProviderDomain(preferences, null);
+ }
+
+ public static String getProviderDomain(String provider) {
+ return getProviderDomain(null, provider);
+ }
+
+ public static String getProviderDomain(@Nullable SharedPreferences preferences, @Nullable String provider) {
+ if (provider == null && preferences != null) {
+ provider = preferences.getString(Provider.KEY, "");
+ }
+ try {
+ JSONObject providerJson = new JSONObject(provider);
+ return providerJson.getString(Provider.DOMAIN);
+ } catch (JSONException | NullPointerException e) {
+ return null;
+ }
+ }
+
+ public static String getDescription(SharedPreferences preferences) {
+ try {
+ JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
+ String lang = Locale.getDefault().getLanguage();
+ return providerJson.getJSONObject(Provider.DESCRIPTION).getString(lang);
+ } catch (JSONException e) {
+ try {
+ JSONObject providerJson = new JSONObject(preferences.getString(Provider.KEY, ""));
+ return providerJson.getJSONObject(Provider.DESCRIPTION).getString("en");
+ } catch (JSONException e1) {
+ return null;
+ }
+ }
+ }
+
+ public static void storeProviderInPreferences(SharedPreferences preferences, Provider provider) {
+ preferences.edit().putBoolean(PROVIDER_CONFIGURED, true).
+ putString(Provider.MAIN_URL, provider.getMainUrlString()).
+ putString(Provider.KEY, provider.getDefinitionString()).
+ putString(Provider.CA_CERT, provider.getCaCert()).
+ apply();
+ }
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
index 1ad12042..79a78fe1 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ConfigWizardBaseActivity.java
@@ -11,11 +11,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.Locale;
-
import butterknife.InjectView;
import static android.view.View.GONE;
@@ -61,19 +56,19 @@ public abstract class ConfigWizardBaseActivity extends ButterKnifeActivity {
@Override
public void setContentView(View view) {
super.setContentView(view);
- setProviderHeaderText(getProviderName());
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
- setProviderHeaderText(getProviderName());
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
}
@Override
public void setContentView(View view, ViewGroup.LayoutParams params) {
super.setContentView(view, params);
- setProviderHeaderText(getProviderName());
+ setProviderHeaderText(ConfigHelper.getProviderName(preferences));
}
protected void setProviderHeaderLogo(@DrawableRes int providerHeaderLogo) {
@@ -88,43 +83,6 @@ public abstract class ConfigWizardBaseActivity extends ButterKnifeActivity {
this.providerHeaderText.setText(providerHeaderText);
}
- protected String getProviderName() {
- return getProviderName(null);
- }
-
- protected String getProviderName(@Nullable String provider) {
- if (provider == null) {
- provider = preferences.getString(Provider.KEY, "");
- }
- try {
- JSONObject providerJson = new JSONObject(provider);
- String lang = Locale.getDefault().getLanguage();
- return providerJson.getJSONObject(Provider.NAME).getString(lang);
- } catch (JSONException e) {
- try {
- JSONObject providerJson = new JSONObject(provider);
- return providerJson.getJSONObject(Provider.NAME).getString("en");
- } catch (JSONException e2) {
- return null;
- }
- }
- }
-
- protected String getProviderDomain() {
- return getProviderDomain(null);
- }
-
- protected String getProviderDomain(@Nullable String provider) {
- if (provider == null) {
- provider = preferences.getString(Provider.KEY, "");
- }
- try {
- JSONObject providerJson = new JSONObject(provider);
- return providerJson.getString(Provider.DOMAIN);
- } catch (JSONException e) {
- return null;
- }
- }
protected void hideProgressBar() {
loadingScreen.setVisibility(GONE);
content.setVisibility(VISIBLE);
diff --git a/app/src/main/java/se/leap/bitmaskclient/Dashboard.java b/app/src/main/java/se/leap/bitmaskclient/Dashboard.java
index 5ccb48b5..a4db5f84 100644
--- a/app/src/main/java/se/leap/bitmaskclient/Dashboard.java
+++ b/app/src/main/java/se/leap/bitmaskclient/Dashboard.java
@@ -87,7 +87,7 @@ public class Dashboard extends ButterKnifeActivity {
@InjectView(R.id.providerName)
TextView provider_name;
- private VpnFragment eip_fragment;
+ private EipFragment eip_fragment;
private UserStatusFragment user_status_fragment;
private static Provider provider = new Provider();
@@ -232,7 +232,7 @@ public class Dashboard extends ButterKnifeActivity {
private void handleConfigureAlwaysOn(Intent intent) {
intent.removeExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE);
Log.d(TAG, "start Configuration wizard!");
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
private void prepareEIP(Bundle savedInstanceState) {
@@ -255,7 +255,7 @@ public class Dashboard extends ButterKnifeActivity {
if (getIntent().hasExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE)) {
getIntent().removeExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE);
}
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
@SuppressLint("CommitPrefEdits")
private void providerToPreferences(Provider provider) {
@@ -273,7 +273,7 @@ public class Dashboard extends ButterKnifeActivity {
.setPositiveButton(getResources().getString(R.string.setup_error_configure_button), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
- startActivityForResult(new Intent(Dashboard.this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(Dashboard.this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
})
.setNegativeButton(getResources().getString(R.string.setup_error_close_button), new DialogInterface.OnClickListener() {
@@ -290,8 +290,8 @@ public class Dashboard extends ButterKnifeActivity {
* Inflates permanent UI elements of the View and contains logic for what
* service dependent UI elements to include.
*/
- //TODO: REFACTOR ME! Consider implementing a manager that handles most of VpnFragment's logic about handling EIP commands.
- //This way, we could avoid to create UI elements (like fragmentManager.replace(R.id.servicesCollection, eip_fragment, VpnFragment.TAG); )
+ //TODO: REFACTOR ME! Consider implementing a manager that handles most of EipFragment's logic about handling EIP commands.
+ //This way, we could avoid to create UI elements (like fragmentManager.replace(R.id.servicesCollection, eip_fragment, EipFragment.TAG); )
// just to start services and destroy them afterwards
private void buildDashboard(boolean hideAndTurnOnEipOnBoot) {
setContentView(R.layout.dashboard);
@@ -305,9 +305,9 @@ public class Dashboard extends ButterKnifeActivity {
fragment_manager.replace(R.id.user_status_fragment, user_status_fragment, UserStatusFragment.TAG);
if (provider.hasEIP()) {
- fragment_manager.removePreviousFragment(VpnFragment.TAG);
+ fragment_manager.removePreviousFragment(EipFragment.TAG);
eip_fragment = prepareEipFragment(hideAndTurnOnEipOnBoot);
- fragment_manager.replace(R.id.servicesCollection, eip_fragment, VpnFragment.TAG);
+ fragment_manager.replace(R.id.servicesCollection, eip_fragment, EipFragment.TAG);
if (hideAndTurnOnEipOnBoot) {
onBackPressed();
}
@@ -320,13 +320,13 @@ public class Dashboard extends ButterKnifeActivity {
* has caused to start Dashboard
* @return the created VPNFragment
*/
- public VpnFragment prepareEipFragment(boolean hideAndTurnOnEipOnBoot) {
- VpnFragment eip_fragment = new VpnFragment();
+ public EipFragment prepareEipFragment(boolean hideAndTurnOnEipOnBoot) {
+ EipFragment eip_fragment = new EipFragment();
if (hideAndTurnOnEipOnBoot && !isAlwaysOn()) {
preferences.edit().remove(EIP_RESTART_ON_BOOT).apply();
Bundle arguments = new Bundle();
- arguments.putBoolean(VpnFragment.START_EIP_ON_BOOT, true);
+ arguments.putBoolean(EipFragment.START_EIP_ON_BOOT, true);
Log.d(TAG, "set START_EIP_ON_BOOT argument for eip_fragment");
eip_fragment.setArguments(arguments);
@@ -416,7 +416,7 @@ public class Dashboard extends ButterKnifeActivity {
clearDataOfLastProvider();
switching_provider = false;
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_SWITCH_PROVIDER);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);
}
private void clearDataOfLastProvider() {
@@ -441,7 +441,7 @@ public class Dashboard extends ButterKnifeActivity {
preferenceEditor.apply();
switching_provider = false;
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_SWITCH_PROVIDER);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);
}
private static class DashboardReceiver implements ProviderAPIResultReceiver.Receiver{
diff --git a/app/src/main/java/se/leap/bitmaskclient/VpnFragment.java b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java
index f1463029..414b1f2a 100644
--- a/app/src/main/java/se/leap/bitmaskclient/VpnFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/EipFragment.java
@@ -24,17 +24,21 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ResultReceiver;
import android.support.v4.app.Fragment;
+import android.support.v7.widget.AppCompatImageView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
+import android.widget.TextView;
import java.util.Observable;
import java.util.Observer;
@@ -46,11 +50,12 @@ import de.blinkt.openvpn.core.IOpenVPNServiceInternal;
import de.blinkt.openvpn.core.OpenVPNService;
import de.blinkt.openvpn.core.ProfileManager;
import de.blinkt.openvpn.core.VpnStatus;
-import mbanje.kurt.fabbutton.FabButton;
import se.leap.bitmaskclient.eip.EIP;
import se.leap.bitmaskclient.eip.EipStatus;
import se.leap.bitmaskclient.eip.VoidVpnService;
+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.EIP_ACTION_CHECK_CERT_VALIDITY;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_START;
@@ -66,23 +71,35 @@ import static se.leap.bitmaskclient.Constants.PROVIDER_ALLOW_ANONYMOUS;
import static se.leap.bitmaskclient.Constants.PROVIDER_VPN_CERTIFICATE;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
-public class VpnFragment extends Fragment implements Observer {
+public class EipFragment extends Fragment implements Observer {
- public static String TAG = VpnFragment.class.getSimpleName();
+ public static String TAG = EipFragment.class.getSimpleName();
- public static final String IS_PENDING = TAG + ".is_pending";
protected static final String IS_CONNECTED = TAG + ".is_connected";
public static final String START_EIP_ON_BOOT = "start on boot";
private SharedPreferences preferences;
- @InjectView(R.id.vpn_status_image)
- FabButton vpnStatusImage;
+ @InjectView(R.id.background)
+ AppCompatImageView background;
+
+ @InjectView(R.id.key)
+ AppCompatImageView key;
+
+ @InjectView(R.id.cirle)
+ AppCompatImageView circle;
+
@InjectView(R.id.vpn_main_button)
Button mainButton;
- private static EIPReceiver eipReceiver;
- private static EipStatus eipStatus;
+ @InjectView(R.id.routed_text)
+ TextView routedText;
+
+ @InjectView(R.id.vpn_route)
+ TextView vpnRoute;
+
+ private EIPReceiver eipReceiver;
+ private EipStatus eipStatus;
private boolean wantsToConnect;
private IOpenVPNServiceInternal mService;
@@ -156,6 +173,20 @@ public class VpnFragment extends Fragment implements Observer {
}
@OnClick(R.id.vpn_main_button)
+ void onButtonClick() {
+ handleIcon();
+ }
+
+ @OnClick(R.id.key)
+ void onKeyClick() {
+ handleIcon();
+ }
+
+ @OnClick(R.id.cirle)
+ void onCircleClick() {
+ handleIcon();
+ }
+
void handleIcon() {
if (eipStatus.isConnected() || eipStatus.isConnecting())
handleSwitchOff();
@@ -194,8 +225,6 @@ public class VpnFragment extends Fragment implements Observer {
askPendingStartCancellation();
} else if (eipStatus.isConnected()) {
askToStopEIP();
- } else {
- updateIcon();
}
}
@@ -313,44 +342,32 @@ public class VpnFragment extends Fragment implements Observer {
}
});
} else {
- Log.e("VpnFragment", "activity is null");
+ Log.e("EipFragment", "activity is null");
}
}
}
private void handleNewState() {
- updateIcon();
- updateButton();
- }
-
- private void updateIcon() {
- if (eipStatus.isBlocking()) {
- vpnStatusImage.showProgress(false);
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn_blocking, R.drawable.ic_stat_vpn_blocking);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn_blocking);
- } else if (eipStatus.isConnecting()) {
- vpnStatusImage.showProgress(true);
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn_empty_halo, R.drawable.ic_stat_vpn_empty_halo);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn_empty_halo);
- } else if (eipStatus.isConnected()){
- vpnStatusImage.showProgress(false);
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn, R.drawable.ic_stat_vpn);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn);
- } else {
- vpnStatusImage.setIcon(R.drawable.ic_stat_vpn_offline, R.drawable.ic_stat_vpn_offline);
- vpnStatusImage.setTag(R.drawable.ic_stat_vpn_offline);
- vpnStatusImage.showProgress(false);
- }
- }
-
- private void updateButton() {
Activity activity = getActivity();
if (eipStatus.isConnecting()) {
mainButton.setText(activity.getString(android.R.string.cancel));
+ key.setImageResource(R.drawable.vpn_connecting);
+ routedText.setVisibility(GONE);
+ vpnRoute.setVisibility(GONE);
+ colorBackgroundALittle();
} else if (eipStatus.isConnected() || isOpenVpnRunningWithoutNetwork()) {
mainButton.setText(activity.getString(R.string.vpn_button_turn_off));
+ key.setImageResource(R.drawable.vpn_connected);
+ routedText.setVisibility(VISIBLE);
+ vpnRoute.setVisibility(VISIBLE);
+ vpnRoute.setText(ConfigHelper.getProviderName(preferences));
+ colorBackground();
} else {
mainButton.setText(activity.getString(R.string.vpn_button_turn_on));
+ key.setImageResource(R.drawable.vpn_disconnected);
+ routedText.setVisibility(GONE);
+ vpnRoute.setVisibility(GONE);
+ greyscaleBackground();
}
}
@@ -439,8 +456,22 @@ public class VpnFragment extends Fragment implements Observer {
}
}
+ private void greyscaleBackground() {
+ ColorMatrix matrix = new ColorMatrix();
+ matrix.setSaturation(0);
+ ColorMatrixColorFilter cf = new ColorMatrixColorFilter(matrix);
+ background.setColorFilter(cf);
+ background.setImageAlpha(255);
+ }
- public static EIPReceiver getReceiver() {
- return eipReceiver;
+ private void colorBackgroundALittle() {
+ background.setColorFilter(null);
+ background.setImageAlpha(144);
}
+
+ private void colorBackground() {
+ background.setColorFilter(null);
+ background.setImageAlpha(255);
+ }
+
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java b/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
index 6ae288c2..a407b0a9 100644
--- a/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/LoginActivity.java
@@ -22,11 +22,6 @@ public class LoginActivity extends ProviderCredentialsBaseActivity {
}
@Override
- protected void onResume() {
- super.onResume();
- }
-
- @Override
@OnClick(R.id.button)
void handleButton() {
super.handleButton();
diff --git a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
index 3fc1637e..7629f0b7 100644
--- a/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/MainActivity.java
@@ -74,7 +74,7 @@ public class MainActivity extends AppCompatActivity {
switch (intent.getAction()) {
case ACTION_SHOW_VPN_FRAGMENT:
- fragment = new VpnFragment();
+ fragment = new EipFragment();
break;
default:
break;
@@ -89,10 +89,14 @@ public class MainActivity extends AppCompatActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (data == null) {
+ return;
+ }
+
if (requestCode == REQUEST_CODE_CONFIGURE_LEAP) {
if (resultCode == RESULT_OK && data.hasExtra(Provider.KEY)) {
Provider provider = data.getParcelableExtra(Provider.KEY);
- provider.storeInPreferences(preferences);
+ ConfigHelper.storeProviderInPreferences(preferences, provider);
}
}
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/Provider.java b/app/src/main/java/se/leap/bitmaskclient/Provider.java
index 4d8c741d..5ff1949c 100644
--- a/app/src/main/java/se/leap/bitmaskclient/Provider.java
+++ b/app/src/main/java/se/leap/bitmaskclient/Provider.java
@@ -121,10 +121,18 @@ public final class Provider implements Parcelable {
return definition;
}
+ String getDefinitionString() {
+ return getDefinition().toString();
+ }
+
protected String getDomain() {
return mainUrl.getDomain();
}
+ String getMainUrlString() {
+ return getMainUrl().toString();
+ }
+
protected DefaultedURL getMainUrl() {
return mainUrl;
}
@@ -301,19 +309,12 @@ public final class Provider implements Parcelable {
this.caCert = cert;
}
- public void storeInPreferences(SharedPreferences preferences) {
- preferences.edit().putBoolean(PROVIDER_CONFIGURED, true).
- putString(Provider.MAIN_URL, getMainUrl().toString()).
- putString(Provider.KEY, getDefinition().toString()).apply();
- }
-
public boolean isDefault() {
return getMainUrl().isDefault() &&
getApiUrl().isDefault() &&
certificatePin.isEmpty() &&
certificatePinEncoding.isEmpty() &&
caCert.isEmpty();
-
}
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
index f51618ad..25dca4e0 100644
--- a/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderCredentialsBaseActivity.java
@@ -24,8 +24,6 @@ import se.leap.bitmaskclient.userstatus.SessionDialog;
import se.leap.bitmaskclient.userstatus.SessionDialog.ERRORS;
import se.leap.bitmaskclient.userstatus.User;
-import static se.leap.bitmaskclient.MainActivity.ACTION_SHOW_VPN_FRAGMENT;
-
import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
diff --git a/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
index 9db9c3f4..aee00765 100644
--- a/app/src/main/java/se/leap/bitmaskclient/BaseConfigurationWizard.java
+++ b/app/src/main/java/se/leap/bitmaskclient/ProviderListBaseActivity.java
@@ -61,7 +61,7 @@ import static se.leap.bitmaskclient.ProviderAPI.RESULT_KEY;
/**
* abstract base Activity that builds and shows the list of known available providers.
- * The implementation of BaseConfigurationWizard differ in that they may or may not allow to bypass
+ * The implementation of ProviderListBaseActivity differ in that they may or may not allow to bypass
* secure download mechanisms including certificate validation.
* <p/>
* It also allows the user to enter custom providers with a button.
@@ -70,7 +70,7 @@ import static se.leap.bitmaskclient.ProviderAPI.RESULT_KEY;
* @author cyberta
*/
-public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
+public abstract class ProviderListBaseActivity extends ConfigWizardBaseActivity
implements NewProviderDialog.NewProviderDialogInterface, DownloadFailedDialog.DownloadFailedDialogInterface, ProviderAPIResultReceiver.Receiver {
@InjectView(R.id.provider_list)
@@ -81,7 +81,7 @@ public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
private ProviderManager providerManager;
protected Intent mConfigState = new Intent(PROVIDER_NOT_SET);
- final public static String TAG = ConfigurationWizard.class.getSimpleName();
+ final public static String TAG = ProviderListActivity.class.getSimpleName();
final private static String ACTIVITY_STATE = "ACTIVITY STATE";
@@ -433,26 +433,40 @@ public abstract class BaseConfigurationWizard extends ConfigWizardBaseActivity
Bundle resultData = intent.getParcelableExtra(RESULT_KEY);
String handledProvider = resultData.getString(Provider.KEY);
- String providerDomain = getProviderDomain(handledProvider);
- if (providerDomain != null &&
- providerDomain.equalsIgnoreCase(provider.getDomain())) {
- switch (resultCode) {
- case PROVIDER_OK:
- handleProviderSetUp();
- break;
- case CORRECTLY_DOWNLOADED_CERTIFICATE:
- handleCorrectlyDownloadedCertificate();
- break;
- case INCORRECTLY_DOWNLOADED_CERTIFICATE:
- handleIncorrectlyDownloadedCertificate();
- break;
- }
+ String providerName = ConfigHelper.getProviderName(handledProvider);
+ String providerDomain = ConfigHelper.getProviderDomain(handledProvider);
+
+ //FIXME: remove that lines as soon as Provider gets sent via broadcast
+ // and make sure providers are the same - remove providersMatch
+ if (resultCode == PROVIDER_OK && handledProvider == null) {
+ providerName = ConfigHelper.getProviderName(preferences);
+ providerDomain = ConfigHelper.getProviderDomain(preferences);
+ }
+ boolean providersMatch = true;
+ if (providerDomain != null) {
+ providersMatch = providerDomain.equalsIgnoreCase(provider.getDomain());
}
+ if (providerName != null && !providersMatch) {
+ providersMatch = providerName.equalsIgnoreCase(provider.getName());
+ }
+
- // providerDomain can be null
- if (resultCode == PROVIDER_NOK) {
- handleProviderSetupFailed(resultData);
+ switch (resultCode) {
+ case PROVIDER_OK:
+ if (providersMatch)
+ handleProviderSetUp();
+ break;
+ case PROVIDER_NOK:
+ if(providersMatch)
+ handleProviderSetupFailed(resultData);
+ break;
+ case CORRECTLY_DOWNLOADED_CERTIFICATE:
+ handleCorrectlyDownloadedCertificate();
+ break;
+ case INCORRECTLY_DOWNLOADED_CERTIFICATE:
+ handleIncorrectlyDownloadedCertificate();
+ break;
}
}
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
index 69079735..f5991538 100644
--- a/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
+++ b/app/src/main/java/se/leap/bitmaskclient/StartActivity.java
@@ -17,7 +17,6 @@ import se.leap.bitmaskclient.userstatus.User;
import static se.leap.bitmaskclient.Constants.APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE;
import static se.leap.bitmaskclient.Constants.PREFERENCES_APP_VERSION;
-import static se.leap.bitmaskclient.Constants.PROVIDER_CONFIGURED;
import static se.leap.bitmaskclient.Constants.REQUEST_CODE_CONFIGURE_LEAP;
import static se.leap.bitmaskclient.Constants.SHARED_PREFERENCES;
@@ -56,7 +55,7 @@ public class StartActivity extends Activity {
case FIRST:
storeAppVersion();
// TODO start ProfileCreation & replace below code
- // (new Intent(getActivity(), ConfigurationWizard.class), Constants.REQUEST_CODE_SWITCH_PROVIDER);
+ // (new Intent(getActivity(), ProviderListActivity.class), Constants.REQUEST_CODE_SWITCH_PROVIDER);
break;
case UPGRADE:
@@ -165,15 +164,19 @@ public class StartActivity extends Activity {
if (getIntent().hasExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE)) {
getIntent().removeExtra(APP_ACTION_CONFIGURE_ALWAYS_ON_PROFILE);
}
- startActivityForResult(new Intent(this, ConfigurationWizard.class), REQUEST_CODE_CONFIGURE_LEAP);
+ startActivityForResult(new Intent(this, ProviderListActivity.class), REQUEST_CODE_CONFIGURE_LEAP);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (data == null) {
+ return;
+ }
+
if (requestCode == REQUEST_CODE_CONFIGURE_LEAP) {
if (resultCode == RESULT_OK && data.hasExtra(Provider.KEY)) {
Provider provider = data.getParcelableExtra(Provider.KEY);
- provider.storeInPreferences(preferences);
+ ConfigHelper.storeProviderInPreferences(preferences, provider);
showMainActivity();
} else if (resultCode == RESULT_CANCELED) {
diff --git a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
index dbe99dce..090e8d26 100644
--- a/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
+++ b/app/src/main/java/se/leap/bitmaskclient/drawer/NavigationDrawerFragment.java
@@ -27,9 +27,9 @@ import android.widget.ListView;
import android.widget.Toast;
import se.leap.bitmaskclient.ConfigHelper;
-import se.leap.bitmaskclient.ConfigurationWizard;
+import se.leap.bitmaskclient.ProviderListActivity;
+import se.leap.bitmaskclient.EipFragment;
import se.leap.bitmaskclient.R;
-import se.leap.bitmaskclient.VpnFragment;
import se.leap.bitmaskclient.fragments.AboutFragment;
import se.leap.bitmaskclient.fragments.LogFragment;
@@ -143,7 +143,7 @@ public class NavigationDrawerFragment extends Fragment {
android.R.layout.simple_list_item_activated_1,
android.R.id.text1);
- String providerName = ConfigHelper.getCurrentProviderName(preferences);
+ String providerName = ConfigHelper.getProviderName(preferences);
if (providerName == null) {
//TODO: ADD A header to the ListView containing a useful message.
//TODO 2: disable switchProvider
@@ -296,7 +296,7 @@ public class NavigationDrawerFragment extends Fragment {
if (parent == mDrawerAccountsListView) {
mTitle = getString(R.string.vpn_fragment_title);
- fragment = new VpnFragment();
+ fragment = new EipFragment();
} else {
Log.d("Drawer", String.format("Selected position %d", position));
switch (position) {
@@ -304,7 +304,7 @@ public class NavigationDrawerFragment extends Fragment {
// TODO STOP VPN
// if (provider.hasEIP()) eip_fragment.stopEipIfPossible();
preferences.edit().clear().apply();
- startActivityForResult(new Intent(getActivity(), ConfigurationWizard.class), REQUEST_CODE_SWITCH_PROVIDER);
+ startActivityForResult(new Intent(getActivity(), ProviderListActivity.class), REQUEST_CODE_SWITCH_PROVIDER);
break;
case 1:
mTitle = getString(R.string.log_fragment_title);
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
index a2ac9d66..eca5b881 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
@@ -18,7 +18,6 @@ package se.leap.bitmaskclient.eip;
import android.app.Activity;
import android.app.IntentService;
-import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
@@ -30,7 +29,6 @@ import org.json.JSONObject;
import de.blinkt.openvpn.LaunchVPN;
import se.leap.bitmaskclient.OnBootReceiver;
-import se.leap.bitmaskclient.VpnFragment;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_CHECK_CERT_VALIDITY;
import static se.leap.bitmaskclient.Constants.EIP_ACTION_IS_RUNNING;
@@ -59,12 +57,11 @@ public final class EIP extends IntentService {
public final static String TAG = EIP.class.getSimpleName();
public final static String SERVICE_API_PATH = "config/eip-service.json";
- private static Context context;
private static ResultReceiver mReceiver;
private static SharedPreferences preferences;
private static JSONObject eipDefinition;
- private static GatewaysManager gatewaysManager = new GatewaysManager();
+ private GatewaysManager gatewaysManager = new GatewaysManager();
private static Gateway gateway;
public EIP() {
@@ -74,7 +71,6 @@ public final class EIP extends IntentService {
@Override
public void onCreate() {
super.onCreate();
- context = getApplicationContext();
preferences = getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE);
eipDefinition = eipDefinitionFromPreferences();
if (gatewaysManager.isEmpty())
@@ -86,18 +82,30 @@ public final class EIP extends IntentService {
String action = intent.getAction();
mReceiver = intent.getParcelableExtra(EIP_RECEIVER);
- if (action.equals(EIP_ACTION_START))
- startEIP();
- else if (action.equals(EIP_ACTION_START_ALWAYS_ON_EIP))
- startAlwaysOnEIP();
- else if (action.equals(EIP_ACTION_STOP))
- stopEIP();
- else if (action.equals(EIP_ACTION_IS_RUNNING))
- isRunning();
- else if (action.equals(EIP_ACTION_UPDATE))
- updateEIPService();
- else if (action.equals(EIP_ACTION_CHECK_CERT_VALIDITY))
- checkCertValidity();
+ if (action == null) {
+ return;
+ }
+
+ switch (action) {
+ case EIP_ACTION_START:
+ startEIP();
+ break;
+ case EIP_ACTION_START_ALWAYS_ON_EIP:
+ startAlwaysOnEIP();
+ break;
+ case EIP_ACTION_STOP:
+ stopEIP();
+ break;
+ case EIP_ACTION_IS_RUNNING:
+ isRunning();
+ break;
+ case EIP_ACTION_UPDATE:
+ updateEIPService();
+ break;
+ case EIP_ACTION_CHECK_CERT_VALIDITY:
+ checkCertValidity();
+ break;
+ }
}
/**
@@ -114,7 +122,6 @@ public final class EIP extends IntentService {
gateway = gatewaysManager.select();
if (gateway != null && gateway.getProfile() != null) {
- mReceiver = VpnFragment.getReceiver();
launchActiveGateway();
tellToReceiver(EIP_ACTION_START, Activity.RESULT_OK);
} else
@@ -134,7 +141,6 @@ public final class EIP extends IntentService {
gateway = gatewaysManager.select();
if (gateway != null && gateway.getProfile() != null) {
- //mReceiver = VpnFragment.getReceiver();
Log.d(TAG, "startAlwaysOnEIP eip launch avtive gateway vpn");
launchActiveGateway();
} else {
@@ -147,7 +153,7 @@ public final class EIP extends IntentService {
* VpnService is started properly.
*/
private void earlyRoutes() {
- Intent voidVpnLauncher = new Intent(context, VoidVpnLauncher.class);
+ Intent voidVpnLauncher = new Intent(getApplicationContext(), VoidVpnLauncher.class);
voidVpnLauncher.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(voidVpnLauncher);
}
@@ -216,7 +222,7 @@ public final class EIP extends IntentService {
private void gatewaysFromPreferences() {
String gatewaysString = preferences.getString(Gateway.TAG, "");
- gatewaysManager = new GatewaysManager(context, preferences);
+ gatewaysManager = new GatewaysManager(this, preferences);
gatewaysManager.addFromString(gatewaysString);
preferences.edit().remove(Gateway.TAG).apply();
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
index ddf152d2..0da74872 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
@@ -16,13 +16,15 @@
*/
package se.leap.bitmaskclient.eip;
-import android.content.*;
+import android.content.Context;
import android.os.AsyncTask;
import android.support.annotation.VisibleForTesting;
-import java.util.*;
+import java.util.Observable;
-import de.blinkt.openvpn.core.*;
+import de.blinkt.openvpn.core.ConnectionStatus;
+import de.blinkt.openvpn.core.LogItem;
+import de.blinkt.openvpn.core.VpnStatus;
/**
* EipStatus is a Singleton that represents a reduced set of a vpn's ConnectionStatus.
@@ -31,7 +33,7 @@ import de.blinkt.openvpn.core.*;
*/
public class EipStatus extends Observable implements VpnStatus.StateListener {
public static String TAG = EipStatus.class.getSimpleName();
- private static EipStatus current_status;
+ private static EipStatus currentStatus;
public enum EipLevel {
CONNECTING,
DISCONNECTING,
@@ -42,23 +44,23 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
/**
- * vpn_level holds the connection status of the openvpn vpn and the traffic blocking
+ * vpnLevel holds the connection status of the openvpn vpn and the traffic blocking
* void vpn. LEVEL_BLOCKING is set when the latter vpn is up. All other states are set by
* openvpn.
*/
- private ConnectionStatus vpn_level = ConnectionStatus.LEVEL_NOTCONNECTED;
- private static EipLevel current_eip_level = EipLevel.DISCONNECTED;
+ private ConnectionStatus vpnLevel = ConnectionStatus.LEVEL_NOTCONNECTED;
+ private static EipLevel currentEipLevel = EipLevel.DISCONNECTED;
- int last_error_line = 0;
- private String state, log_message;
- private int localized_res_id;
+ private int lastErrorLine = 0;
+ private String state, logMessage;
+ private int localizedResId;
public static EipStatus getInstance() {
- if (current_status == null) {
- current_status = new EipStatus();
- VpnStatus.addStateListener(current_status);
+ if (currentStatus == null) {
+ currentStatus = new EipStatus();
+ VpnStatus.addStateListener(currentStatus);
}
- return current_status;
+ return currentStatus;
}
private EipStatus() {
@@ -66,16 +68,16 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
@Override
public void updateState(final String state, final String logmessage, final int localizedResId, final ConnectionStatus level) {
- ConnectionStatus tmp = current_status.getLevel();
- current_status = getInstance();
- current_status.setState(state);
- current_status.setLogMessage(logmessage);
- current_status.setLocalizedResId(localizedResId);
- current_status.setLevel(level);
- current_status.setEipLevel(level);
- if (tmp != current_status.getLevel()) {
- current_status.setChanged();
- current_status.notifyObservers();
+ ConnectionStatus tmp = currentStatus.getLevel();
+ currentStatus = getInstance();
+ currentStatus.setState(state);
+ currentStatus.setLogMessage(logmessage);
+ currentStatus.setLocalizedResId(localizedResId);
+ currentStatus.setLevel(level);
+ currentStatus.setEipLevel(level);
+ if (tmp != currentStatus.getLevel()) {
+ currentStatus.setChanged();
+ currentStatus.notifyObservers();
}
}
@@ -87,7 +89,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
private void setEipLevel(ConnectionStatus level) {
switch (level) {
case LEVEL_CONNECTED:
- current_eip_level = EipLevel.CONNECTED;
+ currentEipLevel = EipLevel.CONNECTED;
break;
case LEVEL_VPNPAUSED:
throw new IllegalStateException("Ics-Openvpn's VPNPAUSED state is not supported by Bitmask");
@@ -95,25 +97,25 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
case LEVEL_CONNECTING_NO_SERVER_REPLY_YET:
case LEVEL_WAITING_FOR_USER_INPUT:
case LEVEL_START:
- current_eip_level = EipLevel.CONNECTING;
+ currentEipLevel = EipLevel.CONNECTING;
break;
case LEVEL_AUTH_FAILED:
case LEVEL_NOTCONNECTED:
- current_eip_level = EipLevel.DISCONNECTED;
+ currentEipLevel = EipLevel.DISCONNECTED;
break;
case LEVEL_NONETWORK:
case LEVEL_BLOCKING:
setEipLevelWithDelay(level);
break;
case UNKNOWN_LEVEL:
- current_eip_level = EipLevel.UNKNOWN; //??
+ currentEipLevel = EipLevel.UNKNOWN; //??
break;
}
}
@VisibleForTesting
EipLevel getEipLevel() {
- return current_eip_level;
+ return currentEipLevel;
}
/**
@@ -123,7 +125,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
* @param futureLevel
*/
private void setEipLevelWithDelay(ConnectionStatus futureLevel) {
- new DelayTask(current_status.getLevel(), futureLevel).execute();
+ new DelayTask(currentStatus.getLevel(), futureLevel).execute();
}
private static class DelayTask extends AsyncTask<Void, Void, Void> {
@@ -131,7 +133,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
private final ConnectionStatus currentLevel;
private final ConnectionStatus futureLevel;
- public DelayTask(ConnectionStatus currentLevel, ConnectionStatus futureLevel) {
+ DelayTask(ConnectionStatus currentLevel, ConnectionStatus futureLevel) {
this.currentLevel = currentLevel;
this.futureLevel = futureLevel;
}
@@ -144,38 +146,38 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
return null;
}
- protected void onPostExecute(Void result) {;
- if (currentLevel == current_status.getLevel()) {
+ protected void onPostExecute(Void result) {
+ if (currentLevel == currentStatus.getLevel()) {
switch (futureLevel) {
case LEVEL_NONETWORK:
- current_eip_level = EipLevel.DISCONNECTED;
+ currentEipLevel = EipLevel.DISCONNECTED;
break;
case LEVEL_BLOCKING:
- current_eip_level = EipLevel.BLOCKING;
+ currentEipLevel = EipLevel.BLOCKING;
break;
default:
break;
}
- current_status.setChanged();
- current_status.notifyObservers();
+ currentStatus.setChanged();
+ currentStatus.notifyObservers();
}
}
}
public boolean isConnecting() {
- return current_eip_level == EipLevel.CONNECTING;
+ return currentEipLevel == EipLevel.CONNECTING;
}
public boolean isConnected() {
- return current_eip_level == EipLevel.CONNECTED;
+ return currentEipLevel == EipLevel.CONNECTED;
}
/**
- * @return true if current_eip_level is for at least a second {@link EipLevel#BLOCKING}.
+ * @return true if currentEipLevel is for at least a second {@link EipLevel#BLOCKING}.
* See {@link #setEipLevelWithDelay(ConnectionStatus)}.
*/
public boolean isBlocking() {
- return current_eip_level == EipLevel.BLOCKING;
+ return currentEipLevel == EipLevel.BLOCKING;
}
/**
@@ -183,20 +185,20 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
* @return true immediately after traffic blocking VoidVpn was established.
*/
public boolean isBlockingVpnEstablished() {
- return vpn_level == ConnectionStatus.LEVEL_BLOCKING;
+ return vpnLevel == ConnectionStatus.LEVEL_BLOCKING;
}
public boolean isDisconnected() {
- return current_eip_level == EipLevel.DISCONNECTED;
+ return currentEipLevel == EipLevel.DISCONNECTED;
}
/**
* ics-openvpn's paused state is not implemented yet
- * @return
+ * @return true if vpn is paused false if not
*/
@Deprecated
public boolean isPaused() {
- return vpn_level == ConnectionStatus.LEVEL_VPNPAUSED;
+ return vpnLevel == ConnectionStatus.LEVEL_VPNPAUSED;
}
public String getState() {
@@ -204,15 +206,15 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
public String getLogMessage() {
- return log_message;
+ return logMessage;
}
- public int getLocalizedResId() {
- return localized_res_id;
+ int getLocalizedResId() {
+ return localizedResId;
}
public ConnectionStatus getLevel() {
- return vpn_level;
+ return vpnLevel;
}
private void setState(String state) {
@@ -220,39 +222,40 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
private void setLogMessage(String log_message) {
- this.log_message = log_message;
+ this.logMessage = log_message;
}
private void setLocalizedResId(int localized_res_id) {
- this.localized_res_id = localized_res_id;
+ this.localizedResId = localized_res_id;
}
private void setLevel(ConnectionStatus level) {
- this.vpn_level = level;
+ this.vpnLevel = level;
}
public boolean errorInLast(int lines, Context context) {
return !lastError(lines, context).isEmpty();
}
- public String lastError(int lines, Context context) {
+ private String lastError(int lines, Context context) {
String error = "";
String[] error_keywords = {"error", "ERROR", "fatal", "FATAL"};
LogItem[] log = VpnStatus.getlogbuffer();
- if(log.length < last_error_line)
- last_error_line = 0;
- String message = "";
+ if(log.length < lastErrorLine)
+ lastErrorLine = 0;
+ String message;
for (int i = 1; i <= lines && log.length > i; i++) {
int line = log.length - i;
- LogItem log_item = log[line];
- message = log_item.getString(context);
- for (int j = 0; j < error_keywords.length; j++)
- if (message.contains(error_keywords[j]) && line > last_error_line) {
+ LogItem logItem = log[line];
+ message = logItem.getString(context);
+ for (String errorKeyword: error_keywords) {
+ if (message.contains(errorKeyword) && line > lastErrorLine) {
error = message;
- last_error_line = line;
+ lastErrorLine = line;
}
+ }
}
return error;
@@ -260,7 +263,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
@Override
public String toString() {
- return "State: " + state + " Level: " + vpn_level.toString();
+ return "State: " + state + " Level: " + vpnLevel.toString();
}
}