diff options
Diffstat (limited to 'app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java')
-rw-r--r-- | app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java | 45 |
1 files changed, 40 insertions, 5 deletions
diff --git a/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java b/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java index fa28a875..c362e299 100644 --- a/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java +++ b/app/src/main/java/de/blinkt/openvpn/core/VpnStatus.java @@ -17,8 +17,11 @@ import java.util.LinkedList; import java.util.Locale; import java.util.Vector; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.atomic.AtomicBoolean; +import de.blinkt.openvpn.VpnProfile; import se.leap.bitmaskclient.R; +import se.leap.bitmaskclient.utils.PreferenceHelper; import static se.leap.bitmaskclient.utils.ConfigHelper.getProviderFormattedString; @@ -31,6 +34,8 @@ public class VpnStatus { private static CopyOnWriteArrayList<StateListener> stateListener; private static Vector<ByteCountListener> byteCountListener; + private static AtomicBoolean isAlwaysOnBooting = new AtomicBoolean(false); + private static String mLaststatemsg = ""; private static String mLaststate = "NOPROCESS"; @@ -39,10 +44,10 @@ public class VpnStatus { private static HandlerThread mHandlerThread; - private static String mLastConnectedVPNUUID; static boolean readFileLog =false; final static java.lang.Object readFileLock = new Object(); + private static VpnProfile lastConnectedProfile; public static TrafficHistory trafficHistory; @@ -136,17 +141,40 @@ public class VpnStatus { } public static void setConnectedVPNProfile(String uuid) { - mLastConnectedVPNUUID = uuid; for (StateListener sl: stateListener) sl.setConnectedVPN(uuid); } - public static String getLastConnectedVPNProfile() + public static String getLastConnectedVPNProfileId() { - return mLastConnectedVPNUUID; + return lastConnectedProfile != null ? lastConnectedProfile.getUUIDString() : null; + } + + public static VpnProfile getLastConnectedVpnProfile() { + return lastConnectedProfile; + } + + public static VpnProfile getLastConnectedVpnProfile(Context context) { + return PreferenceHelper.getLastConnectedVpnProfile(context); } + + /** + * Sets the profile that is connected (to connect if the service restarts) + */ + public static void setLastConnectedVpnProfile(Context context, VpnProfile connectedProfile) { + PreferenceHelper.setLastUsedVpnProfile(context, connectedProfile); + lastConnectedProfile = connectedProfile; + setConnectedVPNProfile(lastConnectedProfile.getUUIDString()); + } + + + public static String getLastConnectedVpnName() { + return lastConnectedProfile != null ? lastConnectedProfile.mName : null; + } + + public static void setTrafficHistory(TrafficHistory trafficHistory) { VpnStatus.trafficHistory = trafficHistory; } @@ -479,7 +507,6 @@ public class VpnStatus { } - public static synchronized void updateByteCount(long in, long out) { TrafficHistory.LastDiff diff = trafficHistory.add(in, out); @@ -487,4 +514,12 @@ public class VpnStatus { bcl.updateByteCount(in, out, diff.getDiffIn(), diff.getDiffOut()); } } + + public static void setAlwaysOn(boolean alwaysOn) { + isAlwaysOnBooting.set(alwaysOn); + } + + public static boolean isAlwaysOn() { + return isAlwaysOnBooting.get(); + } } |