proxy progress

This commit is contained in:
rusefi 2020-07-17 22:46:07 -04:00
parent d089d78eae
commit 9c03dc8aa6
6 changed files with 26 additions and 10 deletions

View File

@ -21,6 +21,7 @@ import com.rusefi.io.LinkManager;
import com.rusefi.io.serial.SerialIoStreamJSerialComm; import com.rusefi.io.serial.SerialIoStreamJSerialComm;
import com.rusefi.io.tcp.BinaryProtocolServer; import com.rusefi.io.tcp.BinaryProtocolServer;
import com.rusefi.maintenance.ExecHelper; import com.rusefi.maintenance.ExecHelper;
import com.rusefi.proxy.NetworkConnector;
import com.rusefi.server.Backend; import com.rusefi.server.Backend;
import com.rusefi.tools.online.Online; import com.rusefi.tools.online.Online;
import com.rusefi.tune.xml.Msq; import com.rusefi.tune.xml.Msq;
@ -62,6 +63,8 @@ public class ConsoleTools {
registerTool("compile_fsio_file", ConsoleTools::runCompileTool, "Convert all lines from a file 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("proxy_server", Backend::start, "NOT A USER TOOL");
registerTool("network_connector", NetworkConnector::start, "Connect your rusEFI ECU to rusEFI Online");
registerTool("network_authenticator", LocalApplicationProxy::start, "rusEFI Online Authenticator");
registerTool("print_auth_token", args -> printAuthToken(), "Print current rusEFI Online authentication token."); registerTool("print_auth_token", args -> printAuthToken(), "Print current rusEFI Online authentication token.");
registerTool(SET_AUTH_TOKEN, ConsoleTools::setAuthToken, "Set rusEFI authentication token."); registerTool(SET_AUTH_TOKEN, ConsoleTools::setAuthToken, "Set rusEFI authentication token.");

View File

@ -1,6 +1,7 @@
package com.rusefi; package com.rusefi;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.rusefi.proxy.BaseBroadcastingThread;
import com.rusefi.server.ControllerInfo; import com.rusefi.server.ControllerInfo;
import com.rusefi.server.SessionDetails; import com.rusefi.server.SessionDetails;

View File

@ -9,6 +9,7 @@ import com.rusefi.io.ConnectionStateListener;
import com.rusefi.io.IoStream; import com.rusefi.io.IoStream;
import com.rusefi.io.LinkManager; import com.rusefi.io.LinkManager;
import com.rusefi.io.commands.HelloCommand; import com.rusefi.io.commands.HelloCommand;
import com.rusefi.proxy.NetworkConnector;
import com.rusefi.server.*; import com.rusefi.server.*;
import com.rusefi.tools.online.ProxyClient; import com.rusefi.tools.online.ProxyClient;
import org.junit.Before; import org.junit.Before;
@ -40,6 +41,8 @@ public class ServerTest {
@Before @Before
public void setTestCertificate() throws MalformedURLException { public void setTestCertificate() throws MalformedURLException {
NetworkConnector.RUSEFI_PROXY_HOSTNAME = ProxyClient.LOCALHOST;
File certificate = new File("certificate/test.jks"); File certificate = new File("certificate/test.jks");
Backend.setupCertificates(certificate, "password"); Backend.setupCertificates(certificate, "password");
} }
@ -200,8 +203,7 @@ public class ServerTest {
// start authenticator // start authenticator
int authenticatorPort = 7004; // local port on which authenticator accepts connections from Tuner Studio int authenticatorPort = 7004; // local port on which authenticator accepts connections from Tuner Studio
IoStream authenticatorToProxyStream = TestHelper.secureConnectToLocalhost(serverPortForRemoteUsers, logger); LocalApplicationProxy.startAndRun(logger, controllerPort, applicationRequest, authenticatorPort);
LocalApplicationProxy.startAndRun(logger, applicationRequest, authenticatorPort, authenticatorToProxyStream);
CountDownLatch connectionEstablishedCountDownLatch = new CountDownLatch(1); CountDownLatch connectionEstablishedCountDownLatch = new CountDownLatch(1);

View File

@ -4,8 +4,11 @@ import com.opensr5.Logger;
import com.rusefi.io.IoStream; import com.rusefi.io.IoStream;
import com.rusefi.io.commands.HelloCommand; import com.rusefi.io.commands.HelloCommand;
import com.rusefi.io.tcp.BinaryProtocolProxy; import com.rusefi.io.tcp.BinaryProtocolProxy;
import com.rusefi.io.tcp.TcpIoStream;
import com.rusefi.proxy.NetworkConnector;
import com.rusefi.server.ApplicationRequest; import com.rusefi.server.ApplicationRequest;
import javax.net.ssl.SSLSocketFactory;
import java.io.IOException; import java.io.IOException;
public class LocalApplicationProxy { public class LocalApplicationProxy {
@ -22,7 +25,8 @@ public class LocalApplicationProxy {
* @param authenticatorPort local port we would bind for TunerStudio to connect to * @param authenticatorPort local port we would bind for TunerStudio to connect to
* @param authenticatorToProxyStream * @param authenticatorToProxyStream
*/ */
static void startAndRun(Logger logger, ApplicationRequest applicationRequest, int authenticatorPort, IoStream authenticatorToProxyStream) throws IOException { static void startAndRun(Logger logger, int controllerPort, ApplicationRequest applicationRequest, int authenticatorPort) throws IOException {
IoStream authenticatorToProxyStream = new TcpIoStream(logger, SSLSocketFactory.getDefault().createSocket(NetworkConnector.RUSEFI_PROXY_HOSTNAME, controllerPort));
LocalApplicationProxy localApplicationProxy = new LocalApplicationProxy(logger, applicationRequest); LocalApplicationProxy localApplicationProxy = new LocalApplicationProxy(logger, applicationRequest);
localApplicationProxy.run(authenticatorToProxyStream); localApplicationProxy.run(authenticatorToProxyStream);
@ -33,4 +37,7 @@ public class LocalApplicationProxy {
// right from connection push session authentication data // right from connection push session authentication data
new HelloCommand(logger, applicationRequest.toJson()).handle(authenticatorToProxyStream); new HelloCommand(logger, applicationRequest.toJson()).handle(authenticatorToProxyStream);
} }
public static void start(String[] strings) {
}
} }

View File

@ -1,4 +1,4 @@
package com.rusefi; package com.rusefi.proxy;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.rusefi.binaryprotocol.IncomingDataBuffer; import com.rusefi.binaryprotocol.IncomingDataBuffer;

View File

@ -1,26 +1,26 @@
package com.rusefi; package com.rusefi.proxy;
import com.opensr5.Logger; import com.opensr5.Logger;
import com.rusefi.io.IoStream; import com.rusefi.io.IoStream;
import com.rusefi.io.commands.HelloCommand; import com.rusefi.io.commands.HelloCommand;
import com.rusefi.io.tcp.BinaryProtocolServer; import com.rusefi.io.tcp.BinaryProtocolServer;
import com.rusefi.io.tcp.TcpIoStream; import com.rusefi.io.tcp.TcpIoStream;
import com.rusefi.proxy.BaseBroadcastingThread;
import com.rusefi.server.ControllerInfo; import com.rusefi.server.ControllerInfo;
import com.rusefi.server.SessionDetails; import com.rusefi.server.SessionDetails;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.SSLSocketFactory;
import java.io.IOException; import java.io.IOException;
import java.net.Socket;
import static com.rusefi.tools.online.ProxyClient.LOCALHOST;
/** /**
* Connector between rusEFI ECU and rusEFI server * Connector between rusEFI ECU and rusEFI server
*/ */
public class NetworkConnector { public class NetworkConnector {
public static String RUSEFI_PROXY_HOSTNAME = "proxy.rusefi.com";
@NotNull @NotNull
static SessionDetails runNetworkConnector(int serverPortForControllers, IoStream targetEcuSocket, final Logger logger, String authToken) throws IOException { public static SessionDetails runNetworkConnector(int serverPortForControllers, IoStream targetEcuSocket, final Logger logger, String authToken) throws IOException {
HelloCommand.send(targetEcuSocket, logger); HelloCommand.send(targetEcuSocket, logger);
String controllerSignature = HelloCommand.getHelloResponse(targetEcuSocket.getDataBuffer(), logger); String controllerSignature = HelloCommand.getHelloResponse(targetEcuSocket.getDataBuffer(), logger);
@ -29,7 +29,7 @@ public class NetworkConnector {
SessionDetails deviceSessionDetails = new SessionDetails(ci, authToken, SessionDetails.createOneTimeCode()); SessionDetails deviceSessionDetails = new SessionDetails(ci, authToken, SessionDetails.createOneTimeCode());
BaseBroadcastingThread baseBroadcastingThread = new BaseBroadcastingThread(SSLSocketFactory.getDefault().createSocket(LOCALHOST, serverPortForControllers), BaseBroadcastingThread baseBroadcastingThread = new BaseBroadcastingThread(SSLSocketFactory.getDefault().createSocket(RUSEFI_PROXY_HOSTNAME, serverPortForControllers),
deviceSessionDetails, deviceSessionDetails,
logger) { logger) {
@Override @Override
@ -44,4 +44,7 @@ public class NetworkConnector {
baseBroadcastingThread.start(); baseBroadcastingThread.start();
return deviceSessionDetails; return deviceSessionDetails;
} }
public static void start(String[] strings) {
}
} }