diff --git a/photon-server/src/main/java/org/photonvision/common/configuration/NetworkConfig.java b/photon-server/src/main/java/org/photonvision/common/configuration/NetworkConfig.java index f09ea17c5..e37f0c779 100644 --- a/photon-server/src/main/java/org/photonvision/common/configuration/NetworkConfig.java +++ b/photon-server/src/main/java/org/photonvision/common/configuration/NetworkConfig.java @@ -19,6 +19,7 @@ package org.photonvision.common.configuration; import java.util.HashMap; import java.util.Map; +import org.photonvision.common.hardware.Platform; import org.photonvision.common.networking.NetworkMode; public class NetworkConfig { @@ -28,7 +29,6 @@ public class NetworkConfig { public String netmask = ""; public String hostname = "photonvision"; - // TODO implement networking public boolean shouldManage; public NetworkConfig() {} @@ -45,7 +45,8 @@ public class NetworkConfig { this.staticIp = staticIp; this.netmask = netmask; this.hostname = hostname; - this.shouldManage = shouldManage; + + this.shouldManage = shouldManage || Platform.isRaspberryPi(); } public static NetworkConfig fromHashMap(Map map) { diff --git a/photon-server/src/main/java/org/photonvision/common/networking/NetworkManager.java b/photon-server/src/main/java/org/photonvision/common/networking/NetworkManager.java index f87deb0ba..6a474fd81 100644 --- a/photon-server/src/main/java/org/photonvision/common/networking/NetworkManager.java +++ b/photon-server/src/main/java/org/photonvision/common/networking/NetworkManager.java @@ -46,20 +46,47 @@ public class NetworkManager { } var config = ConfigManager.getInstance().getConfig().getNetworkConfig(); + logger.info( + "Setting static ip to \"" + + config.staticIp + + "\" and hostname to \"" + + config.hostname + + "\""); if (Platform.isLinux()) { if (!Platform.isRoot) { logger.error("Cannot manage network without root!"); return; } + // always set hostname + if (config.hostname.length() > 0) { + try { + var setHostnameRetCode = + new ShellExec().execute("hostnamectl", "set-hostname", config.hostname); + var success = setHostnameRetCode == 0; + if (!success) { + logger.error("hostnamectl return non-zero exit code " + setHostnameRetCode + "!"); + } + } catch (Exception e) { + logger.error("Failed to set hostname!", e); + } + + } else { + logger.warn("Got empty hostname?"); + } + if (config.connectionType == NetworkMode.DHCP) { return; // TODO do we need to reconnect or something? } else if (config.connectionType == NetworkMode.STATIC) { - try { - new ShellExec() - .executeBashCommand("ip addr add " + config.staticIp + "/24" + " dev eth0"); - } catch (Exception e) { - e.printStackTrace(); + var shell = new ShellExec(); + if (config.staticIp.length() > 0) { + try { + shell.executeBashCommand("ip addr add " + config.staticIp + "/24" + " dev eth0"); + } catch (Exception e) { + logger.error("Error while setting static IP!", e); + } + } else { + logger.warn("Got empty static IP?"); } } } else {