summaryrefslogtreecommitdiff
path: root/main/src/main/java/de
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/java/de')
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java2
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java2
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java5
-rw-r--r--main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java30
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java9
-rw-r--r--main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java44
6 files changed, 67 insertions, 25 deletions
diff --git a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
index 0438022b..5b8cb2dd 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java
@@ -398,7 +398,7 @@ public class ConfigParser {
np.mCustomRoutesv6 = customIPv6Routes;
}
-
+
Vector<String> routeNoPull = getOption("route-nopull", 1, 1);
np.mRoutenopull=true;
diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
index f0c788ee..cbe92460 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java
@@ -860,7 +860,7 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac
// CONNECTED
// Does not work :(
String msg = getString(resid);
- showNotification(msg + " " + VpnStatus.getCleanLogMessage(level, logmessage),
+ showNotification(VpnStatus.getLastCleanLogMessage(this),
msg, lowpriority, 0, level);
}
diff --git a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
index 72f21ce3..73a1c3f0 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java
@@ -126,12 +126,13 @@ public class VPNLaunchHelper {
public static void startOpenVpn(VpnProfile startprofile, Context context) {
- if(writeMiniVPN(context)==null) {
+ VpnStatus.logInfo(R.string.building_configration);
+ VpnStatus.updateStateString("VPN_GENERATE_CONFIG", "", R.string.building_configration, VpnStatus.ConnectionStatus.LEVEL_START);
+ if(writeMiniVPN(context)==null) {
VpnStatus.logError("Error writing minivpn binary");
return;
}
- VpnStatus.logInfo(R.string.building_configration);
Intent startVPN = startprofile.prepareStartService(context);
if(startVPN!=null)
diff --git a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
index 1f866ab7..c0f958c4 100644
--- a/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
+++ b/main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java
@@ -73,10 +73,12 @@ public class VpnStatus {
private static final int MAXLOGENTRIES = 1000;
- public static String getCleanLogMessage(ConnectionStatus level, String logMessage) {
- switch (level) {
+
+ public static String getLastCleanLogMessage(Context c) {
+ String message = mLaststatemsg;
+ switch (mLastLevel) {
case LEVEL_CONNECTED:
- String[] parts = logMessage.split(",");
+ String[] parts = mLaststatemsg.split(",");
/*
(a) the integer unix date/time,
(b) the state name,
@@ -90,14 +92,21 @@ public class VpnStatus {
5 (h) optional local port, and
6 (i) optional TUN/TAP local IPv6 address.
*/
- // Return only the assigned IP addresses in the UI
- if (parts.length < 7)
- return logMessage;
- return String.format(Locale.US, "%s %s", parts[1], parts[6]);
- default:
- return logMessage;
+ // Return only the assigned IP addresses in the UI
+ if (parts.length >= 7)
+ message = String.format(Locale.US, "%s %s", parts[1], parts[6]);
+ break;
}
+ String prefix = c.getString(mLastStateresid) + ":";
+ String status = mLaststate;
+ if (status.equals("NOPROCESS"))
+ prefix = "";
+ if (mLastStateresid == R.string.unknown_state)
+ prefix += status;
+
+ return prefix + message;
+
}
public enum ConnectionStatus {
@@ -107,9 +116,10 @@ public class VpnStatus {
LEVEL_CONNECTING_NO_SERVER_REPLY_YET,
LEVEL_NONETWORK,
LEVEL_NOTCONNECTED,
+ LEVEL_START,
LEVEL_AUTH_FAILED,
LEVEL_WAITING_FOR_USER_INPUT,
- UNKNOWN_LEVEL
+ UNKNOWN_LEVEL;
}
public enum LogLevel {
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
index fb6f8371..d197efd9 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java
@@ -650,20 +650,15 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.
@Override
public void updateState(final String status, final String logMessage, final int resId, final ConnectionStatus level) {
if (isAdded()) {
- final String cleanLogMessage = VpnStatus.getCleanLogMessage(level, logMessage);
+ final String cleanLogMessage = VpnStatus.getLastCleanLogMessage(getActivity());
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (isAdded()) {
- String prefix = getString(resId) + ":";
- if (status.equals("BYTECOUNT") || status.equals("NOPROCESS"))
- prefix = "";
- if (resId == R.string.unknown_state)
- prefix += status;
if (mSpeedView != null) {
- mSpeedView.setText(prefix + cleanLogMessage);
+ mSpeedView.setText(cleanLogMessage);
}
if (mConnectStatus != null)
mConnectStatus.setText(getString(resId));
diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java b/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java
index cf712e7c..0b161615 100644
--- a/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java
+++ b/main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java
@@ -31,12 +31,14 @@ import de.blinkt.openvpn.activities.ConfigConverter;
import de.blinkt.openvpn.activities.FileSelect;
import de.blinkt.openvpn.activities.VPNPreferences;
import de.blinkt.openvpn.core.ProfileManager;
+import de.blinkt.openvpn.core.VpnStatus;
import java.util.Collection;
import java.util.Comparator;
import java.util.TreeSet;
-public class VPNProfileList extends ListFragment implements OnClickListener {
+
+public class VPNProfileList extends ListFragment implements OnClickListener, VpnStatus.StateListener {
public final static int RESULT_VPN_DELETED = Activity.RESULT_FIRST_USER;
public final static int RESULT_VPN_DUPLICATE = Activity.RESULT_FIRST_USER + 1;
@@ -49,6 +51,18 @@ public class VPNProfileList extends ListFragment implements OnClickListener {
private static final int FILE_PICKER_RESULT_KITKAT = 392;
private static final int MENU_IMPORT_PROFILE = Menu.FIRST + 1;
+ private String mLastStatusMessage;
+
+ @Override
+ public void updateState(String state, String logmessage, final int localizedResId, VpnStatus.ConnectionStatus level) {
+ getActivity().runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mLastStatusMessage = getString(localizedResId);
+ mArrayadapter.notifyDataSetChanged();
+ }
+ });
+ }
class VPNArrayAdapter extends ArrayAdapter<VpnProfile> {
@@ -62,11 +76,12 @@ public class VPNProfileList extends ListFragment implements OnClickListener {
public View getView(final int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
+ final VpnProfile profile = (VpnProfile) getListAdapter().getItem(position);
+
View titleview = v.findViewById(R.id.vpn_list_item_left);
titleview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
- VpnProfile profile = (VpnProfile) getListAdapter().getItem(position);
startVPN(profile);
}
});
@@ -76,12 +91,21 @@ public class VPNProfileList extends ListFragment implements OnClickListener {
@Override
public void onClick(View v) {
- VpnProfile editProfile = (VpnProfile) getListAdapter().getItem(position);
- editVPN(editProfile);
+ editVPN(profile);
}
});
+ TextView subtitle = (TextView) v.findViewById(R.id.vpn_item_subtitle);
+ if (ProfileManager.getLastConnectedVpn() == profile) {
+ subtitle.setText(mLastStatusMessage);
+ subtitle.setVisibility(View.VISIBLE);
+ } else {
+ subtitle.setText("");
+ subtitle.setVisibility(View.GONE);
+ }
+
+
return v;
}
}
@@ -123,6 +147,18 @@ public class VPNProfileList extends ListFragment implements OnClickListener {
@Override
+ public void onResume() {
+ super.onResume();
+ VpnStatus.addStateListener(this);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ VpnStatus.removeStateListener(this);
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.vpn_profile_list, container, false);