From f4cb5b33730d781954bc174d624bde463e35e072 Mon Sep 17 00:00:00 2001 From: Merlino Date: Tue, 26 Apr 2022 11:45:49 +0200 Subject: [PATCH 01/17] Replaced NetAdmin with ConfService in update configuration Signed-off-by: Merlino --- .../net/WifiConfigurationInterpreter.java | 8 - .../web/server/GwtNetworkServiceImpl.java | 688 ++++++++++++++---- 2 files changed, 564 insertions(+), 132 deletions(-) diff --git a/kura/org.eclipse.kura.core.net/src/main/java/org/eclipse/kura/core/net/WifiConfigurationInterpreter.java b/kura/org.eclipse.kura.core.net/src/main/java/org/eclipse/kura/core/net/WifiConfigurationInterpreter.java index 3708a84eefc..8b24c4e28c7 100644 --- a/kura/org.eclipse.kura.core.net/src/main/java/org/eclipse/kura/core/net/WifiConfigurationInterpreter.java +++ b/kura/org.eclipse.kura.core.net/src/main/java/org/eclipse/kura/core/net/WifiConfigurationInterpreter.java @@ -41,21 +41,13 @@ public class WifiConfigurationInterpreter { private static final String WIFI_PASSPHRASE_KEY = ".passphrase"; private static final String SECURITY_TYPE = ".securityType"; private static final String NET_INTERFACE = "net.interface."; - private static final String WIFI_CHANNELS_KEY = ".channel"; - private static final String WIFI_IGNORE_SSID_KEY = ".ignoreSSID"; - private static final String WIFI_PING_ACCESS_POINT_KEY = ".pingAccessPoint"; - private static final String WIFI_RADIO_MODE_KEY = ".radioMode"; - private static final String WIFI_GROUP_CIPHERS_KEY = ".groupCiphers"; - private static final String WIFI_PAIRWISE_CIPHERS_KEY = ".pairwiseCiphers"; - private static final String DRIVER_KEY = ".driver"; - private static final String WIFI_SSID_KEY = ".ssid"; private WifiConfigurationInterpreter() { diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 032b0317733..ba7927edaa9 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -17,17 +17,22 @@ import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Arrays; import java.util.EnumSet; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.Optional; import org.eclipse.kura.KuraErrorCode; import org.eclipse.kura.KuraException; +import org.eclipse.kura.configuration.ConfigurationService; import org.eclipse.kura.configuration.Password; import org.eclipse.kura.core.net.AbstractNetInterface; import org.eclipse.kura.core.net.util.NetworkUtil; import org.eclipse.kura.core.util.NetUtil; +import org.eclipse.kura.crypto.CryptoService; import org.eclipse.kura.net.IP4Address; import org.eclipse.kura.net.IPAddress; import org.eclipse.kura.net.NetConfig; @@ -743,11 +748,118 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter throws GwtKuraException { checkXSRFToken(xsrfToken); - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); + ConfigurationService cs = ServiceLocator.getInstance().getService(ConfigurationService.class); + Map properties = new HashMap<>(); + // cs.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", properties, true); + + // component.id = 91 + // component.name = org.eclipse.kura.net.admin.NetworkConfigurationService + // kura.service.pid = org.eclipse.kura.net.admin.NetworkConfigurationService + // net.interface.1-4.config.activeFilter = inbound + // net.interface.1-4.config.authType = NONE + // net.interface.1-4.config.dhcpClient4.enabled = false + // net.interface.1-4.config.dhcpClient6.enabled = false + // net.interface.1-4.config.diversityEnabled = false + // net.interface.1-4.config.enabled = false + // net.interface.1-4.config.gpsEnabled = false + // net.interface.1-4.config.idle = 95 + // net.interface.1-4.config.ip4.address = + // net.interface.1-4.config.ip4.dnsServers = + // net.interface.1-4.config.ip4.gateway = + // net.interface.1-4.config.ip4.prefix = -1 + // net.interface.1-4.config.ip4.status = netIPv4StatusDisabled + // net.interface.1-4.config.ip6.dnsServers = + // net.interface.1-4.config.ip6.status = netIPv6StatusDisabled + // net.interface.1-4.config.ipAddress = + // net.interface.1-4.config.lcpEchoFailure = 0 + // net.interface.1-4.config.lcpEchoInterval = 0 + // net.interface.1-4.config.maxFail = 5 + // net.interface.1-4.config.password = + // net.interface.1-4.config.pdpType = IP + // net.interface.1-4.config.persist = true + // net.interface.1-4.config.resetTimeout = 5 + // net.interface.1-4.type = MODEM + // net.interface.eno1.config.dhcpClient4.enabled = false + // net.interface.eno1.config.dhcpClient6.enabled = false + // net.interface.eno1.config.dhcpServer4.defaultLeaseTime = 7200 + // net.interface.eno1.config.dhcpServer4.enabled = true + // net.interface.eno1.config.dhcpServer4.maxLeaseTime = 7200 + // net.interface.eno1.config.dhcpServer4.passDns = false + // net.interface.eno1.config.dhcpServer4.prefix = 24 + // net.interface.eno1.config.dhcpServer4.rangeEnd = 172.16.0.110 + // net.interface.eno1.config.dhcpServer4.rangeStart = 172.16.0.100 + // net.interface.eno1.config.ip4.address = 172.16.0.1 + // net.interface.eno1.config.ip4.dnsServers = + // net.interface.eno1.config.ip4.gateway = + // net.interface.eno1.config.ip4.prefix = 24 + // net.interface.eno1.config.ip4.status = netIPv4StatusEnabledLAN + // net.interface.eno1.config.ip6.dnsServers = + // net.interface.eno1.config.ip6.status = netIPv6StatusDisabled + // net.interface.eno1.type = ETHERNET + // net.interface.enp5s0.config.dhcpClient4.enabled = true + // net.interface.enp5s0.config.dhcpClient6.enabled = false + // net.interface.enp5s0.config.ip4.dnsServers = + // net.interface.enp5s0.config.ip4.status = netIPv4StatusEnabledWAN + // net.interface.enp5s0.config.ip6.dnsServers = + // net.interface.enp5s0.config.ip6.status = netIPv6StatusDisabled + // net.interface.enp5s0.type = ETHERNET + // net.interface.lo.config.dhcpClient4.enabled = false + // net.interface.lo.config.dhcpClient6.enabled = false + // net.interface.lo.config.ip4.address = 127.0.0.1 + // net.interface.lo.config.ip4.dnsServers = + // net.interface.lo.config.ip4.gateway = + // net.interface.lo.config.ip4.prefix = 8 + // net.interface.lo.config.ip4.status = netIPv4StatusEnabledLAN + // net.interface.lo.config.ip6.dnsServers = + // net.interface.lo.config.ip6.status = netIPv6StatusDisabled + // net.interface.lo.type = LOOPBACK + // net.interface.wlp1s0.config.dhcpClient4.enabled = false + // net.interface.wlp1s0.config.dhcpClient6.enabled = false + // net.interface.wlp1s0.config.ip4.address = + // net.interface.wlp1s0.config.ip4.dnsServers = + // net.interface.wlp1s0.config.ip4.gateway = + // net.interface.wlp1s0.config.ip4.prefix = 24 + // net.interface.wlp1s0.config.ip4.status = netIPv4StatusDisabled + // net.interface.wlp1s0.config.ip6.dnsServers = + // net.interface.wlp1s0.config.ip6.status = netIPv6StatusDisabled + // net.interface.wlp1s0.config.wifi.infra.bgscan = + // net.interface.wlp1s0.config.wifi.infra.channel = 1 + // net.interface.wlp1s0.config.wifi.infra.driver = nl80211 + // net.interface.wlp1s0.config.wifi.infra.groupCiphers = CCMP_TKIP + // net.interface.wlp1s0.config.wifi.infra.ignoreSSID = false + // net.interface.wlp1s0.config.wifi.infra.mode = INFRA + // net.interface.wlp1s0.config.wifi.infra.pairwiseCiphers = CCMP_TKIP + // net.interface.wlp1s0.config.wifi.infra.passphrase = + // net.interface.wlp1s0.config.wifi.infra.pingAccessPoint = false + // net.interface.wlp1s0.config.wifi.infra.radioMode = RADIO_MODE_80211b + // net.interface.wlp1s0.config.wifi.infra.securityType = SECURITY_NONE + // net.interface.wlp1s0.config.wifi.infra.ssid = + // net.interface.wlp1s0.config.wifi.master.bgscan = + // net.interface.wlp1s0.config.wifi.master.channel = 1 + // net.interface.wlp1s0.config.wifi.master.driver = nl80211 + // net.interface.wlp1s0.config.wifi.master.groupCiphers = CCMP_TKIP + // net.interface.wlp1s0.config.wifi.master.ignoreSSID = false + // net.interface.wlp1s0.config.wifi.master.mode = MASTER + // net.interface.wlp1s0.config.wifi.master.pairwiseCiphers = CCMP + // net.interface.wlp1s0.config.wifi.master.passphrase = + // qAHZ6ajx/QrkiLqh-F9x5ZNdnvw08Kl3TgU3um1FedDKuyKdB + // net.interface.wlp1s0.config.wifi.master.pingAccessPoint = false + // net.interface.wlp1s0.config.wifi.master.radioMode = RADIO_MODE_80211g + // net.interface.wlp1s0.config.wifi.master.securityType = SECURITY_WPA2 + // net.interface.wlp1s0.config.wifi.master.ssid = kura_gateway_0 + // net.interface.wlp1s0.config.wifi.mode = MASTER + // net.interface.wlp1s0.type = WIFI + // net.interfaces = enp5s0,lo,eno1,wlp1s0,1-4 + // service.pid = org.eclipse.kura.net.admin.NetworkConfigurationService + + // NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); + StringBuilder basePropName = new StringBuilder("net.interface."); + basePropName.append(config.getName()).append(".config."); - logger.debug("config.getStatus(): {}", GwtSafeHtmlUtils.htmlEscape(config.getStatus())); String status = config.getStatus(); + // logger.debug("config.getStatus(): {}", GwtSafeHtmlUtils.htmlEscape(config.getStatus())); + boolean autoConnect = true; if (GwtNetIfStatus.netIPv4StatusDisabled.name().equals(status)) { autoConnect = false; @@ -755,23 +867,27 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter try { // Interface status NetInterfaceStatus netInterfaceStatus; - if (config.getStatus().equals(GwtNetIfStatus.netIPv4StatusUnmanaged.name())) { + if (status.equals(GwtNetIfStatus.netIPv4StatusUnmanaged.name())) { netInterfaceStatus = NetInterfaceStatus.netIPv4StatusUnmanaged; - } else if (config.getStatus().equals(GwtNetIfStatus.netIPv4StatusL2Only.name())) { + } else if (status.equals(GwtNetIfStatus.netIPv4StatusL2Only.name())) { netInterfaceStatus = NetInterfaceStatus.netIPv4StatusL2Only; - } else if (config.getStatus().equals(GwtNetIfStatus.netIPv4StatusEnabledLAN.name())) { + } else if (status.equals(GwtNetIfStatus.netIPv4StatusEnabledLAN.name())) { netInterfaceStatus = NetInterfaceStatus.netIPv4StatusEnabledLAN; - } else if (config.getStatus().equals(GwtNetIfStatus.netIPv4StatusEnabledWAN.name())) { + } else if (status.equals(GwtNetIfStatus.netIPv4StatusEnabledWAN.name())) { netInterfaceStatus = NetInterfaceStatus.netIPv4StatusEnabledWAN; } else { netInterfaceStatus = NetInterfaceStatus.netIPv4StatusDisabled; } + StringBuilder statusPropName = new StringBuilder(basePropName.toString()).append("ip4.status"); + properties.put(statusPropName.toString(), netInterfaceStatus.name()); + + // cs.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", properties, true); // Set up configs - List netConfigs = new ArrayList<>(); + // List netConfigs = new ArrayList<>(); // Initialize NetConfigIP4 object - NetConfigIP4 netConfig4 = new NetConfigIP4(netInterfaceStatus, autoConnect); + // NetConfigIP4 netConfig4 = new NetConfigIP4(netInterfaceStatus, autoConnect); // build the appropriate NetConfig objects for ethernet type if (config.getHwTypeEnum() == GwtNetIfType.ETHERNET || config.getHwTypeEnum() == GwtNetIfType.WIFI @@ -779,25 +895,41 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter logger.debug("config.getConfigMode(): {}", config.getConfigMode()); String regexp = "[\\s,;\\n\\t]+"; + StringBuilder dhcpClientPropName = new StringBuilder(basePropName.toString()) + .append("dhcpClient4.enabled"); if (GwtNetIfConfigMode.netIPv4ConfigModeDHCP.name().equals(config.getConfigMode())) { logger.debug("mode is DHCP"); - netConfig4.setDhcp(true); + properties.put(dhcpClientPropName.toString(), true); + // netConfig4.setDhcp(true); } else { logger.debug("mode is STATIC"); - netConfig4.setDhcp(false); + properties.put(dhcpClientPropName.toString(), false); + // netConfig4.setDhcp(false); if (config.getIpAddress() != null && !config.getIpAddress().isEmpty()) { logger.debug("setting address: {}", config.getIpAddress()); - netConfig4.setAddress((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())); + StringBuilder addressPropName = new StringBuilder(basePropName.toString()) + .append("ip4.address"); + properties.put(addressPropName.toString(), + ((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())).getHostAddress()); + // netConfig4.setAddress((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())); } if (config.getSubnetMask() != null && !config.getSubnetMask().isEmpty()) { logger.debug("setting subnet mask: {}", config.getSubnetMask()); - netConfig4.setSubnetMask((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())); + StringBuilder netmaskPropName = new StringBuilder(basePropName.toString()) + .append("ip4.netmask"); + properties.put(netmaskPropName.toString(), + ((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())).getHostAddress()); + // netConfig4.setSubnetMask((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())); } if (config.getGateway() != null && !config.getGateway().isEmpty()) { logger.debug("setting gateway: {}", config.getGateway()); - netConfig4.setGateway((IP4Address) IPAddress.parseHostAddress(config.getGateway())); + StringBuilder gatewayPropName = new StringBuilder(basePropName.toString()) + .append("ip4.gateway"); + properties.put(gatewayPropName.toString(), + ((IP4Address) IPAddress.parseHostAddress(config.getGateway())).getHostAddress()); + // netConfig4.setGateway((IP4Address) IPAddress.parseHostAddress(config.getGateway())); } } @@ -812,25 +944,37 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter dnsServers.add(dnsServer); } } - netConfig4.setDnsServers(dnsServers); + StringBuilder dnsServerPropName = new StringBuilder(basePropName.toString()) + .append("ip4.dnsServers"); + if (!dnsServers.isEmpty()) { + StringBuilder dnsServersBuilder = new StringBuilder(); + dnsServers.forEach(dns -> dnsServersBuilder.append(dns.getHostAddress()).append(",")); + properties.put(dnsServerPropName.toString(), + dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); + } else { + properties.put(dnsServerPropName.toString(), ""); + } + // netConfig4.setDnsServers(dnsServers); } - netConfigs.add(netConfig4); + // netConfigs.add(netConfig4); // TODO - add IPv6 support later... // Set up DHCP and NAT if (GwtNetIfConfigMode.netIPv4ConfigModeManual.name().equals(config.getConfigMode())) { - List dhcpConfigs = getDhcpConfig(config); // <-- - if (dhcpConfigs != null) { - logger.debug("Adding dhcp and/or nat configs to interface update config"); - netConfigs.addAll(dhcpConfigs); - } + getDhcpConfig(config, properties, basePropName.toString()); + // List dhcpConfigs = getDhcpConfig(config); // <-- + // if (dhcpConfigs != null) { + // logger.debug("Adding dhcp and/or nat configs to interface update config"); + // netConfigs.addAll(dhcpConfigs); + // } + } if (config.getHwTypeEnum() == GwtNetIfType.ETHERNET) { - nas.updateEthernetInterfaceConfig(GwtSafeHtmlUtils.htmlEscape(config.getName()), autoConnect, - config.getHwMTU(), netConfigs); + // nas.updateEthernetInterfaceConfig(GwtSafeHtmlUtils.htmlEscape(config.getName()), autoConnect, + // config.getHwMTU(), netConfigs); } } @@ -840,61 +984,93 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter GwtWifiConfig gwtWifiConfig = ((GwtWifiNetInterfaceConfig) config).getActiveWifiConfig(); if (gwtWifiConfig != null) { - WifiConfig wifiConfig = getWifiConfig(gwtWifiConfig); - - String passKey = new String(wifiConfig.getPasskey().getPassword()); - if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { - - List result = privateFindNetInterfaceConfigurations(); - for (GwtNetInterfaceConfig netConfig : result) { - if (netConfig instanceof GwtWifiNetInterfaceConfig - && config.getName().equals(((GwtWifiNetInterfaceConfig) netConfig).getName())) { - GwtWifiNetInterfaceConfig oldWifiConfig = (GwtWifiNetInterfaceConfig) netConfig; - GwtWifiConfig oldGwtWifiConfig; - if (gwtWifiConfig.getWirelessMode() - .equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { - oldGwtWifiConfig = oldWifiConfig.getAccessPointWifiConfig(); - } else { - oldGwtWifiConfig = oldWifiConfig.getStationWifiConfig(); - } - - if (oldGwtWifiConfig != null) { - wifiConfig.setPasskey( - GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword())); - } - } - } - } else if (passKey != null && wifiConfig.getMode() == WifiMode.MASTER) { - validateUserPassword(passKey); - } - - netConfigs.add(wifiConfig); - nas.updateWifiInterfaceConfig(GwtSafeHtmlUtils.htmlEscape(config.getName()), autoConnect, null, - netConfigs); + // WifiConfig wifiConfig = getWifiConfig(gwtWifiConfig); + fillWifiProperties(gwtWifiConfig, properties, basePropName.toString(), config.getName()); + + // String passKey = new String(wifiConfig.getPasskey().getPassword()); + // if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { + // + // List result = privateFindNetInterfaceConfigurations(); + // for (GwtNetInterfaceConfig netConfig : result) { + // if (netConfig instanceof GwtWifiNetInterfaceConfig + // && config.getName().equals(((GwtWifiNetInterfaceConfig) netConfig).getName())) { + // GwtWifiNetInterfaceConfig oldWifiConfig = (GwtWifiNetInterfaceConfig) netConfig; + // GwtWifiConfig oldGwtWifiConfig; + // if (gwtWifiConfig.getWirelessMode() + // .equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { + // oldGwtWifiConfig = oldWifiConfig.getAccessPointWifiConfig(); + // } else { + // oldGwtWifiConfig = oldWifiConfig.getStationWifiConfig(); + // } + // + // if (oldGwtWifiConfig != null) { + // wifiConfig.setPasskey( + // GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword())); + // } + // } + // } + // } else if (passKey != null && wifiConfig.getMode() == WifiMode.MASTER) { + // validateUserPassword(passKey); + // } + + // netConfigs.add(wifiConfig); + // nas.updateWifiInterfaceConfig(GwtSafeHtmlUtils.htmlEscape(config.getName()), autoConnect, + // null, + // netConfigs); } } } else if (config.getHwTypeEnum() == GwtNetIfType.MODEM) { + // net.interface.1-4.config.activeFilter = inbound + // net.interface.1-4.config.authType = NONE + // net.interface.1-4.config.dhcpClient4.enabled = false + // net.interface.1-4.config.dhcpClient6.enabled = false + // net.interface.1-4.config.diversityEnabled = false + // net.interface.1-4.config.enabled = false + // net.interface.1-4.config.gpsEnabled = false + // net.interface.1-4.config.idle = 95 + // net.interface.1-4.config.ip4.address = + // net.interface.1-4.config.ip4.dnsServers = + // net.interface.1-4.config.ip4.gateway = + // net.interface.1-4.config.ip4.prefix = -1 + // net.interface.1-4.config.ip4.status = netIPv4StatusDisabled + // net.interface.1-4.config.ip6.dnsServers = + // net.interface.1-4.config.ip6.status = netIPv6StatusDisabled + // net.interface.1-4.config.ipAddress = + // net.interface.1-4.config.lcpEchoFailure = 0 + // net.interface.1-4.config.lcpEchoInterval = 0 + // net.interface.1-4.config.maxFail = 5 + // net.interface.1-4.config.password = + // net.interface.1-4.config.pdpType = IP + // net.interface.1-4.config.persist = true + // net.interface.1-4.config.resetTimeout = 5 + // net.interface.1-4.type = MODEM + if (config instanceof GwtModemInterfaceConfig) { GwtModemInterfaceConfig gwtModemConfig = (GwtModemInterfaceConfig) config; - ModemConfig modemConfig = new ModemConfig(); + // ModemConfig modemConfig = new ModemConfig(); String serialNum = gwtModemConfig.getHwSerial(); String modemId = gwtModemConfig.getModemId(); int pppNum = gwtModemConfig.getPppNum(); // modem enabled/disabled - if (netInterfaceStatus.equals(NetInterfaceStatus.netIPv4StatusEnabledWAN)) { - modemConfig.setEnabled(true); - } else { - modemConfig.setEnabled(false); - } + // if (netInterfaceStatus.equals(NetInterfaceStatus.netIPv4StatusEnabledWAN)) { + // modemConfig.setEnabled(true); + // } else { + // modemConfig.setEnabled(false); + // } + Boolean enabled = netInterfaceStatus.equals(NetInterfaceStatus.netIPv4StatusEnabledWAN); + properties.put(basePropName.append("enabled").toString(), enabled); + + // modemConfig.setApn(gwtModemConfig.getApn()); + properties.put(basePropName.append("apn").toString(), gwtModemConfig.getApn()); + // modemConfig.setPppNumber(gwtModemConfig.getPppNum()); + // modemConfig.setDataCompression(gwtModemConfig.getDataCompression()); ???? + properties.put(basePropName.append("dialString").toString(), gwtModemConfig.getDialString()); + // modemConfig.setDialString(gwtModemConfig.getDialString()); - modemConfig.setApn(gwtModemConfig.getApn()); - modemConfig.setPppNumber(gwtModemConfig.getPppNum()); - modemConfig.setDataCompression(gwtModemConfig.getDataCompression()); - modemConfig.setDialString(gwtModemConfig.getDialString()); - modemConfig.setHeaderCompression(gwtModemConfig.getHeaderCompression()); + // modemConfig.setHeaderCompression(gwtModemConfig.getHeaderCompression()); ???? String passKey = GwtSafeHtmlUtils.htmlUnescape(gwtModemConfig.getPassword()); if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { @@ -903,60 +1079,96 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter if (netConfig instanceof GwtModemInterfaceConfig) { GwtModemInterfaceConfig oldModemConfig = (GwtModemInterfaceConfig) netConfig; if (gwtModemConfig.getName().equals(oldModemConfig.getName())) { - modemConfig.setPassword(oldModemConfig.getPassword()); + CryptoService cryptpService = ServiceLocator.getInstance() + .getService(CryptoService.class); + char[] passphrase = cryptpService.encryptAes( + GwtSafeHtmlUtils.htmlUnescape(oldModemConfig.getPassword()).toCharArray()); + properties.put(basePropName.append("password").toString(), + new Password(passphrase)); + // modemConfig.setPassword(oldModemConfig.getPassword()); } } } } else if (passKey != null) { - modemConfig.setPassword(passKey); + CryptoService cryptpService = ServiceLocator.getInstance().getService(CryptoService.class); + char[] passphrase = cryptpService.encryptAes(passKey.toCharArray()); + properties.put(basePropName.append("password").toString(), new Password(passphrase)); + // modemConfig.setPassword(passKey); } - modemConfig.setUsername(gwtModemConfig.getUsername()); - modemConfig.setResetTimeout(gwtModemConfig.getResetTimeout()); - modemConfig.setPersist(gwtModemConfig.isPersist()); - modemConfig.setMaxFail(gwtModemConfig.getMaxFail()); - modemConfig.setIdle(gwtModemConfig.getIdle()); - modemConfig.setActiveFilter(gwtModemConfig.getActiveFilter()); - modemConfig.setLcpEchoInterval(gwtModemConfig.getLcpEchoInterval()); - modemConfig.setLcpEchoFailure(gwtModemConfig.getLcpEchoFailure()); - modemConfig.setGpsEnabled(gwtModemConfig.isGpsEnabled()); - modemConfig.setDiversityEnabled(gwtModemConfig.isDiversityEnabled()); + // modemConfig.setUsername(gwtModemConfig.getUsername()); + properties.put(basePropName.append("username").toString(), gwtModemConfig.getUsername()); + // modemConfig.setResetTimeout(gwtModemConfig.getResetTimeout()); + properties.put(basePropName.append("resetTimeout").toString(), gwtModemConfig.getResetTimeout()); + // modemConfig.setPersist(gwtModemConfig.isPersist()); + properties.put(basePropName.append("persist").toString(), gwtModemConfig.isPersist()); + // modemConfig.setMaxFail(gwtModemConfig.getMaxFail()); + properties.put(basePropName.append("maxFail").toString(), gwtModemConfig.getMaxFail()); + // modemConfig.setIdle(gwtModemConfig.getIdle()); + properties.put(basePropName.append("idle").toString(), gwtModemConfig.getIdle()); + // modemConfig.setActiveFilter(gwtModemConfig.getActiveFilter()); + properties.put(basePropName.append("activeFilter").toString(), gwtModemConfig.getActiveFilter()); + // modemConfig.setLcpEchoInterval(gwtModemConfig.getLcpEchoInterval()); + properties.put(basePropName.append("lcpEchoInterval").toString(), + gwtModemConfig.getLcpEchoInterval()); + // modemConfig.setLcpEchoFailure(gwtModemConfig.getLcpEchoFailure()); + properties.put(basePropName.append("lcpEchoFailure").toString(), + gwtModemConfig.getLcpEchoFailure()); + // modemConfig.setGpsEnabled(gwtModemConfig.isGpsEnabled()); + properties.put(basePropName.append("gpsEnabled").toString(), gwtModemConfig.isGpsEnabled()); + // modemConfig.setDiversityEnabled(gwtModemConfig.isDiversityEnabled()); + properties.put(basePropName.append("diversityEnabled").toString(), + gwtModemConfig.isDiversityEnabled()); GwtModemAuthType authType = gwtModemConfig.getAuthType(); if (authType != null) { if (authType.equals(GwtModemAuthType.netModemAuthNONE)) { - modemConfig.setAuthType(ModemConfig.AuthType.NONE); + properties.put(basePropName.append("authType").toString(), + ModemConfig.AuthType.NONE.name()); + // modemConfig.setAuthType(ModemConfig.AuthType.NONE); } else if (authType.equals(GwtModemAuthType.netModemAuthAUTO)) { - modemConfig.setAuthType(ModemConfig.AuthType.AUTO); + properties.put(basePropName.append("authType").toString(), + ModemConfig.AuthType.AUTO.name()); + // modemConfig.setAuthType(ModemConfig.AuthType.AUTO); } else if (authType.equals(GwtModemAuthType.netModemAuthCHAP)) { - modemConfig.setAuthType(ModemConfig.AuthType.CHAP); + properties.put(basePropName.append("authType").toString(), + ModemConfig.AuthType.CHAP.name()); + // modemConfig.setAuthType(ModemConfig.AuthType.CHAP); } else if (authType.equals(GwtModemAuthType.netModemAuthPAP)) { - modemConfig.setAuthType(ModemConfig.AuthType.PAP); + properties.put(basePropName.append("authType").toString(), ModemConfig.AuthType.PAP.name()); + // modemConfig.setAuthType(ModemConfig.AuthType.PAP); } } GwtModemPdpType pdpType = gwtModemConfig.getPdpType(); if (pdpType != null) { if (pdpType.equals(GwtModemPdpType.netModemPdpIP)) { - modemConfig.setPdpType(ModemConfig.PdpType.IP); + properties.put(basePropName.append("pdpType").toString(), ModemConfig.PdpType.IP.name()); + // modemConfig.setPdpType(ModemConfig.PdpType.IP); } else if (pdpType.equals(GwtModemPdpType.netModemPdpIPv6)) { - modemConfig.setPdpType(ModemConfig.PdpType.IPv6); + properties.put(basePropName.append("pdpType").toString(), ModemConfig.PdpType.IPv6.name()); + // modemConfig.setPdpType(ModemConfig.PdpType.IPv6); } else if (pdpType.equals(GwtModemPdpType.netModemPdpPPP)) { - modemConfig.setPdpType(ModemConfig.PdpType.PPP); + properties.put(basePropName.append("pdpType").toString(), ModemConfig.PdpType.PPP.name()); + // modemConfig.setPdpType(ModemConfig.PdpType.PPP); } else { - modemConfig.setPdpType(ModemConfig.PdpType.UNKNOWN); + properties.put(basePropName.append("pdpType").toString(), + ModemConfig.PdpType.UNKNOWN.name()); + // modemConfig.setPdpType(ModemConfig.PdpType.UNKNOWN); } } - netConfigs.add(modemConfig); + // netConfigs.add(modemConfig); - nas.updateModemInterfaceConfig(config.getName(), serialNum, modemId, pppNum, autoConnect, -1, - netConfigs); + // nas.updateModemInterfaceConfig(config.getName(), serialNum, modemId, pppNum, autoConnect, -1, + // netConfigs); } } else { // TODO - more types } + cs.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", properties, true); + } catch (Exception e) { logger.warn("Failed", e); throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); @@ -1248,53 +1460,95 @@ public ArrayList findDeviceFirewallNATs(GwtXSRFToken xsrfTo // // ------------------------------------------------------------------------------------- - private List getDhcpConfig(GwtNetInterfaceConfig config) throws KuraException { + // private List getDhcpConfig(GwtNetInterfaceConfig config) throws KuraException { + private void getDhcpConfig(GwtNetInterfaceConfig config, Map properties, String basePropName) + throws KuraException { // Setup the DHCP and NAT if necessary + + // net.interface.eno1.config.dhcpClient4.enabled = false + // net.interface.eno1.config.dhcpServer4.defaultLeaseTime = 7200 + // net.interface.eno1.config.dhcpServer4.enabled = true + // net.interface.eno1.config.dhcpServer4.maxLeaseTime = 7200 + // net.interface.eno1.config.dhcpServer4.passDns = false + // net.interface.eno1.config.dhcpServer4.prefix = 24 + // net.interface.eno1.config.dhcpServer4.rangeEnd = 172.16.0.110 + // net.interface.eno1.config.dhcpServer4.rangeStart = 172.16.0.100 + String routerMode = config.getRouterMode(); if (routerMode.equals(GwtNetRouterMode.netRouterOff.name())) { logger.debug("DCHP and NAT are disabled"); - return null; + return; } else if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) || routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { try { - List netConfigs = new ArrayList<>(); + // List netConfigs = new ArrayList<>(); if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name())) { - int defaultLeaseTime = config.getRouterDhcpDefaultLease(); - int maximumLeaseTime = config.getRouterDhcpMaxLease(); - IP4Address routerAddress = (IP4Address) IPAddress.parseHostAddress(config.getIpAddress()); - IP4Address rangeStart = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress()); - IP4Address rangeEnd = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress()); - boolean passDns = config.getRouterDnsPass(); - + StringBuilder defaultLeaseTimePropName = new StringBuilder(basePropName) + .append("dhcpServer4.defaultLeaseTime"); + properties.put(defaultLeaseTimePropName.toString(), config.getRouterDhcpDefaultLease()); + // int defaultLeaseTime = config.getRouterDhcpDefaultLease(); + StringBuilder maximumLeaseTimePropName = new StringBuilder(basePropName) + .append("dhcpServer4.maxLeaseTime"); + properties.put(maximumLeaseTimePropName.toString(), config.getRouterDhcpMaxLease()); + // int maximumLeaseTime = config.getRouterDhcpMaxLease(); + // StringBuilder routerAddressPropName = new + // StringBuilder(basePropName.toString()).append("dhcpServer4.maxLeaseTime"); ?????? + // properties.put(routerAddressPropName.toString(), ((IP4Address) + // IPAddress.parseHostAddress(config.getIpAddress())).getHostAddress()); + // IP4Address routerAddress = (IP4Address) IPAddress.parseHostAddress(config.getIpAddress()); + StringBuilder rangeStartPropName = new StringBuilder(basePropName).append("dhcpServer4.rangeStart"); + properties.put(rangeStartPropName.toString(), + ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress())) + .getHostAddress()); + // IP4Address rangeStart = (IP4Address) + // IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress()); + StringBuilder rangeEndPropName = new StringBuilder(basePropName).append("dhcpServer4.rangeEnd"); + properties.put(rangeEndPropName.toString(), + ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress())) + .getHostAddress()); + // IP4Address rangeEnd = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress()); + StringBuilder passDnsPropName = new StringBuilder(basePropName).append("dhcpServer4.passDns"); + properties.put(passDnsPropName.toString(), config.getRouterDnsPass()); + // boolean passDns = config.getRouterDnsPass(); + + StringBuilder prefixPropName = new StringBuilder(basePropName).append("dhcpServer4.prefix"); IP4Address subnetMask = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpSubnetMask()); - IP4Address subnet = (IP4Address) IPAddress.parseHostAddress( - NetworkUtil.calculateNetwork(config.getIpAddress(), config.getSubnetMask())); + // IP4Address subnet = (IP4Address) IPAddress.parseHostAddress( + // NetworkUtil.calculateNetwork(config.getIpAddress(), config.getSubnetMask())); short prefix = NetworkUtil.getNetmaskShortForm(subnetMask.getHostAddress()); + properties.put(prefixPropName.toString(), prefix); // Use our IP as the DNS server and we'll use named to proxy DNS queries + StringBuilder dnsServerPropName = new StringBuilder(basePropName.toString()) + .append("ip4.dnsServers"); List dnsServers = new ArrayList<>(); dnsServers.add((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())); - - logger.debug("DhcpServerConfigIP4 - start: {}, end: {}, prefix: {}, subnet: {}, subnetMask: {}", - new Object[] { rangeStart.getHostAddress(), rangeEnd.getHostAddress(), prefix, - subnet.getHostAddress(), subnetMask.getHostAddress() }); - try { - DhcpServerCfg dhcpServerCfg = new DhcpServerCfg(config.getName(), true, defaultLeaseTime, - maximumLeaseTime, passDns); - DhcpServerCfgIP4 dhcpServerCfgIP4 = new DhcpServerCfgIP4(subnet, subnetMask, prefix, - routerAddress, rangeStart, rangeEnd, dnsServers); - netConfigs.add(new DhcpServerConfigIP4(dhcpServerCfg, dhcpServerCfgIP4)); - } catch (KuraException e) { - logger.error( - "Failed to create new DhcpServerConfigIP4 object. Please verify that DHCP pool IP addresses (see below) are in the {} subnet.", - subnet.getHostAddress()); - logger.error("DHCP Pool: range from {} to {}", rangeStart.getHostAddress(), - rangeEnd.getHostAddress()); - logger.error("Exception: ", e); - } + StringBuilder dnsServersBuilder = new StringBuilder(); + dnsServers.forEach(dns -> dnsServersBuilder.append(dns.getHostAddress()).append(",")); + properties.put(dnsServerPropName.toString(), + dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); + + // logger.debug("DhcpServerConfigIP4 - start: {}, end: {}, prefix: {}, subnet: {}, subnetMask: {}", + // new Object[] { rangeStart.getHostAddress(), rangeEnd.getHostAddress(), prefix, + // subnet.getHostAddress(), subnetMask.getHostAddress() }); + // try { + // DhcpServerCfg dhcpServerCfg = new DhcpServerCfg(config.getName(), true, defaultLeaseTime, + // maximumLeaseTime, passDns); + // DhcpServerCfgIP4 dhcpServerCfgIP4 = new DhcpServerCfgIP4(subnet, subnetMask, prefix, + // routerAddress, rangeStart, rangeEnd, dnsServers); + // netConfigs.add(new DhcpServerConfigIP4(dhcpServerCfg, dhcpServerCfgIP4)); + // } catch (KuraException e) { + // logger.error( + // "Failed to create new DhcpServerConfigIP4 object. Please verify that DHCP pool IP addresses (see + // below) are in the {} subnet.", + // subnet.getHostAddress()); + // logger.error("DHCP Pool: range from {} to {}", rangeStart.getHostAddress(), + // rangeEnd.getHostAddress()); + // logger.error("Exception: ", e); + // } } if (routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) @@ -1313,11 +1567,11 @@ private List getDhcpConfig(GwtNetInterfaceConfig config) throws KuraE boolean masquerade = true; FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, - masquerade); - netConfigs.add(natConfig); + masquerade); // ???????? + // netConfigs.add(natConfig); } - return netConfigs; + // return netConfigs; } catch (Exception e) { throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, e); } @@ -1534,14 +1788,200 @@ private WifiConfig getWifiConfig(GwtWifiConfig gwtWifiConfig) throws GwtKuraExce return wifiConfig; } + // private WifiConfig getWifiConfig(GwtWifiConfig gwtWifiConfig) throws GwtKuraException { + private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map properties, String basePropName, + String interfaceName) throws GwtKuraException { + // net.interface.wlp1s0.config.dhcpClient4.enabled = false + // net.interface.wlp1s0.config.dhcpClient6.enabled = false + // net.interface.wlp1s0.config.ip4.address = + // net.interface.wlp1s0.config.ip4.dnsServers = + // net.interface.wlp1s0.config.ip4.gateway = + // net.interface.wlp1s0.config.ip4.prefix = 24 + // net.interface.wlp1s0.config.ip4.status = netIPv4StatusDisabled + // net.interface.wlp1s0.config.ip6.dnsServers = + // net.interface.wlp1s0.config.ip6.status = netIPv6StatusDisabled + // net.interface.wlp1s0.config.wifi.infra.bgscan = + // net.interface.wlp1s0.config.wifi.infra.channel = 1 + // net.interface.wlp1s0.config.wifi.infra.driver = nl80211 + // net.interface.wlp1s0.config.wifi.infra.groupCiphers = CCMP_TKIP + // net.interface.wlp1s0.config.wifi.infra.ignoreSSID = false + // net.interface.wlp1s0.config.wifi.infra.mode = INFRA + // net.interface.wlp1s0.config.wifi.infra.pairwiseCiphers = CCMP_TKIP + // net.interface.wlp1s0.config.wifi.infra.passphrase = + // net.interface.wlp1s0.config.wifi.infra.pingAccessPoint = false + // net.interface.wlp1s0.config.wifi.infra.radioMode = RADIO_MODE_80211b + // net.interface.wlp1s0.config.wifi.infra.securityType = SECURITY_NONE + // net.interface.wlp1s0.config.wifi.infra.ssid = + // net.interface.wlp1s0.config.wifi.master.bgscan = + // net.interface.wlp1s0.config.wifi.master.channel = 1 + // net.interface.wlp1s0.config.wifi.master.driver = nl80211 + // net.interface.wlp1s0.config.wifi.master.groupCiphers = CCMP_TKIP + // net.interface.wlp1s0.config.wifi.master.ignoreSSID = false + // net.interface.wlp1s0.config.wifi.master.mode = MASTER + // net.interface.wlp1s0.config.wifi.master.pairwiseCiphers = CCMP + // net.interface.wlp1s0.config.wifi.master.passphrase = + // qAHZ6ajx/QrkiLqh-F9x5ZNdnvw08Kl3TgU3um1FedDKuyKdB + // net.interface.wlp1s0.config.wifi.master.pingAccessPoint = false + // net.interface.wlp1s0.config.wifi.master.radioMode = RADIO_MODE_80211g + // net.interface.wlp1s0.config.wifi.master.securityType = SECURITY_WPA2 + // net.interface.wlp1s0.config.wifi.master.ssid = kura_gateway_0 + // net.interface.wlp1s0.config.wifi.mode = MASTER + // net.interface.wlp1s0.type = WIFI + + // WifiConfig wifiConfig = new WifiConfig(); + StringBuilder wifiBasePropName = new StringBuilder(basePropName).append("wifi."); + + // WifiMode wifiMode = getWifiConfigWirelessMode(gwtWifiConfig.getWirelessMode()); + // wifiConfig.setMode(wifiMode); + String mode = gwtWifiConfig.getWirelessMode(); + String wifiMode; + StringBuilder wifiModeBasePropName = new StringBuilder(wifiBasePropName); + if (mode != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { + wifiMode = WifiMode.MASTER.name(); + wifiModeBasePropName.append("master."); + } else if (mode != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeStation.name())) { + wifiMode = WifiMode.INFRA.name(); + wifiModeBasePropName.append("infra."); + } else if (mode != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAdHoc.name())) { + wifiMode = WifiMode.ADHOC.name(); + } else { + wifiMode = WifiMode.UNKNOWN.name(); + } + properties.put(wifiBasePropName.append("mode").toString(), wifiMode); + + // wifiConfig.setSSID(GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getWirelessSsid())); + properties.put(wifiModeBasePropName.toString() + "ssid", + GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getWirelessSsid())); + + // wifiConfig.setDriver(gwtWifiConfig.getDriver()); + properties.put(wifiModeBasePropName.toString() + "driver", gwtWifiConfig.getDriver()); + + // WifiRadioMode wifiRadioMode = getWifiConfigRadioMode(gwtWifiConfig.getRadioModeEnum()); + // wifiConfig.setRadioMode(wifiRadioMode); + properties.put(wifiModeBasePropName.toString() + "radioMode", + getWifiConfigRadioMode(gwtWifiConfig.getRadioModeEnum()).name()); + + // ???? + // String hardwareMode = gwtWifiConfig.getRadioModeEnum().getRadioMode(); + // wifiConfig.setHardwareMode(hardwareMode); + + int[] wifiConfigChannels = getWifiConfigChannels(gwtWifiConfig.getChannels()); + String wifiConfigChannelsPropName = wifiModeBasePropName.toString() + "channel"; + if (wifiConfigChannels.length > 0) { + StringBuilder wifiConfigChannelsStringBuilder = new StringBuilder(); + for (int i = 0; i < wifiConfigChannels.length; i++) { + wifiConfigChannelsStringBuilder.append(String.valueOf(wifiConfigChannels[i])); + if (i != wifiConfigChannels.length - 1) { + wifiConfigChannelsStringBuilder.append(" "); + } + } + properties.put(wifiConfigChannelsPropName, wifiConfigChannelsStringBuilder.toString()); + // wifiConfig.setChannels(wifiConfigChannels); + } + + WifiSecurity wifiSecurity = getWifiConfigSecurity(gwtWifiConfig.getSecurity()); + properties.put(wifiModeBasePropName.toString() + "securityType", wifiSecurity.name()); + // wifiConfig.setSecurity(wifiSecurity); + + WifiCiphers wifiPairwiseCiphers = getWifiConfigCiphers(gwtWifiConfig.getPairwiseCiphers()); + if (wifiPairwiseCiphers != null) { + properties.put(wifiModeBasePropName.toString() + "pairwiseCiphers", wifiPairwiseCiphers.name()); + // wifiConfig.setPairwiseCiphers(wifiPairwiseCiphers); + } + + WifiCiphers wifiGroupCiphers = getWifiConfigCiphers(gwtWifiConfig.getGroupCiphers()); + if (wifiGroupCiphers != null) { + properties.put(wifiModeBasePropName.toString() + "groupCiphers", wifiGroupCiphers.name()); + // wifiConfig.setGroupCiphers(wifiGroupCiphers); + } + + WifiBgscan wifiBgscan = getWifiConfigBgscan(gwtWifiConfig, gwtWifiConfig.getBgscanModule()); + if (wifiBgscan.getModule().equals(WifiBgscanModule.NONE)) { + properties.put(wifiModeBasePropName.toString() + "bgscan", null); + } else { + String wifiBgscanString = wifiBgscan.getModule().name().toLowerCase() + ":" + wifiBgscan.getRssiThreshold() + + ":" + wifiBgscan.getShortInterval() + ":" + wifiBgscan.getLongInterval(); + properties.put(wifiModeBasePropName.toString() + "bgscan", wifiBgscanString); + } + // wifiConfig.setBgscan(wifiBgscan); + + // wifiConfig.setPasskey(GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getPassword())); + // CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); + // try { + // char[] passphrase = cs.encryptAes(GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getPassword()).toCharArray()); + // properties.put(wifiModeBasePropName.append("passphrase").toString(), new Password(passphrase)); + // } catch (KuraException e) { + // throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? + // } + + String passKey = GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getPassword()); + if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { + + List result = privateFindNetInterfaceConfigurations(); + for (GwtNetInterfaceConfig netConfig : result) { + if (netConfig instanceof GwtWifiNetInterfaceConfig + && interfaceName.equals(((GwtWifiNetInterfaceConfig) netConfig).getName())) { + GwtWifiNetInterfaceConfig oldWifiConfig = (GwtWifiNetInterfaceConfig) netConfig; + GwtWifiConfig oldGwtWifiConfig; + if (mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { + oldGwtWifiConfig = oldWifiConfig.getAccessPointWifiConfig(); + } else { + oldGwtWifiConfig = oldWifiConfig.getStationWifiConfig(); + } + try { + if (oldGwtWifiConfig != null) { + CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); + char[] passphrase = cs.encryptAes( + GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword()).toCharArray()); + properties.put(wifiModeBasePropName.toString() + "passphrase", new Password(passphrase)); + // wifiConfig.setPasskey(GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword())); + } + } catch (KuraException e) { + throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? + } + } + } + } else if (passKey != null && mode.equalsIgnoreCase(WifiMode.MASTER.name())) { + validateUserPassword(passKey); + try { + CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); + char[] passphrase = cs.encryptAes(passKey.toCharArray()); + properties.put(wifiModeBasePropName.toString() + "passphrase", new Password(passphrase)); + } catch (KuraException e) { + throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? + } + } else { + try { + CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); + char[] passphrase = cs.encryptAes(passKey.toCharArray()); + properties.put(wifiModeBasePropName.toString() + "passphrase", new Password(passphrase)); + } catch (KuraException e) { + throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? + } + } + + // wifiConfig.setPingAccessPoint(gwtWifiConfig.pingAccessPoint()); + properties.put(wifiModeBasePropName.toString() + "pingAccessPoint", gwtWifiConfig.pingAccessPoint()); + + // wifiConfig.setIgnoreSSID(gwtWifiConfig.ignoreSSID()); + properties.put(wifiModeBasePropName.toString() + "ignoreSSID", gwtWifiConfig.ignoreSSID()); + + // ???? + // wifiConfig.setBroadcast(!gwtWifiConfig.ignoreSSID()); + + // wifiConfig.setWifiCountryCode(gwtWifiConfig.getCountryCode()); + + // return wifiConfig; + } + private WifiBgscan getWifiConfigBgscan(GwtWifiConfig gwtWifiConfig, String bgscanModule) { WifiBgscanModule wifiBgscanModule = null; - if (GwtWifiBgscanModule.netWifiBgscanMode_NONE.name().equals(bgscanModule)) { - wifiBgscanModule = WifiBgscanModule.NONE; - } else if (GwtWifiBgscanModule.netWifiBgscanMode_SIMPLE.name().equals(bgscanModule)) { + if (GwtWifiBgscanModule.netWifiBgscanMode_SIMPLE.name().equals(bgscanModule)) { wifiBgscanModule = WifiBgscanModule.SIMPLE; } else if (GwtWifiBgscanModule.netWifiBgscanMode_LEARN.name().equals(bgscanModule)) { wifiBgscanModule = WifiBgscanModule.LEARN; + } else { + wifiBgscanModule = WifiBgscanModule.NONE; } int bgscanRssiThreshold = gwtWifiConfig.getBgscanRssiThreshold(); @@ -1557,7 +1997,7 @@ private WifiCiphers getWifiConfigCiphers(String ciphers) { wifiCiphers = WifiCiphers.CCMP_TKIP; } else if (GwtWifiCiphers.netWifiCiphers_TKIP.name().equals(ciphers)) { wifiCiphers = WifiCiphers.TKIP; - } else if (GwtWifiCiphers.netWifiCiphers_CCMP.name().equals(ciphers)) { + } else { wifiCiphers = WifiCiphers.CCMP; } return wifiCiphers; From f5c3455badba91706dadf6e467d4e6dad98a936f Mon Sep 17 00:00:00 2001 From: Merlino Date: Tue, 26 Apr 2022 15:28:28 +0200 Subject: [PATCH 02/17] Fixed wifi password management Signed-off-by: Merlino --- .../web/server/GwtNetworkServiceImpl.java | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index ba7927edaa9..edca5e970ec 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -1834,7 +1834,7 @@ private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map // WifiMode wifiMode = getWifiConfigWirelessMode(gwtWifiConfig.getWirelessMode()); // wifiConfig.setMode(wifiMode); String mode = gwtWifiConfig.getWirelessMode(); - String wifiMode; + String wifiMode = WifiMode.UNKNOWN.name(); StringBuilder wifiModeBasePropName = new StringBuilder(wifiBasePropName); if (mode != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { wifiMode = WifiMode.MASTER.name(); @@ -1843,8 +1843,10 @@ private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map wifiMode = WifiMode.INFRA.name(); wifiModeBasePropName.append("infra."); } else if (mode != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAdHoc.name())) { + // ???? wifiMode = WifiMode.ADHOC.name(); } else { + // ???? wifiMode = WifiMode.UNKNOWN.name(); } properties.put(wifiBasePropName.append("mode").toString(), wifiMode); @@ -1899,8 +1901,8 @@ private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map if (wifiBgscan.getModule().equals(WifiBgscanModule.NONE)) { properties.put(wifiModeBasePropName.toString() + "bgscan", null); } else { - String wifiBgscanString = wifiBgscan.getModule().name().toLowerCase() + ":" + wifiBgscan.getRssiThreshold() - + ":" + wifiBgscan.getShortInterval() + ":" + wifiBgscan.getLongInterval(); + String wifiBgscanString = wifiBgscan.getModule().name().toLowerCase() + ":" + wifiBgscan.getShortInterval() + + ":" + wifiBgscan.getRssiThreshold() + ":" + wifiBgscan.getLongInterval(); properties.put(wifiModeBasePropName.toString() + "bgscan", wifiBgscanString); } // wifiConfig.setBgscan(wifiBgscan); @@ -1928,20 +1930,21 @@ private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map } else { oldGwtWifiConfig = oldWifiConfig.getStationWifiConfig(); } - try { - if (oldGwtWifiConfig != null) { - CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); - char[] passphrase = cs.encryptAes( - GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword()).toCharArray()); - properties.put(wifiModeBasePropName.toString() + "passphrase", new Password(passphrase)); - // wifiConfig.setPasskey(GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword())); - } - } catch (KuraException e) { - throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? + // try { + if (oldGwtWifiConfig != null) { + // CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); + // char[] passphrase = cs.encryptAes( + // GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword()).toCharArray()); + properties.put(wifiModeBasePropName.toString() + "passphrase", + new Password(GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword()))); + // wifiConfig.setPasskey(GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword())); } + // } catch (KuraException e) { + // throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? + // } } } - } else if (passKey != null && mode.equalsIgnoreCase(WifiMode.MASTER.name())) { + } else if (passKey != null && wifiMode.equalsIgnoreCase(WifiMode.MASTER.name())) { validateUserPassword(passKey); try { CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); From 979d983cbc6550f5643aaefd04b0ed55406f6d80 Mon Sep 17 00:00:00 2001 From: Merlino Date: Wed, 27 Apr 2022 09:47:50 +0200 Subject: [PATCH 03/17] Fixed netmask and dhcp config Signed-off-by: Merlino --- .../web/server/GwtNetworkServiceImpl.java | 256 +++++++++++------- 1 file changed, 154 insertions(+), 102 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index edca5e970ec..306589c8c6d 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -917,10 +917,10 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter if (config.getSubnetMask() != null && !config.getSubnetMask().isEmpty()) { logger.debug("setting subnet mask: {}", config.getSubnetMask()); - StringBuilder netmaskPropName = new StringBuilder(basePropName.toString()) - .append("ip4.netmask"); - properties.put(netmaskPropName.toString(), + StringBuilder prefixPropName = new StringBuilder(basePropName.toString()).append("ip4.prefix"); + short prefix = NetworkUtil.getNetmaskShortForm( ((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())).getHostAddress()); + properties.put(prefixPropName.toString(), prefix); // netConfig4.setSubnetMask((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())); } if (config.getGateway() != null && !config.getGateway().isEmpty()) { @@ -1462,7 +1462,7 @@ public ArrayList findDeviceFirewallNATs(GwtXSRFToken xsrfTo // private List getDhcpConfig(GwtNetInterfaceConfig config) throws KuraException { private void getDhcpConfig(GwtNetInterfaceConfig config, Map properties, String basePropName) - throws KuraException { + throws KuraException, UnknownHostException { // Setup the DHCP and NAT if necessary // net.interface.eno1.config.dhcpClient4.enabled = false @@ -1475,110 +1475,162 @@ private void getDhcpConfig(GwtNetInterfaceConfig config, Map pro // net.interface.eno1.config.dhcpServer4.rangeStart = 172.16.0.100 String routerMode = config.getRouterMode(); + StringBuilder dhcpServer4PropName = new StringBuilder(basePropName).append("dhcpServer4."); if (routerMode.equals(GwtNetRouterMode.netRouterOff.name())) { logger.debug("DCHP and NAT are disabled"); - return; - } else if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) - || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) - || routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { - try { - // List netConfigs = new ArrayList<>(); - - if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) - || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name())) { - StringBuilder defaultLeaseTimePropName = new StringBuilder(basePropName) - .append("dhcpServer4.defaultLeaseTime"); - properties.put(defaultLeaseTimePropName.toString(), config.getRouterDhcpDefaultLease()); - // int defaultLeaseTime = config.getRouterDhcpDefaultLease(); - StringBuilder maximumLeaseTimePropName = new StringBuilder(basePropName) - .append("dhcpServer4.maxLeaseTime"); - properties.put(maximumLeaseTimePropName.toString(), config.getRouterDhcpMaxLease()); - // int maximumLeaseTime = config.getRouterDhcpMaxLease(); - // StringBuilder routerAddressPropName = new - // StringBuilder(basePropName.toString()).append("dhcpServer4.maxLeaseTime"); ?????? - // properties.put(routerAddressPropName.toString(), ((IP4Address) - // IPAddress.parseHostAddress(config.getIpAddress())).getHostAddress()); - // IP4Address routerAddress = (IP4Address) IPAddress.parseHostAddress(config.getIpAddress()); - StringBuilder rangeStartPropName = new StringBuilder(basePropName).append("dhcpServer4.rangeStart"); - properties.put(rangeStartPropName.toString(), - ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress())) - .getHostAddress()); - // IP4Address rangeStart = (IP4Address) - // IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress()); - StringBuilder rangeEndPropName = new StringBuilder(basePropName).append("dhcpServer4.rangeEnd"); - properties.put(rangeEndPropName.toString(), - ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress())) - .getHostAddress()); - // IP4Address rangeEnd = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress()); - StringBuilder passDnsPropName = new StringBuilder(basePropName).append("dhcpServer4.passDns"); - properties.put(passDnsPropName.toString(), config.getRouterDnsPass()); - // boolean passDns = config.getRouterDnsPass(); - - StringBuilder prefixPropName = new StringBuilder(basePropName).append("dhcpServer4.prefix"); - IP4Address subnetMask = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpSubnetMask()); - // IP4Address subnet = (IP4Address) IPAddress.parseHostAddress( - // NetworkUtil.calculateNetwork(config.getIpAddress(), config.getSubnetMask())); - short prefix = NetworkUtil.getNetmaskShortForm(subnetMask.getHostAddress()); - properties.put(prefixPropName.toString(), prefix); - - // Use our IP as the DNS server and we'll use named to proxy DNS queries - StringBuilder dnsServerPropName = new StringBuilder(basePropName.toString()) - .append("ip4.dnsServers"); - List dnsServers = new ArrayList<>(); - dnsServers.add((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())); - StringBuilder dnsServersBuilder = new StringBuilder(); - dnsServers.forEach(dns -> dnsServersBuilder.append(dns.getHostAddress()).append(",")); - properties.put(dnsServerPropName.toString(), - dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); - - // logger.debug("DhcpServerConfigIP4 - start: {}, end: {}, prefix: {}, subnet: {}, subnetMask: {}", - // new Object[] { rangeStart.getHostAddress(), rangeEnd.getHostAddress(), prefix, - // subnet.getHostAddress(), subnetMask.getHostAddress() }); - // try { - // DhcpServerCfg dhcpServerCfg = new DhcpServerCfg(config.getName(), true, defaultLeaseTime, - // maximumLeaseTime, passDns); - // DhcpServerCfgIP4 dhcpServerCfgIP4 = new DhcpServerCfgIP4(subnet, subnetMask, prefix, - // routerAddress, rangeStart, rangeEnd, dnsServers); - // netConfigs.add(new DhcpServerConfigIP4(dhcpServerCfg, dhcpServerCfgIP4)); - // } catch (KuraException e) { - // logger.error( - // "Failed to create new DhcpServerConfigIP4 object. Please verify that DHCP pool IP addresses (see - // below) are in the {} subnet.", - // subnet.getHostAddress()); - // logger.error("DHCP Pool: range from {} to {}", rangeStart.getHostAddress(), - // rangeEnd.getHostAddress()); - // logger.error("Exception: ", e); - // } - } - - if (routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) - || routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { - - /* - * IPAddress m_sourceNetwork; //192.168.1.0 - * IPAddress m_netmask; //255.255.255.0 - * String m_sourceInterface; //eth0 - * String m_destinationInterface; //ppp0 or something similar - * boolean m_masquerade; //yes - */ - - String sourceInterface = config.getName(); - String destinationInterface = "unknown"; // dynamic and defined at runtime - boolean masquerade = true; - - FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, - masquerade); // ???????? - // netConfigs.add(natConfig); - } - - // return netConfigs; - } catch (Exception e) { - throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, e); - } + properties.put(dhcpServer4PropName.toString() + "enabled", false); + properties.put(basePropName.toString() + "nat.enabled", false); + } else if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name())) { + fillDhcpServerProperties(config, properties, basePropName); + properties.put(basePropName.toString() + "nat.enabled", false); + } else if (routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name())) { + fillDhcpServerProperties(config, properties, basePropName); + /* + * IPAddress m_sourceNetwork; //192.168.1.0 + * IPAddress m_netmask; //255.255.255.0 + * String m_sourceInterface; //eth0 + * String m_destinationInterface; //ppp0 or something similar + * boolean m_masquerade; //yes + */ + + // String sourceInterface = config.getName(); + // String destinationInterface = "unknown"; // dynamic and defined at runtime + // boolean masquerade = true; + // + // FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, + // masquerade); // ???????? + // netConfigs.add(natConfig); + properties.put(basePropName.toString() + "nat.enabled", true); + } else if (routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { + properties.put(dhcpServer4PropName.toString() + "enabled", false); + properties.put(basePropName.toString() + "nat.enabled", true); + /* + * IPAddress m_sourceNetwork; //192.168.1.0 + * IPAddress m_netmask; //255.255.255.0 + * String m_sourceInterface; //eth0 + * String m_destinationInterface; //ppp0 or something similar + * boolean m_masquerade; //yes + */ + + // String sourceInterface = config.getName(); + // String destinationInterface = "unknown"; // dynamic and defined at runtime + // boolean masquerade = true; + // + // FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, + // masquerade); // ???????? + // netConfigs.add(natConfig); } else { logger.error("Unsupported routerMode: {}", routerMode); throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, "Unsupported routerMode: " + routerMode); } + + // if (routerMode.equals(GwtNetRouterMode.netRouterOff.name())) { + // logger.debug("DCHP and NAT are disabled"); + // properties.put(DhcpServer4EnabledPropName.toString(), false); + // return; + // } else if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) + // || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) + // || routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { + // try { + // // List netConfigs = new ArrayList<>(); + // + // if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) + // || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name())) { + // fillDhcpServerProperties(); + // } + // + // if (routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) + // || routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { + // + // /* + // * IPAddress m_sourceNetwork; //192.168.1.0 + // * IPAddress m_netmask; //255.255.255.0 + // * String m_sourceInterface; //eth0 + // * String m_destinationInterface; //ppp0 or something similar + // * boolean m_masquerade; //yes + // */ + // + // String sourceInterface = config.getName(); + // String destinationInterface = "unknown"; // dynamic and defined at runtime + // boolean masquerade = true; + // + // FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, + // masquerade); // ???????? + // // netConfigs.add(natConfig); + // } + // + // // return netConfigs; + // } catch (Exception e) { + // throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, e); + // } + // } else { + // logger.error("Unsupported routerMode: {}", routerMode); + // throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, "Unsupported routerMode: " + routerMode); + // } + } + + private void fillDhcpServerProperties(GwtNetInterfaceConfig config, Map properties, + String basePropName) throws UnknownHostException { + StringBuilder dhcpServer4PropName = new StringBuilder(basePropName).append("dhcpServer4."); + properties.put(dhcpServer4PropName.toString() + "enabled", true); + StringBuilder defaultLeaseTimePropName = new StringBuilder(dhcpServer4PropName).append("defaultLeaseTime"); + properties.put(defaultLeaseTimePropName.toString(), config.getRouterDhcpDefaultLease()); + // int defaultLeaseTime = config.getRouterDhcpDefaultLease(); + StringBuilder maximumLeaseTimePropName = new StringBuilder(dhcpServer4PropName).append("maxLeaseTime"); + properties.put(maximumLeaseTimePropName.toString(), config.getRouterDhcpMaxLease()); + // int maximumLeaseTime = config.getRouterDhcpMaxLease(); + // StringBuilder routerAddressPropName = new + // StringBuilder(basePropName.toString()).append("dhcpServer4.maxLeaseTime"); ?????? + // properties.put(routerAddressPropName.toString(), ((IP4Address) + // IPAddress.parseHostAddress(config.getIpAddress())).getHostAddress()); + // IP4Address routerAddress = (IP4Address) IPAddress.parseHostAddress(config.getIpAddress()); + StringBuilder rangeStartPropName = new StringBuilder(dhcpServer4PropName).append("rangeStart"); + properties.put(rangeStartPropName.toString(), + ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress())).getHostAddress()); + // IP4Address rangeStart = (IP4Address) + // IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress()); + StringBuilder rangeEndPropName = new StringBuilder(dhcpServer4PropName).append("rangeEnd"); + properties.put(rangeEndPropName.toString(), + ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress())).getHostAddress()); + // IP4Address rangeEnd = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress()); + StringBuilder passDnsPropName = new StringBuilder(dhcpServer4PropName).append("passDns"); + properties.put(passDnsPropName.toString(), config.getRouterDnsPass()); + // boolean passDns = config.getRouterDnsPass(); + + StringBuilder prefixPropName = new StringBuilder(dhcpServer4PropName).append("prefix"); + IP4Address subnetMask = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpSubnetMask()); + // IP4Address subnet = (IP4Address) IPAddress.parseHostAddress( + // NetworkUtil.calculateNetwork(config.getIpAddress(), config.getSubnetMask())); + short prefix = NetworkUtil.getNetmaskShortForm(subnetMask.getHostAddress()); + properties.put(prefixPropName.toString(), prefix); + + // Use our IP as the DNS server and we'll use named to proxy DNS queries + StringBuilder dnsServerPropName = new StringBuilder(basePropName.toString()).append("ip4.dnsServers"); + List dnsServers = new ArrayList<>(); + dnsServers.add((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())); + StringBuilder dnsServersBuilder = new StringBuilder(); + dnsServers.forEach(dns -> dnsServersBuilder.append(dns.getHostAddress()).append(",")); + properties.put(dnsServerPropName.toString(), + dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); + + // logger.debug("DhcpServerConfigIP4 - start: {}, end: {}, prefix: {}, subnet: {}, subnetMask: {}", + // new Object[] { rangeStart.getHostAddress(), rangeEnd.getHostAddress(), prefix, + // subnet.getHostAddress(), subnetMask.getHostAddress() }); + // try { + // DhcpServerCfg dhcpServerCfg = new DhcpServerCfg(config.getName(), true, defaultLeaseTime, + // maximumLeaseTime, passDns); + // DhcpServerCfgIP4 dhcpServerCfgIP4 = new DhcpServerCfgIP4(subnet, subnetMask, prefix, + // routerAddress, rangeStart, rangeEnd, dnsServers); + // netConfigs.add(new DhcpServerConfigIP4(dhcpServerCfg, dhcpServerCfgIP4)); + // } catch (KuraException e) { + // logger.error( + // "Failed to create new DhcpServerConfigIP4 object. Please verify that DHCP pool IP addresses (see + // below) are in the {} subnet.", + // subnet.getHostAddress()); + // logger.error("DHCP Pool: range from {} to {}", rangeStart.getHostAddress(), + // rangeEnd.getHostAddress()); + // logger.error("Exception: ", e); + // } } @Override From 87e6e28cc5f2e7716d27562f6d3db15fa72f8769 Mon Sep 17 00:00:00 2001 From: Merlino Date: Wed, 27 Apr 2022 12:32:36 +0200 Subject: [PATCH 04/17] Code refactor Signed-off-by: Merlino --- .../web/server/GwtNetworkServiceImpl.java | 732 +++++------------- 1 file changed, 182 insertions(+), 550 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 306589c8c6d..277bbfe148d 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -119,8 +119,8 @@ public class GwtNetworkServiceImpl extends OsgiRemoteServiceServlet implements GwtNetworkService { private static final long serialVersionUID = -4188750359099902616L; - private static final Logger logger = LoggerFactory.getLogger(GwtNetworkServiceImpl.class); + private static final String ENABLED = "enabled"; @Override public List findNetInterfaceConfigurations() throws GwtKuraException { @@ -748,429 +748,38 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter throws GwtKuraException { checkXSRFToken(xsrfToken); - ConfigurationService cs = ServiceLocator.getInstance().getService(ConfigurationService.class); + ConfigurationService configurationService = ServiceLocator.getInstance().getService(ConfigurationService.class); Map properties = new HashMap<>(); - // cs.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", properties, true); - - // component.id = 91 - // component.name = org.eclipse.kura.net.admin.NetworkConfigurationService - // kura.service.pid = org.eclipse.kura.net.admin.NetworkConfigurationService - // net.interface.1-4.config.activeFilter = inbound - // net.interface.1-4.config.authType = NONE - // net.interface.1-4.config.dhcpClient4.enabled = false - // net.interface.1-4.config.dhcpClient6.enabled = false - // net.interface.1-4.config.diversityEnabled = false - // net.interface.1-4.config.enabled = false - // net.interface.1-4.config.gpsEnabled = false - // net.interface.1-4.config.idle = 95 - // net.interface.1-4.config.ip4.address = - // net.interface.1-4.config.ip4.dnsServers = - // net.interface.1-4.config.ip4.gateway = - // net.interface.1-4.config.ip4.prefix = -1 - // net.interface.1-4.config.ip4.status = netIPv4StatusDisabled - // net.interface.1-4.config.ip6.dnsServers = - // net.interface.1-4.config.ip6.status = netIPv6StatusDisabled - // net.interface.1-4.config.ipAddress = - // net.interface.1-4.config.lcpEchoFailure = 0 - // net.interface.1-4.config.lcpEchoInterval = 0 - // net.interface.1-4.config.maxFail = 5 - // net.interface.1-4.config.password = - // net.interface.1-4.config.pdpType = IP - // net.interface.1-4.config.persist = true - // net.interface.1-4.config.resetTimeout = 5 - // net.interface.1-4.type = MODEM - // net.interface.eno1.config.dhcpClient4.enabled = false - // net.interface.eno1.config.dhcpClient6.enabled = false - // net.interface.eno1.config.dhcpServer4.defaultLeaseTime = 7200 - // net.interface.eno1.config.dhcpServer4.enabled = true - // net.interface.eno1.config.dhcpServer4.maxLeaseTime = 7200 - // net.interface.eno1.config.dhcpServer4.passDns = false - // net.interface.eno1.config.dhcpServer4.prefix = 24 - // net.interface.eno1.config.dhcpServer4.rangeEnd = 172.16.0.110 - // net.interface.eno1.config.dhcpServer4.rangeStart = 172.16.0.100 - // net.interface.eno1.config.ip4.address = 172.16.0.1 - // net.interface.eno1.config.ip4.dnsServers = - // net.interface.eno1.config.ip4.gateway = - // net.interface.eno1.config.ip4.prefix = 24 - // net.interface.eno1.config.ip4.status = netIPv4StatusEnabledLAN - // net.interface.eno1.config.ip6.dnsServers = - // net.interface.eno1.config.ip6.status = netIPv6StatusDisabled - // net.interface.eno1.type = ETHERNET - // net.interface.enp5s0.config.dhcpClient4.enabled = true - // net.interface.enp5s0.config.dhcpClient6.enabled = false - // net.interface.enp5s0.config.ip4.dnsServers = - // net.interface.enp5s0.config.ip4.status = netIPv4StatusEnabledWAN - // net.interface.enp5s0.config.ip6.dnsServers = - // net.interface.enp5s0.config.ip6.status = netIPv6StatusDisabled - // net.interface.enp5s0.type = ETHERNET - // net.interface.lo.config.dhcpClient4.enabled = false - // net.interface.lo.config.dhcpClient6.enabled = false - // net.interface.lo.config.ip4.address = 127.0.0.1 - // net.interface.lo.config.ip4.dnsServers = - // net.interface.lo.config.ip4.gateway = - // net.interface.lo.config.ip4.prefix = 8 - // net.interface.lo.config.ip4.status = netIPv4StatusEnabledLAN - // net.interface.lo.config.ip6.dnsServers = - // net.interface.lo.config.ip6.status = netIPv6StatusDisabled - // net.interface.lo.type = LOOPBACK - // net.interface.wlp1s0.config.dhcpClient4.enabled = false - // net.interface.wlp1s0.config.dhcpClient6.enabled = false - // net.interface.wlp1s0.config.ip4.address = - // net.interface.wlp1s0.config.ip4.dnsServers = - // net.interface.wlp1s0.config.ip4.gateway = - // net.interface.wlp1s0.config.ip4.prefix = 24 - // net.interface.wlp1s0.config.ip4.status = netIPv4StatusDisabled - // net.interface.wlp1s0.config.ip6.dnsServers = - // net.interface.wlp1s0.config.ip6.status = netIPv6StatusDisabled - // net.interface.wlp1s0.config.wifi.infra.bgscan = - // net.interface.wlp1s0.config.wifi.infra.channel = 1 - // net.interface.wlp1s0.config.wifi.infra.driver = nl80211 - // net.interface.wlp1s0.config.wifi.infra.groupCiphers = CCMP_TKIP - // net.interface.wlp1s0.config.wifi.infra.ignoreSSID = false - // net.interface.wlp1s0.config.wifi.infra.mode = INFRA - // net.interface.wlp1s0.config.wifi.infra.pairwiseCiphers = CCMP_TKIP - // net.interface.wlp1s0.config.wifi.infra.passphrase = - // net.interface.wlp1s0.config.wifi.infra.pingAccessPoint = false - // net.interface.wlp1s0.config.wifi.infra.radioMode = RADIO_MODE_80211b - // net.interface.wlp1s0.config.wifi.infra.securityType = SECURITY_NONE - // net.interface.wlp1s0.config.wifi.infra.ssid = - // net.interface.wlp1s0.config.wifi.master.bgscan = - // net.interface.wlp1s0.config.wifi.master.channel = 1 - // net.interface.wlp1s0.config.wifi.master.driver = nl80211 - // net.interface.wlp1s0.config.wifi.master.groupCiphers = CCMP_TKIP - // net.interface.wlp1s0.config.wifi.master.ignoreSSID = false - // net.interface.wlp1s0.config.wifi.master.mode = MASTER - // net.interface.wlp1s0.config.wifi.master.pairwiseCiphers = CCMP - // net.interface.wlp1s0.config.wifi.master.passphrase = - // qAHZ6ajx/QrkiLqh-F9x5ZNdnvw08Kl3TgU3um1FedDKuyKdB - // net.interface.wlp1s0.config.wifi.master.pingAccessPoint = false - // net.interface.wlp1s0.config.wifi.master.radioMode = RADIO_MODE_80211g - // net.interface.wlp1s0.config.wifi.master.securityType = SECURITY_WPA2 - // net.interface.wlp1s0.config.wifi.master.ssid = kura_gateway_0 - // net.interface.wlp1s0.config.wifi.mode = MASTER - // net.interface.wlp1s0.type = WIFI - // net.interfaces = enp5s0,lo,eno1,wlp1s0,1-4 - // service.pid = org.eclipse.kura.net.admin.NetworkConfigurationService - - // NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); StringBuilder basePropName = new StringBuilder("net.interface."); basePropName.append(config.getName()).append(".config."); String status = config.getStatus(); - - // logger.debug("config.getStatus(): {}", GwtSafeHtmlUtils.htmlEscape(config.getStatus())); - - boolean autoConnect = true; - if (GwtNetIfStatus.netIPv4StatusDisabled.name().equals(status)) { - autoConnect = false; + if (logger.isDebugEnabled()) { + logger.debug("config.getStatus(): {}", GwtSafeHtmlUtils.htmlEscape(status)); } try { - // Interface status - NetInterfaceStatus netInterfaceStatus; - if (status.equals(GwtNetIfStatus.netIPv4StatusUnmanaged.name())) { - netInterfaceStatus = NetInterfaceStatus.netIPv4StatusUnmanaged; - } else if (status.equals(GwtNetIfStatus.netIPv4StatusL2Only.name())) { - netInterfaceStatus = NetInterfaceStatus.netIPv4StatusL2Only; - } else if (status.equals(GwtNetIfStatus.netIPv4StatusEnabledLAN.name())) { - netInterfaceStatus = NetInterfaceStatus.netIPv4StatusEnabledLAN; - } else if (status.equals(GwtNetIfStatus.netIPv4StatusEnabledWAN.name())) { - netInterfaceStatus = NetInterfaceStatus.netIPv4StatusEnabledWAN; - } else { - netInterfaceStatus = NetInterfaceStatus.netIPv4StatusDisabled; - } - StringBuilder statusPropName = new StringBuilder(basePropName.toString()).append("ip4.status"); - properties.put(statusPropName.toString(), netInterfaceStatus.name()); - - // cs.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", properties, true); - - // Set up configs - // List netConfigs = new ArrayList<>(); - - // Initialize NetConfigIP4 object - // NetConfigIP4 netConfig4 = new NetConfigIP4(netInterfaceStatus, autoConnect); + NetInterfaceStatus netInterfaceStatus = getNetInterfaceStatus(status); + properties.put(basePropName.toString() + "ip4.status", netInterfaceStatus.name()); - // build the appropriate NetConfig objects for ethernet type if (config.getHwTypeEnum() == GwtNetIfType.ETHERNET || config.getHwTypeEnum() == GwtNetIfType.WIFI || config.getHwTypeEnum() == GwtNetIfType.MODEM) { - - logger.debug("config.getConfigMode(): {}", config.getConfigMode()); - String regexp = "[\\s,;\\n\\t]+"; - StringBuilder dhcpClientPropName = new StringBuilder(basePropName.toString()) - .append("dhcpClient4.enabled"); - if (GwtNetIfConfigMode.netIPv4ConfigModeDHCP.name().equals(config.getConfigMode())) { - logger.debug("mode is DHCP"); - properties.put(dhcpClientPropName.toString(), true); - // netConfig4.setDhcp(true); - } else { - logger.debug("mode is STATIC"); - properties.put(dhcpClientPropName.toString(), false); - // netConfig4.setDhcp(false); - - if (config.getIpAddress() != null && !config.getIpAddress().isEmpty()) { - logger.debug("setting address: {}", config.getIpAddress()); - StringBuilder addressPropName = new StringBuilder(basePropName.toString()) - .append("ip4.address"); - properties.put(addressPropName.toString(), - ((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())).getHostAddress()); - // netConfig4.setAddress((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())); - } - - if (config.getSubnetMask() != null && !config.getSubnetMask().isEmpty()) { - logger.debug("setting subnet mask: {}", config.getSubnetMask()); - StringBuilder prefixPropName = new StringBuilder(basePropName.toString()).append("ip4.prefix"); - short prefix = NetworkUtil.getNetmaskShortForm( - ((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())).getHostAddress()); - properties.put(prefixPropName.toString(), prefix); - // netConfig4.setSubnetMask((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())); - } - if (config.getGateway() != null && !config.getGateway().isEmpty()) { - logger.debug("setting gateway: {}", config.getGateway()); - StringBuilder gatewayPropName = new StringBuilder(basePropName.toString()) - .append("ip4.gateway"); - properties.put(gatewayPropName.toString(), - ((IP4Address) IPAddress.parseHostAddress(config.getGateway())).getHostAddress()); - // netConfig4.setGateway((IP4Address) IPAddress.parseHostAddress(config.getGateway())); - } - } - - String[] dnsServersString = config.getDnsServers().split(regexp); - if (dnsServersString != null && dnsServersString.length > 0) { - IP4Address dnsServer; - List dnsServers = new ArrayList<>(); - for (String dnsEntry : dnsServersString) { - if (!dnsEntry.trim().isEmpty()) { - logger.debug("setting DNS: {}", dnsEntry); - dnsServer = (IP4Address) IPAddress.parseHostAddress(dnsEntry); - dnsServers.add(dnsServer); - } - } - StringBuilder dnsServerPropName = new StringBuilder(basePropName.toString()) - .append("ip4.dnsServers"); - if (!dnsServers.isEmpty()) { - StringBuilder dnsServersBuilder = new StringBuilder(); - dnsServers.forEach(dns -> dnsServersBuilder.append(dns.getHostAddress()).append(",")); - properties.put(dnsServerPropName.toString(), - dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); - } else { - properties.put(dnsServerPropName.toString(), ""); - } - // netConfig4.setDnsServers(dnsServers); - } - - // netConfigs.add(netConfig4); - - // TODO - add IPv6 support later... - - // Set up DHCP and NAT - if (GwtNetIfConfigMode.netIPv4ConfigModeManual.name().equals(config.getConfigMode())) { - getDhcpConfig(config, properties, basePropName.toString()); - // List dhcpConfigs = getDhcpConfig(config); // <-- - // if (dhcpConfigs != null) { - // logger.debug("Adding dhcp and/or nat configs to interface update config"); - // netConfigs.addAll(dhcpConfigs); - // } - - } - - if (config.getHwTypeEnum() == GwtNetIfType.ETHERNET) { - // nas.updateEthernetInterfaceConfig(GwtSafeHtmlUtils.htmlEscape(config.getName()), autoConnect, - // config.getHwMTU(), netConfigs); - } + fillIp4AndDhcpProperties(config, properties, basePropName.toString()); } - if (config.getHwTypeEnum() == GwtNetIfType.WIFI) { - - if (config instanceof GwtWifiNetInterfaceConfig) { - GwtWifiConfig gwtWifiConfig = ((GwtWifiNetInterfaceConfig) config).getActiveWifiConfig(); - - if (gwtWifiConfig != null) { - // WifiConfig wifiConfig = getWifiConfig(gwtWifiConfig); - fillWifiProperties(gwtWifiConfig, properties, basePropName.toString(), config.getName()); - - // String passKey = new String(wifiConfig.getPasskey().getPassword()); - // if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { - // - // List result = privateFindNetInterfaceConfigurations(); - // for (GwtNetInterfaceConfig netConfig : result) { - // if (netConfig instanceof GwtWifiNetInterfaceConfig - // && config.getName().equals(((GwtWifiNetInterfaceConfig) netConfig).getName())) { - // GwtWifiNetInterfaceConfig oldWifiConfig = (GwtWifiNetInterfaceConfig) netConfig; - // GwtWifiConfig oldGwtWifiConfig; - // if (gwtWifiConfig.getWirelessMode() - // .equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { - // oldGwtWifiConfig = oldWifiConfig.getAccessPointWifiConfig(); - // } else { - // oldGwtWifiConfig = oldWifiConfig.getStationWifiConfig(); - // } - // - // if (oldGwtWifiConfig != null) { - // wifiConfig.setPasskey( - // GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword())); - // } - // } - // } - // } else if (passKey != null && wifiConfig.getMode() == WifiMode.MASTER) { - // validateUserPassword(passKey); - // } - - // netConfigs.add(wifiConfig); - // nas.updateWifiInterfaceConfig(GwtSafeHtmlUtils.htmlEscape(config.getName()), autoConnect, - // null, - // netConfigs); - } - } - } else if (config.getHwTypeEnum() == GwtNetIfType.MODEM) { - // net.interface.1-4.config.activeFilter = inbound - // net.interface.1-4.config.authType = NONE - // net.interface.1-4.config.dhcpClient4.enabled = false - // net.interface.1-4.config.dhcpClient6.enabled = false - // net.interface.1-4.config.diversityEnabled = false - // net.interface.1-4.config.enabled = false - // net.interface.1-4.config.gpsEnabled = false - // net.interface.1-4.config.idle = 95 - // net.interface.1-4.config.ip4.address = - // net.interface.1-4.config.ip4.dnsServers = - // net.interface.1-4.config.ip4.gateway = - // net.interface.1-4.config.ip4.prefix = -1 - // net.interface.1-4.config.ip4.status = netIPv4StatusDisabled - // net.interface.1-4.config.ip6.dnsServers = - // net.interface.1-4.config.ip6.status = netIPv6StatusDisabled - // net.interface.1-4.config.ipAddress = - // net.interface.1-4.config.lcpEchoFailure = 0 - // net.interface.1-4.config.lcpEchoInterval = 0 - // net.interface.1-4.config.maxFail = 5 - // net.interface.1-4.config.password = - // net.interface.1-4.config.pdpType = IP - // net.interface.1-4.config.persist = true - // net.interface.1-4.config.resetTimeout = 5 - // net.interface.1-4.type = MODEM - - if (config instanceof GwtModemInterfaceConfig) { - GwtModemInterfaceConfig gwtModemConfig = (GwtModemInterfaceConfig) config; - - // ModemConfig modemConfig = new ModemConfig(); - - String serialNum = gwtModemConfig.getHwSerial(); - String modemId = gwtModemConfig.getModemId(); - int pppNum = gwtModemConfig.getPppNum(); - - // modem enabled/disabled - // if (netInterfaceStatus.equals(NetInterfaceStatus.netIPv4StatusEnabledWAN)) { - // modemConfig.setEnabled(true); - // } else { - // modemConfig.setEnabled(false); - // } - Boolean enabled = netInterfaceStatus.equals(NetInterfaceStatus.netIPv4StatusEnabledWAN); - properties.put(basePropName.append("enabled").toString(), enabled); - - // modemConfig.setApn(gwtModemConfig.getApn()); - properties.put(basePropName.append("apn").toString(), gwtModemConfig.getApn()); - // modemConfig.setPppNumber(gwtModemConfig.getPppNum()); - // modemConfig.setDataCompression(gwtModemConfig.getDataCompression()); ???? - properties.put(basePropName.append("dialString").toString(), gwtModemConfig.getDialString()); - // modemConfig.setDialString(gwtModemConfig.getDialString()); - - // modemConfig.setHeaderCompression(gwtModemConfig.getHeaderCompression()); ???? - - String passKey = GwtSafeHtmlUtils.htmlUnescape(gwtModemConfig.getPassword()); - if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { - List result = privateFindNetInterfaceConfigurations(); - for (GwtNetInterfaceConfig netConfig : result) { - if (netConfig instanceof GwtModemInterfaceConfig) { - GwtModemInterfaceConfig oldModemConfig = (GwtModemInterfaceConfig) netConfig; - if (gwtModemConfig.getName().equals(oldModemConfig.getName())) { - CryptoService cryptpService = ServiceLocator.getInstance() - .getService(CryptoService.class); - char[] passphrase = cryptpService.encryptAes( - GwtSafeHtmlUtils.htmlUnescape(oldModemConfig.getPassword()).toCharArray()); - properties.put(basePropName.append("password").toString(), - new Password(passphrase)); - // modemConfig.setPassword(oldModemConfig.getPassword()); - } - } - } - } else if (passKey != null) { - CryptoService cryptpService = ServiceLocator.getInstance().getService(CryptoService.class); - char[] passphrase = cryptpService.encryptAes(passKey.toCharArray()); - properties.put(basePropName.append("password").toString(), new Password(passphrase)); - // modemConfig.setPassword(passKey); - } - - // modemConfig.setUsername(gwtModemConfig.getUsername()); - properties.put(basePropName.append("username").toString(), gwtModemConfig.getUsername()); - // modemConfig.setResetTimeout(gwtModemConfig.getResetTimeout()); - properties.put(basePropName.append("resetTimeout").toString(), gwtModemConfig.getResetTimeout()); - // modemConfig.setPersist(gwtModemConfig.isPersist()); - properties.put(basePropName.append("persist").toString(), gwtModemConfig.isPersist()); - // modemConfig.setMaxFail(gwtModemConfig.getMaxFail()); - properties.put(basePropName.append("maxFail").toString(), gwtModemConfig.getMaxFail()); - // modemConfig.setIdle(gwtModemConfig.getIdle()); - properties.put(basePropName.append("idle").toString(), gwtModemConfig.getIdle()); - // modemConfig.setActiveFilter(gwtModemConfig.getActiveFilter()); - properties.put(basePropName.append("activeFilter").toString(), gwtModemConfig.getActiveFilter()); - // modemConfig.setLcpEchoInterval(gwtModemConfig.getLcpEchoInterval()); - properties.put(basePropName.append("lcpEchoInterval").toString(), - gwtModemConfig.getLcpEchoInterval()); - // modemConfig.setLcpEchoFailure(gwtModemConfig.getLcpEchoFailure()); - properties.put(basePropName.append("lcpEchoFailure").toString(), - gwtModemConfig.getLcpEchoFailure()); - // modemConfig.setGpsEnabled(gwtModemConfig.isGpsEnabled()); - properties.put(basePropName.append("gpsEnabled").toString(), gwtModemConfig.isGpsEnabled()); - // modemConfig.setDiversityEnabled(gwtModemConfig.isDiversityEnabled()); - properties.put(basePropName.append("diversityEnabled").toString(), - gwtModemConfig.isDiversityEnabled()); - - GwtModemAuthType authType = gwtModemConfig.getAuthType(); - if (authType != null) { - if (authType.equals(GwtModemAuthType.netModemAuthNONE)) { - properties.put(basePropName.append("authType").toString(), - ModemConfig.AuthType.NONE.name()); - // modemConfig.setAuthType(ModemConfig.AuthType.NONE); - } else if (authType.equals(GwtModemAuthType.netModemAuthAUTO)) { - properties.put(basePropName.append("authType").toString(), - ModemConfig.AuthType.AUTO.name()); - // modemConfig.setAuthType(ModemConfig.AuthType.AUTO); - } else if (authType.equals(GwtModemAuthType.netModemAuthCHAP)) { - properties.put(basePropName.append("authType").toString(), - ModemConfig.AuthType.CHAP.name()); - // modemConfig.setAuthType(ModemConfig.AuthType.CHAP); - } else if (authType.equals(GwtModemAuthType.netModemAuthPAP)) { - properties.put(basePropName.append("authType").toString(), ModemConfig.AuthType.PAP.name()); - // modemConfig.setAuthType(ModemConfig.AuthType.PAP); - } - } - - GwtModemPdpType pdpType = gwtModemConfig.getPdpType(); - if (pdpType != null) { - if (pdpType.equals(GwtModemPdpType.netModemPdpIP)) { - properties.put(basePropName.append("pdpType").toString(), ModemConfig.PdpType.IP.name()); - // modemConfig.setPdpType(ModemConfig.PdpType.IP); - } else if (pdpType.equals(GwtModemPdpType.netModemPdpIPv6)) { - properties.put(basePropName.append("pdpType").toString(), ModemConfig.PdpType.IPv6.name()); - // modemConfig.setPdpType(ModemConfig.PdpType.IPv6); - } else if (pdpType.equals(GwtModemPdpType.netModemPdpPPP)) { - properties.put(basePropName.append("pdpType").toString(), ModemConfig.PdpType.PPP.name()); - // modemConfig.setPdpType(ModemConfig.PdpType.PPP); - } else { - properties.put(basePropName.append("pdpType").toString(), - ModemConfig.PdpType.UNKNOWN.name()); - // modemConfig.setPdpType(ModemConfig.PdpType.UNKNOWN); - } - } - - // netConfigs.add(modemConfig); - - // nas.updateModemInterfaceConfig(config.getName(), serialNum, modemId, pppNum, autoConnect, -1, - // netConfigs); + if (config.getHwTypeEnum() == GwtNetIfType.WIFI && config instanceof GwtWifiNetInterfaceConfig) { + GwtWifiConfig gwtWifiConfig = ((GwtWifiNetInterfaceConfig) config).getActiveWifiConfig(); + if (gwtWifiConfig != null) { + fillWifiProperties(gwtWifiConfig, properties, basePropName.toString(), config.getName()); } - } else { - // TODO - more types + } else if (config.getHwTypeEnum() == GwtNetIfType.MODEM && config instanceof GwtModemInterfaceConfig) { + GwtModemInterfaceConfig gwtModemConfig = (GwtModemInterfaceConfig) config; + fillModemProperties(gwtModemConfig, properties, basePropName.toString(), netInterfaceStatus); } - cs.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", properties, true); + configurationService.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", + properties, true); } catch (Exception e) { - logger.warn("Failed", e); throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); } } @@ -1313,7 +922,6 @@ public ArrayList findWifiHotspots(GwtXSRFToken xsrfToken, S } } } catch (Throwable t) { - logger.error("Failed", t); KuraExceptionHandler.handle(t); } @@ -1415,7 +1023,6 @@ public ArrayList findDeviceFirewallPortForwards(Gwt return new ArrayList<>(gwtPortForwardEntries); } catch (KuraException e) { - logger.warn("Failed", e); throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); } } @@ -1449,7 +1056,6 @@ public ArrayList findDeviceFirewallNATs(GwtXSRFToken xsrfTo return new ArrayList<>(gwtNatEntries); } catch (KuraException e) { - logger.warn("Failed", e); throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); } } @@ -1460,177 +1066,203 @@ public ArrayList findDeviceFirewallNATs(GwtXSRFToken xsrfTo // // ------------------------------------------------------------------------------------- - // private List getDhcpConfig(GwtNetInterfaceConfig config) throws KuraException { - private void getDhcpConfig(GwtNetInterfaceConfig config, Map properties, String basePropName) - throws KuraException, UnknownHostException { - // Setup the DHCP and NAT if necessary + private NetInterfaceStatus getNetInterfaceStatus(String status) { + NetInterfaceStatus netInterfaceStatus = NetInterfaceStatus.netIPv4StatusDisabled; + if (status.equals(GwtNetIfStatus.netIPv4StatusUnmanaged.name())) { + netInterfaceStatus = NetInterfaceStatus.netIPv4StatusUnmanaged; + } else if (status.equals(GwtNetIfStatus.netIPv4StatusL2Only.name())) { + netInterfaceStatus = NetInterfaceStatus.netIPv4StatusL2Only; + } else if (status.equals(GwtNetIfStatus.netIPv4StatusEnabledLAN.name())) { + netInterfaceStatus = NetInterfaceStatus.netIPv4StatusEnabledLAN; + } else if (status.equals(GwtNetIfStatus.netIPv4StatusEnabledWAN.name())) { + netInterfaceStatus = NetInterfaceStatus.netIPv4StatusEnabledWAN; + } + return netInterfaceStatus; + } + + private void fillIp4AndDhcpProperties(GwtNetInterfaceConfig config, Map properties, + String basePropName) throws UnknownHostException, KuraException { + logger.debug("config.getConfigMode(): {}", config.getConfigMode()); + String dhcpClient4PropName = basePropName + "dhcpClient4.enabled"; + if (GwtNetIfConfigMode.netIPv4ConfigModeDHCP.name().equals(config.getConfigMode())) { + logger.debug("mode is DHCP"); + properties.put(dhcpClient4PropName, true); + } else { + logger.debug("mode is STATIC"); + properties.put(dhcpClient4PropName, false); + + if (config.getIpAddress() != null && !config.getIpAddress().isEmpty()) { + logger.debug("setting address: {}", config.getIpAddress()); + String addressPropName = basePropName + "ip4.address"; + properties.put(addressPropName, + ((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())).getHostAddress()); + } + + if (config.getSubnetMask() != null && !config.getSubnetMask().isEmpty()) { + logger.debug("setting subnet mask: {}", config.getSubnetMask()); + String prefixPropName = basePropName + "ip4.prefix"; + short prefix = NetworkUtil.getNetmaskShortForm( + ((IP4Address) IPAddress.parseHostAddress(config.getSubnetMask())).getHostAddress()); + properties.put(prefixPropName, prefix); + } + if (config.getGateway() != null && !config.getGateway().isEmpty()) { + logger.debug("setting gateway: {}", config.getGateway()); + String gatewayPropName = basePropName + "ip4.gateway"; + properties.put(gatewayPropName, + ((IP4Address) IPAddress.parseHostAddress(config.getGateway())).getHostAddress()); + } + } + + fillDnsServers(config, properties, basePropName); + + if (GwtNetIfConfigMode.netIPv4ConfigModeManual.name().equals(config.getConfigMode())) { + fillDhcpAndNatProperties(config, properties, basePropName); + } + } + + private void fillDnsServers(GwtNetInterfaceConfig config, Map properties, String basePropName) { + String regexp = "[\\s,;\\n\\t]+"; + String dnsServerPropName = basePropName + "ip4.dnsServers"; + String[] dnsServersString = config.getDnsServers().split(regexp); + if (dnsServersString != null && dnsServersString.length > 0) { + StringBuilder dnsServersBuilder = new StringBuilder(); + try { + for (String dns : Arrays.asList(dnsServersString)) { + dnsServersBuilder.append(((IP4Address) IPAddress.parseHostAddress(dns)).getHostAddress()) + .append(","); + } + properties.put(dnsServerPropName, + dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); + } catch (UnknownHostException e) { + logger.warn("Failed to parse dns server address", e); + properties.put(dnsServerPropName, ""); + } + } else { + properties.put(dnsServerPropName, ""); + } + } + + private void fillModemProperties(GwtModemInterfaceConfig gwtModemConfig, Map properties, + String basePropName, NetInterfaceStatus netInterfaceStatus) throws KuraException, GwtKuraException { + + Boolean enabled = netInterfaceStatus.equals(NetInterfaceStatus.netIPv4StatusEnabledWAN); + properties.put(basePropName + ENABLED, enabled); + + properties.put(basePropName + "apn", gwtModemConfig.getApn()); + properties.put(basePropName + "dialString", gwtModemConfig.getDialString()); + + fillModemPassword(gwtModemConfig, properties, basePropName); + + properties.put(basePropName + "username", gwtModemConfig.getUsername()); + properties.put(basePropName + "resetTimeout", gwtModemConfig.getResetTimeout()); + properties.put(basePropName + "persist", gwtModemConfig.isPersist()); + properties.put(basePropName + "maxFail", gwtModemConfig.getMaxFail()); + properties.put(basePropName + "idle", gwtModemConfig.getIdle()); + properties.put(basePropName + "activeFilter", gwtModemConfig.getActiveFilter()); + properties.put(basePropName + "lcpEchoInterval", gwtModemConfig.getLcpEchoInterval()); + properties.put(basePropName + "lcpEchoFailure", gwtModemConfig.getLcpEchoFailure()); + properties.put(basePropName + "gpsEnabled", gwtModemConfig.isGpsEnabled()); + properties.put(basePropName + "diversityEnabled", gwtModemConfig.isDiversityEnabled()); + + GwtModemAuthType authType = gwtModemConfig.getAuthType(); + if (authType != null) { + String authTypePropName = basePropName + "authType"; + if (authType.equals(GwtModemAuthType.netModemAuthNONE)) { + properties.put(authTypePropName, ModemConfig.AuthType.NONE.name()); + } else if (authType.equals(GwtModemAuthType.netModemAuthAUTO)) { + properties.put(authTypePropName, ModemConfig.AuthType.AUTO.name()); + } else if (authType.equals(GwtModemAuthType.netModemAuthCHAP)) { + properties.put(authTypePropName, ModemConfig.AuthType.CHAP.name()); + } else if (authType.equals(GwtModemAuthType.netModemAuthPAP)) { + properties.put(authTypePropName, ModemConfig.AuthType.PAP.name()); + } + } + + GwtModemPdpType pdpType = gwtModemConfig.getPdpType(); + if (pdpType != null) { + String pdpTypePropName = basePropName + "pdpType"; + if (pdpType.equals(GwtModemPdpType.netModemPdpIP)) { + properties.put(pdpTypePropName, ModemConfig.PdpType.IP.name()); + } else if (pdpType.equals(GwtModemPdpType.netModemPdpIPv6)) { + properties.put(pdpTypePropName, ModemConfig.PdpType.IPv6.name()); + } else if (pdpType.equals(GwtModemPdpType.netModemPdpPPP)) { + properties.put(pdpTypePropName, ModemConfig.PdpType.PPP.name()); + } else { + properties.put(pdpTypePropName, ModemConfig.PdpType.UNKNOWN.name()); + } + } + } - // net.interface.eno1.config.dhcpClient4.enabled = false - // net.interface.eno1.config.dhcpServer4.defaultLeaseTime = 7200 - // net.interface.eno1.config.dhcpServer4.enabled = true - // net.interface.eno1.config.dhcpServer4.maxLeaseTime = 7200 - // net.interface.eno1.config.dhcpServer4.passDns = false - // net.interface.eno1.config.dhcpServer4.prefix = 24 - // net.interface.eno1.config.dhcpServer4.rangeEnd = 172.16.0.110 - // net.interface.eno1.config.dhcpServer4.rangeStart = 172.16.0.100 + private void fillModemPassword(GwtModemInterfaceConfig gwtModemConfig, Map properties, + String basePropName) throws GwtKuraException, KuraException { + String passKey = GwtSafeHtmlUtils.htmlUnescape(gwtModemConfig.getPassword()); + if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { + List result = privateFindNetInterfaceConfigurations(); + for (GwtNetInterfaceConfig netConfig : result) { + if (netConfig instanceof GwtModemInterfaceConfig) { + GwtModemInterfaceConfig oldModemConfig = (GwtModemInterfaceConfig) netConfig; + if (gwtModemConfig.getName().equals(oldModemConfig.getName())) { + properties.put(basePropName + "password", + new Password(GwtSafeHtmlUtils.htmlUnescape(oldModemConfig.getPassword()))); + } + } + } + } else if (passKey != null) { + CryptoService cryptoService = ServiceLocator.getInstance().getService(CryptoService.class); + char[] passphrase = cryptoService.encryptAes(passKey.toCharArray()); + properties.put(basePropName + "password", new Password(passphrase)); + } + } + private void fillDhcpAndNatProperties(GwtNetInterfaceConfig config, Map properties, + String basePropName) throws KuraException, UnknownHostException { String routerMode = config.getRouterMode(); + String natEnabledPropName = basePropName + "nat.enabled"; StringBuilder dhcpServer4PropName = new StringBuilder(basePropName).append("dhcpServer4."); if (routerMode.equals(GwtNetRouterMode.netRouterOff.name())) { logger.debug("DCHP and NAT are disabled"); - properties.put(dhcpServer4PropName.toString() + "enabled", false); - properties.put(basePropName.toString() + "nat.enabled", false); + properties.put(dhcpServer4PropName.toString() + ENABLED, false); + properties.put(natEnabledPropName, false); } else if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name())) { + logger.debug("DCHP is enabled"); fillDhcpServerProperties(config, properties, basePropName); - properties.put(basePropName.toString() + "nat.enabled", false); + properties.put(natEnabledPropName, false); } else if (routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name())) { + logger.debug("DCHP and NAT is enabled"); fillDhcpServerProperties(config, properties, basePropName); - /* - * IPAddress m_sourceNetwork; //192.168.1.0 - * IPAddress m_netmask; //255.255.255.0 - * String m_sourceInterface; //eth0 - * String m_destinationInterface; //ppp0 or something similar - * boolean m_masquerade; //yes - */ - - // String sourceInterface = config.getName(); - // String destinationInterface = "unknown"; // dynamic and defined at runtime - // boolean masquerade = true; - // - // FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, - // masquerade); // ???????? - // netConfigs.add(natConfig); - properties.put(basePropName.toString() + "nat.enabled", true); + properties.put(natEnabledPropName, true); } else if (routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { - properties.put(dhcpServer4PropName.toString() + "enabled", false); - properties.put(basePropName.toString() + "nat.enabled", true); - /* - * IPAddress m_sourceNetwork; //192.168.1.0 - * IPAddress m_netmask; //255.255.255.0 - * String m_sourceInterface; //eth0 - * String m_destinationInterface; //ppp0 or something similar - * boolean m_masquerade; //yes - */ - - // String sourceInterface = config.getName(); - // String destinationInterface = "unknown"; // dynamic and defined at runtime - // boolean masquerade = true; - // - // FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, - // masquerade); // ???????? - // netConfigs.add(natConfig); + logger.debug("NAT is enabled"); + properties.put(dhcpServer4PropName.toString() + ENABLED, false); + properties.put(natEnabledPropName, true); } else { logger.error("Unsupported routerMode: {}", routerMode); throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, "Unsupported routerMode: " + routerMode); } - - // if (routerMode.equals(GwtNetRouterMode.netRouterOff.name())) { - // logger.debug("DCHP and NAT are disabled"); - // properties.put(DhcpServer4EnabledPropName.toString(), false); - // return; - // } else if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) - // || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) - // || routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { - // try { - // // List netConfigs = new ArrayList<>(); - // - // if (routerMode.equals(GwtNetRouterMode.netRouterDchp.name()) - // || routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name())) { - // fillDhcpServerProperties(); - // } - // - // if (routerMode.equals(GwtNetRouterMode.netRouterDchpNat.name()) - // || routerMode.equals(GwtNetRouterMode.netRouterNat.name())) { - // - // /* - // * IPAddress m_sourceNetwork; //192.168.1.0 - // * IPAddress m_netmask; //255.255.255.0 - // * String m_sourceInterface; //eth0 - // * String m_destinationInterface; //ppp0 or something similar - // * boolean m_masquerade; //yes - // */ - // - // String sourceInterface = config.getName(); - // String destinationInterface = "unknown"; // dynamic and defined at runtime - // boolean masquerade = true; - // - // FirewallAutoNatConfig natConfig = new FirewallAutoNatConfig(sourceInterface, destinationInterface, - // masquerade); // ???????? - // // netConfigs.add(natConfig); - // } - // - // // return netConfigs; - // } catch (Exception e) { - // throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, e); - // } - // } else { - // logger.error("Unsupported routerMode: {}", routerMode); - // throw new KuraException(KuraErrorCode.CONFIGURATION_ERROR, "Unsupported routerMode: " + routerMode); - // } } private void fillDhcpServerProperties(GwtNetInterfaceConfig config, Map properties, String basePropName) throws UnknownHostException { StringBuilder dhcpServer4PropName = new StringBuilder(basePropName).append("dhcpServer4."); - properties.put(dhcpServer4PropName.toString() + "enabled", true); - StringBuilder defaultLeaseTimePropName = new StringBuilder(dhcpServer4PropName).append("defaultLeaseTime"); - properties.put(defaultLeaseTimePropName.toString(), config.getRouterDhcpDefaultLease()); - // int defaultLeaseTime = config.getRouterDhcpDefaultLease(); - StringBuilder maximumLeaseTimePropName = new StringBuilder(dhcpServer4PropName).append("maxLeaseTime"); - properties.put(maximumLeaseTimePropName.toString(), config.getRouterDhcpMaxLease()); - // int maximumLeaseTime = config.getRouterDhcpMaxLease(); - // StringBuilder routerAddressPropName = new - // StringBuilder(basePropName.toString()).append("dhcpServer4.maxLeaseTime"); ?????? - // properties.put(routerAddressPropName.toString(), ((IP4Address) - // IPAddress.parseHostAddress(config.getIpAddress())).getHostAddress()); - // IP4Address routerAddress = (IP4Address) IPAddress.parseHostAddress(config.getIpAddress()); - StringBuilder rangeStartPropName = new StringBuilder(dhcpServer4PropName).append("rangeStart"); - properties.put(rangeStartPropName.toString(), + properties.put(dhcpServer4PropName.toString() + ENABLED, true); + properties.put(dhcpServer4PropName.toString() + "defaultLeaseTime", config.getRouterDhcpDefaultLease()); + properties.put(dhcpServer4PropName.toString() + "maxLeaseTime", config.getRouterDhcpMaxLease()); + properties.put(dhcpServer4PropName.toString() + "rangeStart", ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress())).getHostAddress()); - // IP4Address rangeStart = (IP4Address) - // IPAddress.parseHostAddress(config.getRouterDhcpBeginAddress()); - StringBuilder rangeEndPropName = new StringBuilder(dhcpServer4PropName).append("rangeEnd"); - properties.put(rangeEndPropName.toString(), + properties.put(dhcpServer4PropName.toString() + "rangeEnd", ((IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress())).getHostAddress()); - // IP4Address rangeEnd = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpEndAddress()); - StringBuilder passDnsPropName = new StringBuilder(dhcpServer4PropName).append("passDns"); - properties.put(passDnsPropName.toString(), config.getRouterDnsPass()); - // boolean passDns = config.getRouterDnsPass(); + properties.put(dhcpServer4PropName.toString() + "passDns", config.getRouterDnsPass()); - StringBuilder prefixPropName = new StringBuilder(dhcpServer4PropName).append("prefix"); IP4Address subnetMask = (IP4Address) IPAddress.parseHostAddress(config.getRouterDhcpSubnetMask()); - // IP4Address subnet = (IP4Address) IPAddress.parseHostAddress( - // NetworkUtil.calculateNetwork(config.getIpAddress(), config.getSubnetMask())); short prefix = NetworkUtil.getNetmaskShortForm(subnetMask.getHostAddress()); - properties.put(prefixPropName.toString(), prefix); + properties.put(dhcpServer4PropName.toString() + "prefix", prefix); - // Use our IP as the DNS server and we'll use named to proxy DNS queries - StringBuilder dnsServerPropName = new StringBuilder(basePropName.toString()).append("ip4.dnsServers"); List dnsServers = new ArrayList<>(); dnsServers.add((IP4Address) IPAddress.parseHostAddress(config.getIpAddress())); StringBuilder dnsServersBuilder = new StringBuilder(); dnsServers.forEach(dns -> dnsServersBuilder.append(dns.getHostAddress()).append(",")); - properties.put(dnsServerPropName.toString(), + properties.put(dhcpServer4PropName.toString() + "ip4.dnsServers", dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); - - // logger.debug("DhcpServerConfigIP4 - start: {}, end: {}, prefix: {}, subnet: {}, subnetMask: {}", - // new Object[] { rangeStart.getHostAddress(), rangeEnd.getHostAddress(), prefix, - // subnet.getHostAddress(), subnetMask.getHostAddress() }); - // try { - // DhcpServerCfg dhcpServerCfg = new DhcpServerCfg(config.getName(), true, defaultLeaseTime, - // maximumLeaseTime, passDns); - // DhcpServerCfgIP4 dhcpServerCfgIP4 = new DhcpServerCfgIP4(subnet, subnetMask, prefix, - // routerAddress, rangeStart, rangeEnd, dnsServers); - // netConfigs.add(new DhcpServerConfigIP4(dhcpServerCfg, dhcpServerCfgIP4)); - // } catch (KuraException e) { - // logger.error( - // "Failed to create new DhcpServerConfigIP4 object. Please verify that DHCP pool IP addresses (see - // below) are in the {} subnet.", - // subnet.getHostAddress()); - // logger.error("DHCP Pool: range from {} to {}", rangeStart.getHostAddress(), - // rangeEnd.getHostAddress()); - // logger.error("Exception: ", e); - // } } @Override From 062fcf2030f5754dfabb2008f029619b1d57d2d5 Mon Sep 17 00:00:00 2001 From: Merlino Date: Wed, 27 Apr 2022 17:58:50 +0200 Subject: [PATCH 05/17] Code refactor again Signed-off-by: Merlino --- .../web/server/GwtNetworkServiceImpl.java | 221 ++++++------------ 1 file changed, 70 insertions(+), 151 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 277bbfe148d..db044cf5483 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -46,8 +46,6 @@ import org.eclipse.kura.net.NetworkAdminService; import org.eclipse.kura.net.NetworkPair; import org.eclipse.kura.net.dhcp.DhcpLease; -import org.eclipse.kura.net.dhcp.DhcpServerCfg; -import org.eclipse.kura.net.dhcp.DhcpServerCfgIP4; import org.eclipse.kura.net.dhcp.DhcpServerConfigIP4; import org.eclipse.kura.net.firewall.FirewallAutoNatConfig; import org.eclipse.kura.net.firewall.FirewallNatConfig; @@ -750,8 +748,7 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter checkXSRFToken(xsrfToken); ConfigurationService configurationService = ServiceLocator.getInstance().getService(ConfigurationService.class); Map properties = new HashMap<>(); - StringBuilder basePropName = new StringBuilder("net.interface."); - basePropName.append(config.getName()).append(".config."); + StringBuilder basePropName = new StringBuilder("net.interface.").append(config.getName()).append(".config."); String status = config.getStatus(); if (logger.isDebugEnabled()) { @@ -779,7 +776,7 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter configurationService.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService", properties, true); - } catch (Exception e) { + } catch (UnknownHostException | KuraException e) { throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); } } @@ -1120,23 +1117,18 @@ private void fillIp4AndDhcpProperties(GwtNetInterfaceConfig config, Map properties, String basePropName) { + private void fillDnsServers(GwtNetInterfaceConfig config, Map properties, String basePropName) + throws UnknownHostException { String regexp = "[\\s,;\\n\\t]+"; String dnsServerPropName = basePropName + "ip4.dnsServers"; String[] dnsServersString = config.getDnsServers().split(regexp); if (dnsServersString != null && dnsServersString.length > 0) { StringBuilder dnsServersBuilder = new StringBuilder(); - try { - for (String dns : Arrays.asList(dnsServersString)) { - dnsServersBuilder.append(((IP4Address) IPAddress.parseHostAddress(dns)).getHostAddress()) - .append(","); - } - properties.put(dnsServerPropName, - dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); - } catch (UnknownHostException e) { - logger.warn("Failed to parse dns server address", e); - properties.put(dnsServerPropName, ""); + for (String dns : Arrays.asList(dnsServersString)) { + dnsServersBuilder.append(((IP4Address) IPAddress.parseHostAddress(dns)).getHostAddress()).append(","); } + properties.put(dnsServerPropName, + dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); } else { properties.put(dnsServerPropName, ""); } @@ -1472,53 +1464,12 @@ private WifiConfig getWifiConfig(GwtWifiConfig gwtWifiConfig) throws GwtKuraExce return wifiConfig; } - // private WifiConfig getWifiConfig(GwtWifiConfig gwtWifiConfig) throws GwtKuraException { private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map properties, String basePropName, - String interfaceName) throws GwtKuraException { - // net.interface.wlp1s0.config.dhcpClient4.enabled = false - // net.interface.wlp1s0.config.dhcpClient6.enabled = false - // net.interface.wlp1s0.config.ip4.address = - // net.interface.wlp1s0.config.ip4.dnsServers = - // net.interface.wlp1s0.config.ip4.gateway = - // net.interface.wlp1s0.config.ip4.prefix = 24 - // net.interface.wlp1s0.config.ip4.status = netIPv4StatusDisabled - // net.interface.wlp1s0.config.ip6.dnsServers = - // net.interface.wlp1s0.config.ip6.status = netIPv6StatusDisabled - // net.interface.wlp1s0.config.wifi.infra.bgscan = - // net.interface.wlp1s0.config.wifi.infra.channel = 1 - // net.interface.wlp1s0.config.wifi.infra.driver = nl80211 - // net.interface.wlp1s0.config.wifi.infra.groupCiphers = CCMP_TKIP - // net.interface.wlp1s0.config.wifi.infra.ignoreSSID = false - // net.interface.wlp1s0.config.wifi.infra.mode = INFRA - // net.interface.wlp1s0.config.wifi.infra.pairwiseCiphers = CCMP_TKIP - // net.interface.wlp1s0.config.wifi.infra.passphrase = - // net.interface.wlp1s0.config.wifi.infra.pingAccessPoint = false - // net.interface.wlp1s0.config.wifi.infra.radioMode = RADIO_MODE_80211b - // net.interface.wlp1s0.config.wifi.infra.securityType = SECURITY_NONE - // net.interface.wlp1s0.config.wifi.infra.ssid = - // net.interface.wlp1s0.config.wifi.master.bgscan = - // net.interface.wlp1s0.config.wifi.master.channel = 1 - // net.interface.wlp1s0.config.wifi.master.driver = nl80211 - // net.interface.wlp1s0.config.wifi.master.groupCiphers = CCMP_TKIP - // net.interface.wlp1s0.config.wifi.master.ignoreSSID = false - // net.interface.wlp1s0.config.wifi.master.mode = MASTER - // net.interface.wlp1s0.config.wifi.master.pairwiseCiphers = CCMP - // net.interface.wlp1s0.config.wifi.master.passphrase = - // qAHZ6ajx/QrkiLqh-F9x5ZNdnvw08Kl3TgU3um1FedDKuyKdB - // net.interface.wlp1s0.config.wifi.master.pingAccessPoint = false - // net.interface.wlp1s0.config.wifi.master.radioMode = RADIO_MODE_80211g - // net.interface.wlp1s0.config.wifi.master.securityType = SECURITY_WPA2 - // net.interface.wlp1s0.config.wifi.master.ssid = kura_gateway_0 - // net.interface.wlp1s0.config.wifi.mode = MASTER - // net.interface.wlp1s0.type = WIFI - - // WifiConfig wifiConfig = new WifiConfig(); + String interfaceName) throws KuraException, GwtKuraException { StringBuilder wifiBasePropName = new StringBuilder(basePropName).append("wifi."); - // WifiMode wifiMode = getWifiConfigWirelessMode(gwtWifiConfig.getWirelessMode()); - // wifiConfig.setMode(wifiMode); String mode = gwtWifiConfig.getWirelessMode(); - String wifiMode = WifiMode.UNKNOWN.name(); + String wifiMode; StringBuilder wifiModeBasePropName = new StringBuilder(wifiBasePropName); if (mode != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { wifiMode = WifiMode.MASTER.name(); @@ -1527,58 +1478,33 @@ private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map wifiMode = WifiMode.INFRA.name(); wifiModeBasePropName.append("infra."); } else if (mode != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAdHoc.name())) { - // ???? - wifiMode = WifiMode.ADHOC.name(); + properties.put(wifiBasePropName.toString() + "mode", WifiMode.ADHOC.name()); + return; } else { - // ???? - wifiMode = WifiMode.UNKNOWN.name(); + properties.put(wifiBasePropName.toString() + "mode", WifiMode.UNKNOWN.name()); + return; } - properties.put(wifiBasePropName.append("mode").toString(), wifiMode); + properties.put(wifiBasePropName.toString() + "mode", wifiMode); - // wifiConfig.setSSID(GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getWirelessSsid())); properties.put(wifiModeBasePropName.toString() + "ssid", GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getWirelessSsid())); - - // wifiConfig.setDriver(gwtWifiConfig.getDriver()); properties.put(wifiModeBasePropName.toString() + "driver", gwtWifiConfig.getDriver()); - - // WifiRadioMode wifiRadioMode = getWifiConfigRadioMode(gwtWifiConfig.getRadioModeEnum()); - // wifiConfig.setRadioMode(wifiRadioMode); properties.put(wifiModeBasePropName.toString() + "radioMode", getWifiConfigRadioMode(gwtWifiConfig.getRadioModeEnum()).name()); - // ???? - // String hardwareMode = gwtWifiConfig.getRadioModeEnum().getRadioMode(); - // wifiConfig.setHardwareMode(hardwareMode); - - int[] wifiConfigChannels = getWifiConfigChannels(gwtWifiConfig.getChannels()); - String wifiConfigChannelsPropName = wifiModeBasePropName.toString() + "channel"; - if (wifiConfigChannels.length > 0) { - StringBuilder wifiConfigChannelsStringBuilder = new StringBuilder(); - for (int i = 0; i < wifiConfigChannels.length; i++) { - wifiConfigChannelsStringBuilder.append(String.valueOf(wifiConfigChannels[i])); - if (i != wifiConfigChannels.length - 1) { - wifiConfigChannelsStringBuilder.append(" "); - } - } - properties.put(wifiConfigChannelsPropName, wifiConfigChannelsStringBuilder.toString()); - // wifiConfig.setChannels(wifiConfigChannels); - } + fillWifiChannelsProperties(gwtWifiConfig, properties, wifiModeBasePropName.toString()); WifiSecurity wifiSecurity = getWifiConfigSecurity(gwtWifiConfig.getSecurity()); properties.put(wifiModeBasePropName.toString() + "securityType", wifiSecurity.name()); - // wifiConfig.setSecurity(wifiSecurity); WifiCiphers wifiPairwiseCiphers = getWifiConfigCiphers(gwtWifiConfig.getPairwiseCiphers()); if (wifiPairwiseCiphers != null) { properties.put(wifiModeBasePropName.toString() + "pairwiseCiphers", wifiPairwiseCiphers.name()); - // wifiConfig.setPairwiseCiphers(wifiPairwiseCiphers); } WifiCiphers wifiGroupCiphers = getWifiConfigCiphers(gwtWifiConfig.getGroupCiphers()); if (wifiGroupCiphers != null) { properties.put(wifiModeBasePropName.toString() + "groupCiphers", wifiGroupCiphers.name()); - // wifiConfig.setGroupCiphers(wifiGroupCiphers); } WifiBgscan wifiBgscan = getWifiConfigBgscan(gwtWifiConfig, gwtWifiConfig.getBgscanModule()); @@ -1589,76 +1515,69 @@ private void fillWifiProperties(GwtWifiConfig gwtWifiConfig, Map + ":" + wifiBgscan.getRssiThreshold() + ":" + wifiBgscan.getLongInterval(); properties.put(wifiModeBasePropName.toString() + "bgscan", wifiBgscanString); } - // wifiConfig.setBgscan(wifiBgscan); - // wifiConfig.setPasskey(GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getPassword())); - // CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); - // try { - // char[] passphrase = cs.encryptAes(GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getPassword()).toCharArray()); - // properties.put(wifiModeBasePropName.append("passphrase").toString(), new Password(passphrase)); - // } catch (KuraException e) { - // throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? - // } + fillWifiPassphrase(gwtWifiConfig, properties, wifiModeBasePropName.toString(), interfaceName, mode); - String passKey = GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getPassword()); - if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { + properties.put(wifiModeBasePropName.toString() + "pingAccessPoint", gwtWifiConfig.pingAccessPoint()); + properties.put(wifiModeBasePropName.toString() + "ignoreSSID", gwtWifiConfig.ignoreSSID()); + } - List result = privateFindNetInterfaceConfigurations(); - for (GwtNetInterfaceConfig netConfig : result) { - if (netConfig instanceof GwtWifiNetInterfaceConfig - && interfaceName.equals(((GwtWifiNetInterfaceConfig) netConfig).getName())) { - GwtWifiNetInterfaceConfig oldWifiConfig = (GwtWifiNetInterfaceConfig) netConfig; - GwtWifiConfig oldGwtWifiConfig; - if (mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { - oldGwtWifiConfig = oldWifiConfig.getAccessPointWifiConfig(); - } else { - oldGwtWifiConfig = oldWifiConfig.getStationWifiConfig(); - } - // try { - if (oldGwtWifiConfig != null) { - // CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); - // char[] passphrase = cs.encryptAes( - // GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword()).toCharArray()); - properties.put(wifiModeBasePropName.toString() + "passphrase", - new Password(GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword()))); - // wifiConfig.setPasskey(GwtSafeHtmlUtils.htmlUnescape(oldGwtWifiConfig.getPassword())); - } - // } catch (KuraException e) { - // throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? - // } + private void fillWifiChannelsProperties(GwtWifiConfig gwtWifiConfig, Map properties, + String wifiModeBasePropName) { + int[] wifiConfigChannels = getWifiConfigChannels(gwtWifiConfig.getChannels()); + if (wifiConfigChannels.length > 0) { + StringBuilder wifiConfigChannelsStringBuilder = new StringBuilder(); + for (int i = 0; i < wifiConfigChannels.length; i++) { + wifiConfigChannelsStringBuilder.append(String.valueOf(wifiConfigChannels[i])); + if (i != wifiConfigChannels.length - 1) { + wifiConfigChannelsStringBuilder.append(" "); } } - } else if (passKey != null && wifiMode.equalsIgnoreCase(WifiMode.MASTER.name())) { - validateUserPassword(passKey); - try { - CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); - char[] passphrase = cs.encryptAes(passKey.toCharArray()); - properties.put(wifiModeBasePropName.toString() + "passphrase", new Password(passphrase)); - } catch (KuraException e) { - throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? - } - } else { - try { - CryptoService cs = ServiceLocator.getInstance().getService(CryptoService.class); - char[] passphrase = cs.encryptAes(passKey.toCharArray()); - properties.put(wifiModeBasePropName.toString() + "passphrase", new Password(passphrase)); - } catch (KuraException e) { - throw new GwtKuraException(GwtKuraErrorCode.WARNING, e); // change error code. Add a new one? - } + properties.put(wifiModeBasePropName.toString() + "channel", wifiConfigChannelsStringBuilder.toString()); } + } - // wifiConfig.setPingAccessPoint(gwtWifiConfig.pingAccessPoint()); - properties.put(wifiModeBasePropName.toString() + "pingAccessPoint", gwtWifiConfig.pingAccessPoint()); - - // wifiConfig.setIgnoreSSID(gwtWifiConfig.ignoreSSID()); - properties.put(wifiModeBasePropName.toString() + "ignoreSSID", gwtWifiConfig.ignoreSSID()); - - // ???? - // wifiConfig.setBroadcast(!gwtWifiConfig.ignoreSSID()); + private void fillWifiPassphrase(GwtWifiConfig gwtWifiConfig, Map properties, + String wifiModeBasePropName, String interfaceName, String mode) throws GwtKuraException, KuraException { + String passKey = GwtSafeHtmlUtils.htmlUnescape(gwtWifiConfig.getPassword()); + String wifiPassphrasePropName = wifiModeBasePropName + "passphrase"; + if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { + Optional oldGwtWifiConfig = getOldGwtWifiConfig(interfaceName, mode); + oldGwtWifiConfig.ifPresent(config -> properties.put(wifiPassphrasePropName, + new Password(GwtSafeHtmlUtils.htmlUnescape(config.getPassword())))); + } else if (passKey != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { + validateUserPassword(passKey); + properties.put(wifiPassphrasePropName, new Password(encryptWifiPassphrase(passKey))); + } else if (passKey != null) { + properties.put(wifiPassphrasePropName, new Password(encryptWifiPassphrase(passKey))); + } + } - // wifiConfig.setWifiCountryCode(gwtWifiConfig.getCountryCode()); + private char[] encryptWifiPassphrase(String wifiPassphrase) throws GwtKuraException, KuraException { + CryptoService cryptoService = ServiceLocator.getInstance().getService(CryptoService.class); + return cryptoService.encryptAes(wifiPassphrase.toCharArray()); + } - // return wifiConfig; + private Optional getOldGwtWifiConfig(String interfaceName, String mode) throws GwtKuraException { + Optional config = Optional.empty(); + List result = privateFindNetInterfaceConfigurations(); + for (GwtNetInterfaceConfig netConfig : result) { + if (netConfig instanceof GwtWifiNetInterfaceConfig + && interfaceName.equals(((GwtWifiNetInterfaceConfig) netConfig).getName())) { + GwtWifiNetInterfaceConfig oldWifiConfig = (GwtWifiNetInterfaceConfig) netConfig; + GwtWifiConfig oldGwtWifiConfig; + if (mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { + oldGwtWifiConfig = oldWifiConfig.getAccessPointWifiConfig(); + } else { + oldGwtWifiConfig = oldWifiConfig.getStationWifiConfig(); + } + if (oldGwtWifiConfig != null) { + config = Optional.of(oldGwtWifiConfig); + break; + } + } + } + return config; } private WifiBgscan getWifiConfigBgscan(GwtWifiConfig gwtWifiConfig, String bgscanModule) { From 4900f47fee140e92a92e4db4d44121eff0b1fbc4 Mon Sep 17 00:00:00 2001 From: Merlino Date: Fri, 29 Apr 2022 09:31:23 +0200 Subject: [PATCH 06/17] Replaced NetAdmin with ConfService in update firewall configuration Signed-off-by: Merlino --- .../firewall/FirewallOpenPortConfigIP.java | 67 +-- .../web/server/GwtNetworkServiceImpl.java | 546 +++++++++--------- 2 files changed, 281 insertions(+), 332 deletions(-) diff --git a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java index 9f2aea8efd0..07269eb7e55 100644 --- a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java +++ b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java @@ -12,6 +12,8 @@ ******************************************************************************/ package org.eclipse.kura.net.firewall; +import java.util.Objects; + import org.eclipse.kura.net.IPAddress; import org.eclipse.kura.net.NetProtocol; import org.eclipse.kura.net.NetworkPair; @@ -176,17 +178,8 @@ public void setSourcePortRange(String sourcePortRange) { @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + (this.permittedInterfaceName == null ? 0 : this.permittedInterfaceName.hashCode()); - result = prime * result + (this.permittedMac == null ? 0 : this.permittedMac.hashCode()); - result = prime * result + (this.permittedNetwork == null ? 0 : this.permittedNetwork.hashCode()); - result = prime * result + this.port; - result = prime * result + (this.protocol == null ? 0 : this.protocol.hashCode()); - result = prime * result + (this.sourcePortRange == null ? 0 : this.sourcePortRange.hashCode()); - result = prime * result - + (this.unpermittedInterfaceName == null ? 0 : this.unpermittedInterfaceName.hashCode()); - return result; + return Objects.hash(permittedInterfaceName, permittedMac, permittedNetwork, port, portRange, protocol, + sourcePortRange, unpermittedInterfaceName); } @Override @@ -200,49 +193,13 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - FirewallOpenPortConfigIP other = (FirewallOpenPortConfigIP) obj; - if (this.permittedInterfaceName == null) { - if (other.permittedInterfaceName != null) { - return false; - } - } else if (!this.permittedInterfaceName.equals(other.permittedInterfaceName)) { - return false; - } - if (this.permittedMac == null) { - if (other.permittedMac != null) { - return false; - } - } else if (!this.permittedMac.equals(other.permittedMac)) { - return false; - } - if (this.permittedNetwork == null) { - if (other.permittedNetwork != null) { - return false; - } - } else if (!this.permittedNetwork.equals(other.permittedNetwork)) { - return false; - } - if (this.port != other.port) { - return false; - } - if (this.protocol != other.protocol) { - return false; - } - if (this.sourcePortRange == null) { - if (other.sourcePortRange != null) { - return false; - } - } else if (!this.sourcePortRange.equals(other.sourcePortRange)) { - return false; - } - if (this.unpermittedInterfaceName == null) { - if (other.unpermittedInterfaceName != null) { - return false; - } - } else if (!this.unpermittedInterfaceName.equals(other.unpermittedInterfaceName)) { - return false; - } - return true; + FirewallOpenPortConfigIP other = (FirewallOpenPortConfigIP) obj; + return Objects.equals(permittedInterfaceName, other.permittedInterfaceName) + && Objects.equals(permittedMac, other.permittedMac) + && Objects.equals(permittedNetwork, other.permittedNetwork) && port == other.port + && Objects.equals(portRange, other.portRange) && protocol == other.protocol + && Objects.equals(sourcePortRange, other.sourcePortRange) + && Objects.equals(unpermittedInterfaceName, other.unpermittedInterfaceName); } @Override @@ -265,6 +222,8 @@ public String toString() { StringBuilder builder = new StringBuilder(); builder.append("FirewallOpenPortConfigIP [port="); builder.append(this.port); + builder.append(", portRange="); + builder.append(this.portRange); builder.append(", protocol="); builder.append(this.protocol); builder.append(", permittedNetwork="); diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index db044cf5483..e9553a70118 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -42,18 +42,13 @@ import org.eclipse.kura.net.NetInterfaceState; import org.eclipse.kura.net.NetInterfaceStatus; import org.eclipse.kura.net.NetInterfaceType; -import org.eclipse.kura.net.NetProtocol; import org.eclipse.kura.net.NetworkAdminService; -import org.eclipse.kura.net.NetworkPair; import org.eclipse.kura.net.dhcp.DhcpLease; import org.eclipse.kura.net.dhcp.DhcpServerConfigIP4; import org.eclipse.kura.net.firewall.FirewallAutoNatConfig; import org.eclipse.kura.net.firewall.FirewallNatConfig; -import org.eclipse.kura.net.firewall.FirewallOpenPortConfigIP; import org.eclipse.kura.net.firewall.FirewallOpenPortConfigIP4; -import org.eclipse.kura.net.firewall.FirewallPortForwardConfigIP; import org.eclipse.kura.net.firewall.FirewallPortForwardConfigIP4; -import org.eclipse.kura.net.firewall.RuleType; import org.eclipse.kura.net.modem.CellularModem; import org.eclipse.kura.net.modem.ModemConfig; import org.eclipse.kura.net.modem.ModemConfig.AuthType; @@ -118,7 +113,9 @@ public class GwtNetworkServiceImpl extends OsgiRemoteServiceServlet implements G private static final long serialVersionUID = -4188750359099902616L; private static final Logger logger = LoggerFactory.getLogger(GwtNetworkServiceImpl.class); + private static final String FIREWALL_CONFIGURATION_SERVICE_PID = "org.eclipse.kura.net.admin.FirewallConfigurationService"; private static final String ENABLED = "enabled"; + private static final String UNKNOWN_IP = "0.0.0.0/0"; @Override public List findNetInterfaceConfigurations() throws GwtKuraException { @@ -224,7 +221,7 @@ private List privateFindNetInterfaceConfigurations() thro for (NetConfig netConfig : netConfigs) { if (netConfig instanceof NetConfigIP4) { logger.debug("Setting up NetConfigIP4 with status {}", - ((NetConfigIP4) netConfig).getStatus().toString()); + ((NetConfigIP4) netConfig).getStatus()); // we are enabled - for LAN or WAN? if (((NetConfigIP4) netConfig) @@ -276,7 +273,7 @@ private List privateFindNetInterfaceConfigurations() thro } // DHCP supplied DNS servers - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); List dnsServers = addressConfig.getDnsServers(); if (dnsServers != null && !dnsServers.isEmpty()) { String sep = ""; @@ -319,7 +316,7 @@ private List privateFindNetInterfaceConfigurations() thro } // Custom DNS servers - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); List dnsServers = ((NetConfigIP4) netConfig).getDnsServers(); if (dnsServers != null && !dnsServers.isEmpty()) { for (IP4Address dnsServer : dnsServers) { @@ -435,7 +432,7 @@ private List privateFindNetInterfaceConfigurations() thro if (channels != null) { ArrayList alChannels = new ArrayList<>(); for (int channel : channels) { - alChannels.add(new Integer(channel)); + alChannels.add(channel); } gwtWifiConfig.setChannels(alChannels); } @@ -478,22 +475,20 @@ private List privateFindNetInterfaceConfigurations() thro } else if (activeWirelessMode == WifiMode.INFRA) { ((GwtWifiNetInterfaceConfig) gwtNetConfig) .setWirelessMode(GwtWifiWirelessMode.netWifiWirelessModeStation.name()); - if (wifiClientMonitorService != null) { - if (wifiConfig.getMode().equals(WifiMode.INFRA)) { - if (gwtNetConfig.getStatus() - .equals(GwtNetIfStatus.netIPv4StatusDisabled.name()) - || gwtNetConfig.getStatus() - .equals(GwtNetIfStatus.netIPv4StatusUnmanaged.name())) { - gwtNetConfig.setHwRssi("N/A"); - } else { - try { - int rssi = wifiClientMonitorService.getSignalLevel( - netIfConfig.getName(), wifiConfig.getSSID()); - logger.debug("Setting Received Signal Strength to {}", rssi); - gwtNetConfig.setHwRssi(Integer.toString(rssi)); - } catch (KuraException e) { - logger.warn("Failed", e); - } + if (wifiClientMonitorService != null + && wifiConfig.getMode().equals(WifiMode.INFRA)) { + if (gwtNetConfig.getStatus().equals(GwtNetIfStatus.netIPv4StatusDisabled.name()) + || gwtNetConfig.getStatus() + .equals(GwtNetIfStatus.netIPv4StatusUnmanaged.name())) { + gwtNetConfig.setHwRssi("N/A"); + } else { + try { + int rssi = wifiClientMonitorService + .getSignalLevel(netIfConfig.getName(), wifiConfig.getSSID()); + logger.debug("Setting Received Signal Strength to {}", rssi); + gwtNetConfig.setHwRssi(Integer.toString(rssi)); + } catch (KuraException e) { + logger.warn("Failed", e); } } } @@ -661,8 +656,7 @@ private List privateFindNetInterfaceConfigurations() thro logger.debug("Setting up DhcpServerConfigIP4: {} to {}", ((DhcpServerConfigIP4) netConfig).getRangeStart().getHostAddress(), ((DhcpServerConfigIP4) netConfig).getRangeEnd().getHostAddress()); - logger.debug("Setting up DhcpServerConfigIP4: {}", - ((DhcpServerConfigIP4) netConfig).toString()); + logger.debug("Setting up DhcpServerConfigIP4: {}", netConfig); isDhcpServerEnabled = ((DhcpServerConfigIP4) netConfig).isEnabled(); @@ -1057,6 +1051,246 @@ public ArrayList findDeviceFirewallNATs(GwtXSRFToken xsrfTo } } + @Override + public void updateDeviceFirewallOpenPorts(GwtXSRFToken xsrfToken, List entries) + throws GwtKuraException { + checkXSRFToken(xsrfToken); + ConfigurationService configurationService = ServiceLocator.getInstance().getService(ConfigurationService.class); + Map properties = new HashMap<>(); + String openPortsPropName = "firewall.open.ports"; + StringBuilder openPorts = new StringBuilder(); + + try { + for (GwtFirewallOpenPortEntry entry : entries) { + openPorts.append(entry.getPortRange()).append(","); + openPorts.append(entry.getProtocol()).append(","); + if (entry.getPermittedNetwork() == null || entry.getPermittedNetwork().equals(UNKNOWN_IP)) { + openPorts.append(UNKNOWN_IP); + } else { + appendNetworkAddress(entry.getPermittedNetwork(), openPorts); + } + openPorts.append(","); + if (entry.getPermittedInterfaceName() != null) { + openPorts.append(entry.getPermittedInterfaceName()); + } + openPorts.append(","); + if (entry.getUnpermittedInterfaceName() != null) { + openPorts.append(entry.getUnpermittedInterfaceName()); + } + openPorts.append(","); + if (entry.getPermittedMAC() != null) { + openPorts.append(entry.getPermittedMAC()); + } + openPorts.append(","); + if (entry.getSourcePortRange() != null) { + openPorts.append(entry.getSourcePortRange()); + } + openPorts.append(",").append("#").append(";"); + } + + properties.put(openPortsPropName, openPorts.toString()); + configurationService.updateConfiguration(FIREWALL_CONFIGURATION_SERVICE_PID, properties, true); + } catch (KuraException | UnknownHostException e) { + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + + @Override + public void updateDeviceFirewallPortForwards(GwtXSRFToken xsrfToken, List entries) + throws GwtKuraException { + + checkXSRFToken(xsrfToken); + ConfigurationService configurationService = ServiceLocator.getInstance().getService(ConfigurationService.class); + Map properties = new HashMap<>(); + String portForwardingPropName = "firewall.port.forwarding"; + StringBuilder portForwarding = new StringBuilder(); + + try { + for (GwtFirewallPortForwardEntry entry : entries) { + portForwarding.append(entry.getInboundInterface()).append(","); + portForwarding.append(entry.getOutboundInterface()).append(","); + appendNetworkAddress(entry.getAddress(), portForwarding); + portForwarding.append(","); + portForwarding.append(entry.getProtocol()).append(","); + portForwarding.append(entry.getOutPort()).append(","); + portForwarding.append(entry.getInPort()).append(","); + if (entry.getMasquerade().equals("yes")) { + portForwarding.append("true"); + } else { + portForwarding.append("false"); + } + portForwarding.append(","); + if (entry.getPermittedNetwork() == null || entry.getPermittedNetwork().equals(UNKNOWN_IP)) { + portForwarding.append(UNKNOWN_IP); + } else { + appendNetworkAddress(entry.getPermittedNetwork(), portForwarding); + } + portForwarding.append(","); + if (entry.getPermittedMAC() != null) { + portForwarding.append(entry.getPermittedMAC()).append(","); + } + portForwarding.append(","); + if (entry.getSourcePortRange() != null) { + portForwarding.append(entry.getSourcePortRange()); + } + portForwarding.append(",").append("#").append(";"); + } + + properties.put(portForwardingPropName, portForwarding.toString()); + configurationService.updateConfiguration(FIREWALL_CONFIGURATION_SERVICE_PID, properties, true); + } catch (KuraException | UnknownHostException e) { + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + + @Override + public void updateDeviceFirewallNATs(GwtXSRFToken xsrfToken, List entries) + throws GwtKuraException { + + checkXSRFToken(xsrfToken); + ConfigurationService configurationService = ServiceLocator.getInstance().getService(ConfigurationService.class); + Map properties = new HashMap<>(); + String natPropName = "firewall.nat"; + StringBuilder nat = new StringBuilder(); + + try { + for (GwtFirewallNatEntry entry : entries) { + nat.append(entry.getInInterface()).append(","); + nat.append(entry.getOutInterface()).append(","); + nat.append(entry.getProtocol()).append(","); + if (entry.getSourceNetwork() == null || entry.getSourceNetwork().equals(UNKNOWN_IP)) { + nat.append(UNKNOWN_IP); + } else { + appendNetworkAddress(entry.getSourceNetwork(), nat); + } + if (entry.getDestinationNetwork() == null || entry.getDestinationNetwork().equals(UNKNOWN_IP)) { + nat.append(UNKNOWN_IP); + } else { + appendNetworkAddress(entry.getDestinationNetwork(), nat); + } + if (entry.getMasquerade().equals("yes")) { + nat.append("true"); + } else { + nat.append("false"); + } + nat.append(",").append("#").append(";"); + } + + properties.put(natPropName, nat.toString()); + configurationService.updateConfiguration(FIREWALL_CONFIGURATION_SERVICE_PID, properties, true); + } catch (KuraException | UnknownHostException e) { + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + + @Override + public void renewDhcpLease(GwtXSRFToken xsrfToken, String interfaceName) throws GwtKuraException { + checkXSRFToken(xsrfToken); + NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); + try { + nas.renewDhcpLease(GwtSafeHtmlUtils.htmlEscape(interfaceName)); + } catch (KuraException e) { + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + + @Override + public List findFrequencies(GwtXSRFToken xsrfToken, String interfaceName, + GwtWifiRadioMode radioMode) throws GwtKuraException { + checkXSRFToken(xsrfToken); + + logger.debug("Find Frequency Network Service impl"); + List channels = new ArrayList<>(); + + NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); + try { + List channelFrequencies = nas.getWifiFrequencies(interfaceName); + boolean hasSystemDFS = nas.isWifiDFS(interfaceName); + + for (WifiChannel channelFreq : channelFrequencies) { + if (logger.isDebugEnabled()) + logger.debug(channelFreq.toString()); + + boolean channelIsfive5Ghz = channelFreq.getFrequency() > 2501; + + if (radioMode.isFiveGhz() && channelIsfive5Ghz || radioMode.isTwoDotFourGhz() && !channelIsfive5Ghz) { + + if (Boolean.TRUE.equals(channelFreq.isRadarDetection()) && !hasSystemDFS) { + continue; + } + + GwtWifiChannelFrequency channelFrequency = new GwtWifiChannelFrequency(); + + channelFrequency.setChannel(channelFreq.getChannel()); + channelFrequency.setFrequency(channelFreq.getFrequency()); + channelFrequency.setNoIrradiation(channelFreq.isNoInitiatingRadiation()); + channelFrequency.setRadarDetection(channelFreq.isRadarDetection()); + channelFrequency.setDisabled(channelFreq.isDisabled()); + + channels.add(channelFrequency); + + logger.debug("Found {} - {} Mhz", channelFrequency.getChannel(), channelFrequency.getFrequency()); + } + + } + return channels; + } catch (KuraException e) { + logger.error("Find Frequency exception"); + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + + @Override + public String getWifiCountryCode(GwtXSRFToken xsrfToken) throws GwtKuraException { + checkXSRFToken(xsrfToken); + + logger.info("Get Wifi Country Code impl"); + NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); + try { + return nas.getWifiCountryCode(); + } catch (KuraException e) { + logger.error("Get Wifi Country Code exception"); + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + + @Override + public boolean isIEEE80211ACSupported(GwtXSRFToken xsrfToken, String ifaceName) throws GwtKuraException { + checkXSRFToken(xsrfToken); + + NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); + try { + return nas.isWifiIEEE80211AC(ifaceName); + } catch (KuraException e) { + logger.error("Ieee80211ac support exception"); + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + + @Override + public List getDhcpLeases(GwtXSRFToken xsrfToken) throws GwtKuraException { + checkXSRFToken(xsrfToken); + + List dhcpLease = new ArrayList<>(); + + NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); + try { + List leases = nas.getDhcpLeases(); + + for (DhcpLease dl : leases) { + GwtDhcpLease dhcp = new GwtDhcpLease(); + dhcp.setMacAddress(dl.getMacAddress()); + dhcp.setIpAddress(dl.getIpAddress()); + dhcp.setHostname(dl.getHostname()); + dhcpLease.add(dhcp.toString()); + } + return dhcpLease; + } catch (KuraException e) { + logger.error("Find Dhcp Lease List Exception"); + throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + } + } + // ------------------------------------------------------------------------------------- // // Private Methods @@ -1257,162 +1491,6 @@ private void fillDhcpServerProperties(GwtNetInterfaceConfig config, Map entries) - throws GwtKuraException { - checkXSRFToken(xsrfToken); - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - List> firewallOpenPortConfigIPs = new ArrayList<>(); - logger.debug("updating open ports"); - - try { - for (GwtFirewallOpenPortEntry entry : entries) { - String network = null; - String prefix = null; - - if (entry.getPermittedNetwork() != null) { - String[] parts = entry.getPermittedNetwork().split("/"); - network = parts[0]; - prefix = parts[1]; - } - - FirewallOpenPortConfigIP firewallOpenPortConfigIP = new FirewallOpenPortConfigIP4(); - - if (entry.getPortRange().indexOf(':') != -1) { - String[] parts = entry.getPortRange().split(":"); - if (Integer.valueOf(parts[0].trim()) < Integer.valueOf(parts[1].trim())) { - firewallOpenPortConfigIP.setPortRange(entry.getPortRange()); - } else { - throw new KuraException(KuraErrorCode.BAD_REQUEST); - } - } else { - firewallOpenPortConfigIP.setPort(Integer.parseInt(entry.getPortRange())); - } - firewallOpenPortConfigIP - .setProtocol(NetProtocol.valueOf(GwtSafeHtmlUtils.htmlEscape(entry.getProtocol()))); - if (network != null && prefix != null) { - firewallOpenPortConfigIP.setPermittedNetwork(new NetworkPair<>( - (IP4Address) IPAddress.parseHostAddress(network), Short.parseShort(prefix))); - } - firewallOpenPortConfigIP - .setPermittedInterfaceName(GwtSafeHtmlUtils.htmlEscape(entry.getPermittedInterfaceName())); - firewallOpenPortConfigIP - .setUnpermittedInterfaceName(GwtSafeHtmlUtils.htmlEscape(entry.getUnpermittedInterfaceName())); - firewallOpenPortConfigIP.setPermittedMac(GwtSafeHtmlUtils.htmlEscape(entry.getPermittedMAC())); - firewallOpenPortConfigIP.setSourcePortRange(GwtSafeHtmlUtils.htmlEscape(entry.getSourcePortRange())); - - logger.debug("adding open port entry for {}", entry.getPortRange()); - firewallOpenPortConfigIPs.add(firewallOpenPortConfigIP); - } - - nas.setFirewallOpenPortConfiguration(firewallOpenPortConfigIPs); - } catch (KuraException | NumberFormatException | UnknownHostException e) { - logger.warn("Exception while updating firewall open ports", e); - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); - } - } - - @Override - public void updateDeviceFirewallPortForwards(GwtXSRFToken xsrfToken, List entries) - throws GwtKuraException { - - logger.debug("updateDeviceFirewallPortForwards() :: updating port forward entries"); - checkXSRFToken(xsrfToken); - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - List> firewallPortForwardConfigIPs = new ArrayList<>(); - - try { - for (GwtFirewallPortForwardEntry entry : entries) { - String network = null; - String prefix = null; - - if (entry.getPermittedNetwork() != null) { - String[] parts = entry.getPermittedNetwork().split("/"); - network = parts[0]; - prefix = parts[1]; - } - - FirewallPortForwardConfigIP firewallPortForwardConfigIP = new FirewallPortForwardConfigIP4(); - firewallPortForwardConfigIP - .setInboundInterface(GwtSafeHtmlUtils.htmlEscape(entry.getInboundInterface())); - firewallPortForwardConfigIP - .setOutboundInterface(GwtSafeHtmlUtils.htmlEscape(entry.getOutboundInterface())); - firewallPortForwardConfigIP.setAddress( - (IP4Address) IPAddress.parseHostAddress(GwtSafeHtmlUtils.htmlEscape(entry.getAddress()))); - firewallPortForwardConfigIP - .setProtocol(NetProtocol.valueOf(GwtSafeHtmlUtils.htmlEscape(entry.getProtocol()))); - firewallPortForwardConfigIP.setInPort(entry.getInPort()); - firewallPortForwardConfigIP.setOutPort(entry.getOutPort()); - boolean masquerade = entry.getMasquerade().equals("yes") ? true : false; - firewallPortForwardConfigIP.setMasquerade(masquerade); - if (network != null && prefix != null) { - firewallPortForwardConfigIP.setPermittedNetwork(new NetworkPair<>( - (IP4Address) IPAddress.parseHostAddress(network), Short.parseShort(prefix))); - } - firewallPortForwardConfigIP.setPermittedMac(GwtSafeHtmlUtils.htmlEscape(entry.getPermittedMAC())); - firewallPortForwardConfigIP.setSourcePortRange(GwtSafeHtmlUtils.htmlEscape(entry.getSourcePortRange())); - - logger.debug("adding port forward entry for inbound iface {} - port {}", - GwtSafeHtmlUtils.htmlEscape(entry.getInboundInterface()), entry.getInPort()); - firewallPortForwardConfigIPs.add(firewallPortForwardConfigIP); - } - - nas.setFirewallPortForwardingConfiguration(firewallPortForwardConfigIPs); - } catch (KuraException | NumberFormatException | UnknownHostException e) { - logger.warn("Exception while updating firewall port forwards", e); - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); - } - } - - @Override - public void updateDeviceFirewallNATs(GwtXSRFToken xsrfToken, List entries) - throws GwtKuraException { - - logger.debug("updateDeviceFirewallNATs() :: updating NAT entries"); - checkXSRFToken(xsrfToken); - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - List firewallNatConfigs = new ArrayList<>(); - - for (GwtFirewallNatEntry entry : entries) { - - String srcNetwork = GwtSafeHtmlUtils.htmlEscape(entry.getSourceNetwork()); - String dstNetwork = GwtSafeHtmlUtils.htmlEscape(entry.getDestinationNetwork()); - if (srcNetwork == null || "".equals(srcNetwork)) { - srcNetwork = "0.0.0.0/0"; - } - if (dstNetwork == null || "".equals(dstNetwork)) { - dstNetwork = "0.0.0.0/0"; - } - - boolean masquerade = entry.getMasquerade().equals("yes"); - - FirewallNatConfig firewallNatConfig = new FirewallNatConfig( - GwtSafeHtmlUtils.htmlEscape(entry.getInInterface()), - GwtSafeHtmlUtils.htmlEscape(entry.getOutInterface()), - GwtSafeHtmlUtils.htmlEscape(entry.getProtocol()), srcNetwork, dstNetwork, masquerade, - RuleType.IP_FORWARDING); - - firewallNatConfigs.add(firewallNatConfig); - } - - try { - nas.setFirewallNatConfiguration(firewallNatConfigs); - } catch (KuraException e) { - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); - } - } - - @Override - public void renewDhcpLease(GwtXSRFToken xsrfToken, String interfaceName) throws GwtKuraException { - checkXSRFToken(xsrfToken); - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - try { - nas.renewDhcpLease(GwtSafeHtmlUtils.htmlEscape(interfaceName)); - } catch (KuraException e) { - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); - } - } - private WifiConfig getWifiConfig(GwtWifiConfig gwtWifiConfig) throws GwtKuraException { WifiConfig wifiConfig = new WifiConfig(); @@ -1533,7 +1611,7 @@ private void fillWifiChannelsProperties(GwtWifiConfig gwtWifiConfig, Map findFrequencies(GwtXSRFToken xsrfToken, String interfaceName, - GwtWifiRadioMode radioMode) throws GwtKuraException { - checkXSRFToken(xsrfToken); - - logger.debug("Find Frequency Network Service impl"); - List channels = new ArrayList<>(); - - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - try { - List channelFrequencies = nas.getWifiFrequencies(interfaceName); - boolean hasSystemDFS = nas.isWifiDFS(interfaceName); - - for (WifiChannel channelFreq : channelFrequencies) { - if (logger.isDebugEnabled()) - logger.debug(channelFreq.toString()); - - boolean channelIsfive5Ghz = channelFreq.getFrequency() > 2501; - - if (radioMode.isFiveGhz() && channelIsfive5Ghz || radioMode.isTwoDotFourGhz() && !channelIsfive5Ghz) { - - if (Boolean.TRUE.equals(channelFreq.isRadarDetection()) && !hasSystemDFS) { - continue; - } - - GwtWifiChannelFrequency channelFrequency = new GwtWifiChannelFrequency(); - - channelFrequency.setChannel(channelFreq.getChannel()); - channelFrequency.setFrequency(channelFreq.getFrequency()); - channelFrequency.setNoIrradiation(channelFreq.isNoInitiatingRadiation()); - channelFrequency.setRadarDetection(channelFreq.isRadarDetection()); - channelFrequency.setDisabled(channelFreq.isDisabled()); - - channels.add(channelFrequency); - - logger.debug("Found {} - {} Mhz", channelFrequency.getChannel(), channelFrequency.getFrequency()); - } - - } - return channels; - } catch (KuraException e) { - logger.error("Find Frequency exception"); - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); - } - } - - @Override - public String getWifiCountryCode(GwtXSRFToken xsrfToken) throws GwtKuraException { - checkXSRFToken(xsrfToken); - - logger.info("Get Wifi Country Code impl"); - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - try { - return nas.getWifiCountryCode(); - } catch (KuraException e) { - logger.error("Get Wifi Country Code exception"); - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); - } - } - - @Override - public boolean isIEEE80211ACSupported(GwtXSRFToken xsrfToken, String ifaceName) throws GwtKuraException { - checkXSRFToken(xsrfToken); - - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - try { - return nas.isWifiIEEE80211AC(ifaceName); - } catch (KuraException e) { - logger.error("Ieee80211ac support exception"); - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); - } - } - private void validateUserPassword(final String password) throws GwtKuraException { final List> validators = PasswordStrengthValidators .fromConfig(Console.getConsoleOptions().getUserOptions()); @@ -1805,27 +1810,12 @@ private void validateUserPassword(final String password) throws GwtKuraException } } - @Override - public List getDhcpLeases(GwtXSRFToken xsrfToken) throws GwtKuraException { - checkXSRFToken(xsrfToken); - - List dhcpLease = new ArrayList<>(); - - NetworkAdminService nas = ServiceLocator.getInstance().getService(NetworkAdminService.class); - try { - List leases = nas.getDhcpLeases(); - - for (DhcpLease dl : leases) { - GwtDhcpLease dhcp = new GwtDhcpLease(); - dhcp.setMacAddress(dl.getMacAddress()); - dhcp.setIpAddress(dl.getIpAddress()); - dhcp.setHostname(dl.getHostname()); - dhcpLease.add(dhcp.toString()); - } - return dhcpLease; - } catch (KuraException e) { - logger.error("Find Dhcp Lease List Exception"); - throw new GwtKuraException(GwtKuraErrorCode.INTERNAL_ERROR, e); + private void appendNetworkAddress(String address, StringBuilder stringBuilder) throws UnknownHostException { + String[] networkAddress = address.split("/"); + if (networkAddress.length >= 2) { + stringBuilder.append(((IP4Address) IPAddress.parseHostAddress(networkAddress[0])).getHostAddress()) + .append("/").append(networkAddress[1]); } } + } From e89cc1d9bacee76a84e54082d0c2f2e1a66553a2 Mon Sep 17 00:00:00 2001 From: Merlino Date: Fri, 29 Apr 2022 10:42:55 +0200 Subject: [PATCH 07/17] Fixed firewall ip/port forwarding config Signed-off-by: Merlino --- .../web/server/GwtNetworkServiceImpl.java | 35 ++++++++++--------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index e9553a70118..a9f34388fc9 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -115,7 +115,8 @@ public class GwtNetworkServiceImpl extends OsgiRemoteServiceServlet implements G private static final Logger logger = LoggerFactory.getLogger(GwtNetworkServiceImpl.class); private static final String FIREWALL_CONFIGURATION_SERVICE_PID = "org.eclipse.kura.net.admin.FirewallConfigurationService"; private static final String ENABLED = "enabled"; - private static final String UNKNOWN_IP = "0.0.0.0/0"; + private static final String UNKNOWN_NETWORK = "0.0.0.0/0"; + private static final String UNKNOWN_IP = "0.0.0.0"; @Override public List findNetInterfaceConfigurations() throws GwtKuraException { @@ -1064,10 +1065,10 @@ public void updateDeviceFirewallOpenPorts(GwtXSRFToken xsrfToken, List= 2) { stringBuilder.append(((IP4Address) IPAddress.parseHostAddress(networkAddress[0])).getHostAddress()) From a9b6c6f93f85ab19c48790f217d37085eccb5217 Mon Sep 17 00:00:00 2001 From: Merlino Date: Fri, 29 Apr 2022 15:12:13 +0200 Subject: [PATCH 08/17] Removed useless constant Signed-off-by: Merlino --- .../java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index a9f34388fc9..264cec53a86 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -116,7 +116,6 @@ public class GwtNetworkServiceImpl extends OsgiRemoteServiceServlet implements G private static final String FIREWALL_CONFIGURATION_SERVICE_PID = "org.eclipse.kura.net.admin.FirewallConfigurationService"; private static final String ENABLED = "enabled"; private static final String UNKNOWN_NETWORK = "0.0.0.0/0"; - private static final String UNKNOWN_IP = "0.0.0.0"; @Override public List findNetInterfaceConfigurations() throws GwtKuraException { From 922c1ed8c8f7c1d9ecf81c502273ad374056cb98 Mon Sep 17 00:00:00 2001 From: Merlino Date: Mon, 2 May 2022 12:59:42 +0200 Subject: [PATCH 09/17] Fixed dns server management Signed-off-by: Merlino --- .../web/server/GwtNetworkServiceImpl.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 264cec53a86..8fd30fb645b 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -1357,14 +1357,21 @@ private void fillDnsServers(GwtNetInterfaceConfig config, Map pr throws UnknownHostException { String regexp = "[\\s,;\\n\\t]+"; String dnsServerPropName = basePropName + "ip4.dnsServers"; - String[] dnsServersString = config.getDnsServers().split(regexp); - if (dnsServersString != null && dnsServersString.length > 0) { + List dnsServers = Arrays.asList(config.getDnsServers().split(regexp)); + if (dnsServers != null && !dnsServers.isEmpty()) { StringBuilder dnsServersBuilder = new StringBuilder(); - for (String dns : Arrays.asList(dnsServersString)) { - dnsServersBuilder.append(((IP4Address) IPAddress.parseHostAddress(dns)).getHostAddress()).append(","); + for (String dns : dnsServers) { + if (!dns.trim().isEmpty()) { + dnsServersBuilder.append(((IP4Address) IPAddress.parseHostAddress(dns)).getHostAddress()) + .append(","); + } + } + if (dnsServersBuilder.length() > 0) { + properties.put(dnsServerPropName, + dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); + } else { + properties.put(dnsServerPropName, ""); } - properties.put(dnsServerPropName, - dnsServersBuilder.toString().substring(0, dnsServersBuilder.toString().length() - 1)); } else { properties.put(dnsServerPropName, ""); } From bf2661961fe7d938cda7bc7573d8c80dc76f2895 Mon Sep 17 00:00:00 2001 From: Merlino Date: Mon, 2 May 2022 14:10:42 +0200 Subject: [PATCH 10/17] Deprecated method in NetworkAdminService Signed-off-by: Merlino --- .../eclipse/kura/net/NetworkAdminService.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java index 1607b50784a..564bd372b88 100644 --- a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java +++ b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java @@ -66,7 +66,10 @@ public List> g * @param mtu * - required MTU for the interface, -1 to keep the automatic default * @throws KuraException + * + * @deprecated Since 2.4 */ + @Deprecated public void updateEthernetInterfaceConfig(String interfaceName, boolean autoConnect, int mtu, List netConfigs) throws KuraException; @@ -78,7 +81,10 @@ public void updateEthernetInterfaceConfig(String interfaceName, boolean autoConn * @param autoConnect * - specifies the auto-connect value for the interface * @throws KuraException + * + * @deprecated Since 2.4 */ + @Deprecated public void updateWifiInterfaceConfig(String interfaceName, boolean autoConnect, WifiAccessPoint accessPoint, List netConfigs) throws KuraException; @@ -100,7 +106,10 @@ public void updateWifiInterfaceConfig(String interfaceName, boolean autoConnect, * @param netConfigs * - list of NetConfigs for this interface * @throws KuraException + * + * @deprecated Since 2.4 */ + @Deprecated public void updateModemInterfaceConfig(String interfaceName, String serialNum, String modemId, int pppNumber, boolean autoConnect, int mtu, List netConfigs) throws KuraException; @@ -165,7 +174,10 @@ public void updateModemInterfaceConfig(String interfaceName, String serialNum, S * @param firewallConfiguration * A list of FirewallOpenPortConfigIP Objects representing the configuration to set * @throws KuraException + * + * @deprecated Since 2.4 */ + @Deprecated public void setFirewallOpenPortConfiguration( List> firewallConfiguration) throws KuraException; @@ -175,10 +187,23 @@ public void setFirewallOpenPortConfiguration( * @param firewallConfiguration * A list of FirewallPortForwardConfigIP Objects representing the configuration to set * @throws KuraException + * + * @deprecated Since 2.4 */ + @Deprecated public void setFirewallPortForwardingConfiguration( List> firewallConfiguration) throws KuraException; + /** + * Sets the 'ip forwarding' portion of the firewall configuration + * + * @param natConfigs + * A list of FirewallNatConfig Objects representing the configuration to set + * @throws KuraException + * + * @deprecated Since 2.4 + */ + @Deprecated public void setFirewallNatConfiguration(List natConfigs) throws KuraException; /** @@ -259,6 +284,7 @@ public void setFirewallPortForwardingConfiguration( /** * Obtains the DHCP Lease values + * * @return list of ipAddresses, macAddresses, hostnames; * @throws KuraException * @since 2.3 From 4c6376c78b6c3b9830679a3da7c8152e2b2e8c8e Mon Sep 17 00:00:00 2001 From: Merlino Date: Wed, 4 May 2022 10:47:17 +0200 Subject: [PATCH 11/17] Put empty properties when switched to DHCP mode Signed-off-by: Merlino --- .../kura/web/server/GwtNetworkServiceImpl.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 8fd30fb645b..33fce428b7c 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -1317,32 +1317,37 @@ private void fillIp4AndDhcpProperties(GwtNetInterfaceConfig config, Map pr String regexp = "[\\s,;\\n\\t]+"; String dnsServerPropName = basePropName + "ip4.dnsServers"; List dnsServers = Arrays.asList(config.getDnsServers().split(regexp)); - if (dnsServers != null && !dnsServers.isEmpty()) { + if (getNetInterfaceStatus(config.getStatus()) == NetInterfaceStatus.netIPv4StatusEnabledWAN + && dnsServers != null && !dnsServers.isEmpty()) { StringBuilder dnsServersBuilder = new StringBuilder(); for (String dns : dnsServers) { if (!dns.trim().isEmpty()) { From eb33890a4c1109ec1ac37b4736f5a8d6295a3706 Mon Sep 17 00:00:00 2001 From: Merlino Date: Wed, 4 May 2022 10:54:19 +0200 Subject: [PATCH 12/17] Added missing default properties values Signed-off-by: Merlino --- .../org/eclipse/kura/web/server/GwtNetworkServiceImpl.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 33fce428b7c..5c0784d64b9 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -1334,6 +1334,8 @@ private void fillIp4AndDhcpProperties(GwtNetInterfaceConfig config, Map Date: Wed, 4 May 2022 12:13:22 +0200 Subject: [PATCH 13/17] Removed password encryption; small code refactor Signed-off-by: Merlino --- .../web/server/GwtNetworkServiceImpl.java | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 5c0784d64b9..9eafdf4e798 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -32,7 +32,6 @@ import org.eclipse.kura.core.net.AbstractNetInterface; import org.eclipse.kura.core.net.util.NetworkUtil; import org.eclipse.kura.core.util.NetUtil; -import org.eclipse.kura.crypto.CryptoService; import org.eclipse.kura.net.IP4Address; import org.eclipse.kura.net.IPAddress; import org.eclipse.kura.net.NetConfig; @@ -1389,7 +1388,7 @@ private void fillDnsServers(GwtNetInterfaceConfig config, Map pr } private void fillModemProperties(GwtModemInterfaceConfig gwtModemConfig, Map properties, - String basePropName, NetInterfaceStatus netInterfaceStatus) throws KuraException, GwtKuraException { + String basePropName, NetInterfaceStatus netInterfaceStatus) throws GwtKuraException { Boolean enabled = netInterfaceStatus.equals(NetInterfaceStatus.netIPv4StatusEnabledWAN); properties.put(basePropName + ENABLED, enabled); @@ -1410,20 +1409,12 @@ private void fillModemProperties(GwtModemInterfaceConfig gwtModemConfig, Map properties, + String basePropName) { GwtModemPdpType pdpType = gwtModemConfig.getPdpType(); if (pdpType != null) { String pdpTypePropName = basePropName + "pdpType"; @@ -1439,8 +1430,25 @@ private void fillModemProperties(GwtModemInterfaceConfig gwtModemConfig, Map properties, + String basePropName) { + GwtModemAuthType authType = gwtModemConfig.getAuthType(); + if (authType != null) { + String authTypePropName = basePropName + "authType"; + if (authType.equals(GwtModemAuthType.netModemAuthNONE)) { + properties.put(authTypePropName, ModemConfig.AuthType.NONE.name()); + } else if (authType.equals(GwtModemAuthType.netModemAuthAUTO)) { + properties.put(authTypePropName, ModemConfig.AuthType.AUTO.name()); + } else if (authType.equals(GwtModemAuthType.netModemAuthCHAP)) { + properties.put(authTypePropName, ModemConfig.AuthType.CHAP.name()); + } else if (authType.equals(GwtModemAuthType.netModemAuthPAP)) { + properties.put(authTypePropName, ModemConfig.AuthType.PAP.name()); + } + } + } + private void fillModemPassword(GwtModemInterfaceConfig gwtModemConfig, Map properties, - String basePropName) throws GwtKuraException, KuraException { + String basePropName) throws GwtKuraException { String passKey = GwtSafeHtmlUtils.htmlUnescape(gwtModemConfig.getPassword()); if (passKey != null && passKey.equals(PASSWORD_PLACEHOLDER)) { List result = privateFindNetInterfaceConfigurations(); @@ -1454,9 +1462,7 @@ private void fillModemPassword(GwtModemInterfaceConfig gwtModemConfig, Map new Password(GwtSafeHtmlUtils.htmlUnescape(config.getPassword())))); } else if (passKey != null && mode.equals(GwtWifiWirelessMode.netWifiWirelessModeAccessPoint.name())) { validateUserPassword(passKey); - properties.put(wifiPassphrasePropName, new Password(encryptWifiPassphrase(passKey))); + properties.put(wifiPassphrasePropName, new Password(passKey)); } else if (passKey != null) { - properties.put(wifiPassphrasePropName, new Password(encryptWifiPassphrase(passKey))); + properties.put(wifiPassphrasePropName, new Password(passKey)); } } - private char[] encryptWifiPassphrase(String wifiPassphrase) throws GwtKuraException, KuraException { - CryptoService cryptoService = ServiceLocator.getInstance().getService(CryptoService.class); - return cryptoService.encryptAes(wifiPassphrase.toCharArray()); - } - private Optional getOldGwtWifiConfig(String interfaceName, String mode) throws GwtKuraException { Optional config = Optional.empty(); List result = privateFindNetInterfaceConfigurations(); From ef522a5311baf470d49335d5c1d04ae52e689a0b Mon Sep 17 00:00:00 2001 From: Merlino Date: Wed, 4 May 2022 13:03:38 +0200 Subject: [PATCH 14/17] Small refactor in nat rules Signed-off-by: Merlino --- .../org/eclipse/kura/web/server/GwtNetworkServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 9eafdf4e798..7ad23163641 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -1157,13 +1157,13 @@ public void updateDeviceFirewallNATs(GwtXSRFToken xsrfToken, List Date: Wed, 4 May 2022 13:09:30 +0200 Subject: [PATCH 15/17] Added deprecation messages in NetworkAdminService Signed-off-by: Merlino --- .../main/java/org/eclipse/kura/net/NetworkAdminService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java index 564bd372b88..52ba7f94ca8 100644 --- a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java +++ b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/NetworkAdminService.java @@ -67,7 +67,7 @@ public List> g * - required MTU for the interface, -1 to keep the automatic default * @throws KuraException * - * @deprecated Since 2.4 + * @deprecated Since 2.4. Use the {@link ConfigurationService} to update the configuration of an Ethernet interface. */ @Deprecated public void updateEthernetInterfaceConfig(String interfaceName, boolean autoConnect, int mtu, @@ -82,7 +82,7 @@ public void updateEthernetInterfaceConfig(String interfaceName, boolean autoConn * - specifies the auto-connect value for the interface * @throws KuraException * - * @deprecated Since 2.4 + * @deprecated Since 2.4. Use the {@link ConfigurationService} to update the configuration of a Wifi interface. */ @Deprecated public void updateWifiInterfaceConfig(String interfaceName, boolean autoConnect, WifiAccessPoint accessPoint, @@ -107,7 +107,7 @@ public void updateWifiInterfaceConfig(String interfaceName, boolean autoConnect, * - list of NetConfigs for this interface * @throws KuraException * - * @deprecated Since 2.4 + * @deprecated Since 2.4. Use the {@link ConfigurationService} to update the configuration of a Modem interface. */ @Deprecated public void updateModemInterfaceConfig(String interfaceName, String serialNum, String modemId, int pppNumber, From 19778b71d6d7761601a1fb648047540120fede6a Mon Sep 17 00:00:00 2001 From: Merlino Date: Mon, 9 May 2022 09:18:38 +0200 Subject: [PATCH 16/17] Fixed sonar hint on firewall open port object Signed-off-by: Merlino --- .../org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java index 07269eb7e55..239bf1df11d 100644 --- a/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java +++ b/kura/org.eclipse.kura.api/src/main/java/org/eclipse/kura/net/firewall/FirewallOpenPortConfigIP.java @@ -193,7 +193,7 @@ public boolean equals(Object obj) { if (getClass() != obj.getClass()) { return false; } - FirewallOpenPortConfigIP other = (FirewallOpenPortConfigIP) obj; + FirewallOpenPortConfigIP other = (FirewallOpenPortConfigIP) obj; return Objects.equals(permittedInterfaceName, other.permittedInterfaceName) && Objects.equals(permittedMac, other.permittedMac) && Objects.equals(permittedNetwork, other.permittedNetwork) && port == other.port From 489a2fe450615b931e5b4380d934891c382ee8c8 Mon Sep 17 00:00:00 2001 From: Merlino Date: Tue, 10 May 2022 15:49:06 +0200 Subject: [PATCH 17/17] Replaced StringBuilder with String Signed-off-by: Merlino --- .../kura/web/server/GwtNetworkServiceImpl.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java index 7ad23163641..2aaf6e92f98 100644 --- a/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java +++ b/kura/org.eclipse.kura.web2/src/main/java/org/eclipse/kura/web/server/GwtNetworkServiceImpl.java @@ -741,7 +741,8 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter checkXSRFToken(xsrfToken); ConfigurationService configurationService = ServiceLocator.getInstance().getService(ConfigurationService.class); Map properties = new HashMap<>(); - StringBuilder basePropName = new StringBuilder("net.interface.").append(config.getName()).append(".config."); + String basePropName = new StringBuilder("net.interface.").append(config.getName()).append(".config.") + .toString(); String status = config.getStatus(); if (logger.isDebugEnabled()) { @@ -749,21 +750,21 @@ public void updateNetInterfaceConfigurations(GwtXSRFToken xsrfToken, GwtNetInter } try { NetInterfaceStatus netInterfaceStatus = getNetInterfaceStatus(status); - properties.put(basePropName.toString() + "ip4.status", netInterfaceStatus.name()); + properties.put(basePropName + "ip4.status", netInterfaceStatus.name()); if (config.getHwTypeEnum() == GwtNetIfType.ETHERNET || config.getHwTypeEnum() == GwtNetIfType.WIFI || config.getHwTypeEnum() == GwtNetIfType.MODEM) { - fillIp4AndDhcpProperties(config, properties, basePropName.toString()); + fillIp4AndDhcpProperties(config, properties, basePropName); } if (config.getHwTypeEnum() == GwtNetIfType.WIFI && config instanceof GwtWifiNetInterfaceConfig) { GwtWifiConfig gwtWifiConfig = ((GwtWifiNetInterfaceConfig) config).getActiveWifiConfig(); if (gwtWifiConfig != null) { - fillWifiProperties(gwtWifiConfig, properties, basePropName.toString(), config.getName()); + fillWifiProperties(gwtWifiConfig, properties, basePropName, config.getName()); } } else if (config.getHwTypeEnum() == GwtNetIfType.MODEM && config instanceof GwtModemInterfaceConfig) { GwtModemInterfaceConfig gwtModemConfig = (GwtModemInterfaceConfig) config; - fillModemProperties(gwtModemConfig, properties, basePropName.toString(), netInterfaceStatus); + fillModemProperties(gwtModemConfig, properties, basePropName, netInterfaceStatus); } configurationService.updateConfiguration("org.eclipse.kura.net.admin.NetworkConfigurationService",