diff options
| -rw-r--r-- | app/src/debug/java/se/leap/bitmaskclient/ProviderAPI.java | 31 | ||||
| -rw-r--r-- | app/src/main/res/values/strings.xml | 1 | ||||
| -rw-r--r-- | app/src/release/java/se/leap/bitmaskclient/ProviderAPI.java | 12 | 
3 files changed, 28 insertions, 16 deletions
diff --git a/app/src/debug/java/se/leap/bitmaskclient/ProviderAPI.java b/app/src/debug/java/se/leap/bitmaskclient/ProviderAPI.java index 2029a2f5..1a812e7c 100644 --- a/app/src/debug/java/se/leap/bitmaskclient/ProviderAPI.java +++ b/app/src/debug/java/se/leap/bitmaskclient/ProviderAPI.java @@ -16,12 +16,20 @@   */   package se.leap.bitmaskclient; +import android.app.IntentService; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.os.ResultReceiver; +import android.util.Base64; +import android.util.Log;  import java.io.DataOutputStream;  import java.io.FileNotFoundException;  import java.io.IOException;  import java.io.InputStream;  import java.io.UnsupportedEncodingException;  import java.math.BigInteger; +import java.net.ConnectException;  import java.net.CookieHandler;  import java.net.CookieManager;  import java.net.CookiePolicy; @@ -45,30 +53,21 @@ import java.util.HashMap;  import java.util.Iterator;  import java.util.Map;  import java.util.Scanner; -  import javax.net.ssl.HostnameVerifier;  import javax.net.ssl.HttpsURLConnection;  import javax.net.ssl.KeyManager;  import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLHandshakeException;  import javax.net.ssl.SSLSession;  import javax.net.ssl.TrustManager;  import javax.net.ssl.TrustManagerFactory;  import javax.net.ssl.X509TrustManager; -  import org.apache.http.client.ClientProtocolException;  import org.jboss.security.srp.SRPParameters;  import org.json.JSONException;  import org.json.JSONObject; - -import se.leap.bitmaskclient.R;  import se.leap.bitmaskclient.ProviderListContent.ProviderItem; -import android.app.IntentService; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.ResultReceiver; -import android.util.Base64; -import android.util.Log; +import se.leap.bitmaskclient.R;  /** @@ -705,12 +704,16 @@ public class ProviderAPI extends IntentService {  			json_file_content = formatErrorMessage(R.string.malformed_url);  		} catch(SocketTimeoutException e) {  			json_file_content = formatErrorMessage(R.string.server_unreachable_message); -		} catch (IOException e) { +		} catch (SSLHandshakeException e) {  			if(provider_url != null) { -				json_file_content = downloadWithProviderCA(string_url, danger_on); +			    json_file_content = downloadWithProviderCA(string_url, danger_on);  			} else {  				json_file_content = formatErrorMessage(R.string.certificate_error);  			} +		} catch(ConnectException e) { +		    json_file_content = formatErrorMessage(R.string.service_is_down_error); +		} catch (FileNotFoundException e) { +		    json_file_content = formatErrorMessage(R.string.malformed_url);  		} catch (Exception e) {  			if(provider_url != null && danger_on) {  				json_file_content = downloadWithProviderCA(string_url, danger_on); @@ -825,7 +828,7 @@ public class ProviderAPI extends IntentService {  			System.out.println("String ignoring certificate = " + string);  		} catch (FileNotFoundException e) {  			e.printStackTrace(); -			string = formatErrorMessage(R.string.server_unreachable_message); +			string = formatErrorMessage(R.string.malformed_url);  		} catch (IOException e) {  			// The downloaded certificate doesn't validate our https connection.  			e.printStackTrace(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d7114b73..62d54981 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -52,6 +52,7 @@      <string name="server_unreachable_message">Server is unreachable, please try again.</string>      <string name="malformed_url">It doesn\'t seem to be a Bitmask provider.</string>      <string name="certificate_error">This is not a trusted Bitmask provider.</string> +    <string name="service_is_down_error">Service is down.</string>      <string name="configuring_provider">Configuring provider</string>      <string name="incorrectly_downloaded_certificate_message">Your anon cert was not downloaded</string>      <string name="authenticating_message">Logging in</string> diff --git a/app/src/release/java/se/leap/bitmaskclient/ProviderAPI.java b/app/src/release/java/se/leap/bitmaskclient/ProviderAPI.java index a328dacc..fa96fffa 100644 --- a/app/src/release/java/se/leap/bitmaskclient/ProviderAPI.java +++ b/app/src/release/java/se/leap/bitmaskclient/ProviderAPI.java @@ -25,6 +25,7 @@ import java.math.BigInteger;  import java.net.CookieHandler;  import java.net.CookieManager;  import java.net.CookiePolicy; +import java.net.ConnectException;  import java.net.MalformedURLException;  import java.net.SocketTimeoutException;  import java.net.URISyntaxException; @@ -32,6 +33,7 @@ import java.net.URL;  import java.net.URLConnection;  import java.net.URLEncoder;  import java.net.UnknownHostException; +import javax.net.ssl.SSLHandshakeException;  import java.security.KeyManagementException;  import java.security.KeyStore;  import java.security.KeyStoreException; @@ -705,14 +707,20 @@ public class ProviderAPI extends IntentService {  		} catch (MalformedURLException e) {  			json_file_content = formatErrorMessage(R.string.malformed_url);  		} catch(SocketTimeoutException e) { +		    e.printStackTrace();  			json_file_content = formatErrorMessage(R.string.server_unreachable_message); -		} catch (IOException e) { +		} catch (SSLHandshakeException e) {  			if(provider_url != null) {  				json_file_content = downloadWithProviderCA(string_url);  			} else {  				json_file_content = formatErrorMessage(R.string.certificate_error);  			} +		} catch(ConnectException e) { +		    json_file_content = formatErrorMessage(R.string.service_is_down_error); +		} catch (FileNotFoundException e) { +		    json_file_content = formatErrorMessage(R.string.malformed_url);  		} catch (Exception e) { +		    e.printStackTrace();  			if(provider_url != null) {  				json_file_content = downloadWithProviderCA(string_url);  			} @@ -821,7 +829,7 @@ public class ProviderAPI extends IntentService {  			System.out.println("String ignoring certificate = " + string);  		} catch (FileNotFoundException e) {  			e.printStackTrace(); -			string = formatErrorMessage(R.string.server_unreachable_message); +			string = formatErrorMessage(R.string.malformed_url);  		} catch (IOException e) {  			// The downloaded certificate doesn't validate our https connection.  			e.printStackTrace();  | 
