|
@@ -0,0 +1,109 @@
|
|
|
+package de.tudarmstadt.informatik.hostage.protocol;
|
|
|
+
|
|
|
+import java.io.FileInputStream;
|
|
|
+import java.security.KeyStore;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import javax.net.ssl.KeyManagerFactory;
|
|
|
+import javax.net.ssl.SSLContext;
|
|
|
+
|
|
|
+public class HTTPS implements Protocol<String> {
|
|
|
+
|
|
|
+ private static enum STATE {
|
|
|
+ NONE, OPEN, CLOSED
|
|
|
+ };
|
|
|
+
|
|
|
+ private STATE state = STATE.NONE;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getPort() {
|
|
|
+ //TODO
|
|
|
+ return 50505;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TALK_FIRST whoTalksFirst() {
|
|
|
+ return TALK_FIRST.CLIENT;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<String> processMessage(String message) {
|
|
|
+ List<String> response = new ArrayList<String>();
|
|
|
+ response.add(header+html);
|
|
|
+ state = STATE.CLOSED;
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isClosed() {
|
|
|
+ return state == STATE.CLOSED;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isSecure() {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Class<String> getType() {
|
|
|
+ return String.class;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String toString() {
|
|
|
+ return "HTTPS";
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public SSLContext getSSLContext() {
|
|
|
+ String ksName = "/storage/sdcard0/server.bks";
|
|
|
+ char ksPass[] = "password".toCharArray();
|
|
|
+
|
|
|
+ KeyStore ks;
|
|
|
+ KeyManagerFactory kmf = null;
|
|
|
+ try {
|
|
|
+ ks = KeyStore.getInstance(KeyStore.getDefaultType());
|
|
|
+ ks.load(new FileInputStream(ksName), ksPass);
|
|
|
+ kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
|
|
|
+ kmf.init(ks, ksPass);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+
|
|
|
+ SSLContext sslcontext = null;
|
|
|
+ try {
|
|
|
+ sslcontext = SSLContext.getInstance("SSLv3");
|
|
|
+ sslcontext.init(kmf.getKeyManagers(), null, null);
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return sslcontext;
|
|
|
+ }
|
|
|
+
|
|
|
+ private String header =
|
|
|
+ "HTTP/1.1 200 OK\r\n" +
|
|
|
+ "Date: Mon, 01 Jul 2013 18:27:55 GMT\r\n" +
|
|
|
+ "Server: Apache/2.2.22 (Debian)\r\n" +
|
|
|
+ "X-Powered-By: PHP/5.4.4.-14\r\n" +
|
|
|
+ "Vary: Accept-Encoding\r\n" +
|
|
|
+ "Content-Length: 173\r\n" +
|
|
|
+ "Keep-Alive: timeout=5, max=100\r\n" +
|
|
|
+ "Connection: Keep-Alive\r\n" +
|
|
|
+ "Content-Type: text/html\r\n" +
|
|
|
+ "\r\n";
|
|
|
+
|
|
|
+ private String html =
|
|
|
+ "<!doctype html>\n" +
|
|
|
+ "<html lang=\"en\">\n" +
|
|
|
+ "<head>\n" +
|
|
|
+ "<meta charset=\"UTF-8\">\n" +
|
|
|
+ "<title>Test successful</title>\n" +
|
|
|
+ "</head>\n" +
|
|
|
+ "<body>\n" +
|
|
|
+ "<h1>Test successful</h1>\n" +
|
|
|
+ "<p>Congratulations.</p>\n" +
|
|
|
+ "</body>\n" +
|
|
|
+ "</html>";
|
|
|
+
|
|
|
+}
|