From af0070df66faa9f9a1eedfef735b36c5f9bf41b5 Mon Sep 17 00:00:00 2001 From: vanitasvitae Date: Thu, 9 Jun 2016 01:53:47 +0200 Subject: [PATCH] Let elements other than the webView use the proxy (HttpsUrlConnections) --- .../diaspora_android/task/GetPodsService.java | 34 ++++++++++--------- .../task/ImageDownloadTask.java | 20 +++++++++-- .../task/ProfileFetchTask.java | 34 ++++++++++++++----- 3 files changed, 60 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java b/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java index 8791ac00..ba01716a 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/task/GetPodsService.java @@ -28,12 +28,6 @@ import android.util.Log; import com.github.dfa.diaspora_android.App; -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.StatusLine; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONArray; import org.json.JSONObject; @@ -44,6 +38,10 @@ import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; +import javax.net.ssl.HttpsURLConnection; + +import info.guardianproject.netcipher.NetCipher; + public class GetPodsService extends Service { public static final String MESSAGE_PODS_RECEIVED = "com.github.dfa.diaspora.podsreceived"; private static final String TAG = App.TAG; @@ -73,24 +71,28 @@ public class GetPodsService extends Service { // TODO: Update deprecated code StringBuilder builder = new StringBuilder(); - HttpClient client = new DefaultHttpClient(); + //HttpClient client = new DefaultHttpClient(); List list = null; + HttpsURLConnection connection; + InputStream inStream; try { - HttpGet httpGet = new HttpGet("http://podupti.me/api.php?key=4r45tg&format=json"); - HttpResponse response = client.execute(httpGet); - StatusLine statusLine = response.getStatusLine(); - int statusCode = statusLine.getStatusCode(); + connection = NetCipher.getHttpsURLConnection("https://podupti.me/api.php?key=4r45tg&format=json"); + int statusCode = connection.getResponseCode(); if (statusCode == 200) { - HttpEntity entity = response.getEntity(); - InputStream content = entity.getContent(); + inStream = connection.getInputStream(); BufferedReader reader = new BufferedReader( - new InputStreamReader(content)); + new InputStreamReader(inStream)); String line; while ((line = reader.readLine()) != null) { builder.append(line); } + + try { + inStream.close(); + } catch (IOException e) {/*Nothing to do*/} + + connection.disconnect(); } else { - //TODO Notify User about failure Log.e(TAG, "Failed to download list of pods"); } } catch (IOException e) { @@ -136,4 +138,4 @@ public class GetPodsService extends Service { throw new UnsupportedOperationException("Not yet implemented"); } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/github/dfa/diaspora_android/task/ImageDownloadTask.java b/app/src/main/java/com/github/dfa/diaspora_android/task/ImageDownloadTask.java index 2b5a3d23..d9059344 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/task/ImageDownloadTask.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/task/ImageDownloadTask.java @@ -13,7 +13,12 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import javax.net.ssl.HttpsURLConnection; + +import info.guardianproject.netcipher.NetCipher; + /** + * Task that can be used to download images from URLs and store them in storage * Created by Gregor Santner (gsantner) on 24.03.16. */ public class ImageDownloadTask extends AsyncTask { @@ -35,9 +40,12 @@ public class ImageDownloadTask extends AsyncTask { String url = urls[0]; Bitmap bitmap = null; FileOutputStream out = null; + InputStream inStream; + HttpsURLConnection connection; try { - InputStream in = new java.net.URL(url).openStream(); - bitmap = BitmapFactory.decodeStream(in); + connection = NetCipher.getHttpsURLConnection(url); + inStream = connection.getInputStream(); + bitmap = BitmapFactory.decodeStream(inStream); // Save to file if not null if (savePath != null) { @@ -45,6 +53,12 @@ public class ImageDownloadTask extends AsyncTask { bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); } + try { + inStream.close(); + } catch (IOException e) {/*Nothing*/} + + connection.disconnect(); + } catch (Exception e) { Log.e(App.TAG, e.getMessage()); } finally { @@ -64,4 +78,4 @@ public class ImageDownloadTask extends AsyncTask { imageView.setImageBitmap(result); } } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/github/dfa/diaspora_android/task/ProfileFetchTask.java b/app/src/main/java/com/github/dfa/diaspora_android/task/ProfileFetchTask.java index f54774f0..2771a4b7 100644 --- a/app/src/main/java/com/github/dfa/diaspora_android/task/ProfileFetchTask.java +++ b/app/src/main/java/com/github/dfa/diaspora_android/task/ProfileFetchTask.java @@ -10,11 +10,16 @@ import com.github.dfa.diaspora_android.data.PodUserProfile; import java.io.BufferedReader; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; -import java.net.HttpURLConnection; import java.net.URL; +import javax.net.ssl.HttpsURLConnection; + +import info.guardianproject.netcipher.NetCipher; + /** + * AsyncTask to fetch a users profile * Created by Gregor Santner (gsantner) on 30.03.16. */ public class ProfileFetchTask extends AsyncTask { @@ -37,18 +42,21 @@ public class ProfileFetchTask extends AsyncTask { String cookies = cookieManager.getCookie("https://" + app.getSettings().getPodDomain()); Log.d(App.TAG, cookies); + HttpsURLConnection connection; + InputStream inStream; try { URL url = new URL("https://" + app.getSettings().getPodDomain() + "/stream"); - HttpURLConnection conn = (HttpURLConnection) url.openConnection(); - conn.setReadTimeout(10000); - conn.setConnectTimeout(15000); - conn.setRequestMethod("GET"); + connection = NetCipher.getHttpsURLConnection(url); + connection.setReadTimeout(10000); + connection.setConnectTimeout(15000); + connection.setRequestMethod("GET"); if (cookies != null) { - conn.setRequestProperty("Cookie", cookies); + connection.setRequestProperty("Cookie", cookies); } - conn.connect(); + connection.connect(); - BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); + inStream = connection.getInputStream(); + BufferedReader br = new BufferedReader(new InputStreamReader(inStream)); String line; final String TARGET_TAG = "window.gon={};gon.user="; while ((line = br.readLine()) != null && !line.startsWith(" { break; } } + + try{ + br.close(); + inStream.close(); + } catch (IOException e){/*Nothing*/} + + connection.disconnect(); + } catch (IOException e) { e.printStackTrace(); } @@ -70,4 +86,4 @@ public class ProfileFetchTask extends AsyncTask { return null; } -} +} \ No newline at end of file