diff --git a/chameleon-server/chameleon-vision.iml b/chameleon-server/chameleon-vision.iml
index 41084fba0..445efaa82 100644
--- a/chameleon-server/chameleon-vision.iml
+++ b/chameleon-server/chameleon-vision.iml
@@ -11,6 +11,7 @@
+
diff --git a/chameleon-server/src/main/java/com/chameleonvision/network/LinuxNetworking.java b/chameleon-server/src/main/java/com/chameleonvision/network/LinuxNetworking.java
index 4c5a8076c..2794f0c9a 100644
--- a/chameleon-server/src/main/java/com/chameleonvision/network/LinuxNetworking.java
+++ b/chameleon-server/src/main/java/com/chameleonvision/network/LinuxNetworking.java
@@ -64,7 +64,7 @@ public class LinuxNetworking extends SysNetworking {
@Override
public boolean setStatic(String ipAddress, String netmask, String gateway) {
- setDHCP();
+ setDHCP(); // clean up old static interface
File dhcpConf = new File(PATH);
try {
List lines = FileUtils.readLines(dhcpConf, StandardCharsets.UTF_8);
@@ -89,7 +89,6 @@ public class LinuxNetworking extends SysNetworking {
} catch (SocketException e) {
return null;
}
-
List goodInterfaces = new ArrayList<>();
for (var netInterface : netInterfaces) {
diff --git a/chameleon-server/src/main/java/com/chameleonvision/network/NetmaskToCIDR.java b/chameleon-server/src/main/java/com/chameleonvision/network/NetmaskToCIDR.java
index 738e1321a..84673605f 100644
--- a/chameleon-server/src/main/java/com/chameleonvision/network/NetmaskToCIDR.java
+++ b/chameleon-server/src/main/java/com/chameleonvision/network/NetmaskToCIDR.java
@@ -3,19 +3,20 @@ package com.chameleonvision.network;
import java.net.InetAddress;
public class NetmaskToCIDR {
- public static int convertNetmaskToCIDR(InetAddress netmask){
+ //code belongs to https://stackoverflow.com/questions/19531411/calculate-cidr-from-a-given-netmask-java
+ public static int convertNetmaskToCIDR(InetAddress netmask) {
byte[] netmaskBytes = netmask.getAddress();
int cidr = 0;
boolean zero = false;
- for(byte b : netmaskBytes){
+ for (byte b : netmaskBytes) {
int mask = 0x80;
- for(int i = 0; i < 8; i++){
+ for (int i = 0; i < 8; i++) {
int result = b & mask;
- if(result == 0){
+ if (result == 0) {
zero = true;
- }else if(zero){
+ } else if (zero) {
throw new IllegalArgumentException("Invalid netmask.");
} else {
cidr++;
diff --git a/chameleon-server/src/main/java/com/chameleonvision/network/NetworkManager.java b/chameleon-server/src/main/java/com/chameleonvision/network/NetworkManager.java
index 1b1690882..60a99b8f1 100644
--- a/chameleon-server/src/main/java/com/chameleonvision/network/NetworkManager.java
+++ b/chameleon-server/src/main/java/com/chameleonvision/network/NetworkManager.java
@@ -68,12 +68,6 @@ public class NetworkManager {
} else {
isManaged = false;
System.err.println("No valid network interfaces found! Staying unmanaged.");
- return;
- }
-
- if (!loadFromGeneralSettings()) {
- isManaged = false;
- System.err.println("Failed to load network settings. Staying unmanaged!");
}
}
@@ -81,13 +75,6 @@ public class NetworkManager {
return new byte[]{(byte) (teamNumber / 100), (byte) (teamNumber % 100)};
}
- private static boolean loadFromGeneralSettings() {
- if (!isManaged) {
- return true;
- }
- var genSettings = ConfigManager.settings;
- return setHostname(genSettings.hostname);
- }
private static boolean setDHCP() {
if (!isManaged) {
@@ -103,7 +90,7 @@ public class NetworkManager {
return networking.setStatic(ipAddress, netmask, gateway);
}
- private static boolean setHostname(String hostname) {
+ public static boolean setHostname(String hostname) {
if (!isManaged) {
return true;
}
diff --git a/chameleon-server/src/main/java/com/chameleonvision/web/RequestHandler.java b/chameleon-server/src/main/java/com/chameleonvision/web/RequestHandler.java
index 636c7b425..af82b6448 100644
--- a/chameleon-server/src/main/java/com/chameleonvision/web/RequestHandler.java
+++ b/chameleon-server/src/main/java/com/chameleonvision/web/RequestHandler.java
@@ -53,11 +53,18 @@ public class RequestHandler {
ConfigManager.settings.netmask = (String) map.get("netmask");
ConfigManager.settings.gateway = (String) map.get("gateway");
ConfigManager.settings.hostname = (String) map.get("hostname");
- boolean isStatic = ConfigManager.settings.connectionType.equals(NetworkIPMode.STATIC);
ConfigManager.saveGeneralSettings();
- NetworkManager.setNetwork(isStatic, ConfigManager.settings.ip, ConfigManager.settings.netmask, ConfigManager.settings.gateway);
+ // setting up network config after saving
+ boolean isStatic = ConfigManager.settings.connectionType.equals(NetworkIPMode.STATIC);
+
+ if (NetworkManager.setHostname(ConfigManager.settings.hostname) &&
+ NetworkManager.setNetwork(isStatic, ConfigManager.settings.ip, ConfigManager.settings.netmask, ConfigManager.settings.gateway)) {
+ ctx.status(200);
+ } else {
+ ctx.result("something went wrong while setting network configuration");
+ ctx.status(501);
+ }
SocketHandler.sendFullSettings();
- ctx.status(200);
} catch (JsonProcessingException e) {
ctx.status(500);
}