From d089d78eae1ac1bccb137b54a0794bfe1f6ae60d Mon Sep 17 00:00:00 2001 From: rusefi Date: Fri, 17 Jul 2020 22:22:15 -0400 Subject: [PATCH] proxy progress --- java_console/build.xml | 6 +++++ .../java/com/rusefi/tools/ConsoleTools.java | 3 +++ .../src/test/java/com/rusefi/ServerTest.java | 10 +------ java_console/ui/ui.iml | 2 +- .../main/java/com/rusefi/server/Backend.java | 26 +++++++++++++++++++ .../server/JsonUserDetailsResolver.java | 11 ++++++++ .../JsonUserDetailsResolverSandbox.java | 9 +++++++ 7 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 java_tools/proxy_server/src/main/java/com/rusefi/server/JsonUserDetailsResolver.java create mode 100644 java_tools/proxy_server/src/test/java/com/rusefi/server/JsonUserDetailsResolverSandbox.java diff --git a/java_console/build.xml b/java_console/build.xml index 585a0266c6..8b321d3275 100644 --- a/java_console/build.xml +++ b/java_console/build.xml @@ -101,6 +101,12 @@ + + + + + + diff --git a/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java b/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java index 880505bd44..ec6b51dc48 100644 --- a/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java +++ b/java_console/ui/src/main/java/com/rusefi/tools/ConsoleTools.java @@ -21,6 +21,7 @@ import com.rusefi.io.LinkManager; import com.rusefi.io.serial.SerialIoStreamJSerialComm; import com.rusefi.io.tcp.BinaryProtocolServer; import com.rusefi.maintenance.ExecHelper; +import com.rusefi.server.Backend; import com.rusefi.tools.online.Online; import com.rusefi.tune.xml.Msq; import com.rusefi.ui.AuthTokenPanel; @@ -60,6 +61,8 @@ public class ConsoleTools { registerTool("compile_fsio_line", ConsoleTools::invokeCompileExpressionTool, "Convert a line to RPN form."); registerTool("compile_fsio_file", ConsoleTools::runCompileTool, "Convert all lines from a file to RPN form."); + registerTool("proxy_server", Backend::start, "NOT A USER TOOL"); + registerTool("print_auth_token", args -> printAuthToken(), "Print current rusEFI Online authentication token."); registerTool(SET_AUTH_TOKEN, ConsoleTools::setAuthToken, "Set rusEFI authentication token."); registerTool("upload_tune", ConsoleTools::uploadTune, "Upload specified tune file using auth token from settings"); diff --git a/java_console/ui/src/test/java/com/rusefi/ServerTest.java b/java_console/ui/src/test/java/com/rusefi/ServerTest.java index 20dc7f26d5..5fd6843ada 100644 --- a/java_console/ui/src/test/java/com/rusefi/ServerTest.java +++ b/java_console/ui/src/test/java/com/rusefi/ServerTest.java @@ -41,15 +41,7 @@ public class ServerTest { @Before public void setTestCertificate() throws MalformedURLException { File certificate = new File("certificate/test.jks"); - if (!certificate.exists()) - throw new IllegalStateException("Certificate not found " + certificate); - - String file = certificate.toURI().toURL().getFile(); - String password = "password"; - System.setProperty("javax.net.ssl.keyStore", file); - System.setProperty("javax.net.ssl.keyStorePassword", password); - System.setProperty("javax.net.ssl.trustStore", file); - System.setProperty("javax.net.ssl.trustStorePassword", password); + Backend.setupCertificates(certificate, "password"); } @Test diff --git a/java_console/ui/ui.iml b/java_console/ui/ui.iml index 07864d9b01..6e6a8fb20c 100644 --- a/java_console/ui/ui.iml +++ b/java_console/ui/ui.iml @@ -28,7 +28,7 @@ - + \ No newline at end of file diff --git a/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java b/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java index ca685fe472..8abb20b1d9 100644 --- a/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java +++ b/java_tools/proxy_server/src/main/java/com/rusefi/server/Backend.java @@ -18,7 +18,9 @@ import org.takes.rs.RsJson; import javax.json.Json; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; +import java.io.File; import java.io.IOException; +import java.net.MalformedURLException; import java.net.Socket; import java.util.*; import java.util.function.Function; @@ -70,6 +72,17 @@ public class Backend { // }, "rusEFI Server Cleanup").start(); } + public static void setupCertificates(File certificate, String password) throws MalformedURLException { + if (!certificate.exists()) + throw new IllegalStateException("Certificate not found " + certificate); + Objects.requireNonNull(password, "password"); + + String file = certificate.toURI().toURL().getFile(); + System.setProperty("javax.net.ssl.keyStore", file); + System.setProperty("javax.net.ssl.keyStorePassword", password); + System.setProperty("javax.net.ssl.trustStore", file); + System.setProperty("javax.net.ssl.trustStorePassword", password); + } public void runApplicationConnector(int serverPortForApplications, Listener serverSocketCreationCallback) { // connection from authenticator app which proxies for Tuner Studio @@ -219,4 +232,17 @@ public class Backend { return clients.size(); } } + + public static void start(String[] args) throws MalformedURLException { + setupCertificates(new File("keystore.jks"), System.getProperty("RUSEFI_PROXY_PASSWORD")); + + Function userDetailsFunction = new JsonUserDetailsResolver(); + + Backend backend = new Backend(userDetailsFunction, 8001, Logger.CONSOLE); + backend.runApplicationConnector(8002, parameter -> { + }); + backend.runControllerConnector(8003, parameter -> { + }); + + } } diff --git a/java_tools/proxy_server/src/main/java/com/rusefi/server/JsonUserDetailsResolver.java b/java_tools/proxy_server/src/main/java/com/rusefi/server/JsonUserDetailsResolver.java new file mode 100644 index 0000000000..cbf85f3ada --- /dev/null +++ b/java_tools/proxy_server/src/main/java/com/rusefi/server/JsonUserDetailsResolver.java @@ -0,0 +1,11 @@ +package com.rusefi.server; + +import java.util.function.Function; + +public class JsonUserDetailsResolver implements Function { + @Override + public UserDetails apply(String authToken) { + // todo + return new UserDetails("", 0); + } +} diff --git a/java_tools/proxy_server/src/test/java/com/rusefi/server/JsonUserDetailsResolverSandbox.java b/java_tools/proxy_server/src/test/java/com/rusefi/server/JsonUserDetailsResolverSandbox.java new file mode 100644 index 0000000000..7f77554c9c --- /dev/null +++ b/java_tools/proxy_server/src/test/java/com/rusefi/server/JsonUserDetailsResolverSandbox.java @@ -0,0 +1,9 @@ +package com.rusefi.server; + +public class JsonUserDetailsResolverSandbox { + public static void main(String[] args) { + JsonUserDetailsResolver resolver = new JsonUserDetailsResolver(); + + System.out.println(resolver.apply("haba-haba")); + } +}