summaryrefslogtreecommitdiff
path: root/src/eu/deki/paste/DekiEuPaste.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/eu/deki/paste/DekiEuPaste.java')
-rw-r--r--src/eu/deki/paste/DekiEuPaste.java81
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;
+ }
+}
+