From 39b06f3f5f371f0ec03e20292a81cb514cb6061e Mon Sep 17 00:00:00 2001 From: Fup Duck Date: Tue, 23 Jan 2018 11:10:40 +0100 Subject: new UI for EipFragment --- .../main/java/se/leap/bitmaskclient/eip/EIP.java | 53 +++++---- .../java/se/leap/bitmaskclient/eip/EipStatus.java | 127 +++++++++++---------- 2 files changed, 96 insertions(+), 84 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/eip') 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..118622ab 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,8 @@ public final class EIP extends IntentService { gateway = gatewaysManager.select(); if (gateway != null && gateway.getProfile() != null) { - mReceiver = VpnFragment.getReceiver(); + // TODO why is this needed? + // mReceiver = EipFragment.getReceiver(); launchActiveGateway(); tellToReceiver(EIP_ACTION_START, Activity.RESULT_OK); } else @@ -134,7 +143,7 @@ public final class EIP extends IntentService { gateway = gatewaysManager.select(); if (gateway != null && gateway.getProfile() != null) { - //mReceiver = VpnFragment.getReceiver(); + //mReceiver = EipFragment.getReceiver(); Log.d(TAG, "startAlwaysOnEIP eip launch avtive gateway vpn"); launchActiveGateway(); } else { @@ -147,7 +156,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,14 +225,14 @@ public final class EIP extends IntentService { private void gatewaysFromPreferences() { String gatewaysString = preferences.getString(Gateway.TAG, ""); - gatewaysManager = new GatewaysManager(context, preferences); + gatewaysManager = new GatewaysManager(getApplicationContext(), preferences); gatewaysManager.addFromString(gatewaysString); preferences.edit().remove(Gateway.TAG).apply(); } private void gatewaysToPreferences() { String gateways_string = gatewaysManager.toString(); - preferences.edit().putString(Gateway.TAG, gateways_string).commit(); + preferences.edit().putString(Gateway.TAG, gateways_string).apply(); } private void checkCertValidity() { 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 { @@ -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(); } } -- cgit v1.2.3 From 0ad1b398e19a02dd725b253e15f6ded4d0cd641b Mon Sep 17 00:00:00 2001 From: Fup Duck Date: Sat, 27 Jan 2018 04:26:20 +0100 Subject: resolve comments on merge request --- app/src/main/java/se/leap/bitmaskclient/eip/EIP.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'app/src/main/java/se/leap/bitmaskclient/eip') 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 118622ab..eca5b881 100644 --- a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java +++ b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java @@ -122,8 +122,6 @@ public final class EIP extends IntentService { gateway = gatewaysManager.select(); if (gateway != null && gateway.getProfile() != null) { - // TODO why is this needed? - // mReceiver = EipFragment.getReceiver(); launchActiveGateway(); tellToReceiver(EIP_ACTION_START, Activity.RESULT_OK); } else @@ -143,7 +141,6 @@ public final class EIP extends IntentService { gateway = gatewaysManager.select(); if (gateway != null && gateway.getProfile() != null) { - //mReceiver = EipFragment.getReceiver(); Log.d(TAG, "startAlwaysOnEIP eip launch avtive gateway vpn"); launchActiveGateway(); } else { @@ -225,14 +222,14 @@ public final class EIP extends IntentService { private void gatewaysFromPreferences() { String gatewaysString = preferences.getString(Gateway.TAG, ""); - gatewaysManager = new GatewaysManager(getApplicationContext(), preferences); + gatewaysManager = new GatewaysManager(this, preferences); gatewaysManager.addFromString(gatewaysString); preferences.edit().remove(Gateway.TAG).apply(); } private void gatewaysToPreferences() { String gateways_string = gatewaysManager.toString(); - preferences.edit().putString(Gateway.TAG, gateways_string).apply(); + preferences.edit().putString(Gateway.TAG, gateways_string).commit(); } private void checkCertValidity() { -- cgit v1.2.3