From 1167f3517a48b40e882d480dc9378a8c15e603a5 Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Fri, 19 Mar 2021 12:56:24 +0100 Subject: [PATCH] Add ssl and rest to grpc --- pom.xml | 8 ++++++ .../java/org/caosdb/server/CaosDBServer.java | 2 +- .../org/caosdb/server/grpc/GRPCServer.java | 27 ++++++++++++++++--- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 0e01855b..2f4b8191 100644 --- a/pom.xml +++ b/pom.xml @@ -33,6 +33,7 @@ <project.build.testSourceDirectory>src/test/java</project.build.testSourceDirectory> <protobuf.version>3.14.0</protobuf.version> <grpc.version>1.35.0</grpc.version> + <netty-tcnative.version>2.0.34.Final</netty-tcnative.version> </properties> <repositories> <repository> @@ -184,6 +185,13 @@ <artifactId>grpc-netty</artifactId> <version>${grpc.version}</version> </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-tcnative</artifactId> + <version>${netty-tcnative.version}</version> + <classifier>${os.detected.classifier}</classifier> + <scope>runtime</scope> + </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> diff --git a/src/main/java/org/caosdb/server/CaosDBServer.java b/src/main/java/org/caosdb/server/CaosDBServer.java index e0290050..a4b8d298 100644 --- a/src/main/java/org/caosdb/server/CaosDBServer.java +++ b/src/main/java/org/caosdb/server/CaosDBServer.java @@ -354,7 +354,7 @@ public class CaosDBServer extends Application { runHTTPSServer( port_https, port_http, port_redirect_https, initialConnections, maxTotalConnections); } - GRPCServer.startServer(8080); + GRPCServer.startServer(8080, 8443, 8070); } private static void initDatatypes(final Access access) throws Exception { diff --git a/src/main/java/org/caosdb/server/grpc/GRPCServer.java b/src/main/java/org/caosdb/server/grpc/GRPCServer.java index ba920199..f145e35b 100644 --- a/src/main/java/org/caosdb/server/grpc/GRPCServer.java +++ b/src/main/java/org/caosdb/server/grpc/GRPCServer.java @@ -2,12 +2,33 @@ package org.caosdb.server.grpc; import io.grpc.Server; import io.grpc.ServerBuilder; +import io.grpcweb.GrpcPortNumRelay; +import io.grpcweb.JettyWebserverForGrpcwebTraffic; +import java.io.File; import java.io.IOException; public class GRPCServer { - public static void startServer(int port) throws IOException, InterruptedException { - Server server = ServerBuilder.forPort(port).addService(new EntityTransactionImpl()).build(); - server.start(); + public static void startServer(int port_http, int port_https, int port_web) + throws IOException, InterruptedException { + Server https_server = + ServerBuilder.forPort(port_https) + .useTransportSecurity( + new File("/home/tf/ssl/server-certificates/localhost-belial/localhost-belial.pem"), + new File( + "/home/tf/ssl/server-certificates/localhost-belial/localhost-belial.key.pk8")) + .addService(new EntityTransactionImpl()) + .build(); + https_server.start(); + + Server http_server = + ServerBuilder.forPort(port_http).addService(new EntityTransactionImpl()).build(); + http_server.start(); + + JettyWebserverForGrpcwebTraffic web = new JettyWebserverForGrpcwebTraffic(8070); + web.starts(); + + // grpc-web proxy needs to know the grpc-port# so it could connect to the grpc service. + GrpcPortNumRelay.setGrpcPortNum(port_http); } } -- GitLab