diff options
| author | Reiner Herrmann <reiner@reiner-h.de> | 2012-12-27 22:10:02 +0100 |
|---|---|---|
| committer | Reiner Herrmann <reiner@reiner-h.de> | 2012-12-27 22:10:02 +0100 |
| commit | 8a2d76c4903687b3f9199c125c2e945b9285d1a3 (patch) | |
| tree | 15631335c6f9314679f0fc949fb65d5f63e50fe0 /src/eu/deki/paste/DekiEuPaste.java | |
| parent | 2c2a35d664fc7a22d55f6006e58bfd57a76eb093 (diff) | |
working SSL connection and POST request to deki.eu
Diffstat (limited to 'src/eu/deki/paste/DekiEuPaste.java')
| -rw-r--r-- | src/eu/deki/paste/DekiEuPaste.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/eu/deki/paste/DekiEuPaste.java b/src/eu/deki/paste/DekiEuPaste.java new file mode 100644 index 0000000..a0d0ba9 --- /dev/null +++ b/src/eu/deki/paste/DekiEuPaste.java @@ -0,0 +1,81 @@ +package eu.deki.paste; + +import java.net.URL; +import java.net.URLEncoder; +import java.net.MalformedURLException; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.SSLContext; +import java.io.OutputStream; +import java.io.InputStream; +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.security.KeyStore; +import android.content.Context; +import android.util.Log; +import eu.deki.paste.PasteTask; + +public class DekiEuPaste extends PasteTask +{ + private static final String pasteUrl = "https://deki.eu/paste/new"; + + public DekiEuPaste(Context parent) + { + super(parent); + } + + @Override + protected String paste(String title, String content, String delay) throws IOException + { + System.setProperty("http.keepAlive", "false"); + + String request = "title=" + URLEncoder.encode(title) + "&content=" + URLEncoder.encode(content) + "&expiration=" + URLEncoder.encode(delay); + + URL url; + try { + url = new URL(pasteUrl); + } catch(MalformedURLException ex) { + // will never happen because of hardcoded URL + return null; + } + + InputStream in = parentActivity.getResources().openRawResource(R.raw.deki_eu); + SSLContext context = null; + try + { + KeyStore trustedStore = KeyStore.getInstance("BKS"); + trustedStore.load(in, "abcdefg".toCharArray()); + TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); + //TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + tmf.init(trustedStore); + context = SSLContext.getInstance("TLS"); + context.init(null, tmf.getTrustManagers(), null); + } + catch(Exception ex) + { + Log.i("PasteIt", "Could not initialize certificate verification", ex); + return null; + } + finally + { + in.close(); + } + + HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); + conn.setSSLSocketFactory(context.getSocketFactory()); + conn.setDoOutput(true); + conn.setFixedLengthStreamingMode(request.getBytes().length); + + OutputStream out = new BufferedOutputStream(conn.getOutputStream()); + out.write(request.getBytes()); + out.close(); + + conn.getHeaderFields(); + String redirectUrl = conn.getURL().toString(); + + conn.disconnect(); + + return redirectUrl; + } +} + |
