summaryrefslogtreecommitdiff
path: root/app/src/main/java/se/leap/bitmaskclient/eip
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/eip')
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EIP.java10
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java47
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java6
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java11
-rw-r--r--app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java2
5 files changed, 45 insertions, 31 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 d8905bca..ed61ca13 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EIP.java
@@ -67,6 +67,8 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import org.json.JSONException;
import org.json.JSONObject;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.io.Closeable;
import java.lang.ref.WeakReference;
import java.util.Observable;
@@ -97,7 +99,7 @@ import se.leap.bitmaskclient.eip.GatewaysManager.GatewayOptions;
* @author Sean Leonard <meanderingcode@aetherislands.net>
* @author Parménides GV <parmegv@sdf.org>
*/
-public final class EIP extends JobIntentService implements Observer {
+public final class EIP extends JobIntentService implements PropertyChangeListener {
public final static String TAG = EIP.class.getSimpleName(),
@@ -160,9 +162,9 @@ public final class EIP extends JobIntentService implements Observer {
* update eipStatus whenever it changes
*/
@Override
- public void update(Observable observable, Object data) {
- if (observable instanceof EipStatus) {
- eipStatus = (EipStatus) observable;
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (EipStatus.PROPERTY_CHANGE.equals(evt.getPropertyName())) {
+ eipStatus = (EipStatus) evt.getNewValue();
}
}
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 9244f531..c2ba8af3 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/EipStatus.java
@@ -20,10 +20,10 @@ import static de.blinkt.openvpn.core.ConnectionStatus.LEVEL_NONETWORK;
import android.content.Context;
import android.os.AsyncTask;
-import androidx.annotation.VisibleForTesting;
import android.util.Log;
-import java.util.Observable;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
import de.blinkt.openvpn.core.ConnectionStatus;
import de.blinkt.openvpn.core.LogItem;
@@ -34,7 +34,7 @@ import de.blinkt.openvpn.core.VpnStatus;
* EipStatus changes it's state (EipLevel) when ConnectionStatus gets updated by OpenVpnService or
* by VoidVpnService.
*/
-public class EipStatus extends Observable implements VpnStatus.StateListener {
+public class EipStatus implements VpnStatus.StateListener {
public static String TAG = EipStatus.class.getSimpleName();
private static EipStatus currentStatus;
@@ -60,6 +60,9 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
private int localizedResId;
private boolean isUpdatingVPNCertificate;
+ private final PropertyChangeSupport propertyChange;
+ public static final String PROPERTY_CHANGE = "EipStatus";
+
public static EipStatus getInstance() {
if (currentStatus == null) {
currentStatus = new EipStatus();
@@ -69,18 +72,18 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
private EipStatus() {
+ propertyChange = new PropertyChangeSupport(this);
}
@Override
public void updateState(final String state, final String logmessage, final int localizedResId, final ConnectionStatus level) {
- 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() || "RECONNECTING".equals(state) || "UI_CONNECTING".equals(state)) {
+ ConnectionStatus tmp = getInstance().getLevel();
+ getInstance().setState(state);
+ getInstance().setLogMessage(logmessage);
+ getInstance().setLocalizedResId(localizedResId);
+ getInstance().setLevel(level);
+ getInstance().setEipLevel(level);
+ if (tmp != getInstance().getLevel() || "RECONNECTING".equals(state) || "UI_CONNECTING".equals(state)) {
refresh();
}
}
@@ -90,13 +93,13 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
public boolean isReconnecting() {
- Log.d(TAG, "eip currentVPNStatus : " + currentStatus.getState() );
- return "RECONNECTING".equals(currentStatus.getState());
+ Log.d(TAG, "eip currentVPNStatus : " + getInstance().getState() );
+ return "RECONNECTING".equals(getInstance().getState());
}
public boolean isVPNRunningWithoutNetwork() {
- return currentStatus.getLevel() == LEVEL_NONETWORK &&
- !"NO_PROCESS".equals(currentStatus.getState());
+ return getInstance().getLevel() == LEVEL_NONETWORK &&
+ !"NO_PROCESS".equals(getInstance().getState());
}
private void setEipLevel(ConnectionStatus level) {
@@ -147,7 +150,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
* @param futureLevel
*/
private void setEipLevelWithDelay(ConnectionStatus futureLevel) {
- new DelayTask(currentStatus.getLevel(), futureLevel).execute();
+ new DelayTask(getInstance().getLevel(), futureLevel).execute();
}
private static class DelayTask extends AsyncTask<Void, Void, Void> {
@@ -169,7 +172,7 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
protected void onPostExecute(Void result) {
- if (currentLevel == currentStatus.getLevel()) {
+ if (currentLevel == getInstance().getLevel()) {
switch (futureLevel) {
case LEVEL_NONETWORK:
currentEipLevel = EipLevel.DISCONNECTED;
@@ -301,8 +304,14 @@ public class EipStatus extends Observable implements VpnStatus.StateListener {
}
public static void refresh() {
- currentStatus.setChanged();
- currentStatus.notifyObservers();
+ currentStatus.propertyChange.firePropertyChange(PROPERTY_CHANGE, null, currentStatus);
+ }
+
+ public void addObserver(PropertyChangeListener propertyChangeListener) {
+ propertyChange.addPropertyChangeListener(propertyChangeListener);
}
+ public void deleteObserver(PropertyChangeListener propertyChangeListener) {
+ propertyChange.removePropertyChangeListener(propertyChangeListener);
+ }
}
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java
index ad95c823..6a0b4b08 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/GatewaySelector.java
@@ -1,5 +1,8 @@
package se.leap.bitmaskclient.eip;
+import static se.leap.bitmaskclient.base.utils.TimezoneHelper.timezoneDistance;
+import static se.leap.bitmaskclient.base.utils.TimezoneHelper.getCurrentTimezone;
+
import android.util.Log;
import java.util.ArrayList;
@@ -10,9 +13,6 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
-import static se.leap.bitmaskclient.base.utils.ConfigHelper.getCurrentTimezone;
-import static se.leap.bitmaskclient.base.utils.ConfigHelper.timezoneDistance;
-
public class GatewaySelector {
private final static String TAG = GatewaySelector.class.getSimpleName();
List<Gateway> gateways;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java b/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java
index b32671ae..f08371c6 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/VoidVpnService.java
@@ -33,6 +33,8 @@ import android.os.ParcelFileDescriptor;
import android.system.OsConstants;
import android.util.Log;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
import java.io.IOException;
import java.util.Observable;
import java.util.Observer;
@@ -43,7 +45,7 @@ import se.leap.bitmaskclient.R;
import se.leap.bitmaskclient.base.utils.PreferenceHelper;
-public class VoidVpnService extends VpnService implements Observer, VpnNotificationManager.VpnServiceCallback {
+public class VoidVpnService extends VpnService implements PropertyChangeListener, VpnNotificationManager.VpnServiceCallback {
static final String TAG = VoidVpnService.class.getSimpleName();
private ParcelFileDescriptor fd;
@@ -183,10 +185,11 @@ public class VoidVpnService extends VpnService implements Observer, VpnNotificat
getApplicationContext().startService(startEIP);
}
+
@Override
- public void update(Observable observable, Object arg) {
- if (observable instanceof EipStatus) {
- eipStatus = (EipStatus) observable;
+ public void propertyChange(PropertyChangeEvent evt) {
+ if (EipStatus.PROPERTY_CHANGE.equals(evt.getPropertyName())) {
+ eipStatus = (EipStatus) evt.getNewValue();
}
if (handlerThread.isInterrupted() || !handlerThread.isAlive()) {
return;
diff --git a/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java b/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java
index 6d5a406e..4c8fa797 100644
--- a/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java
+++ b/app/src/main/java/se/leap/bitmaskclient/eip/VpnConfigGenerator.java
@@ -30,7 +30,7 @@ import static se.leap.bitmaskclient.base.models.Constants.REMOTE;
import static se.leap.bitmaskclient.base.models.Constants.TCP;
import static se.leap.bitmaskclient.base.models.Constants.TRANSPORT;
import static se.leap.bitmaskclient.base.models.Constants.UDP;
-import static se.leap.bitmaskclient.base.utils.ConfigHelper.ObfsVpnHelper.useObfsVpn;
+import static se.leap.bitmaskclient.base.utils.BuildConfigHelper.useObfsVpn;
import static se.leap.bitmaskclient.pluggableTransports.ShapeshifterClient.DISPATCHER_IP;
import static se.leap.bitmaskclient.pluggableTransports.ShapeshifterClient.DISPATCHER_PORT;