proxy progress
This commit is contained in:
parent
35799e0332
commit
61ce495482
|
@ -22,7 +22,6 @@ import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.CountDownLatch;
|
import java.util.concurrent.CountDownLatch;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
import static com.rusefi.TestHelper.createIniField;
|
import static com.rusefi.TestHelper.createIniField;
|
||||||
import static com.rusefi.TestHelper.prepareImage;
|
import static com.rusefi.TestHelper.prepareImage;
|
||||||
|
@ -50,7 +49,7 @@ public class ServerTest {
|
||||||
public void testControllerSessionTimeout() throws InterruptedException, IOException {
|
public void testControllerSessionTimeout() throws InterruptedException, IOException {
|
||||||
int serverPortForControllers = 7000;
|
int serverPortForControllers = 7000;
|
||||||
int httpPort = 8000;
|
int httpPort = 8000;
|
||||||
Function<String, UserDetails> userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), authToken.charAt(6));
|
UserDetailsResolver userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), authToken.charAt(6));
|
||||||
|
|
||||||
CountDownLatch serverCreated = new CountDownLatch(1);
|
CountDownLatch serverCreated = new CountDownLatch(1);
|
||||||
CountDownLatch allClientsDisconnected = new CountDownLatch(1);
|
CountDownLatch allClientsDisconnected = new CountDownLatch(1);
|
||||||
|
@ -92,7 +91,7 @@ public class ServerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testInvalidApplicationRequest() throws InterruptedException, IOException {
|
public void testInvalidApplicationRequest() throws InterruptedException, IOException {
|
||||||
Function<String, UserDetails> userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), authToken.charAt(6));
|
UserDetailsResolver userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), authToken.charAt(6));
|
||||||
int httpPort = 8001;
|
int httpPort = 8001;
|
||||||
int serverPortForRemoteUsers = 6801;
|
int serverPortForRemoteUsers = 6801;
|
||||||
CountDownLatch disconnectedCountDownLatch = new CountDownLatch(1);
|
CountDownLatch disconnectedCountDownLatch = new CountDownLatch(1);
|
||||||
|
@ -120,7 +119,7 @@ public class ServerTest {
|
||||||
public void testAuthenticatorRequestUnknownSession() throws InterruptedException, IOException {
|
public void testAuthenticatorRequestUnknownSession() throws InterruptedException, IOException {
|
||||||
int serverPortForRemoteUsers = 6800;
|
int serverPortForRemoteUsers = 6800;
|
||||||
|
|
||||||
Function<String, UserDetails> userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), authToken.charAt(6));
|
UserDetailsResolver userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), authToken.charAt(6));
|
||||||
int httpPort = 8001;
|
int httpPort = 8001;
|
||||||
|
|
||||||
CountDownLatch disconnectedCountDownLatch = new CountDownLatch(1);
|
CountDownLatch disconnectedCountDownLatch = new CountDownLatch(1);
|
||||||
|
@ -157,7 +156,7 @@ public class ServerTest {
|
||||||
|
|
||||||
CountDownLatch controllerRegistered = new CountDownLatch(1);
|
CountDownLatch controllerRegistered = new CountDownLatch(1);
|
||||||
|
|
||||||
Function<String, UserDetails> userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), userId);
|
UserDetailsResolver userDetailsResolver = authToken -> new UserDetails(authToken.substring(0, 5), userId);
|
||||||
int httpPort = 8001;
|
int httpPort = 8001;
|
||||||
Backend backend = new Backend(userDetailsResolver, httpPort, logger) {
|
Backend backend = new Backend(userDetailsResolver, httpPort, logger) {
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -42,10 +42,10 @@ public class Backend {
|
||||||
// guarded by clients
|
// guarded by clients
|
||||||
private HashMap<ControllerKey, ControllerConnectionState> byId = new HashMap<>();
|
private HashMap<ControllerKey, ControllerConnectionState> byId = new HashMap<>();
|
||||||
// private final int clientTimeout;
|
// private final int clientTimeout;
|
||||||
private final Function<String, UserDetails> userDetailsResolver;
|
private final UserDetailsResolver userDetailsResolver;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
|
|
||||||
public Backend(Function<String, UserDetails> userDetailsResolver, int httpPort, Logger logger) {
|
public Backend(UserDetailsResolver userDetailsResolver, int httpPort, Logger logger) {
|
||||||
// this.clientTimeout = clientTimeout;
|
// this.clientTimeout = clientTimeout;
|
||||||
this.userDetailsResolver = userDetailsResolver;
|
this.userDetailsResolver = userDetailsResolver;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
|
@ -166,7 +166,7 @@ public class Backend {
|
||||||
return new RsJson(builder.build());
|
return new RsJson(builder.build());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Function<String, UserDetails> getUserDetailsResolver() {
|
public UserDetailsResolver getUserDetailsResolver() {
|
||||||
return userDetailsResolver;
|
return userDetailsResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import com.opensr5.Logger;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public class BackendLauncher {
|
public class BackendLauncher {
|
||||||
/**
|
/**
|
||||||
|
@ -13,7 +12,7 @@ public class BackendLauncher {
|
||||||
public static void start(String[] args) throws MalformedURLException {
|
public static void start(String[] args) throws MalformedURLException {
|
||||||
rusEFISSLContext.setupCertificates(new File("keystore.jks"), System.getProperty("RUSEFI_PROXY_PASSWORD"));
|
rusEFISSLContext.setupCertificates(new File("keystore.jks"), System.getProperty("RUSEFI_PROXY_PASSWORD"));
|
||||||
|
|
||||||
Function<String, UserDetails> userDetailsFunction = new JsonUserDetailsResolver();
|
UserDetailsResolver userDetailsFunction = new JsonUserDetailsResolver();
|
||||||
|
|
||||||
Backend backend = new Backend(userDetailsFunction, Backend.HTTP_PORT, Logger.CONSOLE);
|
Backend backend = new Backend(userDetailsFunction, Backend.HTTP_PORT, Logger.CONSOLE);
|
||||||
backend.runApplicationConnector(Backend.SERVER_PORT_FOR_APPLICATIONS, parameter -> {
|
backend.runApplicationConnector(Backend.SERVER_PORT_FOR_APPLICATIONS, parameter -> {
|
||||||
|
|
|
@ -11,12 +11,11 @@ import com.rusefi.io.tcp.TcpIoStream;
|
||||||
import java.io.Closeable;
|
import java.io.Closeable;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.Socket;
|
import java.net.Socket;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public class ControllerConnectionState {
|
public class ControllerConnectionState {
|
||||||
private final Socket clientSocket;
|
private final Socket clientSocket;
|
||||||
private final Logger logger;
|
private final Logger logger;
|
||||||
private final Function<String, UserDetails> userDetailsResolver;
|
private final UserDetailsResolver userDetailsResolver;
|
||||||
|
|
||||||
private boolean isClosed;
|
private boolean isClosed;
|
||||||
private IoStream stream;
|
private IoStream stream;
|
||||||
|
@ -31,7 +30,7 @@ public class ControllerConnectionState {
|
||||||
private UserDetails userDetails;
|
private UserDetails userDetails;
|
||||||
private ControllerKey controllerKey;
|
private ControllerKey controllerKey;
|
||||||
|
|
||||||
public ControllerConnectionState(Socket clientSocket, Logger logger, Function<String, UserDetails> userDetailsResolver) {
|
public ControllerConnectionState(Socket clientSocket, Logger logger, UserDetailsResolver userDetailsResolver) {
|
||||||
this.clientSocket = clientSocket;
|
this.clientSocket = clientSocket;
|
||||||
this.logger = logger;
|
this.logger = logger;
|
||||||
this.userDetailsResolver = userDetailsResolver;
|
this.userDetailsResolver = userDetailsResolver;
|
||||||
|
@ -71,6 +70,9 @@ public class ControllerConnectionState {
|
||||||
|
|
||||||
logger.info(sessionDetails.getAuthToken() + " New client: " + sessionDetails.getControllerInfo());
|
logger.info(sessionDetails.getAuthToken() + " New client: " + sessionDetails.getControllerInfo());
|
||||||
userDetails = userDetailsResolver.apply(sessionDetails.getAuthToken());
|
userDetails = userDetailsResolver.apply(sessionDetails.getAuthToken());
|
||||||
|
if (userDetails == null) {
|
||||||
|
throw new IOException("Unable to resolve " + sessionDetails.getAuthToken());
|
||||||
|
}
|
||||||
controllerKey = new ControllerKey(userDetails.getUserId(), sessionDetails.getControllerInfo());
|
controllerKey = new ControllerKey(userDetails.getUserId(), sessionDetails.getControllerInfo());
|
||||||
logger.info("User " + userDetails);
|
logger.info("User " + userDetails);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,8 @@ import org.json.simple.JSONObject;
|
||||||
import org.json.simple.parser.ParseException;
|
import org.json.simple.parser.ParseException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.function.Function;
|
|
||||||
|
|
||||||
public class JsonUserDetailsResolver implements Function<String, UserDetails> {
|
public class JsonUserDetailsResolver implements UserDetailsResolver {
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
public UserDetails apply(String authToken) {
|
public UserDetails apply(String authToken) {
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.rusefi.server;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
public interface UserDetailsResolver extends Function<String, UserDetails> {
|
||||||
|
}
|
Loading…
Reference in New Issue