diff --git a/java_console/io/src/main/java/com/rusefi/server/SessionDetails.java b/java_console/io/src/main/java/com/rusefi/server/SessionDetails.java index 48d4ab125a..685d870ee6 100644 --- a/java_console/io/src/main/java/com/rusefi/server/SessionDetails.java +++ b/java_console/io/src/main/java/com/rusefi/server/SessionDetails.java @@ -4,6 +4,8 @@ import com.rusefi.proxy.NetworkConnector; import com.rusefi.tools.online.HttpUtil; import org.json.simple.JSONObject; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.Objects; import java.util.Random; @@ -16,6 +18,7 @@ public class SessionDetails { public static final String CONNECTOR_VERSION = "connectorVersion"; public static final String IMPLEMENTATION = "implementation"; public static final String AGE = "age"; + public static final String LOCAL_IP = "local_ip"; private static final String CONTROLLER = "controller"; private static final String HARDCODED_ONE_TIME_CODE = System.getProperty("ONE_TIME_CODE"); @@ -26,10 +29,24 @@ public class SessionDetails { private final String authToken; private final NetworkConnector.Implementation implementation; private final int consoleVersion; + private final String localIpAddress; public SessionDetails(NetworkConnector.Implementation implementation, ControllerInfo controllerInfo, String authToken, int oneTimeCode, int consoleVersion) { + this(implementation, controllerInfo, authToken, oneTimeCode, consoleVersion, findLocalIpAddress()); + } + + private static String findLocalIpAddress() { + try { + return InetAddress.getLocalHost().getHostAddress(); + } catch (UnknownHostException e) { + return "unknown"; + } + } + + public SessionDetails(NetworkConnector.Implementation implementation, ControllerInfo controllerInfo, String authToken, int oneTimeCode, int consoleVersion, String localIpAddress) { this.implementation = Objects.requireNonNull(implementation); this.consoleVersion = consoleVersion; + this.localIpAddress = localIpAddress; Objects.requireNonNull(controllerInfo); Objects.requireNonNull(authToken); this.controllerInfo = controllerInfo; @@ -37,6 +54,10 @@ public class SessionDetails { this.authToken = authToken; } + public String getLocalIpAddress() { + return localIpAddress; + } + public static int createOneTimeCode() { return HARDCODED_ONE_TIME_CODE == null ? new Random().nextInt(100000) : Integer.parseInt(HARDCODED_ONE_TIME_CODE); } @@ -68,6 +89,7 @@ public class SessionDetails { jsonObject.put(AUTH_TOKEN, authToken); jsonObject.put(CONNECTOR_VERSION, consoleVersion); jsonObject.put(IMPLEMENTATION, implementation.name()); + jsonObject.put(LOCAL_IP, localIpAddress); return jsonObject.toJSONString(); } @@ -77,11 +99,12 @@ public class SessionDetails { String authToken = (String) jsonObject.get(AUTH_TOKEN); long oneTimeCode = (Long) jsonObject.get(VEHICLE_TOKEN); long connectorVersion = (long) jsonObject.get(CONNECTOR_VERSION); + String localIp = (String) jsonObject.get(LOCAL_IP); NetworkConnector.Implementation implementation = NetworkConnector.Implementation.find((String) jsonObject.get(IMPLEMENTATION)); ControllerInfo controllerInfo = ControllerInfo.valueOf((String) jsonObject.get(CONTROLLER)); - return new SessionDetails(implementation, controllerInfo, authToken, (int) oneTimeCode, (int) connectorVersion); + return new SessionDetails(implementation, controllerInfo, authToken, (int) oneTimeCode, (int) connectorVersion, localIp); } @Override diff --git a/java_console/io/src/main/java/com/rusefi/tools/online/ProxyClient.java b/java_console/io/src/main/java/com/rusefi/tools/online/ProxyClient.java index b160068442..b3492478ea 100644 --- a/java_console/io/src/main/java/com/rusefi/tools/online/ProxyClient.java +++ b/java_console/io/src/main/java/com/rusefi/tools/online/ProxyClient.java @@ -21,7 +21,7 @@ public class ProxyClient { public static final String LIST_APPLICATIONS_PATH = "/list_applications"; public static final String VERSION_PATH = "/version"; public static final String UPDATE_CONNECTOR_SOFTWARE = "/update_connector_software"; - public static final String BACKEND_VERSION = "0.0003"; + public static final String BACKEND_VERSION = "0.0004"; public static final String IS_USED = "isUsed"; public static final String OWNER = "owner"; /** 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 48783ed047..a24139459c 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 @@ -317,6 +317,7 @@ public class Backend implements Closeable { .add(ControllerInfo.ENGINE_MAKE, controllerInfo.getEngineMake()) .add(ControllerInfo.ENGINE_CODE, controllerInfo.getEngineCode()) .add(SessionDetails.IMPLEMENTATION, sessionDetails.getImplementation().name()) + .add(SessionDetails.LOCAL_IP, sessionDetails.getLocalIpAddress()) .add(SessionDetails.CONNECTOR_VERSION, sessionDetails.getConsoleVersion()); objectBuilder = addStreamStats(objectBuilder, client.getStream()); if (owner != null) {