From 83e5afb8349b62c858fe3a1803404c138e326e1b Mon Sep 17 00:00:00 2001 From: Sean Leonard Date: Tue, 3 Dec 2013 21:28:04 -0800 Subject: Revert "No new routes if openvpn is already running." This reverts commit 5b772c23c3f45405f30de4a180fe47dbcb2fdfc4. --- src/se/leap/openvpn/OpenVpnManagementThread.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/se/leap/openvpn/OpenVpnManagementThread.java b/src/se/leap/openvpn/OpenVpnManagementThread.java index 78ce5a2b..2445c38e 100644 --- a/src/se/leap/openvpn/OpenVpnManagementThread.java +++ b/src/se/leap/openvpn/OpenVpnManagementThread.java @@ -333,8 +333,7 @@ public class OpenVpnManagementThread implements Runnable { mOpenVPNService.setDomain(extra); } else if (needed.equals("ROUTE")) { String[] routeparts = extra.split(" "); - if(!mOpenVPNService.isRunning()) // We cannot add routes to an existing openvpn session - mOpenVPNService.addRoute(routeparts[0], routeparts[1]); + mOpenVPNService.addRoute(routeparts[0], routeparts[1]); } else if (needed.equals("ROUTE6")) { mOpenVPNService.addRoutev6(extra); } else if (needed.equals("IFCONFIG")) { -- cgit v1.2.3 From e60be47e5a46b794846b166993260f17a54a19ad Mon Sep 17 00:00:00 2001 From: cyBerta Date: Sat, 23 Nov 2013 03:23:05 +0100 Subject: switch provider part 1 --- src/se/leap/bitmaskclient/ConfigurationWizard.java | 55 ++++++++++++++++++++-- src/se/leap/bitmaskclient/Dashboard.java | 38 +++++++++++++-- src/se/leap/bitmaskclient/EipServiceFragment.java | 5 ++ src/se/leap/bitmaskclient/Provider.java | 2 + 4 files changed, 91 insertions(+), 9 deletions(-) diff --git a/src/se/leap/bitmaskclient/ConfigurationWizard.java b/src/se/leap/bitmaskclient/ConfigurationWizard.java index 28a8a44a..5babf9a6 100644 --- a/src/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/src/se/leap/bitmaskclient/ConfigurationWizard.java @@ -25,7 +25,6 @@ import org.json.JSONObject; import se.leap.bitmaskclient.R; import se.leap.bitmaskclient.ProviderAPIResultReceiver.Receiver; import se.leap.bitmaskclient.ProviderListContent.ProviderItem; - import android.app.Activity; import android.app.DialogFragment; import android.app.Fragment; @@ -37,6 +36,7 @@ import android.content.Intent; import android.content.res.AssetManager; import android.os.Bundle; import android.os.Handler; +import android.util.Log; import android.view.Display; import android.view.Menu; import android.view.MenuItem; @@ -68,6 +68,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn private ProviderListFragment provider_list_fragment; private Intent mConfigState = new Intent(); + final public static String TAG = "se.leap.bitmaskclient.ConfigurationWizard"; final public static String TYPE_OF_CERTIFICATE = "type_of_certificate"; final public static String ANON_CERTIFICATE = "anon_certificate"; final public static String AUTHED_CERTIFICATE = "authed_certificate"; @@ -101,6 +102,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn Bundle arguments = new Bundle(); int configuration_wizard_request_code = getIntent().getIntExtra(Dashboard.REQUEST_CODE, -1); if(configuration_wizard_request_code == Dashboard.SWITCH_PROVIDER) { + Log.d(TAG, "onCreate - Request_Code: Switch Provider"); arguments.putBoolean(ProviderListFragment.SHOW_ALL_PROVIDERS, true); } provider_list_fragment.setArguments(arguments); @@ -231,10 +233,12 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn @Override public void onItemSelected(String id) { //TODO Code 2 pane view + // resetOldConnection(); ProviderItem selected_provider = getProvider(id); int provider_index = getProviderIndex(id); startProgressBar(provider_index); mSelectedProvider = selected_provider; + saveProviderJson(mSelectedProvider); } @@ -365,6 +369,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn downloadJSONFiles(mSelectedProvider); } } catch (JSONException e) { + Log.d(TAG, "saveProviderJson("+provider.id + " = " + provider.name + ") failed"); setResult(RESULT_CANCELED); finish(); } @@ -484,8 +489,9 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn * @param danger_on tells if HTTPS client should bypass certificate errors */ public void updateProviderDotJson(String provider_name, String provider_json_url, boolean danger_on) { + + Intent provider_API_command = new Intent(this, ProviderAPI.class); - Bundle parameters = new Bundle(); parameters.putString(Provider.NAME, provider_name); parameters.putString(Provider.DOT_JSON_URL, provider_json_url); @@ -494,9 +500,18 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn provider_API_command.setAction(ProviderAPI.UPDATE_PROVIDER_DOTJSON); provider_API_command.putExtra(ProviderAPI.PARAMETERS, parameters); provider_API_command.putExtra(ProviderAPI.RECEIVER_KEY, providerAPI_result_receiver); - + Log.d(TAG, "updateProviderDotJson... right after resetting old connection, starts Service "); + startService(provider_API_command); } + /*private void resetOldConnection(){ + Log.d(TAG, "resetOldConnection... EIPStop()"); + if (Provider.getInstance().hasEIP()){ + Log.d(TAG, "resetOldConnection... Provider has EIP"); + eipStop(); + } + + }*/ @Override public boolean onCreateOptionsMenu(Menu menu) { @@ -535,6 +550,14 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn } } +/* private void eipStop(){ + // TODO validate "action"...how do we get the list of intent-filters for a class via Android API? + Intent eip_intent = new Intent(this, EIP.class); + eip_intent.setAction(EIP.ACTION_STOP_EIP); + // eip_intent.putExtra(EIP.RECEIVER_TAG, eip_receiver); + startService(eip_intent); + } +*/ public void showAllProviders() { provider_list_fragment = (ProviderListFragment) getFragmentManager().findFragmentByTag(ProviderListFragment.TAG); if(provider_list_fragment != null) @@ -543,15 +566,39 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn @Override public void login() { + + Intent ask_login = new Intent(); ask_login.putExtra(LogInDialog.VERB, LogInDialog.VERB); + + if (Provider.getInstance().hasEIP()){ + if (ConfigHelper.getBoolFromSharedPref(EIP.AUTHED_EIP)){ + ask_login.putExtra(Dashboard.LOGOUT_FIRST, Dashboard.LOGOUT_FIRST); + Log.d(TAG, "login() -> there was an authed EIP authed before"); + } + Log.d(TAG, "use_anonymously() -> STOP_FIRST!"); + ask_login.putExtra(Dashboard.STOP_FIRST, Dashboard.STOP_FIRST); + Log.d(TAG, "use_anonymously() -> ask_login has: " + ask_login.getExtras()); + + } setResult(RESULT_OK, ask_login); finish(); } @Override public void use_anonymously() { - setResult(RESULT_OK); + Intent stopFirst = new Intent(); + if (Provider.getInstance().hasEIP()){ + if (ConfigHelper.getBoolFromSharedPref(EIP.AUTHED_EIP)){ + stopFirst.putExtra(Dashboard.LOGOUT_FIRST, Dashboard.LOGOUT_FIRST); + Log.d(TAG, "use_anonymously() -> there was an authed EIP before"); + } + Log.d(TAG, "use_anonymously() -> STOP_FIRST!"); + stopFirst.putExtra(Dashboard.STOP_FIRST, Dashboard.STOP_FIRST); + + } + Log.d(TAG, "use_anonymously() "); + setResult(RESULT_OK, stopFirst); finish(); } } diff --git a/src/se/leap/bitmaskclient/Dashboard.java b/src/se/leap/bitmaskclient/Dashboard.java index ca619e9f..116d043b 100644 --- a/src/se/leap/bitmaskclient/Dashboard.java +++ b/src/se/leap/bitmaskclient/Dashboard.java @@ -40,6 +40,7 @@ import android.content.SharedPreferences; import android.os.Bundle; import android.os.Handler; import android.os.ResultReceiver; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -63,12 +64,17 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf protected static final int CONFIGURE_LEAP = 0; protected static final int SWITCH_PROVIDER = 1; + private static final String TAG_EIP_FRAGMENT = "EIP_DASHBOARD_FRAGMENT"; final public static String SHARED_PREFERENCES = "LEAPPreferences"; final public static String ACTION_QUIT = "quit"; public static final String REQUEST_CODE = "request_code"; + public static final String LOGOUT_FIRST = "logout_first"; + public static final String STOP_FIRST = "stop_first"; + + private ProgressBar mProgressBar; private TextView eipStatus; private ProviderAPIBroadcastReceiver_Update providerAPI_broadcast_receiver_update; @@ -89,8 +95,9 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf app = this; PRNGFixes.apply(); - //mProgressBar = (ProgressBar) findViewById(R.id.progressbar_dashboard); - + // mProgressBar = (ProgressBar) findViewById(R.id.progressbar_dashboard); + // mProgressBar = (ProgressBar) findViewById(R.id.eipProgress); + // eipStatus = (TextView) findViewById(R.id.eipStatus); providerAPI_broadcast_receiver_update = new ProviderAPIBroadcastReceiver_Update(); IntentFilter update_intent_filter = new IntentFilter(ProviderAPI.UPDATE_ACTION); @@ -116,8 +123,16 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ if ( requestCode == CONFIGURE_LEAP || requestCode == SWITCH_PROVIDER) { + // It should be equivalent: if ( (requestCode == CONFIGURE_LEAP) || (data!= null && data.hasExtra(STOP_FIRST))) { if ( resultCode == RESULT_OK ){ ConfigHelper.saveSharedPref(EIP.AUTHED_EIP, authed_eip); + if ((data != null) && (data.hasExtra(STOP_FIRST))){ + Log.d(TAG_EIP_FRAGMENT, "onActivityResult() -> eipStop!"); + eipStop(); + }else{ + Log.d(TAG_EIP_FRAGMENT, "onActivityResult() -> has no Extra STOP_FIRST"); + } + startService( new Intent(EIP.ACTION_UPDATE_EIP_SERVICE) ); buildDashboard(); if(data != null && data.hasExtra(LogInDialog.VERB)) { @@ -299,14 +314,13 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf provider_API_command.putExtra(ProviderAPI.PARAMETERS, parameters); provider_API_command.putExtra(ProviderAPI.RECEIVER_KEY, providerAPI_result_receiver); - //if(mProgressDialog != null) mProgressDialog.dismiss(); - //mProgressDialog = ProgressDialog.show(this, getResources().getString(R.string.logout_title), getResources().getString(R.string.logout_message), true); if(mProgressBar == null) mProgressBar = (ProgressBar) findViewById(R.id.eipProgress); mProgressBar.setVisibility(ProgressBar.VISIBLE); if(eipStatus == null) eipStatus = (TextView) findViewById(R.id.eipStatus); eipStatus.setText("Starting to logout"); - //mProgressBar.setMax(1); startService(provider_API_command); + //mProgressBar.setMax(1); + } /** @@ -456,7 +470,21 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf eip_intent.putExtra(EIP.RECEIVER_TAG, eip_receiver); startService(eip_intent); } + + /** + * Send a command to EIP + * + */ + private void eipStop(){ + // TODO validate "action"...how do we get the list of intent-filters for a class via Android API? + Intent eip_intent = new Intent(this, EIP.class); + eip_intent.setAction(EIP.ACTION_STOP_EIP); + // eip_intent.putExtra(EIP.RECEIVER_TAG, eip_receiver); + startService(eip_intent); + Log.d(TAG_EIP_FRAGMENT, "eipStop() -> service started to stop"); + } + public class ProviderAPIBroadcastReceiver_Update extends BroadcastReceiver { @Override diff --git a/src/se/leap/bitmaskclient/EipServiceFragment.java b/src/se/leap/bitmaskclient/EipServiceFragment.java index 4d778b1a..ba6bf561 100644 --- a/src/se/leap/bitmaskclient/EipServiceFragment.java +++ b/src/se/leap/bitmaskclient/EipServiceFragment.java @@ -57,6 +57,8 @@ public class EipServiceFragment extends Fragment implements StateListener, OnCli eipStatus.setOnClickListener(this); eipSwitch = (Switch) eipFragment.findViewById(R.id.eipSwitch); + + eipSwitch.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { @@ -66,6 +68,7 @@ public class EipServiceFragment extends Fragment implements StateListener, OnCli }); eipSwitch.setOnCheckedChangeListener(this); + return eipFragment; } @@ -152,6 +155,8 @@ public class EipServiceFragment extends Fragment implements StateListener, OnCli eipAutoSwitched = true; } + + /** * Send a command to EIP * diff --git a/src/se/leap/bitmaskclient/Provider.java b/src/se/leap/bitmaskclient/Provider.java index e462829f..f36e5946 100644 --- a/src/se/leap/bitmaskclient/Provider.java +++ b/src/se/leap/bitmaskclient/Provider.java @@ -166,6 +166,8 @@ public final class Provider implements Serializable { // Walk the EIP types array looking for matches in provider's service definitions if ( Arrays.asList(API_EIP_TYPES).contains( services.getString(i) ) ) return true; + } catch (NullPointerException e){ + e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); -- cgit v1.2.3 From 1df0766479f0235bd7e2afcaecce1eaebacb9ffc Mon Sep 17 00:00:00 2001 From: cyBerta Date: Tue, 26 Nov 2013 04:46:42 +0100 Subject: added FATAL as status for reconnection timout --- src/se/leap/bitmaskclient/EipServiceFragment.java | 10 +++++++--- src/se/leap/openvpn/OpenVPN.java | 5 ++++- src/se/leap/openvpn/OpenVpnManagementThread.java | 18 +++++++++++++----- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/se/leap/bitmaskclient/EipServiceFragment.java b/src/se/leap/bitmaskclient/EipServiceFragment.java index ba6bf561..e182b3fd 100644 --- a/src/se/leap/bitmaskclient/EipServiceFragment.java +++ b/src/se/leap/bitmaskclient/EipServiceFragment.java @@ -12,6 +12,7 @@ import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.ResultReceiver; +import android.util.Log; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; @@ -38,6 +39,9 @@ public class EipServiceFragment extends Fragment implements StateListener, OnCli private EIPReceiver mEIPReceiver; + + public static String TAG = "se.leap.bitmask.EipServiceFragment"; + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -191,15 +195,14 @@ public class EipServiceFragment extends Fragment implements StateListener, OnCli statusMessage = getString(R.string.eip_state_connected); getActivity().findViewById(R.id.eipProgress).setVisibility(View.GONE); mEipStartPending = false; - } else if ( (state.equals("NOPROCESS") && !mEipStartPending ) || state.equals("EXITING")) { + } else if ( (state.equals("NOPROCESS") && !mEipStartPending ) || state.equals("EXITING") || state.equals("FATAL")) { statusMessage = getString(R.string.eip_state_not_connected); getActivity().findViewById(R.id.eipProgress).setVisibility(View.GONE); mEipStartPending = false; switchState = false; } else if (state.equals("NOPROCESS")){ statusMessage = logmessage; - } - else { + } else { statusMessage = prefix + " " + logmessage; } @@ -212,6 +215,7 @@ public class EipServiceFragment extends Fragment implements StateListener, OnCli }); } + /** * Inner class for handling messages related to EIP status and control requests * diff --git a/src/se/leap/openvpn/OpenVPN.java b/src/se/leap/openvpn/OpenVPN.java index d7d17b4f..8acdc423 100644 --- a/src/se/leap/openvpn/OpenVPN.java +++ b/src/se/leap/openvpn/OpenVPN.java @@ -25,6 +25,7 @@ public class OpenVPN { private static String mLaststate; private static int mLastStateresid=R.string.state_noprocess; + public static String TAG="se.leap.openvpn.OpenVPN"; static { logbuffer = new LinkedList(); @@ -166,6 +167,8 @@ public class OpenVPN { return R.string.state_resolve; else if (state.equals("TCP_CONNECT")) return R.string.state_tcp_connect; + else if (state.equals("FATAL")) + return R.string.eip_state_not_connected; else return R.string.unknown_state; @@ -197,7 +200,7 @@ public class OpenVPN { } - public static void updateStateString (String state, String msg) { + public static void updateStateString (String state, String msg) { int rid = getLocalizedState(state); updateStateString(state, msg,rid); } diff --git a/src/se/leap/openvpn/OpenVpnManagementThread.java b/src/se/leap/openvpn/OpenVpnManagementThread.java index 78ce5a2b..b4da1e30 100644 --- a/src/se/leap/openvpn/OpenVpnManagementThread.java +++ b/src/se/leap/openvpn/OpenVpnManagementThread.java @@ -19,7 +19,6 @@ import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import se.leap.bitmaskclient.R; - import android.content.SharedPreferences; import android.net.LocalServerSocket; import android.net.LocalSocket; @@ -177,11 +176,12 @@ public class OpenVpnManagementThread implements Runnable { private void processCommand(String command) { + Log.d(TAG, "processCommand: " + command); + if (command.startsWith(">") && command.contains(":")) { String[] parts = command.split(":",2); String cmd = parts[0].substring(1); String argument = parts[1]; - if(cmd.equals("INFO")) { // Ignore greeting from mgmt //logStatusMessage(command); @@ -195,6 +195,8 @@ public class OpenVpnManagementThread implements Runnable { processByteCount(argument); } else if (cmd.equals("STATE")) { processState(argument); + } else if (cmd.equals("FATAL")){ + processState(","+cmd+","); //handles FATAL as state } else if (cmd.equals("PROXY")) { processProxyCMD(argument); } else if (cmd.equals("LOG")) { @@ -272,11 +274,17 @@ public class OpenVpnManagementThread implements Runnable { private void processState(String argument) { String[] args = argument.split(",",3); String currentstate = args[1]; - Log.d("OpenVPN log", argument); - if(args[2].equals(",,")) + if(args[2].equals(",,")){ OpenVPN.updateStateString(currentstate,""); - else + } + else if (args[2].endsWith(",,")){ //fixes LEAP Bug #4546 + args[2] = (String) args[2].subSequence(0, args[2].length()-2); + Log.d(TAG, "processState() STATE: "+ currentstate + " msg: " + args[2]); OpenVPN.updateStateString(currentstate,args[2]); + } + else{ + OpenVPN.updateStateString(currentstate,args[2]); + } } private static int repeated_byte_counts = 0; -- cgit v1.2.3 From 371a37fb024d3bf0609efbdb877d69b36a844f10 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Tue, 26 Nov 2013 13:37:56 +0100 Subject: set key icon also on state EXITING --- src/se/leap/openvpn/OpenVpnService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/se/leap/openvpn/OpenVpnService.java b/src/se/leap/openvpn/OpenVpnService.java index 1ef291df..f363cd16 100644 --- a/src/se/leap/openvpn/OpenVpnService.java +++ b/src/se/leap/openvpn/OpenVpnService.java @@ -106,7 +106,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac String ns = Context.NOTIFICATION_SERVICE; mNotificationManager = (NotificationManager) getSystemService(ns); int icon; - if (state.equals("NOPROCESS") || state.equals("AUTH_FAILED") || state.equals("NONETWORK")){ + if (state.equals("NOPROCESS") || state.equals("AUTH_FAILED") || state.equals("NONETWORK") || state.equals("EXITING")){ icon = R.drawable.ic_vpn_disconnected; }else{ icon = R.drawable.ic_stat_vpn; -- cgit v1.2.3 From e26be4756596acf5be292955079ae33f228408d8 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Tue, 26 Nov 2013 13:45:01 +0100 Subject: bugfixes for switch toggle behavior --- src/se/leap/openvpn/OpenVPNThread.java | 2 +- src/se/leap/openvpn/OpenVpnManagementThread.java | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/se/leap/openvpn/OpenVPNThread.java b/src/se/leap/openvpn/OpenVPNThread.java index 0c383ab0..ffd21732 100644 --- a/src/se/leap/openvpn/OpenVPNThread.java +++ b/src/se/leap/openvpn/OpenVPNThread.java @@ -56,7 +56,7 @@ public class OpenVPNThread implements Runnable { if( exitvalue != 0) OpenVPN.logError("Process exited with exit value " + exitvalue); - OpenVPN.updateStateString("NOPROCESS","No process running.", R.string.state_noprocess); +// OpenVPN.updateStateString("NOPROCESS","No process running.", R.string.state_noprocess); fixes bug #4565 if(mDumpPath!=null) { try { BufferedWriter logout = new BufferedWriter(new FileWriter(mDumpPath + ".log")); diff --git a/src/se/leap/openvpn/OpenVpnManagementThread.java b/src/se/leap/openvpn/OpenVpnManagementThread.java index b4da1e30..287de58e 100644 --- a/src/se/leap/openvpn/OpenVpnManagementThread.java +++ b/src/se/leap/openvpn/OpenVpnManagementThread.java @@ -211,8 +211,11 @@ public class OpenVpnManagementThread implements Runnable { OpenVPN.logMessage(0, "MGMT:", "Got unrecognized command" + command); Log.i(TAG, "Got unrecognized command" + command); } - } else if (command.startsWith("SUCCESS:")) { - // ignore + } else if (command.startsWith("SUCCESS:")) { //Fixes bug LEAP #4565 + if (command.equals("SUCCESS: signal SIGINT thrown")){ + Log.d(TAG, "SUCCESS: signal SIGINT thrown"); + processState(",EXITING,SIGINT,,"); + } } else { Log.i(TAG, "Got unrecognized line from managment" + command); OpenVPN.logMessage(0, "MGMT:", "Got unrecognized line from management:" + command); -- cgit v1.2.3 From 6dfb02da9cd6c28b8a3016cf78454add6408c13d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 3 Dec 2013 22:26:31 +0100 Subject: Vpn profiles get updated after switching provider. parsedEipSerial wasn't being reset after switching provider, so updating gateways thought there was no real update. After switching provider, we also remove all other vpn profiles. --- src/se/leap/bitmaskclient/Dashboard.java | 7 ++++--- src/se/leap/bitmaskclient/EIP.java | 9 +++++++++ src/se/leap/bitmaskclient/ProviderAPI.java | 5 ++++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/se/leap/bitmaskclient/Dashboard.java b/src/se/leap/bitmaskclient/Dashboard.java index 116d043b..24cf13f6 100644 --- a/src/se/leap/bitmaskclient/Dashboard.java +++ b/src/se/leap/bitmaskclient/Dashboard.java @@ -106,7 +106,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf ConfigHelper.setSharedPreferences(getSharedPreferences(SHARED_PREFERENCES, MODE_PRIVATE)); preferences = ConfigHelper.shared_preferences; - + authed_eip = ConfigHelper.getBoolFromSharedPref(EIP.AUTHED_EIP); if (ConfigHelper.getStringFromSharedPref(Provider.KEY).isEmpty()) startActivityForResult(new Intent(this,ConfigurationWizard.class),CONFIGURE_LEAP); @@ -125,14 +125,15 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf if ( requestCode == CONFIGURE_LEAP || requestCode == SWITCH_PROVIDER) { // It should be equivalent: if ( (requestCode == CONFIGURE_LEAP) || (data!= null && data.hasExtra(STOP_FIRST))) { if ( resultCode == RESULT_OK ){ - ConfigHelper.saveSharedPref(EIP.AUTHED_EIP, authed_eip); if ((data != null) && (data.hasExtra(STOP_FIRST))){ Log.d(TAG_EIP_FRAGMENT, "onActivityResult() -> eipStop!"); eipStop(); - }else{ + } else{ Log.d(TAG_EIP_FRAGMENT, "onActivityResult() -> has no Extra STOP_FIRST"); } + ConfigHelper.saveSharedPref(EIP.PARSED_SERIAL, 0); + ConfigHelper.saveSharedPref(EIP.AUTHED_EIP, authed_eip); startService( new Intent(EIP.ACTION_UPDATE_EIP_SERVICE) ); buildDashboard(); if(data != null && data.hasExtra(LogInDialog.VERB)) { diff --git a/src/se/leap/bitmaskclient/EIP.java b/src/se/leap/bitmaskclient/EIP.java index 22f7558d..13261e29 100644 --- a/src/se/leap/bitmaskclient/EIP.java +++ b/src/se/leap/bitmaskclient/EIP.java @@ -252,10 +252,19 @@ public final class EIP extends IntentService { private void updateEIPService() { try { eipDefinition = ConfigHelper.getJsonFromSharedPref(EIP.KEY); + parsedEipSerial = ConfigHelper.getIntFromSharedPref(PARSED_SERIAL); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } + if(parsedEipSerial == 0) { + // Delete all vpn profiles + ProfileManager vpl = ProfileManager.getInstance(context); + Collection profiles = vpl.getProfiles(); + for (VpnProfile profile : profiles){ + vpl.removeProfile(context, profile); + } + } if (eipDefinition.optInt("serial") > parsedEipSerial) updateGateways(); } diff --git a/src/se/leap/bitmaskclient/ProviderAPI.java b/src/se/leap/bitmaskclient/ProviderAPI.java index a553851b..871a20dd 100644 --- a/src/se/leap/bitmaskclient/ProviderAPI.java +++ b/src/se/leap/bitmaskclient/ProviderAPI.java @@ -229,7 +229,10 @@ public class ProviderAPI extends IntentService { result.putString(ERRORS, reason_to_fail); result.putBoolean(RESULT_KEY, false); } - else ConfigHelper.saveSharedPref(EIP.KEY, eip_service_json); + else { + ConfigHelper.saveSharedPref(EIP.KEY, eip_service_json); + ConfigHelper.saveSharedPref(EIP.PARSED_SERIAL, 0); + } result.putBoolean(RESULT_KEY, true); } catch (JSONException e) { -- cgit v1.2.3 From 017e493dc7c7e0565000d2afa76eb93c1fa5c2d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Tue, 3 Dec 2013 22:43:25 +0100 Subject: Active gateway is updated every eip start. --- src/se/leap/bitmaskclient/EIP.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/se/leap/bitmaskclient/EIP.java b/src/se/leap/bitmaskclient/EIP.java index 13261e29..ec2f6972 100644 --- a/src/se/leap/bitmaskclient/EIP.java +++ b/src/se/leap/bitmaskclient/EIP.java @@ -214,8 +214,7 @@ public final class EIP extends IntentService { * Intent to {@link se.leap.openvpn.LaunchVPN} */ private void startEIP() { - if (activeGateway==null) - activeGateway = selectGateway(); + activeGateway = selectGateway(); Intent intent = new Intent(this,LaunchVPN.class); intent.setAction(Intent.ACTION_MAIN); -- cgit v1.2.3 From 8c54cb758514aef996a362d0c021bf0f93006ea2 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Tue, 3 Dec 2013 22:05:12 +0100 Subject: logout simplified and logs removed --- src/se/leap/bitmaskclient/ConfigurationWizard.java | 52 +++------------------- src/se/leap/bitmaskclient/Dashboard.java | 22 +++++---- 2 files changed, 16 insertions(+), 58 deletions(-) diff --git a/src/se/leap/bitmaskclient/ConfigurationWizard.java b/src/se/leap/bitmaskclient/ConfigurationWizard.java index 5babf9a6..7ecc1652 100644 --- a/src/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/src/se/leap/bitmaskclient/ConfigurationWizard.java @@ -102,7 +102,6 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn Bundle arguments = new Bundle(); int configuration_wizard_request_code = getIntent().getIntExtra(Dashboard.REQUEST_CODE, -1); if(configuration_wizard_request_code == Dashboard.SWITCH_PROVIDER) { - Log.d(TAG, "onCreate - Request_Code: Switch Provider"); arguments.putBoolean(ProviderListFragment.SHOW_ALL_PROVIDERS, true); } provider_list_fragment.setArguments(arguments); @@ -369,7 +368,6 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn downloadJSONFiles(mSelectedProvider); } } catch (JSONException e) { - Log.d(TAG, "saveProviderJson("+provider.id + " = " + provider.name + ") failed"); setResult(RESULT_CANCELED); finish(); } @@ -500,19 +498,10 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn provider_API_command.setAction(ProviderAPI.UPDATE_PROVIDER_DOTJSON); provider_API_command.putExtra(ProviderAPI.PARAMETERS, parameters); provider_API_command.putExtra(ProviderAPI.RECEIVER_KEY, providerAPI_result_receiver); - Log.d(TAG, "updateProviderDotJson... right after resetting old connection, starts Service "); startService(provider_API_command); } - /*private void resetOldConnection(){ - Log.d(TAG, "resetOldConnection... EIPStop()"); - if (Provider.getInstance().hasEIP()){ - Log.d(TAG, "resetOldConnection... Provider has EIP"); - eipStop(); - } - - }*/ - + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.configuration_wizard_activity, menu); @@ -549,15 +538,7 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn fragment_transaction.replace(R.id.configuration_wizard_layout, newFragment, AboutFragment.TAG).commit(); } } - -/* private void eipStop(){ - // TODO validate "action"...how do we get the list of intent-filters for a class via Android API? - Intent eip_intent = new Intent(this, EIP.class); - eip_intent.setAction(EIP.ACTION_STOP_EIP); - // eip_intent.putExtra(EIP.RECEIVER_TAG, eip_receiver); - startService(eip_intent); - } -*/ + public void showAllProviders() { provider_list_fragment = (ProviderListFragment) getFragmentManager().findFragmentByTag(ProviderListFragment.TAG); if(provider_list_fragment != null) @@ -568,37 +549,16 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn public void login() { - Intent ask_login = new Intent(); + Intent ask_login = new Intent(this, Dashboard.class); ask_login.putExtra(LogInDialog.VERB, LogInDialog.VERB); - - if (Provider.getInstance().hasEIP()){ - if (ConfigHelper.getBoolFromSharedPref(EIP.AUTHED_EIP)){ - ask_login.putExtra(Dashboard.LOGOUT_FIRST, Dashboard.LOGOUT_FIRST); - Log.d(TAG, "login() -> there was an authed EIP authed before"); - } - Log.d(TAG, "use_anonymously() -> STOP_FIRST!"); - ask_login.putExtra(Dashboard.STOP_FIRST, Dashboard.STOP_FIRST); - Log.d(TAG, "use_anonymously() -> ask_login has: " + ask_login.getExtras()); - - } - setResult(RESULT_OK, ask_login); + startActivityForResult(ask_login, Dashboard.CONFIGURE_LEAP); finish(); } @Override public void use_anonymously() { - Intent stopFirst = new Intent(); - if (Provider.getInstance().hasEIP()){ - if (ConfigHelper.getBoolFromSharedPref(EIP.AUTHED_EIP)){ - stopFirst.putExtra(Dashboard.LOGOUT_FIRST, Dashboard.LOGOUT_FIRST); - Log.d(TAG, "use_anonymously() -> there was an authed EIP before"); - } - Log.d(TAG, "use_anonymously() -> STOP_FIRST!"); - stopFirst.putExtra(Dashboard.STOP_FIRST, Dashboard.STOP_FIRST); - - } - Log.d(TAG, "use_anonymously() "); - setResult(RESULT_OK, stopFirst); + Intent intent = new Intent(this, Dashboard.class); + startActivityForResult(intent, Dashboard.CONFIGURE_LEAP); finish(); } } diff --git a/src/se/leap/bitmaskclient/Dashboard.java b/src/se/leap/bitmaskclient/Dashboard.java index 24cf13f6..65ff2800 100644 --- a/src/se/leap/bitmaskclient/Dashboard.java +++ b/src/se/leap/bitmaskclient/Dashboard.java @@ -70,8 +70,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf final public static String SHARED_PREFERENCES = "LEAPPreferences"; final public static String ACTION_QUIT = "quit"; public static final String REQUEST_CODE = "request_code"; - public static final String LOGOUT_FIRST = "logout_first"; - public static final String STOP_FIRST = "stop_first"; + @@ -124,18 +123,12 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf protected void onActivityResult(int requestCode, int resultCode, Intent data){ if ( requestCode == CONFIGURE_LEAP || requestCode == SWITCH_PROVIDER) { // It should be equivalent: if ( (requestCode == CONFIGURE_LEAP) || (data!= null && data.hasExtra(STOP_FIRST))) { - if ( resultCode == RESULT_OK ){ - if ((data != null) && (data.hasExtra(STOP_FIRST))){ - Log.d(TAG_EIP_FRAGMENT, "onActivityResult() -> eipStop!"); - eipStop(); - } else{ - Log.d(TAG_EIP_FRAGMENT, "onActivityResult() -> has no Extra STOP_FIRST"); - } - + if ( resultCode == RESULT_OK ){ ConfigHelper.saveSharedPref(EIP.PARSED_SERIAL, 0); ConfigHelper.saveSharedPref(EIP.AUTHED_EIP, authed_eip); startService( new Intent(EIP.ACTION_UPDATE_EIP_SERVICE) ); buildDashboard(); + if(data != null && data.hasExtra(LogInDialog.VERB)) { View view = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0); logInDialog(view, Bundle.EMPTY); @@ -146,7 +139,7 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf configErrorDialog(); } } - + /** * Dialog shown when encountering a configuration error. Such errors require * reconfiguring LEAP or aborting the application. @@ -244,6 +237,12 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf startActivity(intent); return true; case R.id.switch_provider: + if (Provider.getInstance().hasEIP()){ + if (ConfigHelper.getBoolFromSharedPref(EIP.AUTHED_EIP)){ + logOut(); + } + eipStop(); + } startActivityForResult(new Intent(this,ConfigurationWizard.class), SWITCH_PROVIDER); return true; case R.id.login_button: @@ -482,7 +481,6 @@ public class Dashboard extends Activity implements LogInDialog.LogInDialogInterf eip_intent.setAction(EIP.ACTION_STOP_EIP); // eip_intent.putExtra(EIP.RECEIVER_TAG, eip_receiver); startService(eip_intent); - Log.d(TAG_EIP_FRAGMENT, "eipStop() -> service started to stop"); } -- cgit v1.2.3 From 9f0e175d9c4da5ffc914d4c42001e5195fa20557 Mon Sep 17 00:00:00 2001 From: cyBerta Date: Wed, 4 Dec 2013 02:32:50 +0100 Subject: fix for notification message on state exiting --- src/se/leap/openvpn/OpenVpnService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/se/leap/openvpn/OpenVpnService.java b/src/se/leap/openvpn/OpenVpnService.java index f363cd16..69dd56f4 100644 --- a/src/se/leap/openvpn/OpenVpnService.java +++ b/src/se/leap/openvpn/OpenVpnService.java @@ -479,7 +479,7 @@ public class OpenVpnService extends VpnService implements StateListener, Callbac // CONNECTED String ticker = getString(resid); boolean persist = false; - if (("NOPROCESS".equals(state) ) || ("EXIT").equals(state)){ + if (("NOPROCESS".equals(state) ) || ("EXITING").equals(state)){ showNotification(state, getString(R.string.eip_state_not_connected), ticker, false, 0, persist); } else{ -- cgit v1.2.3 From d004c5535c75540600d6670e86300872651fc7bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Parm=C3=A9nides=20GV?= Date: Wed, 4 Dec 2013 17:13:12 +0100 Subject: Rebased and working fine. I've restored use_anonymously() and login() methods from ConfigurationWizard, now everything works ok. --- src/se/leap/bitmaskclient/ConfigurationWizard.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/se/leap/bitmaskclient/ConfigurationWizard.java b/src/se/leap/bitmaskclient/ConfigurationWizard.java index 7ecc1652..4a3bb12b 100644 --- a/src/se/leap/bitmaskclient/ConfigurationWizard.java +++ b/src/se/leap/bitmaskclient/ConfigurationWizard.java @@ -547,18 +547,15 @@ implements ProviderListFragment.Callbacks, NewProviderDialog.NewProviderDialogIn @Override public void login() { - - - Intent ask_login = new Intent(this, Dashboard.class); + Intent ask_login = new Intent(); ask_login.putExtra(LogInDialog.VERB, LogInDialog.VERB); - startActivityForResult(ask_login, Dashboard.CONFIGURE_LEAP); + setResult(RESULT_OK, ask_login); finish(); } @Override public void use_anonymously() { - Intent intent = new Intent(this, Dashboard.class); - startActivityForResult(intent, Dashboard.CONFIGURE_LEAP); + setResult(RESULT_OK); finish(); } } -- cgit v1.2.3