summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/eip
diff options
context:
space:
mode:
authorFup Duck <fupduck@sacknagel.com>2018-01-23 11:10:40 +0100
committerFup Duck <fupduck@sacknagel.com>2018-01-23 11:10:40 +0100
commit39b06f3f5f371f0ec03e20292a81cb514cb6061e (patch)
tree0702b38e050e48976db667f8d7315557ec520864 /app/src/main/java/se/leap/bitmaskclient/eip
parentdf8b1fcf1ecc55f15229935294a337c897960ff4 (diff)
new UI for EipFragment
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/eip')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EIP.java53
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java127
2 files changed, 96 insertions, 84 deletions
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<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();
}
}