From 2085e7651928e45cad5861f66fe4af91fcacf353 Mon Sep 17 00:00:00 2001
From: Sebastian Rieger <sebastian.rieger@informatik.hs-fulda.de>
Date: Mon, 29 Jan 2018 00:26:34 +0100
Subject: [PATCH] initial ssl version of rest server

---
 .../build/keystore_server                     | Bin 0 -> 1977 bytes
 .../verteiltesysteme/rest/RESTSSLServer.java  |  47 ++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 VerteilteSysteme-Examples/build/keystore_server
 create mode 100644 VerteilteSysteme-Examples/src/verteiltesysteme/rest/RESTSSLServer.java

diff --git a/VerteilteSysteme-Examples/build/keystore_server b/VerteilteSysteme-Examples/build/keystore_server
new file mode 100644
index 0000000000000000000000000000000000000000..552fbd787ffd638848b9810126f250bd8f8536b8
GIT binary patch
literal 1977
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

literal 0
HcmV?d00001

diff --git a/VerteilteSysteme-Examples/src/verteiltesysteme/rest/RESTSSLServer.java b/VerteilteSysteme-Examples/src/verteiltesysteme/rest/RESTSSLServer.java
new file mode 100644
index 0000000..2489d7c
--- /dev/null
+++ b/VerteilteSysteme-Examples/src/verteiltesysteme/rest/RESTSSLServer.java
@@ -0,0 +1,47 @@
+/* Beispiel angelehnt an http://www.torsten-horn.de/techdocs/jee-rest.htm */
+package verteiltesysteme.rest;
+
+import java.io.IOException;
+import java.net.URI;
+import org.glassfish.grizzly.http.server.HttpServer;
+import org.glassfish.grizzly.ssl.SSLContextConfigurator;
+import org.glassfish.grizzly.ssl.SSLEngineConfigurator;
+import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
+import org.glassfish.jersey.server.ResourceConfig;
+
+public class RESTSSLServer
+{
+    private static final String KEYSTORE_SERVER_FILE = "./build/keystore_server";
+    private static final String KEYSTORE_SERVER_PWD = "notsecure";
+    
+	public static void main( String[] args ) throws IOException, InterruptedException 
+   {
+      String baseUrl = ( args.length > 0 ) ? args[0] : "http://localhost:36040";
+
+      // Grizzly ssl configuration
+      SSLContextConfigurator sslContext = new SSLContextConfigurator();
+
+      // set up security context
+      sslContext.setKeyStoreFile(KEYSTORE_SERVER_FILE); // contains server keypair
+      sslContext.setKeyStorePass(KEYSTORE_SERVER_PWD);
+      
+      // keytool -genkey -keystore ./keystore_server -alias serverKey -dname "CN=localhost, OU=VertSys, O=HS-Fulda, L=Fulda, ST=Hessen, C=DE"
+      
+      final HttpServer server = GrizzlyHttpServerFactory.createHttpServer(
+            URI.create( baseUrl ), new ResourceConfig( RESTToUpperCaseService.class, RESTToLowerCaseService.class ), true, new SSLEngineConfigurator(sslContext).setClientMode(false).setNeedClientAuth(false) );
+      Runtime.getRuntime().addShutdownHook( new Thread( new Runnable() {
+         @Override
+         public void run() {
+            server.shutdownNow();
+         }
+      } ) );
+      server.start();
+
+      System.out.println("Grizzly-HTTP-Server gestartet");
+      System.out.println("Stoppen des Grizzly-HTTP-Servers mit: Strg+C\n");
+      System.out.println("RESTful Web Service URL: " + baseUrl + RESTToUpperCaseService.webContextPath);
+      System.out.println("RESTful Web Service URL: " + baseUrl + RESTToLowerCaseService.webContextPath);
+
+      Thread.currentThread().join();
+   }
+}
\ No newline at end of file
-- 
GitLab