From 28cc6ac8dcca29b038e6e31778217f2b270321b7 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Mon, 18 Oct 2021 21:14:29 +0200
Subject: [PATCH] WIP: grpc-web proxy

---
 pom.xml                                            | 14 ++++++++++----
 .../java/org/caosdb/server/grpc/GRPCServer.java    |  8 ++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 23b60c4a..d216ba5b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,8 +35,9 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.build.testSourceDirectory>src/test/java</project.build.testSourceDirectory>
     <protobuf.version>3.14.0</protobuf.version>
-    <grpc.version>1.35.0</grpc.version>
+    <grpc.version>1.38.1</grpc.version>
     <netty-tcnative.version>2.0.34.Final</netty-tcnative.version>
+    <restlet.version>2.4.3</restlet.version>
   </properties>
   <repositories>
     <repository>
@@ -55,6 +56,11 @@
     </repository>
   </repositories>
   <dependencies>
+    <dependency>
+      <groupId>io.grpcweb</groupId>
+      <artifactId>grpcweb-java</artifactId>
+      <version>0.1-SNAPSHOT</version>
+    </dependency>
     <dependency>
       <groupId>de.timmfitschen</groupId>
       <artifactId>easy-units</artifactId>
@@ -96,12 +102,12 @@
     <dependency>
       <groupId>org.restlet.jse</groupId>
       <artifactId>org.restlet</artifactId>
-      <version>2.3.12</version>
+      <version>${restlet.version}</version>
     </dependency>
     <dependency>
       <groupId>org.restlet.jse</groupId>
       <artifactId>org.restlet.ext.fileupload</artifactId>
-      <version>2.3.12</version>
+      <version>${restlet.version}</version>
     </dependency>
     <dependency>
       <groupId>mysql</groupId>
@@ -131,7 +137,7 @@
     <dependency>
       <groupId>org.restlet.jse</groupId>
       <artifactId>org.restlet.ext.jetty</artifactId>
-      <version>2.3.12</version>
+      <version>${restlet.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.commons</groupId>
diff --git a/src/main/java/org/caosdb/server/grpc/GRPCServer.java b/src/main/java/org/caosdb/server/grpc/GRPCServer.java
index 51c061fa..1fd96504 100644
--- a/src/main/java/org/caosdb/server/grpc/GRPCServer.java
+++ b/src/main/java/org/caosdb/server/grpc/GRPCServer.java
@@ -24,6 +24,8 @@ import io.grpc.ServerInterceptors;
 import io.grpc.ServerServiceDefinition;
 import io.grpc.netty.GrpcSslContexts;
 import io.grpc.netty.NettyServerBuilder;
+import io.grpcweb.GrpcPortNumRelay;
+import io.grpcweb.JettyWebserverForGrpcwebTraffic;
 import io.netty.handler.ssl.ApplicationProtocolConfig;
 import io.netty.handler.ssl.ApplicationProtocolConfig.Protocol;
 import io.netty.handler.ssl.ApplicationProtocolConfig.SelectedListenerFailureBehavior;
@@ -198,6 +200,12 @@ public class GRPCServer {
           ServerProperties.KEY_GRPC_SERVER_PORT_HTTP,
           ServerProperties.KEY_GRPC_SERVER_PORT_HTTPS);
     }
+
+    // Start the grpc-web proxy on grpc-web-port.
+    (new JettyWebserverForGrpcwebTraffic(9443)).start();
+
+    // grpc-web proxy needs to know the grpc-port# so it could connect to the grpc service.
+    GrpcPortNumRelay.setGrpcPortNum(8080);
   }
 
   private static class ServerStopper implements Runnable {
-- 
GitLab