mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-10-31 18:47:57 +00:00
WIFI-1994: NAS-ID use BSSID as default, to support EAP with 11r
When in EAP/Radius security mode, and 80211r is enabled, enforce that radius_nas_id can only be the BSSID of the SSID being created.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
|
||||
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
|
||||
|
||||
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
|
||||
@@ -83,8 +84,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
}
|
||||
}
|
||||
|
||||
if ((result != null) && (result.length > 0) && (result[0] instanceof SelectResult)
|
||||
&& !((SelectResult) result[0]).getRows().isEmpty()) {
|
||||
if ((result != null) && (result.length > 0) && (result[0] instanceof SelectResult) && !((SelectResult) result[0]).getRows().isEmpty()) {
|
||||
|
||||
for (Row row : ((SelectResult) result[0]).getRows()) {
|
||||
|
||||
@@ -157,8 +157,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
* @param dtimPeriod
|
||||
* @param customOptions
|
||||
*/
|
||||
void configureCustomOptionsForDtimFragAnd80211k(boolean enable80211k, int dtimPeriod,
|
||||
Map<String, String> customOptions) {
|
||||
void configureCustomOptionsForDtimFragAnd80211k(boolean enable80211k, int dtimPeriod, Map<String, String> customOptions) {
|
||||
customOptions.put("dtim_period", String.valueOf(dtimPeriod));
|
||||
if (enable80211k) {
|
||||
customOptions.put("ieee80211k", String.valueOf(1));
|
||||
@@ -173,16 +172,18 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
* @param radiusNasId
|
||||
* @param radiusNasIp
|
||||
* @param radiusOperatorName
|
||||
* @param enable80211r
|
||||
* @param customOptions
|
||||
*/
|
||||
void configureCustomOptionsForRadiusNas(OvsdbClient ovsdbClient, String radiusNasId, String radiusNasIp,
|
||||
String radiusOperatorName, Map<String, String> customOptions) {
|
||||
void configureCustomOptionsForRadiusNas(OvsdbClient ovsdbClient, String radiusNasId, String radiusNasIp, String radiusOperatorName, boolean enable80211r,
|
||||
Map<String, String> customOptions) {
|
||||
ConnectNodeInfo partialConnectNode = new ConnectNodeInfo();
|
||||
ovsdbNode.fillInWanIpAddressAndMac(ovsdbClient, partialConnectNode, defaultWanInterfaceType,
|
||||
defaultWanInterfaceName);
|
||||
ovsdbNode.fillInWanIpAddressAndMac(ovsdbClient, partialConnectNode, defaultWanInterfaceType, defaultWanInterfaceName);
|
||||
|
||||
if (radiusNasId != null) {
|
||||
if (radiusNasId.equals(NasIdType.AP_BASE_MAC.toString())) {
|
||||
if (enable80211r) {
|
||||
LOG.info("NAS-ID is {}, 80211r is enabled, do not configure, AP will determine radius_nas_id when SSID configuration complete.", radiusNasId);
|
||||
} else if (radiusNasId.equals(NasIdType.AP_BASE_MAC.toString())) {
|
||||
LOG.info("NAS-ID is {}, set radius_nas_id to {}", radiusNasId, partialConnectNode.macAddress);
|
||||
customOptions.put("radius_nas_id", partialConnectNode.macAddress);
|
||||
} else if (radiusNasId.equals(NasIdType.DEFAULT.toString()) || radiusNasId.equals(NasIdType.BSSID.toString())) {
|
||||
@@ -207,6 +208,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
/**
|
||||
* SSID UL/DL Limits from profile should be tagged against the client UL/DL limit
|
||||
* ssid_ul_limit/ssid_dl_limit no longer used, set to 0 on AP to avoid unknown behaviours.
|
||||
*
|
||||
* @param rateLimitEnable
|
||||
* @param ssidDlLimit
|
||||
* @param ssidUlLimit
|
||||
@@ -215,8 +217,8 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
* @param rtsCtsThreshold
|
||||
* @param customOptions
|
||||
*/
|
||||
void configureCustomOptionsForRatesAndLimits(boolean rateLimitEnable, int ssidDlLimit, int ssidUlLimit,
|
||||
int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, Map<String, String> customOptions) {
|
||||
void configureCustomOptionsForRatesAndLimits(boolean rateLimitEnable, int ssidDlLimit, int ssidUlLimit, int clientDlLimit, int clientUlLimit,
|
||||
int rtsCtsThreshold, Map<String, String> customOptions) {
|
||||
customOptions.put("rate_limit_en", rateLimitEnable ? "1" : "0");
|
||||
customOptions.put("ssid_ul_limit", String.valueOf(0));
|
||||
customOptions.put("ssid_dl_limit", String.valueOf(0));
|
||||
@@ -235,6 +237,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
*
|
||||
* @param ovsdbClient
|
||||
* @param enable80211k
|
||||
* @param enable80211r TODO
|
||||
* @param rateLimitEnable
|
||||
* @param ssidDlLimit
|
||||
* @param ssidUlLimit
|
||||
@@ -249,36 +252,31 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
* @param dynamicVlan
|
||||
* @param useRadiusProxy
|
||||
*/
|
||||
void configureCustomOptionsForSsid(OvsdbClient ovsdbClient, boolean enable80211k, boolean rateLimitEnable,
|
||||
int ssidDlLimit, int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int dtimPeriod,
|
||||
String radiusNasId, String radiusNasIp, String radiusOperatorName, Map<String, Value> updateColumns,
|
||||
int dynamicVlan, Boolean useRadiusProxy) {
|
||||
void configureCustomOptionsForSsid(OvsdbClient ovsdbClient, boolean enable80211k, boolean enable80211r, boolean rateLimitEnable, int ssidDlLimit,
|
||||
int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int dtimPeriod, String radiusNasId, String radiusNasIp,
|
||||
String radiusOperatorName, Map<String, Value> updateColumns, int dynamicVlan, Boolean useRadiusProxy) {
|
||||
Map<String, String> customOptions = new HashMap<>();
|
||||
|
||||
configureCustomOptionsForUseRadiusProxy(useRadiusProxy, customOptions);
|
||||
|
||||
configureCustomOptionsForRatesAndLimits(rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit,
|
||||
rtsCtsThreshold, customOptions);
|
||||
configureCustomOptionsForRatesAndLimits(rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold, customOptions);
|
||||
|
||||
configureCustomOptionsForRadiusNas(ovsdbClient, radiusNasId, radiusNasIp, radiusOperatorName, customOptions);
|
||||
configureCustomOptionsForRadiusNas(ovsdbClient, radiusNasId, radiusNasIp, radiusOperatorName, enable80211r, customOptions);
|
||||
|
||||
configureCustomOptionsForDtimFragAnd80211k(enable80211k, dtimPeriod, customOptions);
|
||||
|
||||
configureCustomOptionsForDynamicVlan(dynamicVlan, customOptions);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> customMap = com.vmware.ovsdb.protocol.operation.notation.Map
|
||||
.of(customOptions);
|
||||
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> customMap = com.vmware.ovsdb.protocol.operation.notation.Map.of(customOptions);
|
||||
updateColumns.put("custom_options", customMap);
|
||||
}
|
||||
|
||||
void configureSingleSsid(OvsdbClient ovsdbClient, String vifInterfaceName, String ssid, boolean ssidBroadcast,
|
||||
Map<String, String> security, int vlanId, boolean rrmEnabled, boolean enable80211r, int mobilityDomain,
|
||||
boolean enable80211v, boolean enable80211k, String minHwMode, boolean enabled, int keyRefresh,
|
||||
boolean uapsdEnabled, boolean apBridge, NetworkForwardMode networkForwardMode,
|
||||
List<MacAddress> macBlockList, boolean rateLimitEnable, int ssidDlLimit, int ssidUlLimit, int clientDlLimit,
|
||||
int clientUlLimit, int rtsCtsThreshold, int dtimPeriod, Map<String, String> captiveMap,
|
||||
List<String> walledGardenAllowlist, String radiusNasId, String radiusNasIp, String radiusOperatorName,
|
||||
void configureSingleSsid(OvsdbClient ovsdbClient, String vifInterfaceName, String ssid, boolean ssidBroadcast, Map<String, String> security, int vlanId,
|
||||
boolean rrmEnabled, boolean enable80211r, int mobilityDomain, boolean enable80211v, boolean enable80211k, String minHwMode, boolean enabled,
|
||||
int keyRefresh, boolean uapsdEnabled, boolean apBridge, NetworkForwardMode networkForwardMode, List<MacAddress> macBlockList,
|
||||
boolean rateLimitEnable, int ssidDlLimit, int ssidUlLimit, int clientDlLimit, int clientUlLimit, int rtsCtsThreshold, int dtimPeriod,
|
||||
Map<String, String> captiveMap, List<String> walledGardenAllowlist, String radiusNasId, String radiusNasIp, String radiusOperatorName,
|
||||
String greTunnelName, int dynamicVlan, Boolean useRadiusProxy, List<Operation> operations) {
|
||||
|
||||
Map<String, Value> updateColumns = new HashMap<>();
|
||||
@@ -299,15 +297,13 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
|
||||
updateColumns.put("mode", new Atom<>("ap"));
|
||||
@SuppressWarnings("unchecked")
|
||||
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> captivePortalMap = com.vmware.ovsdb.protocol.operation.notation.Map
|
||||
.of(captiveMap);
|
||||
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> captivePortalMap = com.vmware.ovsdb.protocol.operation.notation.Map.of(captiveMap);
|
||||
updateColumns.put("captive_portal", captivePortalMap);
|
||||
|
||||
if (walledGardenAllowlist != null && !walledGardenAllowlist.isEmpty()) {
|
||||
Set<Atom<String>> atomMacList = new HashSet<>();
|
||||
walledGardenAllowlist.forEach(allow -> atomMacList.add(new Atom<>(allow)));
|
||||
com.vmware.ovsdb.protocol.operation.notation.Set allowListSet = com.vmware.ovsdb.protocol.operation.notation.Set
|
||||
.of(atomMacList);
|
||||
com.vmware.ovsdb.protocol.operation.notation.Set allowListSet = com.vmware.ovsdb.protocol.operation.notation.Set.of(atomMacList);
|
||||
updateColumns.put("captive_allowlist", allowListSet);
|
||||
} else {
|
||||
updateColumns.put("captive_allowlist", new com.vmware.ovsdb.protocol.operation.notation.Set());
|
||||
@@ -335,12 +331,10 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
updateColumns.put("group_rekey", new Atom<>(keyRefresh));
|
||||
updateColumns.put("ap_bridge", new Atom<>(apBridge));
|
||||
@SuppressWarnings("unchecked")
|
||||
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> securityMap = com.vmware.ovsdb.protocol.operation.notation.Map
|
||||
.of(security);
|
||||
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> securityMap = com.vmware.ovsdb.protocol.operation.notation.Map.of(security);
|
||||
updateColumns.put("security", securityMap);
|
||||
configureCustomOptionsForSsid(ovsdbClient, enable80211k, rateLimitEnable, ssidDlLimit, ssidUlLimit,
|
||||
clientDlLimit, clientUlLimit, rtsCtsThreshold, dtimPeriod, radiusNasId, radiusNasIp, radiusOperatorName,
|
||||
updateColumns, dynamicVlan, useRadiusProxy);
|
||||
configureCustomOptionsForSsid(ovsdbClient, enable80211k, enable80211r, rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit,
|
||||
rtsCtsThreshold, dtimPeriod, radiusNasId, radiusNasIp, radiusOperatorName, updateColumns, dynamicVlan, useRadiusProxy);
|
||||
updateBlockList(updateColumns, macBlockList);
|
||||
Row row = new Row(updateColumns);
|
||||
operations.add(new Insert(wifiVifConfigDbTable, row));
|
||||
@@ -349,8 +343,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
void configureSsids(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
|
||||
|
||||
boolean rrmEnabled = false;
|
||||
if ((opensyncApConfig.getEquipmentLocation() != null)
|
||||
&& (opensyncApConfig.getEquipmentLocation().getDetails() != null)) {
|
||||
if ((opensyncApConfig.getEquipmentLocation() != null) && (opensyncApConfig.getEquipmentLocation().getDetails() != null)) {
|
||||
rrmEnabled = opensyncApConfig.getEquipmentLocation().getDetails().isRrmEnabled();
|
||||
}
|
||||
List<MacAddress> macBlockList = opensyncApConfig.getBlockedClients();
|
||||
@@ -363,8 +356,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
for (Profile ssidProfile : opensyncApConfig.getSsidProfile()) {
|
||||
|
||||
SsidConfiguration ssidConfig = (SsidConfiguration) ssidProfile.getDetails();
|
||||
ApElementConfiguration apElementConfig = (ApElementConfiguration) opensyncApConfig.getCustomerEquipment()
|
||||
.getDetails();
|
||||
ApElementConfiguration apElementConfig = (ApElementConfiguration) opensyncApConfig.getCustomerEquipment().getDetails();
|
||||
RfConfiguration rfConfig = (RfConfiguration) opensyncApConfig.getRfProfile().getDetails();
|
||||
|
||||
for (RadioType radioType : ssidConfig.getAppliedRadios()) {
|
||||
@@ -397,8 +389,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
clientUlLimit = ssidConfig.getClientBandwidthLimitUp();
|
||||
}
|
||||
|
||||
Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = getProvisionedData
|
||||
.getProvisionedWifiRadioConfigs(ovsdbClient);
|
||||
Map<String, WifiRadioConfigInfo> provisionedRadioConfigs = getProvisionedData.getProvisionedWifiRadioConfigs(ovsdbClient);
|
||||
String freqBand = null;
|
||||
String ifName = null;
|
||||
String radioName = null;
|
||||
@@ -433,8 +424,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
ifName = defaultRadio2;
|
||||
}
|
||||
if (ifName == null) {
|
||||
LOG.debug("Cannot provision SSID for radio {} freqBand {} with VIF if_name null", radioName,
|
||||
freqBand);
|
||||
LOG.debug("Cannot provision SSID for radio {} freqBand {} with VIF if_name null", radioName, freqBand);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -478,8 +468,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
boolean enable80211k = true;
|
||||
// off by default, only applicable for is2do4GHz
|
||||
if ((ssidConfig.getRadioBasedConfigs() != null)
|
||||
&& (ssidConfig.getRadioBasedConfigs().containsKey(radioType)
|
||||
&& (ssidConfig.getRadioBasedConfigs().get(radioType) != null))) {
|
||||
&& (ssidConfig.getRadioBasedConfigs().containsKey(radioType) && (ssidConfig.getRadioBasedConfigs().get(radioType) != null))) {
|
||||
if (ssidConfig.getRadioBasedConfigs().get(radioType).getEnable80211r() != null) {
|
||||
enable80211r = ssidConfig.getRadioBasedConfigs().get(radioType).getEnable80211r();
|
||||
if (enable80211r) {
|
||||
@@ -514,12 +503,10 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
int dynamicVlan = 0;
|
||||
if (opensyncSecurityMode.endsWith("EAP")) {
|
||||
if (ssidConfig.getRadiusClientConfiguration() != null) {
|
||||
radiusNasId = ssidConfig.getRadiusClientConfiguration().getNasClientId()
|
||||
.equals(NasIdType.USER_DEFINED)
|
||||
radiusNasId = ssidConfig.getRadiusClientConfiguration().getNasClientId().equals(NasIdType.USER_DEFINED)
|
||||
? ssidConfig.getRadiusClientConfiguration().getUserDefinedNasId()
|
||||
: ssidConfig.getRadiusClientConfiguration().getNasClientId().toString();
|
||||
radiusNasIp = ssidConfig.getRadiusClientConfiguration().getNasClientIp()
|
||||
.equals(NasIpType.USER_DEFINED)
|
||||
radiusNasIp = ssidConfig.getRadiusClientConfiguration().getNasClientIp().equals(NasIpType.USER_DEFINED)
|
||||
? ssidConfig.getRadiusClientConfiguration().getUserDefinedNasIp()
|
||||
: ssidConfig.getRadiusClientConfiguration().getNasClientIp().toString();
|
||||
radiusOperName = ssidConfig.getRadiusClientConfiguration().getOperatorId();
|
||||
@@ -527,8 +514,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
radiusNasId = NasIdType.DEFAULT.toString();
|
||||
radiusNasIp = NasIpType.WAN_IP.toString();
|
||||
}
|
||||
if (ssidConfig.getForwardMode() == null
|
||||
|| ssidConfig.getForwardMode().equals(NetworkForwardMode.BRIDGE)) {
|
||||
if (ssidConfig.getForwardMode() == null || ssidConfig.getForwardMode().equals(NetworkForwardMode.BRIDGE)) {
|
||||
// get the dynamicVlan value for this ssid, when in
|
||||
// bridge forward mode
|
||||
// null implies bridge
|
||||
@@ -546,9 +532,8 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
|
||||
boolean enabled = ssidConfig.getSsidAdminState().equals(StateSetting.enabled);
|
||||
int vlanId = ssidConfig.getVlanId() != null ? ssidConfig.getVlanId() : 1;
|
||||
Optional<GreTunnelConfiguration> tunnelConfiguration = ((ApNetworkConfiguration) opensyncApConfig
|
||||
.getApProfile().getDetails()).getGreTunnelConfigurations().stream()
|
||||
.filter(t -> t.getVlanIdsInGreTunnel().contains(vlanId)).findFirst();
|
||||
Optional<GreTunnelConfiguration> tunnelConfiguration = ((ApNetworkConfiguration) opensyncApConfig.getApProfile().getDetails())
|
||||
.getGreTunnelConfigurations().stream().filter(t -> t.getVlanIdsInGreTunnel().contains(vlanId)).findFirst();
|
||||
String greTunnelName = null;
|
||||
if (tunnelConfiguration.isPresent()) {
|
||||
greTunnelName = tunnelConfiguration.get().getGreTunnelName();
|
||||
@@ -566,19 +551,16 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
useRadiusProxy = ssidConfig.getUseRadiusProxy();
|
||||
}
|
||||
try {
|
||||
configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast, security, vlanId,
|
||||
rrmEnabled, enable80211r, mobilityDomain, enable80211v, enable80211k, minHwMode, enabled,
|
||||
keyRefresh, uapsdEnabled, apBridge, ssidConfig.getForwardMode(), macBlockList,
|
||||
rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold,
|
||||
dtimPeriod, captiveMap, walledGardenAllowlist, radiusNasId, radiusNasIp, radiusOperName,
|
||||
greTunnelName, dynamicVlan, useRadiusProxy, operations);
|
||||
configureSingleSsid(ovsdbClient, ifName, ssidConfig.getSsid(), ssidBroadcast, security, vlanId, rrmEnabled, enable80211r, mobilityDomain,
|
||||
enable80211v, enable80211k, minHwMode, enabled, keyRefresh, uapsdEnabled, apBridge, ssidConfig.getForwardMode(), macBlockList,
|
||||
rateLimitEnable, ssidDlLimit, ssidUlLimit, clientDlLimit, clientUlLimit, rtsCtsThreshold, dtimPeriod, captiveMap,
|
||||
walledGardenAllowlist, radiusNasId, radiusNasIp, radiusOperName, greTunnelName, dynamicVlan, useRadiusProxy, operations);
|
||||
|
||||
networkConfig.configureInetVifInterface(ovsdbClient, ifName, enabled, ssidConfig.getForwardMode(),
|
||||
operations);
|
||||
networkConfig.configureInetVifInterface(ovsdbClient, ifName, enabled, ssidConfig.getForwardMode(), operations);
|
||||
|
||||
if (useRadiusProxy) {
|
||||
// make sure it's enabled if we are going to use it
|
||||
radsecConfig.configureApc(ovsdbClient, useRadiusProxy,operations);
|
||||
radsecConfig.configureApc(ovsdbClient, useRadiusProxy, operations);
|
||||
}
|
||||
|
||||
} catch (IllegalStateException e) {
|
||||
@@ -598,19 +580,14 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
}
|
||||
}
|
||||
|
||||
void getBonjourGatewayConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig,
|
||||
Map<Short, Set<String>> bonjourServiceMap) {
|
||||
if ((ssidConfig.getBonjourGatewayProfileId() != null)
|
||||
&& (opensyncApConfig.getBonjourGatewayProfiles() != null)) {
|
||||
void getBonjourGatewayConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig, Map<Short, Set<String>> bonjourServiceMap) {
|
||||
if ((ssidConfig.getBonjourGatewayProfileId() != null) && (opensyncApConfig.getBonjourGatewayProfiles() != null)) {
|
||||
for (Profile profileBonjour : opensyncApConfig.getBonjourGatewayProfiles()) {
|
||||
if ((ssidConfig.getBonjourGatewayProfileId() == profileBonjour.getId())
|
||||
&& (profileBonjour.getDetails() != null)) {
|
||||
if ((ssidConfig.getBonjourGatewayProfileId() == profileBonjour.getId()) && (profileBonjour.getDetails() != null)) {
|
||||
|
||||
BonjourGatewayProfile bonjourGatewayConfiguration = (BonjourGatewayProfile) profileBonjour
|
||||
.getDetails();
|
||||
BonjourGatewayProfile bonjourGatewayConfiguration = (BonjourGatewayProfile) profileBonjour.getDetails();
|
||||
|
||||
Collection<BonjourServiceSet> bonjourServicesCollection = bonjourGatewayConfiguration
|
||||
.getBonjourServices();
|
||||
Collection<BonjourServiceSet> bonjourServicesCollection = bonjourGatewayConfiguration.getBonjourServices();
|
||||
bonjourServicesCollection.forEach(b -> {
|
||||
Set<String> serviceSet = new HashSet<>();
|
||||
if (bonjourServiceMap.containsKey(b.getVlanId())) {
|
||||
@@ -653,68 +630,55 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
* @param captiveMap
|
||||
* @param walledGardenAllowlist
|
||||
*/
|
||||
void getCaptiveConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig,
|
||||
Map<String, String> captiveMap, List<String> walledGardenAllowlist) {
|
||||
void getCaptiveConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig, Map<String, String> captiveMap,
|
||||
List<String> walledGardenAllowlist) {
|
||||
if ((ssidConfig.getCaptivePortalId() != null) && (opensyncApConfig.getCaptiveProfiles() != null)) {
|
||||
for (Profile profileCaptive : opensyncApConfig.getCaptiveProfiles()) {
|
||||
if ((ssidConfig.getCaptivePortalId() == profileCaptive.getId())
|
||||
&& (profileCaptive.getDetails() != null)) {
|
||||
CaptivePortalConfiguration captiveProfileDetails = ((CaptivePortalConfiguration) profileCaptive
|
||||
.getDetails());
|
||||
if ((ssidConfig.getCaptivePortalId() == profileCaptive.getId()) && (profileCaptive.getDetails() != null)) {
|
||||
CaptivePortalConfiguration captiveProfileDetails = ((CaptivePortalConfiguration) profileCaptive.getDetails());
|
||||
|
||||
// +#define SCHEMA_CONSTS_PAGE_TITLE "page_title"
|
||||
if (captiveProfileDetails.getBrowserTitle() != null) {
|
||||
captiveMap.put("session_timeout",
|
||||
String.valueOf(captiveProfileDetails.getSessionTimeoutInMinutes()));
|
||||
captiveMap.put("session_timeout", String.valueOf(captiveProfileDetails.getSessionTimeoutInMinutes()));
|
||||
captiveMap.put("page_title", captiveProfileDetails.getBrowserTitle());
|
||||
}
|
||||
if (captiveProfileDetails.getAuthenticationType().equals(CaptivePortalAuthenticationType.radius)) {
|
||||
Optional<Profile> optional = opensyncApConfig.getRadiusProfiles().stream()
|
||||
.filter(p -> p.getId() == captiveProfileDetails.getRadiusServiceId()).findFirst();
|
||||
Optional<Profile> optional =
|
||||
opensyncApConfig.getRadiusProfiles().stream().filter(p -> p.getId() == captiveProfileDetails.getRadiusServiceId()).findFirst();
|
||||
if (optional.isPresent()) {
|
||||
Profile profile = optional.get();
|
||||
RadiusProfile radiusProfile = (RadiusProfile) profile.getDetails();
|
||||
captiveMap.put("radius_server_ip", String.valueOf(
|
||||
radiusProfile.getPrimaryRadiusAuthServer().getIpAddress().getHostAddress()));
|
||||
captiveMap.put("radius_server_ip", String.valueOf(radiusProfile.getPrimaryRadiusAuthServer().getIpAddress().getHostAddress()));
|
||||
|
||||
captiveMap.put("radius_server_port",
|
||||
String.valueOf(radiusProfile.getPrimaryRadiusAuthServer().getPort()));
|
||||
captiveMap.put("radius_server_port", String.valueOf(radiusProfile.getPrimaryRadiusAuthServer().getPort()));
|
||||
|
||||
captiveMap.put("radius_server_secret",
|
||||
String.valueOf(radiusProfile.getPrimaryRadiusAuthServer().getSecret()));
|
||||
captiveMap.put("radius_server_secret", String.valueOf(radiusProfile.getPrimaryRadiusAuthServer().getSecret()));
|
||||
if (captiveProfileDetails.getRadiusAuthMethod() != null) {
|
||||
|
||||
captiveMap.put("radius_auth_type",
|
||||
String.valueOf(captiveProfileDetails.getRadiusAuthMethod()));
|
||||
captiveMap.put("radius_auth_type", String.valueOf(captiveProfileDetails.getRadiusAuthMethod()));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (captiveProfileDetails.getRedirectURL() != null) {
|
||||
captiveMap.put("redirect_url", captiveProfileDetails.getRedirectURL());
|
||||
}
|
||||
captiveMap.put("session_timeout",
|
||||
String.valueOf(captiveProfileDetails.getSessionTimeoutInMinutes()));
|
||||
captiveMap.put("session_timeout", String.valueOf(captiveProfileDetails.getSessionTimeoutInMinutes()));
|
||||
captiveMap.put("browser_title", captiveProfileDetails.getBrowserTitle());
|
||||
captiveMap.put("splash_page_title", captiveProfileDetails.getHeaderContent());
|
||||
captiveMap.put("acceptance_policy", captiveProfileDetails.getUserAcceptancePolicy());
|
||||
captiveMap.put("login_success_text", captiveProfileDetails.getSuccessPageMarkdownText());
|
||||
captiveMap.put("authentication",
|
||||
getCaptiveAuthentication(captiveProfileDetails.getAuthenticationType()));
|
||||
captiveMap.put("authentication", getCaptiveAuthentication(captiveProfileDetails.getAuthenticationType()));
|
||||
if (captiveProfileDetails.getLogoFile() != null) {
|
||||
String splashLogoUrl = externalFileStoreURL + captiveProfileDetails.getLogoFile().getApExportUrl();
|
||||
captiveMap.put("splash_page_logo",
|
||||
splashLogoUrl);
|
||||
captiveMap.put("splash_page_logo", splashLogoUrl);
|
||||
}
|
||||
if (captiveProfileDetails.getBackgroundFile() != null) {
|
||||
String splashBackgroundUrl = externalFileStoreURL + captiveProfileDetails.getBackgroundFile().getApExportUrl();
|
||||
captiveMap.put("splash_page_background_logo",
|
||||
splashBackgroundUrl);
|
||||
captiveMap.put("splash_page_background_logo", splashBackgroundUrl);
|
||||
}
|
||||
if (captiveProfileDetails.getAuthenticationType()
|
||||
.equals(CaptivePortalAuthenticationType.username)) {
|
||||
if (captiveProfileDetails.getAuthenticationType().equals(CaptivePortalAuthenticationType.username)) {
|
||||
// create a user/password file for the AP to pull
|
||||
Path userFilepath = createCaptivePortalUserFile(captiveProfileDetails.getUserList(),
|
||||
profileCaptive.getId());
|
||||
Path userFilepath = createCaptivePortalUserFile(captiveProfileDetails.getUserList(), profileCaptive.getId());
|
||||
ManagedFileInfo mfi = new ManagedFileInfo();
|
||||
mfi.setFileCategory(FileCategory.UsernamePasswordList);
|
||||
mfi.setFileType(FileType.TEXT);
|
||||
@@ -733,8 +697,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
|
||||
Path createCaptivePortalUserFile(List<TimedAccessUserRecord> userList, long captivePortalProfileId) {
|
||||
|
||||
Path path = Paths.get(
|
||||
fileStoreDirectoryName + File.separator + "captive-portal-users-" + captivePortalProfileId + ".txt");
|
||||
Path path = Paths.get(fileStoreDirectoryName + File.separator + "captive-portal-users-" + captivePortalProfileId + ".txt");
|
||||
|
||||
try {
|
||||
Files.deleteIfExists(path);
|
||||
@@ -742,9 +705,9 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
LOG.error("Cannot delete {}", path, e);
|
||||
}
|
||||
for (TimedAccessUserRecord userRecord : userList) {
|
||||
byte[] bytes = ("username=" + userRecord.getUsername() + ", password=" + userRecord.getPassword()
|
||||
+ ", firstname=" + userRecord.getUserDetails().getFirstName() + ", lastname="
|
||||
+ userRecord.getUserDetails().getLastName() + System.lineSeparator()).getBytes();
|
||||
byte[] bytes = ("username=" + userRecord.getUsername() + ", password=" + userRecord.getPassword() + ", firstname="
|
||||
+ userRecord.getUserDetails().getFirstName() + ", lastname=" + userRecord.getUserDetails().getLastName() + System.lineSeparator())
|
||||
.getBytes();
|
||||
try {
|
||||
Files.write(path, bytes, StandardOpenOption.APPEND);
|
||||
LOG.debug("Successfully written data to the file {}", path);
|
||||
@@ -798,16 +761,14 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
return opensyncSecurityMode;
|
||||
}
|
||||
|
||||
void getRadiusAccountingConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig,
|
||||
Map<String, String> security) {
|
||||
void getRadiusAccountingConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig, Map<String, String> security) {
|
||||
|
||||
LOG.debug("getRadiusAccountingConfiguration for ssidConfig {} from radiusProfiles {}", ssidConfig,
|
||||
opensyncApConfig.getRadiusProfiles());
|
||||
LOG.debug("getRadiusAccountingConfiguration for ssidConfig {} from radiusProfiles {}", ssidConfig, opensyncApConfig.getRadiusProfiles());
|
||||
|
||||
LOG.debug("Radius Accounting Profiles {}", opensyncApConfig.getRadiusProfiles());
|
||||
|
||||
List<Profile> radiusProfileList = opensyncApConfig.getRadiusProfiles().stream()
|
||||
.filter(t -> t.getId() == ssidConfig.getRadiusServiceId()).collect(Collectors.toList());
|
||||
List<Profile> radiusProfileList =
|
||||
opensyncApConfig.getRadiusProfiles().stream().filter(t -> t.getId() == ssidConfig.getRadiusServiceId()).collect(Collectors.toList());
|
||||
|
||||
if (radiusProfileList.size() > 0) {
|
||||
Profile profileRadius = radiusProfileList.get(0);
|
||||
@@ -815,13 +776,11 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
RadiusServer rServer = profileDetails.getPrimaryRadiusAccountingServer();
|
||||
if (rServer != null) {
|
||||
if (ssidConfig.getUseRadiusProxy()) {
|
||||
security.put("radius_acct_ip",
|
||||
"127.0.0.1");
|
||||
security.put("radius_acct_ip", "127.0.0.1");
|
||||
security.put("radius_acct_port", rServer.getPort() != null ? String.valueOf(rServer.getPort()) : null);
|
||||
security.put("radius_acct_secret", "secret");
|
||||
} else {
|
||||
security.put("radius_acct_ip",
|
||||
rServer.getIpAddress() != null ? rServer.getIpAddress().getHostAddress() : null);
|
||||
security.put("radius_acct_ip", rServer.getIpAddress() != null ? rServer.getIpAddress().getHostAddress() : null);
|
||||
security.put("radius_acct_port", rServer.getPort() != null ? String.valueOf(rServer.getPort()) : null);
|
||||
security.put("radius_acct_secret", rServer.getSecret());
|
||||
}
|
||||
@@ -831,56 +790,46 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
security.put("radius_acct_interval", ssidConfig.getRadiusAcountingServiceInterval().toString());
|
||||
|
||||
}
|
||||
LOG.info(
|
||||
"set Radius Accounting server attributes radius_acct_ip {} radius_acct_port {} radius_acct_secret {} radius_acct_interval {}",
|
||||
security.get("radius_acct_ip"), security.get("radius_acct_port"),
|
||||
security.get("radius_acct_secret"), security.get("radius_acct_interval"));
|
||||
LOG.info("set Radius Accounting server attributes radius_acct_ip {} radius_acct_port {} radius_acct_secret {} radius_acct_interval {}",
|
||||
security.get("radius_acct_ip"), security.get("radius_acct_port"), security.get("radius_acct_secret"),
|
||||
security.get("radius_acct_interval"));
|
||||
} else {
|
||||
LOG.info("No Radius Accounting Server defined in Radius Profile");
|
||||
}
|
||||
|
||||
} else {
|
||||
LOG.warn("Could not find radius profile {} in {}", ssidConfig.getRadiusServiceId(),
|
||||
opensyncApConfig.getRadiusProfiles());
|
||||
LOG.warn("Could not find radius profile {} in {}", ssidConfig.getRadiusServiceId(), opensyncApConfig.getRadiusProfiles());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void getRadiusConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig,
|
||||
Map<String, String> security) {
|
||||
void getRadiusConfiguration(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig, Map<String, String> security) {
|
||||
|
||||
LOG.debug("getRadiusConfiguration for ssidConfig {} from radiusProfiles {}", ssidConfig,
|
||||
opensyncApConfig.getRadiusProfiles());
|
||||
LOG.debug("getRadiusConfiguration for ssidConfig {} from radiusProfiles {}", ssidConfig, opensyncApConfig.getRadiusProfiles());
|
||||
|
||||
LOG.debug("Radius Profiles {}", opensyncApConfig.getRadiusProfiles());
|
||||
|
||||
List<Profile> radiusProfileList = opensyncApConfig.getRadiusProfiles().stream()
|
||||
.filter(t -> t.getId() == ssidConfig.getRadiusServiceId()).collect(Collectors.toList());
|
||||
List<Profile> radiusProfileList =
|
||||
opensyncApConfig.getRadiusProfiles().stream().filter(t -> t.getId() == ssidConfig.getRadiusServiceId()).collect(Collectors.toList());
|
||||
|
||||
if (radiusProfileList.size() > 0) {
|
||||
Profile profileRadius = radiusProfileList.get(0);
|
||||
RadiusProfile profileDetails = ((RadiusProfile) profileRadius.getDetails());
|
||||
RadiusServer radiusServer = profileDetails.getPrimaryRadiusAuthServer();
|
||||
if (ssidConfig.getUseRadiusProxy()) {
|
||||
security.put("radius_server_ip",
|
||||
"127.0.0.1");
|
||||
security.put("radius_server_port",
|
||||
radiusServer.getPort() != null ? String.valueOf(radiusServer.getPort()) : null);
|
||||
security.put("radius_server_ip", "127.0.0.1");
|
||||
security.put("radius_server_port", radiusServer.getPort() != null ? String.valueOf(radiusServer.getPort()) : null);
|
||||
security.put("radius_server_secret", "secret");
|
||||
} else {
|
||||
security.put("radius_server_ip",
|
||||
radiusServer.getIpAddress() != null ? radiusServer.getIpAddress().getHostAddress() : null);
|
||||
security.put("radius_server_port",
|
||||
radiusServer.getPort() != null ? String.valueOf(radiusServer.getPort()) : null);
|
||||
security.put("radius_server_ip", radiusServer.getIpAddress() != null ? radiusServer.getIpAddress().getHostAddress() : null);
|
||||
security.put("radius_server_port", radiusServer.getPort() != null ? String.valueOf(radiusServer.getPort()) : null);
|
||||
security.put("radius_server_secret", radiusServer.getSecret());
|
||||
}
|
||||
LOG.info("set Radius server attributes radius_server_ip {} radius_server_port {} radius_server_secret {}",
|
||||
security.get("radius_server_ip"), security.get("radius_server_port"),
|
||||
security.get("radius_server_secret"));
|
||||
LOG.info("set Radius server attributes radius_server_ip {} radius_server_port {} radius_server_secret {}", security.get("radius_server_ip"),
|
||||
security.get("radius_server_port"), security.get("radius_server_secret"));
|
||||
|
||||
} else {
|
||||
LOG.warn("Could not find radius profile {} in {}", ssidConfig.getRadiusServiceId(),
|
||||
opensyncApConfig.getRadiusProfiles());
|
||||
LOG.warn("Could not find radius profile {} in {}", ssidConfig.getRadiusServiceId(), opensyncApConfig.getRadiusProfiles());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -894,8 +843,8 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
* @param ssidSecurityMode
|
||||
* @param opensyncSecurityMode
|
||||
*/
|
||||
void populateSecurityMap(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig,
|
||||
Map<String, String> security, String ssidSecurityMode, String opensyncSecurityMode) {
|
||||
void populateSecurityMap(OpensyncAPConfig opensyncApConfig, SsidConfiguration ssidConfig, Map<String, String> security, String ssidSecurityMode,
|
||||
String opensyncSecurityMode) {
|
||||
security.put("encryption", opensyncSecurityMode);
|
||||
// key and mode is N/A for OPEN security
|
||||
if (!opensyncSecurityMode.equals("OPEN")) {
|
||||
@@ -965,18 +914,14 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
LOG.info("removeAllSsids:result {}", res.toString());
|
||||
} else if (res instanceof ErrorResult) {
|
||||
LOG.error("removeAllSsids:result error {}", (res));
|
||||
throw new RuntimeException("removeAllSsids " + ((ErrorResult) res).getError() + " "
|
||||
+ ((ErrorResult) res).getDetails());
|
||||
throw new RuntimeException("removeAllSsids " + ((ErrorResult) res).getError() + " " + ((ErrorResult) res).getDetails());
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, WifiVifConfigInfo> provisionedVifConfigs = getProvisionedData
|
||||
.getProvisionedWifiVifConfigs(ovsdbClient);
|
||||
Map<String, WifiVifConfigInfo> provisionedVifConfigs = getProvisionedData.getProvisionedWifiVifConfigs(ovsdbClient);
|
||||
// this should be empty
|
||||
if (!provisionedVifConfigs.isEmpty()) {
|
||||
throw new RuntimeException(
|
||||
"Failed to remove all vif configurations from Wifi_VIF_Config dbTable, still has "
|
||||
+ provisionedVifConfigs.values());
|
||||
throw new RuntimeException("Failed to remove all vif configurations from Wifi_VIF_Config dbTable, still has " + provisionedVifConfigs.values());
|
||||
}
|
||||
|
||||
LOG.info("Removed all ssids");
|
||||
@@ -996,8 +941,7 @@ public class OvsdbSsidConfig extends OvsdbDaoBase {
|
||||
for (MacAddress mac : macBlockList) {
|
||||
atomMacList.add(new Atom<>(mac.getAddressAsString()));
|
||||
}
|
||||
com.vmware.ovsdb.protocol.operation.notation.Set macListSet = com.vmware.ovsdb.protocol.operation.notation.Set
|
||||
.of(atomMacList);
|
||||
com.vmware.ovsdb.protocol.operation.notation.Set macListSet = com.vmware.ovsdb.protocol.operation.notation.Set.of(atomMacList);
|
||||
updateColumns.put("mac_list", macListSet);
|
||||
} else {
|
||||
updateColumns.put("mac_list_type", new Atom<>("none"));
|
||||
|
||||
Reference in New Issue
Block a user