From efd934b883f1c3af5942dfd39d2d577348e2d64a Mon Sep 17 00:00:00 2001 From: Mike Hansen Date: Tue, 6 Oct 2020 02:33:08 -0400 Subject: [PATCH] WIFI-872: Add Profile for Identity WIFI-878: Define Data Types for Passpoint Profile models --- .../src/main/docker-with-mqtt/Dockerfile | 1 + .../app/opensync/ProfileAPExample.json | 104 +- .../app/opensync/ProfileHotspot20.json | 123 +- .../app/opensync/ProfileIdProvider.json | 98 + .../app/opensync/ProfileMetrics.json | 190 +- .../app/opensync/ProfileOperator.json | 68 +- .../app/opensync/ProfileRadius.json | 64 +- .../app/opensync/ProfileRf.json | 512 +++-- .../app/opensync/ProfileSsid.json | 249 +-- .../app/opensync/ProfileVenue.json | 74 +- .../src/main/docker-with-mqtt/app/run.sh | 8 + .../src/main/docker/Dockerfile | 1 + .../docker/app/opensync/ProfileAPExample.json | 104 +- .../docker/app/opensync/ProfileHotspot20.json | 123 +- .../app/opensync/ProfileIdProvider.json | 98 + .../docker/app/opensync/ProfileMetrics.json | 190 +- .../docker/app/opensync/ProfileOperator.json | 68 +- .../docker/app/opensync/ProfileRadius.json | 64 +- .../main/docker/app/opensync/ProfileRf.json | 512 +++-- .../main/docker/app/opensync/ProfileSsid.json | 249 +-- .../docker/app/opensync/ProfileVenue.json | 74 +- .../src/main/docker/app/run.sh | 4 + .../startuptasks/AllInOneStartListener.java | 109 +- .../hotspot/models/Hotspot2Profile.java | 90 +- .../wlan/profile/passpoint/models/MccMnc.java | 123 ++ .../models/MobileCountryAndNetworkCodes.java | 106 ++ .../models/CellularNetworkInformation.java | 19 - .../provider/models/CredentialType.java | 148 ++ .../passpoint/provider/models/EapMethods.java | 148 ++ .../models/Hotspot20IdProviderProfile.java | 236 +++ .../passpoint/provider/models/NaiRealm.java | 21 - .../provider/models/NaiRealmEncoding.java | 148 ++ .../provider/models/NaiRealmInformation.java | 121 ++ .../NonEapInnerAuthenticationTypes.java | 145 ++ .../passpoint/provider/models/OsuIcon.java | 147 +- .../provider/models/ProviderProfile.java | 66 - .../MobileCountryAndNetworkCodes.txt | 1690 +++++++++++++++++ 37 files changed, 4673 insertions(+), 1622 deletions(-) create mode 100644 all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileIdProvider.json create mode 100644 all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileIdProvider.json create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MccMnc.java create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MobileCountryAndNetworkCodes.java delete mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CellularNetworkInformation.java create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CredentialType.java create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/EapMethods.java create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/Hotspot20IdProviderProfile.java delete mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealm.java create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmEncoding.java create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmInformation.java create mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NonEapInnerAuthenticationTypes.java delete mode 100644 profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/ProviderProfile.java create mode 100644 profile-models/src/main/resources/MobileCountryAndNetworkCodes.txt diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/Dockerfile b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/Dockerfile index 0ee88cca..9b0701cc 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/Dockerfile +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/Dockerfile @@ -30,6 +30,7 @@ COPY app/opensync/ProfileMetrics.json /app/opensync/ProfileMetrics.json COPY app/opensync/ProfileHotspot20.json /app/opensync/ProfileHotspot20.json COPY app/opensync/ProfileOperator.json /app/opensync/ProfileOperator.json COPY app/opensync/ProfileVenue.json /app/opensync/ProfileVenue.json +COPY app/opensync/ProfileIdProvider.json /app/opensync/ProfileIdProvider.json COPY app/opensync/ProfileRf.json /app/opensync/ProfileRf.json VOLUME ["/app/logs", "/app/config"] diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileAPExample.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileAPExample.json index fad16cde..cd61fe34 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileAPExample.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileAPExample.json @@ -1,55 +1,49 @@ -{ - "model_type": "Profile", - "id": 5, - "customerId": 2, - "profileType": "equipment_ap", - "name": "DefaultApProfile", - "details": { - "model_type": "ApNetworkConfiguration", - "networkConfigVersion": "AP-1", - "equipmentType": "AP", - "vlanNative": true, - "vlan": 0, - "ntpServer": { - "model_type": "AutoOrManualString", - "auto": true, - "value": "pool.ntp.org" - }, - "syslogRelay": null, - "rtlsSettings": null, - "syntheticClientEnabled": true, - "ledControlEnabled": true, - "equipmentDiscovery": false, - "radioMap": { - "is5GHz": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - }, - "is2dot4GHz": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - }, - "is5GHzU": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - }, - "is5GHzL": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - } - }, - "profileType": "equipment_ap" - }, - "createdTimestamp": 1591653239947, - "lastModifiedTimestamp": 1591654336724, - "childProfileIds": [ - 6, - 7, - 8, - 9 - ] -} \ No newline at end of file + { + "model_type": "Profile", + "id": 15, + "customerId": 2, + "profileType": "equipment_ap", + "name": "ApProfile-3-radios", + "details": { + "model_type": "ApNetworkConfiguration", + "networkConfigVersion": "AP-1", + "equipmentType": "AP", + "vlanNative": true, + "vlan": 0, + "ntpServer": { + "model_type": "AutoOrManualString", + "auto": true, + "value": "pool.ntp.org" + }, + "syslogRelay": null, + "rtlsSettings": null, + "syntheticClientEnabled": true, + "ledControlEnabled": true, + "equipmentDiscovery": false, + "radioMap": { + "is2dot4GHz": { + "model_type": "RadioProfileConfiguration", + "bestApEnabled": true, + "bestAPSteerType": "both" + }, + "is5GHzU": { + "model_type": "RadioProfileConfiguration", + "bestApEnabled": true, + "bestAPSteerType": "both" + }, + "is5GHzL": { + "model_type": "RadioProfileConfiguration", + "bestApEnabled": true, + "bestAPSteerType": "both" + } + }, + "profileType": "equipment_ap" + }, + "createdTimestamp": 1601961452652, + "lastModifiedTimestamp": 1601961452652, + "childProfileIds": [ + 2, + 9, + 11 + ] + } \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileHotspot20.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileHotspot20.json index f8953c32..c01b5a7a 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileHotspot20.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileHotspot20.json @@ -1,55 +1,74 @@ [ -{ - "model_type": "Profile", - "id": 7777, - "customerId": 2, - "profileType": "hotspot_2pt0", - "name": "TipWlan-Hotspot20-Config", - "details": { - "model_type": "Hotspot2Profile", - "enableInterworkingAndHs20": true, - "hessid": null, - "accessNetworkType": "free_public_network", - "networkAuthenticationType": "acceptance_of_terms_and_conditions", - "additionalStepsRequiredForAccess": 0, - "deauthRequestTimeout": 0, - "operatingClass": 0, - "termsAndConditionsFile": { - "model_type": "ManagedFileInfo", - "md5checksum": null, - "lastModifiedTimestamp": null, - "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", - "fileCategory": "ExternalPolicyConfiguration", - "fileType": "TEXT", - "altSlot": false + { + "model_type": "Profile", + "id": 8, + "customerId": 2, + "profileType": "hotspot_2pt0", + "name": "TipWlan-Hotspot20-Config", + "details": { + "model_type": "Hotspot2Profile", + "enableInterworkingAndHs20": true, + "hessid": null, + "accessNetworkType": "free_public_network", + "networkAuthenticationType": "acceptance_of_terms_and_conditions", + "additionalStepsRequiredForAccess": 0, + "deauthRequestTimeout": 0, + "operatingClass": 0, + "termsAndConditionsFile": { + "model_type": "ManagedFileInfo", + "md5checksum": null, + "lastModifiedTimestamp": null, + "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", + "fileCategory": "ExternalPolicyConfiguration", + "fileType": "TEXT", + "altSlot": false + }, + "whitelistDomain": null, + "emergencyServicesReachable": true, + "unauthenticatedEmergencyServiceAccessible": false, + "internetConnectivity": true, + "connectionCapabilitySet": [ + { + "model_type": "ConnectionCapability", + "connectionCapabilitiesPortNumber": 8888, + "connectionCapabilitiesIpProtocol": "TCP", + "connectionCapabilitiesStatus": "open" + } + ], + "ipAddressTypeAvailability": "public_IPv4_address_available", + "qosMapSetConfiguration": null, + "apGeospatialLocation": null, + "apCivicLocation": null, + "apPublicLocationIdUri": null, + "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", + "anqpDomainId": 1234, + "disableDownstreamGroupAddressedForwarding": false, + "enable2pt4GHz": true, + "enable5GHz": true, + "associatedSsids": [ + "TipWlan-cloud-3-radios" + ], + "mccMnc3gppCellularNetworkInfo": [ + { + "model_type": "MccMnc", + "mcc": 302, + "mnc": 720, + "iso": "ca", + "country": "Canada", + "countryCode": 1, + "network": "Rogers AT&T Wireless", + "mccMncPairing": "302,720" + } + ], + "profileType": "hotspot_2pt0", + "mccMncList": "302,720" }, - "whitelistDomain": null, - "emergencyServicesReachable": true, - "unauthenticatedEmergencyServiceAccessible": false, - "internetConnectivity": true, - "connectionCapabilitySet": [ - { - "model_type": "ConnectionCapability", - "connectionCapabilitiesPortNumber": 8888, - "connectionCapabilitiesIpProtocol": "TCP", - "connectionCapabilitiesStatus": "open" - } - ], - "ipAddressTypeAvailability": "public_IPv4_address_available", - "qosMapSetConfiguration": null, - "apGeospatialLocation": null, - "apCivicLocation": null, - "apPublicLocationIdUri": null, - "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", - "anqpDomainId": 1234, - "disableDownstreamGroupAddressedForwarding": false, - "profileType": "hotspot_2pt0" - }, - "createdTimestamp": 1601595307355, - "lastModifiedTimestamp": 1601595307355, - "childProfileIds": [ - 5555, - 6666 - ] -} + "createdTimestamp": 1601961452370, + "lastModifiedTimestamp": 1601961452370, + "childProfileIds": [ + 5, + 6, + 7 + ] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileIdProvider.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileIdProvider.json new file mode 100644 index 00000000..41daff9c --- /dev/null +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileIdProvider.json @@ -0,0 +1,98 @@ +[ + { + "model_type": "Profile", + "id": 7, + "customerId": 2, + "profileType": "id_provider", + "name": "TipWlan-Hotspot20-OSU-Provider", + "details": { + "model_type": "Hotspot20IdProviderProfile", + "domainName": "example.com", + "mccMncList": [ + { + "model_type": "MccMnc", + "mcc": 302, + "mnc": 720, + "iso": "ca", + "country": "Canada", + "countryCode": 1, + "network": "Rogers AT&T Wireless", + "mccMncPairing": "302,720" + } + ], + "naiRealmList": [ + { + "model_type": "NaiRealmInformation", + "naiRealms": [ + "example.net", + "example.com" + ], + "encoding": 0, + "eapMethods": [ + "EAP-TLS with certificate" + ], + "eapMap": { + "EAP-TLS with certificate": [ + "Softoken", + "Certificate" + ] + } + } + ], + "osuIconList": [ + { + "model_type": "OsuIcon", + "iconWidth": 32, + "iconHeight": 32, + "languageCode": "eng", + "iconLocale": "en_CA", + "iconName": "icon32.png", + "filePath": "/tmp/icon32.png", + "hs20IconString": "32:32:eng:image/png:icon32.png:/tmp/icon32.png" + } + ], + "radiusProfileAuth": "Radius-Profile", + "radiusProfileAccounting": "Radius-Profile", + "osuSsid": "TipWlan-cloud-3-radios", + "osuServerUri": "https://example.com/osu/", + "osuFriendlyName": { + "model_type": "Hotspot20Duple", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Example provider", + "defaultDupleSeparator": ":", + "asDuple": "eng:Example provider" + }, + "osuNaiStandalone": "anonymous@example.com", + "osuNaiShared": "anonymous@example.com", + "osuMethodList": [ + 1, + 0 + ], + "osuServiceDescription": [ + { + "model_type": "Hotspot20Duple", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Example services", + "defaultDupleSeparator": ":", + "asDuple": "eng:Example services" + }, + { + "model_type": "Hotspot20Duple", + "locale": "fr_CA", + "dupleIso3Language": "fra", + "dupleName": "Exemples de services", + "defaultDupleSeparator": ":", + "asDuple": "fra:Exemples de services" + } + ], + "profileType": "id_provider" + }, + "createdTimestamp": 1601961451981, + "lastModifiedTimestamp": 1601961451981, + "childProfileIds": [ + 1 + ] + } + ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileMetrics.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileMetrics.json index b3fb86bc..4ac67112 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileMetrics.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileMetrics.json @@ -1,16 +1,16 @@ [ { "model_type": "Profile", - "id": 333, + "id": 2, "customerId": 2, "profileType": "metrics", "name": "Metrics-Profile-3-radios", "details": { "model_type": "ServiceMetricsCollectionConfigProfile", "radioTypes": [ - "is5GHzL", + "is5GHzU", "is2dot4GHz", - "is5GHzU" + "is5GHzL" ], "serviceMetricDataTypes": [ "ApNode", @@ -30,19 +30,7 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzU", - "serviceMetricDataType": "ApNode" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 120, - "channelSurveyType": "OFF_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is5GHzL", + "radioType": "is2dot4GHz", "serviceMetricDataType": "ApNode" }, { @@ -60,20 +48,20 @@ { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", + "reportingIntervalSeconds": 120, + "channelSurveyType": "OFF_CHANNEL", "scanIntervalMillis": 0, "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", + "radioType": "is5GHzU", "serviceMetricDataType": "ApNode" }, { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, - "reportingIntervalSeconds": 120, - "channelSurveyType": "OFF_CHANNEL", + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", "scanIntervalMillis": 0, "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, @@ -92,6 +80,18 @@ "statsReportFormat": "RAW", "radioType": "is2dot4GHz", "serviceMetricDataType": "ApNode" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 120, + "channelSurveyType": "OFF_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is5GHzL", + "serviceMetricDataType": "ApNode" } ], "ApSsid": [ @@ -99,14 +99,14 @@ "model_type": "ServiceMetricRadioConfigParameters", "samplingInterval": 30, "reportingIntervalSeconds": 60, - "radioType": "is2dot4GHz", + "radioType": "is5GHzL", "serviceMetricDataType": "ApSsid" }, { "model_type": "ServiceMetricRadioConfigParameters", "samplingInterval": 30, "reportingIntervalSeconds": 60, - "radioType": "is5GHzL", + "radioType": "is2dot4GHz", "serviceMetricDataType": "ApSsid" }, { @@ -118,13 +118,6 @@ } ], "Client": [ - { - "model_type": "ServiceMetricRadioConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "radioType": "is2dot4GHz", - "serviceMetricDataType": "Client" - }, { "model_type": "ServiceMetricRadioConfigParameters", "samplingInterval": 30, @@ -138,6 +131,13 @@ "reportingIntervalSeconds": 60, "radioType": "is5GHzU", "serviceMetricDataType": "Client" + }, + { + "model_type": "ServiceMetricRadioConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "radioType": "is2dot4GHz", + "serviceMetricDataType": "Client" } ], "Channel": [ @@ -150,57 +150,21 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzL", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 120, - "channelSurveyType": "OFF_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is5GHzL", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", "radioType": "is5GHzU", "serviceMetricDataType": "Channel" }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is2dot4GHz", + "serviceMetricDataType": "Channel" + }, { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, @@ -210,6 +174,42 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", + "radioType": "is2dot4GHz", + "serviceMetricDataType": "Channel" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 120, + "channelSurveyType": "OFF_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is5GHzL", + "serviceMetricDataType": "Channel" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is5GHzL", + "serviceMetricDataType": "Channel" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", "radioType": "is5GHzU", "serviceMetricDataType": "Channel" } @@ -224,7 +224,19 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzL", + "radioType": "is5GHzU", + "serviceMetricDataType": "Neighbour" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is2dot4GHz", "serviceMetricDataType": "Neighbour" }, { @@ -248,7 +260,7 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", + "radioType": "is5GHzL", "serviceMetricDataType": "Neighbour" }, { @@ -263,18 +275,6 @@ "radioType": "is5GHzU", "serviceMetricDataType": "Neighbour" }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is5GHzL", - "serviceMetricDataType": "Neighbour" - }, { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, @@ -284,15 +284,15 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzU", + "radioType": "is5GHzL", "serviceMetricDataType": "Neighbour" } ] }, "profileType": "metrics" }, - "createdTimestamp": 1601335086248, - "lastModifiedTimestamp": 1601335086248, + "createdTimestamp": 1601961451756, + "lastModifiedTimestamp": 1601961451756, "childProfileIds": [] } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileOperator.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileOperator.json index 36f7fb2a..1c78d88a 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileOperator.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileOperator.json @@ -1,35 +1,37 @@ [ -{ - "model_type": "Profile", - "id": 5555, - "customerId": 2, - "profileType": "operator", - "name": "TipWlan-Hotspot20-Operator", - "details": { - "model_type": "OperatorProfile", - "domainName": "telecominfraproject.atlassian.net", - "serverOnlyAuthenticatedL2EncryptionNetwork": false, - "x509CertificateLocation": "/etc/ca.pem", - "operatorFriendlyName": [ - { - "model_type": "Hotspot20Duple", - "locale": "en_CA", - "language": "eng", - "friendlyName": "default Friendly Operator Name", - "formattedFriendlyName": "eng:default Friendly Operator Name" - }, - { - "model_type": "Hotspot20Duple", - "locale": "fr_CA", - "language": "fra", - "friendlyName": "Nom de l'opérateur convivial par défaut", - "formattedFriendlyName": "fra:Nom de l'opérateur convivial par défaut" - } - ], - "profileType": "operator" - }, - "createdTimestamp": 1601595306885, - "lastModifiedTimestamp": 1601595306885, - "childProfileIds": [] -} + { + "model_type": "Profile", + "id": 5, + "customerId": 2, + "profileType": "operator", + "name": "TipWlan-Hotspot20-Operator", + "details": { + "model_type": "OperatorProfile", + "domainName": "telecominfraproject.atlassian.net", + "serverOnlyAuthenticatedL2EncryptionNetwork": false, + "x509CertificateLocation": "/etc/ca.pem", + "operatorFriendlyName": [ + { + "model_type": "Hotspot20Duple", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Default friendly operator name", + "defaultDupleSeparator": ":", + "asDuple": "eng:Default friendly operator name" + }, + { + "model_type": "Hotspot20Duple", + "locale": "fr_CA", + "dupleIso3Language": "fra", + "dupleName": "Nom de l'opérateur convivial par défaut", + "defaultDupleSeparator": ":", + "asDuple": "fra:Nom de l'opérateur convivial par défaut" + } + ], + "profileType": "operator" + }, + "createdTimestamp": 1601961451776, + "lastModifiedTimestamp": 1601961451776, + "childProfileIds": [] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRadius.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRadius.json index da5f8cbf..d7390a13 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRadius.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRadius.json @@ -1,34 +1,34 @@ [ -{ - "model_type": "Profile", - "id": 1, - "customerId": 2, - "profileType": "radius", - "name": "RadiusProfileOttawa", - "details": { - "model_type": "RadiusProfile", - "subnetConfiguration": null, - "serviceRegionMap": { - "Ottawa": { - "model_type": "RadiusServiceRegion", - "serverMap": { - "RadiusProfileOttawa": [ - { - "model_type": "RadiusServer", - "ipAddress": "localhost", - "secret": "testing123", - "authPort": 1812, - "timeout": null - } - ] - }, - "regionName": "Ottawa" - } - }, - "profileType": "radius" - }, - "createdTimestamp": 1591653174195, - "lastModifiedTimestamp": 1591653174195, - "childProfileIds": [] -} + { + "model_type": "Profile", + "id": 1, + "customerId": 2, + "profileType": "radius", + "name": "Radius-Profile", + "details": { + "model_type": "RadiusProfile", + "subnetConfiguration": null, + "serviceRegionMap": { + "Ottawa": { + "model_type": "RadiusServiceRegion", + "serverMap": { + "Radius-Profile": [ + { + "model_type": "RadiusServer", + "ipAddress": "192.168.0.1", + "secret": "testing123", + "authPort": 1812, + "timeout": null + } + ] + }, + "regionName": "Ottawa" + } + }, + "profileType": "radius" + }, + "createdTimestamp": 1601961451668, + "lastModifiedTimestamp": 1601961451668, + "childProfileIds": [] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRf.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRf.json index 1e3d2359..f8a2b9bf 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRf.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileRf.json @@ -1,258 +1,256 @@ { - "model_type": "Profile", - "id": 9, - "customerId": 2, - "profileType": "rf", - "name": "DefaultRf", - "details": { - "model_type": "RfConfiguration", - "rf": "Default-RF", - "profileType": "rf", - "rfConfigMap": { - "is2dot4GHz": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is20MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 20, - "minLoadFactor": 50 - } - }, - "is5GHz": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is80MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 30, - "minLoadFactor": 40 - } - }, - "is5GHzL": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is80MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 30, - "minLoadFactor": 40 - } - }, - "is5GHzU": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is80MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 30, - "minLoadFactor": 40 - } - } - }, - "createdTimestamp": 1591653239983, - "lastModifiedTimestamp": 1591653239983, - "childProfileIds": [ - ] - } -} + "model_type": "Profile", + "id": 11, + "customerId": 2, + "profileType": "rf", + "name": "TipWlan-rf", + "details": { + "model_type": "RfConfiguration", + "rfConfigMap": { + "is5GHz": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is80MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 30, + "minLoadFactor": 40 + } + }, + "is2dot4GHz": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is20MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 20, + "minLoadFactor": 50 + } + }, + "is5GHzU": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is80MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 30, + "minLoadFactor": 40 + } + }, + "is5GHzL": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is80MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 30, + "minLoadFactor": 40 + } + } + }, + "profileType": "rf" + }, + "createdTimestamp": 1601961452390, + "lastModifiedTimestamp": 1601961452390, + "childProfileIds": [] +} \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileSsid.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileSsid.json index 29aacd7b..12ac6060 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileSsid.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileSsid.json @@ -1,186 +1,69 @@ [ { - "model_type": "Profile", - "id": 6, - "customerId": 2, - "profileType": "ssid", - "name": "DefaultSsid-2g", - "details": { - "model_type": "SsidConfiguration", - "ssid": "Default-SSID-2g", - "appliedRadios": [ - "is2dot4GHz" - ], - "ssidAdminState": "enabled", - "secureMode": "wpa2PSK", - "vlanId": 1, - "keyStr": "12345678", - "broadcastSsid": "enabled", - "keyRefresh": 0, - "noLocalSubnets": false, - "radiusServiceName": null, - "captivePortalId": null, - "bandwidthLimitDown": 0, - "bandwidthLimitUp": 0, - "clientBandwidthLimitDown": 0, - "clientBandwidthLimitUp": 0, - "videoTrafficOnly": false, - "radioBasedConfigs": { - "is5GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is2dot4GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzU": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzL": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - } - }, - "bonjourGatewayProfileId": null, - "enable80211w": null, - "wepConfig": null, - "forwardMode": null, - "profileType": "ssid" - }, - "createdTimestamp": 1591653239983, - "lastModifiedTimestamp": 1591653239983, - "childProfileIds": [] -}, -{ - "model_type": "Profile", - "id": 7, - "customerId": 2, - "profileType": "ssid", - "name": "DefaultSsid-5gl", - "details": { - "model_type": "SsidConfiguration", - "ssid": "Default-SSID-5gl", - "appliedRadios": [ - "is5GHzL" - ], - "ssidAdminState": "enabled", - "secureMode": "wpaEAP", - "vlanId": 1, - "keyStr": "12345678", - "broadcastSsid": "enabled", - "keyRefresh": 0, - "noLocalSubnets": false, - "radiusServiceName": "RadiusProfileOttawa", - "captivePortalId": null, - "bandwidthLimitDown": 0, - "bandwidthLimitUp": 0, - "videoTrafficOnly": false, - "radioBasedConfigs": { - "is5GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is2dot4GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzU": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzL": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - } - }, - "bonjourGatewayProfileId": null, - "enable80211w": null, - "wepConfig": null, - "forwardMode": null, - "profileType": "ssid" - }, - "createdTimestamp": 1591653240017, - "lastModifiedTimestamp": 1591654215374, - "childProfileIds": [ - 1 - ] -}, -{ - "model_type": "Profile", - "id": 8, - "customerId": 2, - "profileType": "ssid", - "name": "DefaultSsid-5gu", - "details": { - "model_type": "SsidConfiguration", - "ssid": "Default-SSID-5gu", - "appliedRadios": [ - "is5GHzU" - ], - "ssidAdminState": "enabled", - "secureMode": "wpa2PSK", - "vlanId": 1, - "keyStr": "12345678", - "broadcastSsid": "enabled", - "keyRefresh": 0, - "noLocalSubnets": false, - "radiusServiceName": null, - "captivePortalId": null, - "bandwidthLimitDown": 0, - "bandwidthLimitUp": 0, - "videoTrafficOnly": false, - "radioBasedConfigs": { - "is5GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is2dot4GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzU": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzL": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - } - }, - "bonjourGatewayProfileId": null, - "enable80211w": null, - "wepConfig": null, - "forwardMode": null, - "profileType": "ssid" - }, - "createdTimestamp": 1591654301763, - "lastModifiedTimestamp": 1591654301763, - "childProfileIds": [] -} + "model_type": "Profile", + "id": 9, + "customerId": 2, + "profileType": "ssid", + "name": "TipWlan-cloud-3-radios", + "details": { + "model_type": "SsidConfiguration", + "ssid": "TipWlan-cloud-3-radios", + "appliedRadios": [ + "is5GHzU", + "is2dot4GHz", + "is5GHzL" + ], + "ssidAdminState": "enabled", + "secureMode": "open", + "vlanId": 1, + "keyStr": null, + "broadcastSsid": "enabled", + "keyRefresh": 0, + "noLocalSubnets": false, + "radiusServiceName": null, + "captivePortalId": null, + "bandwidthLimitDown": 0, + "bandwidthLimitUp": 0, + "clientBandwidthLimitDown": 0, + "clientBandwidthLimitUp": 0, + "videoTrafficOnly": false, + "radioBasedConfigs": { + "is5GHz": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + }, + "is2dot4GHz": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + }, + "is5GHzU": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + }, + "is5GHzL": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + } + }, + "bonjourGatewayProfileId": null, + "enable80211w": null, + "wepConfig": null, + "forwardMode": null, + "profileType": "ssid" + }, + "createdTimestamp": 1601961452385, + "lastModifiedTimestamp": 1601961452385, + "childProfileIds": [ + 7, + 8 + ] + } ] diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileVenue.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileVenue.json index c79f0d8c..afa8f751 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileVenue.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/opensync/ProfileVenue.json @@ -1,40 +1,42 @@ [ -{ - "model_type": "Profile", - "id": 6666, - "customerId": 2, - "profileType": "venue", - "name": "TipWlan-Hotspot20-Venue", - "details": { - "model_type": "VenueProfile", - "venueNameSet": [ - { - "model_type": "VenueName", - "locale": "en_CA", - "language": "eng", - "venueName": "Example venue", - "venueUrl": "http://www.example.com/info-eng", - "formattedVenueName": "eng:Example venue" + { + "model_type": "Profile", + "id": 6, + "customerId": 2, + "profileType": "venue", + "name": "TipWlan-Hotspot20-Venue", + "details": { + "model_type": "VenueProfile", + "venueNameSet": [ + { + "model_type": "VenueName", + "locale": "fr_CA", + "dupleIso3Language": "fra", + "dupleName": "Exemple de lieu", + "defaultDupleSeparator": ":", + "venueUrl": "http://www.example.com/info-fra", + "asDuple": "fra:Exemple de lieu" + }, + { + "model_type": "VenueName", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Example venue", + "defaultDupleSeparator": ":", + "venueUrl": "http://www.example.com/info-eng", + "asDuple": "eng:Example venue" + } + ], + "venueTypeAssignment": { + "model_type": "VenueTypeAssignment", + "venueDescription": "Research and Development Facility", + "venueGroupId": 2, + "venueTypeId": 8 }, - { - "model_type": "VenueName", - "locale": "fr_CA", - "language": "fra", - "venueName": "Exemple de lieu", - "venueUrl": "http://www.example.com/info-fra", - "formattedVenueName": "fra:Exemple de lieu" - } - ], - "venueTypeAssignment": { - "model_type": "VenueTypeAssignment", - "venueDescription": "Research and Development Facility", - "venueGroupId": 2, - "venueTypeId": 8 + "profileType": "venue" }, - "profileType": "venue" - }, - "createdTimestamp": 1601595306891, - "lastModifiedTimestamp": 1601595306891, - "childProfileIds": [] -} + "createdTimestamp": 1601961451781, + "lastModifiedTimestamp": 1601961451781, + "childProfileIds": [] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/run.sh b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/run.sh index 888287ee..cc66e701 100755 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/run.sh +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker-with-mqtt/app/run.sh @@ -34,6 +34,10 @@ OVSDB_SERVER_TRUSTSTORE_PASSWORD="${OVSDB_SERVER_TRUSTSTORE_PASSWORD:=mypassword OVSDB_EQUIPMENT_CONFIG_FILE="${OVSDB_EQUIPMENT_CONFIG_FILE:=/app/opensync/EquipmentExample.json}" OVSDB_APPROFILE_CONFIG_FILE="${OVSDB_AP_PROFILE_CONFIG_FILE:=/app/opensync/ProfileAPExample.json}" OVSDB_METRICSPROFILE_CONFIG_FILE="${OVSDB_METRICSPROFILE_CONFIG_FILE:=/app/opensync/ProfileMetrics.json}" +OVSDB_HOTSPOT20SPROFILE_CONFIG_FILE="${OVSDB_HOTSPOT20PROFILE_CONFIG_FILE:=/app/opensync/ProfileHotspot20.json}" +OVSDB_OPERATORPROFILE_CONFIG_FILE="${OVSDB_OPERATORPROFILE_CONFIG_FILE:=/app/opensync/ProfileOperator.json}" +OVSDB_VENUEPROFILE_CONFIG_FILE="${OVSDB_VENUEPROFILE_CONFIG_FILE:=/app/opensync/ProfileVenue.json}" +OVSDB_IDPROVIDERPROFILE_CONFIG_FILE="${OVSDB_IDPROVIDERPROFILE_CONFIG_FILE:=/app/opensync/ProfileIdProvider.json}" OVSDB_RFPROFILE_CONFIG_FILE="${OVSDB_RFPROFILE_CONFIG_FILE:=/app/opensync/ProfileRf.json}" OVSDB_SSIDPROFILE_CONFIG_FILE="${OVSDB_SSIDPROFILE_CONFIG_FILE:=/app/opensync/ProfileSsid.json}" OVSDB_LOCATION_CONFIG_FILE="${OVSDB_LOCATION_CONFIG_FILE:=/app/opensync/LocationBuildingExample.json}" @@ -131,6 +135,10 @@ OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.keyStorePassword=$OVSDB_SERVER_KEYSTO OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE" OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE" OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.metricsProfileFileName=$OVSDB_METRICSPROFILE_CONFIG_FILE" +OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.hotspot20ProfileFileName=$OVSDB_HOTSPOT20PROFILE_CONFIG_FILE" +OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.operatorProfileFileName=$OVSDB_OPERATORPROFILE_CONFIG_FILE" +OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.venueProfileFileName=$OVSDB_VENUEPROFILE_CONFIG_FILE" +OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.idProviderProfileFileName=$OVSDB_IDPROVIDERPROFILE_CONFIG_FILE" OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.rfProfileFileName=$OVSDB_RFPROFILE_CONFIG_FILE" OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE" OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE" diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/Dockerfile b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/Dockerfile index 94ff7101..c241d21c 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/Dockerfile +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/Dockerfile @@ -17,6 +17,7 @@ COPY app/opensync/ProfileMetrics.json /app/opensync/ProfileMetrics.json COPY app/opensync/ProfileHotspot20.json /app/opensync/ProfileHotspot20.json COPY app/opensync/ProfileOperator.json /app/opensync/ProfileOperator.json COPY app/opensync/ProfileVenue.json /app/opensync/ProfileVenue.json +COPY app/opensync/ProfileIdProvider.json /app/opensync/ProfileIdProvider.json COPY app/opensync/ProfileRf.json /app/opensync/ProfileRf.json RUN chmod +x /app/run.sh diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileAPExample.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileAPExample.json index fad16cde..cd61fe34 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileAPExample.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileAPExample.json @@ -1,55 +1,49 @@ -{ - "model_type": "Profile", - "id": 5, - "customerId": 2, - "profileType": "equipment_ap", - "name": "DefaultApProfile", - "details": { - "model_type": "ApNetworkConfiguration", - "networkConfigVersion": "AP-1", - "equipmentType": "AP", - "vlanNative": true, - "vlan": 0, - "ntpServer": { - "model_type": "AutoOrManualString", - "auto": true, - "value": "pool.ntp.org" - }, - "syslogRelay": null, - "rtlsSettings": null, - "syntheticClientEnabled": true, - "ledControlEnabled": true, - "equipmentDiscovery": false, - "radioMap": { - "is5GHz": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - }, - "is2dot4GHz": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - }, - "is5GHzU": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - }, - "is5GHzL": { - "model_type": "RadioProfileConfiguration", - "bestApEnabled": true, - "bestAPSteerType": "both" - } - }, - "profileType": "equipment_ap" - }, - "createdTimestamp": 1591653239947, - "lastModifiedTimestamp": 1591654336724, - "childProfileIds": [ - 6, - 7, - 8, - 9 - ] -} \ No newline at end of file + { + "model_type": "Profile", + "id": 15, + "customerId": 2, + "profileType": "equipment_ap", + "name": "ApProfile-3-radios", + "details": { + "model_type": "ApNetworkConfiguration", + "networkConfigVersion": "AP-1", + "equipmentType": "AP", + "vlanNative": true, + "vlan": 0, + "ntpServer": { + "model_type": "AutoOrManualString", + "auto": true, + "value": "pool.ntp.org" + }, + "syslogRelay": null, + "rtlsSettings": null, + "syntheticClientEnabled": true, + "ledControlEnabled": true, + "equipmentDiscovery": false, + "radioMap": { + "is2dot4GHz": { + "model_type": "RadioProfileConfiguration", + "bestApEnabled": true, + "bestAPSteerType": "both" + }, + "is5GHzU": { + "model_type": "RadioProfileConfiguration", + "bestApEnabled": true, + "bestAPSteerType": "both" + }, + "is5GHzL": { + "model_type": "RadioProfileConfiguration", + "bestApEnabled": true, + "bestAPSteerType": "both" + } + }, + "profileType": "equipment_ap" + }, + "createdTimestamp": 1601961452652, + "lastModifiedTimestamp": 1601961452652, + "childProfileIds": [ + 2, + 9, + 11 + ] + } \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileHotspot20.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileHotspot20.json index f8953c32..c01b5a7a 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileHotspot20.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileHotspot20.json @@ -1,55 +1,74 @@ [ -{ - "model_type": "Profile", - "id": 7777, - "customerId": 2, - "profileType": "hotspot_2pt0", - "name": "TipWlan-Hotspot20-Config", - "details": { - "model_type": "Hotspot2Profile", - "enableInterworkingAndHs20": true, - "hessid": null, - "accessNetworkType": "free_public_network", - "networkAuthenticationType": "acceptance_of_terms_and_conditions", - "additionalStepsRequiredForAccess": 0, - "deauthRequestTimeout": 0, - "operatingClass": 0, - "termsAndConditionsFile": { - "model_type": "ManagedFileInfo", - "md5checksum": null, - "lastModifiedTimestamp": null, - "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", - "fileCategory": "ExternalPolicyConfiguration", - "fileType": "TEXT", - "altSlot": false + { + "model_type": "Profile", + "id": 8, + "customerId": 2, + "profileType": "hotspot_2pt0", + "name": "TipWlan-Hotspot20-Config", + "details": { + "model_type": "Hotspot2Profile", + "enableInterworkingAndHs20": true, + "hessid": null, + "accessNetworkType": "free_public_network", + "networkAuthenticationType": "acceptance_of_terms_and_conditions", + "additionalStepsRequiredForAccess": 0, + "deauthRequestTimeout": 0, + "operatingClass": 0, + "termsAndConditionsFile": { + "model_type": "ManagedFileInfo", + "md5checksum": null, + "lastModifiedTimestamp": null, + "apExportUrl": "https://localhost:9091/filestore/termsAndConditions", + "fileCategory": "ExternalPolicyConfiguration", + "fileType": "TEXT", + "altSlot": false + }, + "whitelistDomain": null, + "emergencyServicesReachable": true, + "unauthenticatedEmergencyServiceAccessible": false, + "internetConnectivity": true, + "connectionCapabilitySet": [ + { + "model_type": "ConnectionCapability", + "connectionCapabilitiesPortNumber": 8888, + "connectionCapabilitiesIpProtocol": "TCP", + "connectionCapabilitiesStatus": "open" + } + ], + "ipAddressTypeAvailability": "public_IPv4_address_available", + "qosMapSetConfiguration": null, + "apGeospatialLocation": null, + "apCivicLocation": null, + "apPublicLocationIdUri": null, + "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", + "anqpDomainId": 1234, + "disableDownstreamGroupAddressedForwarding": false, + "enable2pt4GHz": true, + "enable5GHz": true, + "associatedSsids": [ + "TipWlan-cloud-3-radios" + ], + "mccMnc3gppCellularNetworkInfo": [ + { + "model_type": "MccMnc", + "mcc": 302, + "mnc": 720, + "iso": "ca", + "country": "Canada", + "countryCode": 1, + "network": "Rogers AT&T Wireless", + "mccMncPairing": "302,720" + } + ], + "profileType": "hotspot_2pt0", + "mccMncList": "302,720" }, - "whitelistDomain": null, - "emergencyServicesReachable": true, - "unauthenticatedEmergencyServiceAccessible": false, - "internetConnectivity": true, - "connectionCapabilitySet": [ - { - "model_type": "ConnectionCapability", - "connectionCapabilitiesPortNumber": 8888, - "connectionCapabilitiesIpProtocol": "TCP", - "connectionCapabilitiesStatus": "open" - } - ], - "ipAddressTypeAvailability": "public_IPv4_address_available", - "qosMapSetConfiguration": null, - "apGeospatialLocation": null, - "apCivicLocation": null, - "apPublicLocationIdUri": null, - "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest", - "anqpDomainId": 1234, - "disableDownstreamGroupAddressedForwarding": false, - "profileType": "hotspot_2pt0" - }, - "createdTimestamp": 1601595307355, - "lastModifiedTimestamp": 1601595307355, - "childProfileIds": [ - 5555, - 6666 - ] -} + "createdTimestamp": 1601961452370, + "lastModifiedTimestamp": 1601961452370, + "childProfileIds": [ + 5, + 6, + 7 + ] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileIdProvider.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileIdProvider.json new file mode 100644 index 00000000..41daff9c --- /dev/null +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileIdProvider.json @@ -0,0 +1,98 @@ +[ + { + "model_type": "Profile", + "id": 7, + "customerId": 2, + "profileType": "id_provider", + "name": "TipWlan-Hotspot20-OSU-Provider", + "details": { + "model_type": "Hotspot20IdProviderProfile", + "domainName": "example.com", + "mccMncList": [ + { + "model_type": "MccMnc", + "mcc": 302, + "mnc": 720, + "iso": "ca", + "country": "Canada", + "countryCode": 1, + "network": "Rogers AT&T Wireless", + "mccMncPairing": "302,720" + } + ], + "naiRealmList": [ + { + "model_type": "NaiRealmInformation", + "naiRealms": [ + "example.net", + "example.com" + ], + "encoding": 0, + "eapMethods": [ + "EAP-TLS with certificate" + ], + "eapMap": { + "EAP-TLS with certificate": [ + "Softoken", + "Certificate" + ] + } + } + ], + "osuIconList": [ + { + "model_type": "OsuIcon", + "iconWidth": 32, + "iconHeight": 32, + "languageCode": "eng", + "iconLocale": "en_CA", + "iconName": "icon32.png", + "filePath": "/tmp/icon32.png", + "hs20IconString": "32:32:eng:image/png:icon32.png:/tmp/icon32.png" + } + ], + "radiusProfileAuth": "Radius-Profile", + "radiusProfileAccounting": "Radius-Profile", + "osuSsid": "TipWlan-cloud-3-radios", + "osuServerUri": "https://example.com/osu/", + "osuFriendlyName": { + "model_type": "Hotspot20Duple", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Example provider", + "defaultDupleSeparator": ":", + "asDuple": "eng:Example provider" + }, + "osuNaiStandalone": "anonymous@example.com", + "osuNaiShared": "anonymous@example.com", + "osuMethodList": [ + 1, + 0 + ], + "osuServiceDescription": [ + { + "model_type": "Hotspot20Duple", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Example services", + "defaultDupleSeparator": ":", + "asDuple": "eng:Example services" + }, + { + "model_type": "Hotspot20Duple", + "locale": "fr_CA", + "dupleIso3Language": "fra", + "dupleName": "Exemples de services", + "defaultDupleSeparator": ":", + "asDuple": "fra:Exemples de services" + } + ], + "profileType": "id_provider" + }, + "createdTimestamp": 1601961451981, + "lastModifiedTimestamp": 1601961451981, + "childProfileIds": [ + 1 + ] + } + ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileMetrics.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileMetrics.json index b3fb86bc..4ac67112 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileMetrics.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileMetrics.json @@ -1,16 +1,16 @@ [ { "model_type": "Profile", - "id": 333, + "id": 2, "customerId": 2, "profileType": "metrics", "name": "Metrics-Profile-3-radios", "details": { "model_type": "ServiceMetricsCollectionConfigProfile", "radioTypes": [ - "is5GHzL", + "is5GHzU", "is2dot4GHz", - "is5GHzU" + "is5GHzL" ], "serviceMetricDataTypes": [ "ApNode", @@ -30,19 +30,7 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzU", - "serviceMetricDataType": "ApNode" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 120, - "channelSurveyType": "OFF_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is5GHzL", + "radioType": "is2dot4GHz", "serviceMetricDataType": "ApNode" }, { @@ -60,20 +48,20 @@ { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", + "reportingIntervalSeconds": 120, + "channelSurveyType": "OFF_CHANNEL", "scanIntervalMillis": 0, "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", + "radioType": "is5GHzU", "serviceMetricDataType": "ApNode" }, { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, - "reportingIntervalSeconds": 120, - "channelSurveyType": "OFF_CHANNEL", + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", "scanIntervalMillis": 0, "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, @@ -92,6 +80,18 @@ "statsReportFormat": "RAW", "radioType": "is2dot4GHz", "serviceMetricDataType": "ApNode" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 120, + "channelSurveyType": "OFF_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is5GHzL", + "serviceMetricDataType": "ApNode" } ], "ApSsid": [ @@ -99,14 +99,14 @@ "model_type": "ServiceMetricRadioConfigParameters", "samplingInterval": 30, "reportingIntervalSeconds": 60, - "radioType": "is2dot4GHz", + "radioType": "is5GHzL", "serviceMetricDataType": "ApSsid" }, { "model_type": "ServiceMetricRadioConfigParameters", "samplingInterval": 30, "reportingIntervalSeconds": 60, - "radioType": "is5GHzL", + "radioType": "is2dot4GHz", "serviceMetricDataType": "ApSsid" }, { @@ -118,13 +118,6 @@ } ], "Client": [ - { - "model_type": "ServiceMetricRadioConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "radioType": "is2dot4GHz", - "serviceMetricDataType": "Client" - }, { "model_type": "ServiceMetricRadioConfigParameters", "samplingInterval": 30, @@ -138,6 +131,13 @@ "reportingIntervalSeconds": 60, "radioType": "is5GHzU", "serviceMetricDataType": "Client" + }, + { + "model_type": "ServiceMetricRadioConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "radioType": "is2dot4GHz", + "serviceMetricDataType": "Client" } ], "Channel": [ @@ -150,57 +150,21 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzL", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 120, - "channelSurveyType": "OFF_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is5GHzL", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", - "serviceMetricDataType": "Channel" - }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", "radioType": "is5GHzU", "serviceMetricDataType": "Channel" }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is2dot4GHz", + "serviceMetricDataType": "Channel" + }, { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, @@ -210,6 +174,42 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", + "radioType": "is2dot4GHz", + "serviceMetricDataType": "Channel" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 120, + "channelSurveyType": "OFF_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is5GHzL", + "serviceMetricDataType": "Channel" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is5GHzL", + "serviceMetricDataType": "Channel" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", "radioType": "is5GHzU", "serviceMetricDataType": "Channel" } @@ -224,7 +224,19 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzL", + "radioType": "is5GHzU", + "serviceMetricDataType": "Neighbour" + }, + { + "model_type": "ServiceMetricSurveyConfigParameters", + "samplingInterval": 30, + "reportingIntervalSeconds": 60, + "channelSurveyType": "ON_CHANNEL", + "scanIntervalMillis": 0, + "percentUtilizationThreshold": 10, + "delayMillisecondsThreshold": 600, + "statsReportFormat": "RAW", + "radioType": "is2dot4GHz", "serviceMetricDataType": "Neighbour" }, { @@ -248,7 +260,7 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is2dot4GHz", + "radioType": "is5GHzL", "serviceMetricDataType": "Neighbour" }, { @@ -263,18 +275,6 @@ "radioType": "is5GHzU", "serviceMetricDataType": "Neighbour" }, - { - "model_type": "ServiceMetricSurveyConfigParameters", - "samplingInterval": 30, - "reportingIntervalSeconds": 60, - "channelSurveyType": "ON_CHANNEL", - "scanIntervalMillis": 0, - "percentUtilizationThreshold": 10, - "delayMillisecondsThreshold": 600, - "statsReportFormat": "RAW", - "radioType": "is5GHzL", - "serviceMetricDataType": "Neighbour" - }, { "model_type": "ServiceMetricSurveyConfigParameters", "samplingInterval": 30, @@ -284,15 +284,15 @@ "percentUtilizationThreshold": 10, "delayMillisecondsThreshold": 600, "statsReportFormat": "RAW", - "radioType": "is5GHzU", + "radioType": "is5GHzL", "serviceMetricDataType": "Neighbour" } ] }, "profileType": "metrics" }, - "createdTimestamp": 1601335086248, - "lastModifiedTimestamp": 1601335086248, + "createdTimestamp": 1601961451756, + "lastModifiedTimestamp": 1601961451756, "childProfileIds": [] } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileOperator.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileOperator.json index 36f7fb2a..1c78d88a 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileOperator.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileOperator.json @@ -1,35 +1,37 @@ [ -{ - "model_type": "Profile", - "id": 5555, - "customerId": 2, - "profileType": "operator", - "name": "TipWlan-Hotspot20-Operator", - "details": { - "model_type": "OperatorProfile", - "domainName": "telecominfraproject.atlassian.net", - "serverOnlyAuthenticatedL2EncryptionNetwork": false, - "x509CertificateLocation": "/etc/ca.pem", - "operatorFriendlyName": [ - { - "model_type": "Hotspot20Duple", - "locale": "en_CA", - "language": "eng", - "friendlyName": "default Friendly Operator Name", - "formattedFriendlyName": "eng:default Friendly Operator Name" - }, - { - "model_type": "Hotspot20Duple", - "locale": "fr_CA", - "language": "fra", - "friendlyName": "Nom de l'opérateur convivial par défaut", - "formattedFriendlyName": "fra:Nom de l'opérateur convivial par défaut" - } - ], - "profileType": "operator" - }, - "createdTimestamp": 1601595306885, - "lastModifiedTimestamp": 1601595306885, - "childProfileIds": [] -} + { + "model_type": "Profile", + "id": 5, + "customerId": 2, + "profileType": "operator", + "name": "TipWlan-Hotspot20-Operator", + "details": { + "model_type": "OperatorProfile", + "domainName": "telecominfraproject.atlassian.net", + "serverOnlyAuthenticatedL2EncryptionNetwork": false, + "x509CertificateLocation": "/etc/ca.pem", + "operatorFriendlyName": [ + { + "model_type": "Hotspot20Duple", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Default friendly operator name", + "defaultDupleSeparator": ":", + "asDuple": "eng:Default friendly operator name" + }, + { + "model_type": "Hotspot20Duple", + "locale": "fr_CA", + "dupleIso3Language": "fra", + "dupleName": "Nom de l'opérateur convivial par défaut", + "defaultDupleSeparator": ":", + "asDuple": "fra:Nom de l'opérateur convivial par défaut" + } + ], + "profileType": "operator" + }, + "createdTimestamp": 1601961451776, + "lastModifiedTimestamp": 1601961451776, + "childProfileIds": [] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRadius.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRadius.json index da5f8cbf..d7390a13 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRadius.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRadius.json @@ -1,34 +1,34 @@ [ -{ - "model_type": "Profile", - "id": 1, - "customerId": 2, - "profileType": "radius", - "name": "RadiusProfileOttawa", - "details": { - "model_type": "RadiusProfile", - "subnetConfiguration": null, - "serviceRegionMap": { - "Ottawa": { - "model_type": "RadiusServiceRegion", - "serverMap": { - "RadiusProfileOttawa": [ - { - "model_type": "RadiusServer", - "ipAddress": "localhost", - "secret": "testing123", - "authPort": 1812, - "timeout": null - } - ] - }, - "regionName": "Ottawa" - } - }, - "profileType": "radius" - }, - "createdTimestamp": 1591653174195, - "lastModifiedTimestamp": 1591653174195, - "childProfileIds": [] -} + { + "model_type": "Profile", + "id": 1, + "customerId": 2, + "profileType": "radius", + "name": "Radius-Profile", + "details": { + "model_type": "RadiusProfile", + "subnetConfiguration": null, + "serviceRegionMap": { + "Ottawa": { + "model_type": "RadiusServiceRegion", + "serverMap": { + "Radius-Profile": [ + { + "model_type": "RadiusServer", + "ipAddress": "192.168.0.1", + "secret": "testing123", + "authPort": 1812, + "timeout": null + } + ] + }, + "regionName": "Ottawa" + } + }, + "profileType": "radius" + }, + "createdTimestamp": 1601961451668, + "lastModifiedTimestamp": 1601961451668, + "childProfileIds": [] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRf.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRf.json index 1e3d2359..f8a2b9bf 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRf.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileRf.json @@ -1,258 +1,256 @@ { - "model_type": "Profile", - "id": 9, - "customerId": 2, - "profileType": "rf", - "name": "DefaultRf", - "details": { - "model_type": "RfConfiguration", - "rf": "Default-RF", - "profileType": "rf", - "rfConfigMap": { - "is2dot4GHz": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is20MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 20, - "minLoadFactor": 50 - } - }, - "is5GHz": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is80MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 30, - "minLoadFactor": 40 - } - }, - "is5GHzL": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is80MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 30, - "minLoadFactor": 40 - } - }, - "is5GHzU": { - "model_type": "RfElementConfiguration", - "beaconInterval": 100, - "forceScanDuringVoice": "disabled", - "rtsCtsThreshold": 65535, - "channelBandwidth": "is80MHz", - "mimoMode": "twoBytwo", - "maxNumClients": 100, - "multicastRate": "auto", - "autoChannelSelection": false, - "activeScanSettings": { - "model_type": "ActiveScanSettings", - "enabled": true, - "scanFrequencySeconds": 10, - "scanDurationMillis": 65 - }, - "managementRate": "auto", - "rxCellSizeDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "probeResponseThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "clientDisconnectThresholdDb": { - "model_type": "AutoOrManualValue", - "auto": true, - "value": -90 - }, - "eirpTxPower": { - "model_type": "AutoOrManualValue", - "auto": false, - "value": 32 - }, - "bestApEnabled": null, - "neighbouringListApConfig": { - "model_type": "NeighbouringAPListConfiguration", - "minSignal": -85, - "maxAps": 25 - }, - "minAutoCellSize": -80, - "perimeterDetectionEnabled": true, - "channelHopSettings": { - "model_type": "ChannelHopSettings", - "noiseFloorThresholdInDB": -75, - "noiseFloorThresholdTimeInSeconds": 180, - "nonWifiThresholdInPercentage": 50, - "nonWifiThresholdTimeInSeconds": 180, - "obssHopMode": "NON_WIFI" - }, - "bestApSettings": { - "model_type": "RadioBestApSettings", - "mlComputed": true, - "dropInSnrPercentage": 30, - "minLoadFactor": 40 - } - } - }, - "createdTimestamp": 1591653239983, - "lastModifiedTimestamp": 1591653239983, - "childProfileIds": [ - ] - } -} + "model_type": "Profile", + "id": 11, + "customerId": 2, + "profileType": "rf", + "name": "TipWlan-rf", + "details": { + "model_type": "RfConfiguration", + "rfConfigMap": { + "is5GHz": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is80MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 30, + "minLoadFactor": 40 + } + }, + "is2dot4GHz": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is20MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 20, + "minLoadFactor": 50 + } + }, + "is5GHzU": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is80MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 30, + "minLoadFactor": 40 + } + }, + "is5GHzL": { + "model_type": "RfElementConfiguration", + "rf": "TipWlan-rf", + "beaconInterval": 100, + "forceScanDuringVoice": "disabled", + "rtsCtsThreshold": 65535, + "channelBandwidth": "is80MHz", + "mimoMode": "twoByTwo", + "maxNumClients": 100, + "multicastRate": "auto", + "autoChannelSelection": false, + "activeScanSettings": { + "model_type": "ActiveScanSettings", + "enabled": true, + "scanFrequencySeconds": 10, + "scanDurationMillis": 65 + }, + "managementRate": "auto", + "rxCellSizeDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "probeResponseThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "clientDisconnectThresholdDb": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": -90 + }, + "eirpTxPower": { + "model_type": "AutoOrManualValue", + "auto": true, + "value": 18 + }, + "bestApEnabled": null, + "neighbouringListApConfig": { + "model_type": "NeighbouringAPListConfiguration", + "minSignal": -85, + "maxAps": 25 + }, + "perimeterDetectionEnabled": true, + "channelHopSettings": { + "model_type": "ChannelHopSettings", + "noiseFloorThresholdInDB": -75, + "noiseFloorThresholdTimeInSeconds": 180, + "nonWifiThresholdInPercentage": 50, + "nonWifiThresholdTimeInSeconds": 180, + "obssHopMode": "NON_WIFI" + }, + "bestApSettings": { + "model_type": "RadioBestApSettings", + "mlComputed": true, + "dropInSnrPercentage": 30, + "minLoadFactor": 40 + } + } + }, + "profileType": "rf" + }, + "createdTimestamp": 1601961452390, + "lastModifiedTimestamp": 1601961452390, + "childProfileIds": [] +} \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileSsid.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileSsid.json index 29aacd7b..12ac6060 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileSsid.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileSsid.json @@ -1,186 +1,69 @@ [ { - "model_type": "Profile", - "id": 6, - "customerId": 2, - "profileType": "ssid", - "name": "DefaultSsid-2g", - "details": { - "model_type": "SsidConfiguration", - "ssid": "Default-SSID-2g", - "appliedRadios": [ - "is2dot4GHz" - ], - "ssidAdminState": "enabled", - "secureMode": "wpa2PSK", - "vlanId": 1, - "keyStr": "12345678", - "broadcastSsid": "enabled", - "keyRefresh": 0, - "noLocalSubnets": false, - "radiusServiceName": null, - "captivePortalId": null, - "bandwidthLimitDown": 0, - "bandwidthLimitUp": 0, - "clientBandwidthLimitDown": 0, - "clientBandwidthLimitUp": 0, - "videoTrafficOnly": false, - "radioBasedConfigs": { - "is5GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is2dot4GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzU": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzL": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - } - }, - "bonjourGatewayProfileId": null, - "enable80211w": null, - "wepConfig": null, - "forwardMode": null, - "profileType": "ssid" - }, - "createdTimestamp": 1591653239983, - "lastModifiedTimestamp": 1591653239983, - "childProfileIds": [] -}, -{ - "model_type": "Profile", - "id": 7, - "customerId": 2, - "profileType": "ssid", - "name": "DefaultSsid-5gl", - "details": { - "model_type": "SsidConfiguration", - "ssid": "Default-SSID-5gl", - "appliedRadios": [ - "is5GHzL" - ], - "ssidAdminState": "enabled", - "secureMode": "wpaEAP", - "vlanId": 1, - "keyStr": "12345678", - "broadcastSsid": "enabled", - "keyRefresh": 0, - "noLocalSubnets": false, - "radiusServiceName": "RadiusProfileOttawa", - "captivePortalId": null, - "bandwidthLimitDown": 0, - "bandwidthLimitUp": 0, - "videoTrafficOnly": false, - "radioBasedConfigs": { - "is5GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is2dot4GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzU": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzL": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - } - }, - "bonjourGatewayProfileId": null, - "enable80211w": null, - "wepConfig": null, - "forwardMode": null, - "profileType": "ssid" - }, - "createdTimestamp": 1591653240017, - "lastModifiedTimestamp": 1591654215374, - "childProfileIds": [ - 1 - ] -}, -{ - "model_type": "Profile", - "id": 8, - "customerId": 2, - "profileType": "ssid", - "name": "DefaultSsid-5gu", - "details": { - "model_type": "SsidConfiguration", - "ssid": "Default-SSID-5gu", - "appliedRadios": [ - "is5GHzU" - ], - "ssidAdminState": "enabled", - "secureMode": "wpa2PSK", - "vlanId": 1, - "keyStr": "12345678", - "broadcastSsid": "enabled", - "keyRefresh": 0, - "noLocalSubnets": false, - "radiusServiceName": null, - "captivePortalId": null, - "bandwidthLimitDown": 0, - "bandwidthLimitUp": 0, - "videoTrafficOnly": false, - "radioBasedConfigs": { - "is5GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is2dot4GHz": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzU": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - }, - "is5GHzL": { - "model_type": "RadioBasedSsidConfiguration", - "enable80211r": null, - "enable80211k": null, - "enable80211v": null - } - }, - "bonjourGatewayProfileId": null, - "enable80211w": null, - "wepConfig": null, - "forwardMode": null, - "profileType": "ssid" - }, - "createdTimestamp": 1591654301763, - "lastModifiedTimestamp": 1591654301763, - "childProfileIds": [] -} + "model_type": "Profile", + "id": 9, + "customerId": 2, + "profileType": "ssid", + "name": "TipWlan-cloud-3-radios", + "details": { + "model_type": "SsidConfiguration", + "ssid": "TipWlan-cloud-3-radios", + "appliedRadios": [ + "is5GHzU", + "is2dot4GHz", + "is5GHzL" + ], + "ssidAdminState": "enabled", + "secureMode": "open", + "vlanId": 1, + "keyStr": null, + "broadcastSsid": "enabled", + "keyRefresh": 0, + "noLocalSubnets": false, + "radiusServiceName": null, + "captivePortalId": null, + "bandwidthLimitDown": 0, + "bandwidthLimitUp": 0, + "clientBandwidthLimitDown": 0, + "clientBandwidthLimitUp": 0, + "videoTrafficOnly": false, + "radioBasedConfigs": { + "is5GHz": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + }, + "is2dot4GHz": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + }, + "is5GHzU": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + }, + "is5GHzL": { + "model_type": "RadioBasedSsidConfiguration", + "enable80211r": null, + "enable80211k": null, + "enable80211v": null + } + }, + "bonjourGatewayProfileId": null, + "enable80211w": null, + "wepConfig": null, + "forwardMode": null, + "profileType": "ssid" + }, + "createdTimestamp": 1601961452385, + "lastModifiedTimestamp": 1601961452385, + "childProfileIds": [ + 7, + 8 + ] + } ] diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileVenue.json b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileVenue.json index c79f0d8c..afa8f751 100644 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileVenue.json +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/opensync/ProfileVenue.json @@ -1,40 +1,42 @@ [ -{ - "model_type": "Profile", - "id": 6666, - "customerId": 2, - "profileType": "venue", - "name": "TipWlan-Hotspot20-Venue", - "details": { - "model_type": "VenueProfile", - "venueNameSet": [ - { - "model_type": "VenueName", - "locale": "en_CA", - "language": "eng", - "venueName": "Example venue", - "venueUrl": "http://www.example.com/info-eng", - "formattedVenueName": "eng:Example venue" + { + "model_type": "Profile", + "id": 6, + "customerId": 2, + "profileType": "venue", + "name": "TipWlan-Hotspot20-Venue", + "details": { + "model_type": "VenueProfile", + "venueNameSet": [ + { + "model_type": "VenueName", + "locale": "fr_CA", + "dupleIso3Language": "fra", + "dupleName": "Exemple de lieu", + "defaultDupleSeparator": ":", + "venueUrl": "http://www.example.com/info-fra", + "asDuple": "fra:Exemple de lieu" + }, + { + "model_type": "VenueName", + "locale": "en_CA", + "dupleIso3Language": "eng", + "dupleName": "Example venue", + "defaultDupleSeparator": ":", + "venueUrl": "http://www.example.com/info-eng", + "asDuple": "eng:Example venue" + } + ], + "venueTypeAssignment": { + "model_type": "VenueTypeAssignment", + "venueDescription": "Research and Development Facility", + "venueGroupId": 2, + "venueTypeId": 8 }, - { - "model_type": "VenueName", - "locale": "fr_CA", - "language": "fra", - "venueName": "Exemple de lieu", - "venueUrl": "http://www.example.com/info-fra", - "formattedVenueName": "fra:Exemple de lieu" - } - ], - "venueTypeAssignment": { - "model_type": "VenueTypeAssignment", - "venueDescription": "Research and Development Facility", - "venueGroupId": 2, - "venueTypeId": 8 + "profileType": "venue" }, - "profileType": "venue" - }, - "createdTimestamp": 1601595306891, - "lastModifiedTimestamp": 1601595306891, - "childProfileIds": [] -} + "createdTimestamp": 1601961451781, + "lastModifiedTimestamp": 1601961451781, + "childProfileIds": [] + } ] \ No newline at end of file diff --git a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/run.sh b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/run.sh index db0fbffe..4d930dca 100755 --- a/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/run.sh +++ b/all-cloud-and-opensync-gw-in-one-docker/src/main/docker/app/run.sh @@ -24,6 +24,10 @@ OVSDB_PROPS+=" -Dtip.wlan.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12" OVSDB_PROPS+=" -Dtip.wlan.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE" OVSDB_PROPS+=" -Dtip.wlan.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE" OVSDB_PROPS+=" -Dtip.wlan.ovsdb.metricsProfileFileName=$OVSDB_METRICSPROFILE_CONFIG_FILE" +OVSDB_PROPS+=" -Dtip.wlan.ovsdb.hotspot20ProfileFileName=$OVSDB_HOTSPOT20PROFILE_CONFIG_FILE" +OVSDB_PROPS+=" -Dtip.wlan.ovsdb.operatorProfileFileName=$OVSDB_OPERATORPROFILE_CONFIG_FILE" +OVSDB_PROPS+=" -Dtip.wlan.ovsdb.venueProfileFileName=$OVSDB_VENUEPROFILE_CONFIG_FILE" +OVSDB_PROPS+=" -Dtip.wlan.ovsdb.idProviderProfileFileName=$OVSDB_IDPROVIDERPROFILE_CONFIG_FILE" OVSDB_PROPS+=" -Dtip.wlan.ovsdb.rfProfileFileName=$OVSDB_RFPROFILE_CONFIG_FILE" OVSDB_PROPS+=" -Dtip.wlan.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE" OVSDB_PROPS+=" -Dtip.wlan.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE" diff --git a/all-cloud-in-one-process/src/main/java/com/telecominfraproject/wlan/startuptasks/AllInOneStartListener.java b/all-cloud-in-one-process/src/main/java/com/telecominfraproject/wlan/startuptasks/AllInOneStartListener.java index f370e61f..1818d2c8 100644 --- a/all-cloud-in-one-process/src/main/java/com/telecominfraproject/wlan/startuptasks/AllInOneStartListener.java +++ b/all-cloud-in-one-process/src/main/java/com/telecominfraproject/wlan/startuptasks/AllInOneStartListener.java @@ -15,6 +15,7 @@ import java.util.EnumMap; import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -86,7 +87,12 @@ import com.telecominfraproject.wlan.profile.models.common.ManagedFileInfo; import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration; import com.telecominfraproject.wlan.profile.network.models.RadioProfileConfiguration; import com.telecominfraproject.wlan.profile.passpoint.hotspot.models.Hotspot2Profile; +import com.telecominfraproject.wlan.profile.passpoint.models.Hotspot20Duple; +import com.telecominfraproject.wlan.profile.passpoint.models.MccMnc; import com.telecominfraproject.wlan.profile.passpoint.operator.models.OperatorProfile; +import com.telecominfraproject.wlan.profile.passpoint.provider.models.Hotspot20IdProviderProfile; +import com.telecominfraproject.wlan.profile.passpoint.provider.models.NaiRealmInformation; +import com.telecominfraproject.wlan.profile.passpoint.provider.models.OsuIcon; import com.telecominfraproject.wlan.profile.passpoint.venue.models.VenueProfile; import com.telecominfraproject.wlan.profile.radius.models.RadiusProfile; import com.telecominfraproject.wlan.profile.radius.models.RadiusServer; @@ -276,7 +282,7 @@ public class AllInOneStartListener implements ApplicationRunner { radiusDetails.addRadiusServiceRegion(radiusServiceRegion); profileRadius.setDetails(radiusDetails); profileRadius = profileServiceInterface.create(profileRadius); - + Profile profileMetrics_3_radios = new Profile(); profileMetrics_3_radios.setCustomerId(customer.getId()); profileMetrics_3_radios.setProfileType(ProfileType.metrics); @@ -285,18 +291,20 @@ public class AllInOneStartListener implements ApplicationRunner { profileMetrics_3_radioTypes.add(RadioType.is2dot4GHz); profileMetrics_3_radioTypes.add(RadioType.is5GHzL); profileMetrics_3_radioTypes.add(RadioType.is5GHzU); - + Set metricTypes = new HashSet<>(); metricTypes.add(ServiceMetricDataType.ApNode); metricTypes.add(ServiceMetricDataType.ApSsid); metricTypes.add(ServiceMetricDataType.Channel); metricTypes.add(ServiceMetricDataType.Client); metricTypes.add(ServiceMetricDataType.Neighbour); - ServiceMetricsCollectionConfigProfile metricsProfileDetails3Radios = ServiceMetricsCollectionConfigProfile.createWithDefaults(); - metricsProfileDetails3Radios.setAllNetworkConfigParametersToDefaults(profileMetrics_3_radioTypes, metricTypes, true); + ServiceMetricsCollectionConfigProfile metricsProfileDetails3Radios = ServiceMetricsCollectionConfigProfile + .createWithDefaults(); + metricsProfileDetails3Radios.setAllNetworkConfigParametersToDefaults(profileMetrics_3_radioTypes, metricTypes, + true); profileMetrics_3_radios.setDetails(metricsProfileDetails3Radios); profileMetrics_3_radios = profileServiceInterface.create(profileMetrics_3_radios); - + Profile profileMetrics_2_radios = new Profile(); profileMetrics_2_radios.setCustomerId(customer.getId()); profileMetrics_2_radios.setProfileType(ProfileType.metrics); @@ -304,9 +312,11 @@ public class AllInOneStartListener implements ApplicationRunner { Set profileMetrics_2_radioTypes = new HashSet<>(); profileMetrics_2_radioTypes.add(RadioType.is2dot4GHz); profileMetrics_2_radioTypes.add(RadioType.is5GHz); - - ServiceMetricsCollectionConfigProfile metricsProfileDetails2Radios = ServiceMetricsCollectionConfigProfile.createWithDefaults(); - metricsProfileDetails3Radios.setAllNetworkConfigParametersToDefaults(profileMetrics_2_radioTypes, metricTypes, true); + + ServiceMetricsCollectionConfigProfile metricsProfileDetails2Radios = ServiceMetricsCollectionConfigProfile + .createWithDefaults(); + metricsProfileDetails3Radios.setAllNetworkConfigParametersToDefaults(profileMetrics_2_radioTypes, metricTypes, + true); profileMetrics_2_radios.setDetails(metricsProfileDetails2Radios); profileMetrics_2_radios = profileServiceInterface.create(profileMetrics_2_radios); @@ -329,15 +339,14 @@ public class AllInOneStartListener implements ApplicationRunner { profileSsidEAP.setChildProfileIds(childIds); profileSsidEAP = profileServiceInterface.create(profileSsidEAP); - - + Profile passpointOperatorProfile = new Profile(); passpointOperatorProfile.setCustomerId(customer.getId()); passpointOperatorProfile.setName("TipWlan-Hotspot20-Operator"); passpointOperatorProfile.setProfileType(ProfileType.operator); passpointOperatorProfile.setDetails(OperatorProfile.createWithDefaults()); passpointOperatorProfile = profileServiceInterface.create(passpointOperatorProfile); - + Profile passpointVenueProfile = new Profile(); passpointVenueProfile.setCustomerId(customer.getId()); passpointVenueProfile.setName("TipWlan-Hotspot20-Venue"); @@ -345,6 +354,56 @@ public class AllInOneStartListener implements ApplicationRunner { passpointVenueProfile.setDetails(VenueProfile.createWithDefaults()); passpointVenueProfile = profileServiceInterface.create(passpointVenueProfile); + Profile hotspot20IdProviderProfile = new Profile(); + hotspot20IdProviderProfile.setCustomerId(customer.getId()); + hotspot20IdProviderProfile.setName("TipWlan-Hotspot20-OSU-Provider"); + hotspot20IdProviderProfile.setProfileType(ProfileType.id_provider); + Hotspot20IdProviderProfile passpointIdProviderProfile = Hotspot20IdProviderProfile.createWithDefaults(); + MccMnc mccMnc = MccMnc.createWithDefaults(); + mccMnc.setMcc(302); + mccMnc.setMnc(720); + mccMnc.setIso("ca"); + mccMnc.setCountry("Canada"); + mccMnc.setCountryCode(1); + mccMnc.setNetwork("Rogers AT&T Wireless"); + List mccMncList = new ArrayList<>(); + mccMncList.add(mccMnc); + passpointIdProviderProfile.setMccMncList(mccMncList); + List osuIconList = new ArrayList<>(); + osuIconList.add(OsuIcon.createWithDefaults()); + passpointIdProviderProfile.setOsuIconList(osuIconList); + List naiRealmList = new ArrayList<>(); + naiRealmList.add(NaiRealmInformation.createWithDefaults()); + passpointIdProviderProfile.setNaiRealmList(naiRealmList); + passpointIdProviderProfile.setDomainName("example.com"); + passpointIdProviderProfile.setOsuNaiStandalone("anonymous@example.com"); + passpointIdProviderProfile.setOsuNaiShared("anonymous@example.com"); + List methodList = new ArrayList<>(); + methodList.add(1); + methodList.add(0); + passpointIdProviderProfile.setOsuMethodList(methodList); + Hotspot20Duple enOsuProvider = Hotspot20Duple.createWithDefaults(); + enOsuProvider.setLocale(Locale.CANADA); + enOsuProvider.setDupleName("Example provider"); + passpointIdProviderProfile.setOsuFriendlyName(enOsuProvider); + List osuServiceDescription = new ArrayList<>(); + Hotspot20Duple enService = Hotspot20Duple.createWithDefaults(); + enService.setLocale(Locale.CANADA); + enService.setDupleName("Example services"); + osuServiceDescription.add(enService); + Hotspot20Duple frService = Hotspot20Duple.createWithDefaults(); + frService.setLocale(Locale.CANADA_FRENCH); + frService.setDupleName("Exemples de services"); + osuServiceDescription.add(frService); + passpointIdProviderProfile.setOsuServiceDescription(osuServiceDescription); + passpointIdProviderProfile.setOsuSsid("TipWlan-cloud-3-radios"); + passpointIdProviderProfile.setOsuServerUri("https://example.com/osu/"); + passpointIdProviderProfile.setRadiusProfileAccounting("Radius-Profile"); + passpointIdProviderProfile.setRadiusProfileAuth("Radius-Profile"); + hotspot20IdProviderProfile.setDetails(passpointIdProviderProfile); + hotspot20IdProviderProfile = profileServiceInterface.create(hotspot20IdProviderProfile); + + Profile passpointHotspotConfig = new Profile(); passpointHotspotConfig.setCustomerId(customer.getId()); passpointHotspotConfig.setName("TipWlan-Hotspot20-Config"); @@ -352,11 +411,15 @@ public class AllInOneStartListener implements ApplicationRunner { Set passpointHotspotConfigChildIds = new HashSet<>(); passpointHotspotConfigChildIds.add(passpointOperatorProfile.getId()); passpointHotspotConfigChildIds.add(passpointVenueProfile.getId()); + passpointHotspotConfigChildIds.add(hotspot20IdProviderProfile.getId()); passpointHotspotConfig.setChildProfileIds(passpointHotspotConfigChildIds); passpointHotspotConfig.setDetails(Hotspot2Profile.createWithDefaults()); + List associatedSsids = new ArrayList<>(); + associatedSsids.add("TipWlan-cloud-3-radios"); + ((Hotspot2Profile) passpointHotspotConfig.getDetails()).setAssociatedSsids(associatedSsids); passpointHotspotConfig = profileServiceInterface.create(passpointHotspotConfig); - - + + Profile profileSsid_3_radios = new Profile(); profileSsid_3_radios.setCustomerId(customer.getId()); profileSsid_3_radios.setName("TipWlan-cloud-3-radios"); @@ -370,6 +433,8 @@ public class AllInOneStartListener implements ApplicationRunner { profileSsid_3_radios.setDetails(ssidConfig_3_radios); Set ssidChildIds = new HashSet<>(); ssidChildIds.add(passpointHotspotConfig.getId()); + ssidChildIds.add(hotspot20IdProviderProfile.getId()); + profileSsid_3_radios.setChildProfileIds(ssidChildIds); profileSsid_3_radios = profileServiceInterface.create(profileSsid_3_radios); @@ -385,14 +450,14 @@ public class AllInOneStartListener implements ApplicationRunner { profileSsid_2_radios.setDetails(ssidConfig_2_radios); profileSsid_2_radios.setChildProfileIds(ssidChildIds); profileSsid_2_radios = profileServiceInterface.create(profileSsid_2_radios); - + Profile profileRf = new Profile(); - profileRf.setCustomerId(customer.getId()); - profileRf.setName("TipWlan-rf"); - RfConfiguration rfConfig = RfConfiguration.createWithDefaults(); - rfConfig.getRfConfigMap().forEach((x, y) -> y.setRf("TipWlan-rf")); - profileRf.setDetails(rfConfig); - profileRf = profileServiceInterface.create(profileRf); + profileRf.setCustomerId(customer.getId()); + profileRf.setName("TipWlan-rf"); + RfConfiguration rfConfig = RfConfiguration.createWithDefaults(); + rfConfig.getRfConfigMap().forEach((x, y) -> y.setRf("TipWlan-rf")); + profileRf.setDetails(rfConfig); + profileRf = profileServiceInterface.create(profileRf); // Captive portal profile Profile profileCaptivePortal = new Profile(); @@ -725,7 +790,7 @@ public class AllInOneStartListener implements ApplicationRunner { } - } + } } @@ -918,7 +983,7 @@ public class AllInOneStartListener implements ApplicationRunner { apNodeMetrics.setChannelUtilization(RadioType.is5GHzU, getRandomInt(30, 70)); apPerformance.setCpuTemperature(getRandomInt(25, 90)); - apPerformance.setCpuUtilized(new int[] { getRandomInt(5, 98), getRandomInt(5, 98) }); + apPerformance.setCpuUtilized(new int[] { getRandomInt(5, 98), getRandomInt(5, 98) }); apPerformance.setEthLinkState(EthernetLinkState.UP1000_FULL_DUPLEX); diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/hotspot/models/Hotspot2Profile.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/hotspot/models/Hotspot2Profile.java index 2291ac1d..64f611aa 100644 --- a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/hotspot/models/Hotspot2Profile.java +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/hotspot/models/Hotspot2Profile.java @@ -1,7 +1,10 @@ package com.telecominfraproject.wlan.profile.passpoint.hotspot.models; import java.net.URI; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; +import java.util.ListIterator; import java.util.Objects; import java.util.Set; @@ -15,6 +18,7 @@ import com.telecominfraproject.wlan.profile.models.common.ManagedFileInfo; import com.telecominfraproject.wlan.profile.passpoint.models.AccessNetworkType; import com.telecominfraproject.wlan.profile.passpoint.models.GasAddress3Behaviour; import com.telecominfraproject.wlan.profile.passpoint.models.IPv4PasspointAddressType; +import com.telecominfraproject.wlan.profile.passpoint.models.MccMnc; import com.telecominfraproject.wlan.profile.passpoint.models.NetworkAuthenticationType; @@ -64,6 +68,12 @@ public class Hotspot2Profile extends ProfileDetails implements PushableConfigura private boolean disableDownstreamGroupAddressedForwarding; + private boolean enable2pt4GHz; + private boolean enable5GHz; + + private List associatedSsids; + + private List mccMnc3gppCellularNetworkInfo; private Hotspot2Profile() { @@ -85,6 +95,17 @@ public class Hotspot2Profile extends ProfileDetails implements PushableConfigura termsAndConditionsFile.setApExportUrl("https://localhost:9091/filestore/termsAndConditions"); termsAndConditionsFile.setFileCategory(FileCategory.ExternalPolicyConfiguration); termsAndConditionsFile.setFileType(FileType.TEXT); + enable2pt4GHz = true; + enable5GHz = true; + mccMnc3gppCellularNetworkInfo = new ArrayList<>(); + MccMnc mccMnc = MccMnc.createWithDefaults(); + mccMnc.setMcc(302); + mccMnc.setMnc(720); + mccMnc.setIso("ca"); + mccMnc.setCountry("Canada"); + mccMnc.setCountryCode(1); + mccMnc.setNetwork("Rogers AT&T Wireless"); + mccMnc3gppCellularNetworkInfo.add(mccMnc); } public static Hotspot2Profile createWithDefaults() { @@ -316,6 +337,56 @@ public class Hotspot2Profile extends ProfileDetails implements PushableConfigura this.connectionCapabilitySet = connectionCapabilitySet; } + + public boolean isEnable2pt4GHz() { + return enable2pt4GHz; + } + + + public void setEnable2pt4GHz(boolean enable2pt4gHz) { + enable2pt4GHz = enable2pt4gHz; + } + + + public boolean isEnable5GHz() { + return enable5GHz; + } + + + public void setEnable5GHz(boolean enable5gHz) { + enable5GHz = enable5gHz; + } + + + public List getAssociatedSsids() { + return associatedSsids; + } + + + public void setAssociatedSsids(List associatedSsids) { + this.associatedSsids = associatedSsids; + } + + public List getMccMnc3gppCellularNetworkInfo() { + return mccMnc3gppCellularNetworkInfo; + } + + public String getMccMncList() { + StringBuffer buffer = new StringBuffer(); + ListIterator listIterator = mccMnc3gppCellularNetworkInfo.listIterator(); + while (listIterator.hasNext()) { + buffer.append(listIterator.next().getMccMncPairing()); + if (listIterator.hasNext()) { + buffer.append(";"); + } + } + return buffer.toString(); + } + + public void setMccMnc3gppCellularNetworkInfo(List mccMnc3gppCellularNetworkInfo) { + this.mccMnc3gppCellularNetworkInfo = mccMnc3gppCellularNetworkInfo; + } + @Override public Hotspot2Profile clone() { Hotspot2Profile returnValue = (Hotspot2Profile) super.clone(); @@ -344,17 +415,24 @@ public class Hotspot2Profile extends ProfileDetails implements PushableConfigura returnValue.setTermsAndConditionsFile(termsAndConditionsFile); returnValue.setUnauthenticatedEmergencyServiceAccessible(unauthenticatedEmergencyServiceAccessible); returnValue.setWhitelistDomain(whitelistDomain); + returnValue.setEnable2pt4GHz(enable2pt4GHz); + returnValue.setEnable5GHz(enable5GHz); + + if (associatedSsids != null) { + returnValue.setAssociatedSsids(associatedSsids); + } + return returnValue; } @Override public int hashCode() { return Objects.hash(accessNetworkType, additionalStepsRequiredForAccess, anqpDomainId, apCivicLocation, - apGeospatialLocation, apPublicLocationIdUri, connectionCapabilitySet, deauthRequestTimeout, - disableDownstreamGroupAddressedForwarding, emergencyServicesReachable, enableInterworkingAndHs20, - gasAddr3Behaviour, hessid, internetConnectivity, ipAddressTypeAvailability, networkAuthenticationType, - operatingClass, qosMapSetConfiguration, termsAndConditionsFile, - unauthenticatedEmergencyServiceAccessible, whitelistDomain); + apGeospatialLocation, apPublicLocationIdUri, associatedSsids, connectionCapabilitySet, + deauthRequestTimeout, disableDownstreamGroupAddressedForwarding, emergencyServicesReachable, + enable2pt4GHz, enable5GHz, enableInterworkingAndHs20, gasAddr3Behaviour, hessid, internetConnectivity, + ipAddressTypeAvailability, networkAuthenticationType, operatingClass, qosMapSetConfiguration, + termsAndConditionsFile, unauthenticatedEmergencyServiceAccessible, whitelistDomain); } @Override @@ -371,10 +449,12 @@ public class Hotspot2Profile extends ProfileDetails implements PushableConfigura && anqpDomainId == other.anqpDomainId && Objects.equals(apCivicLocation, other.apCivicLocation) && Objects.equals(apGeospatialLocation, other.apGeospatialLocation) && Objects.equals(apPublicLocationIdUri, other.apPublicLocationIdUri) + && Objects.equals(associatedSsids, other.associatedSsids) && Objects.equals(connectionCapabilitySet, other.connectionCapabilitySet) && deauthRequestTimeout == other.deauthRequestTimeout && disableDownstreamGroupAddressedForwarding == other.disableDownstreamGroupAddressedForwarding && emergencyServicesReachable == other.emergencyServicesReachable + && enable2pt4GHz == other.enable2pt4GHz && enable5GHz == other.enable5GHz && enableInterworkingAndHs20 == other.enableInterworkingAndHs20 && Objects.equals(gasAddr3Behaviour, other.gasAddr3Behaviour) && Objects.equals(hessid, other.hessid) && internetConnectivity == other.internetConnectivity diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MccMnc.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MccMnc.java new file mode 100644 index 00000000..49b94d64 --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MccMnc.java @@ -0,0 +1,123 @@ +package com.telecominfraproject.wlan.profile.passpoint.models; + +import java.util.Objects; + +import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; + +public class MccMnc extends BaseJsonModel { + + private static final long serialVersionUID = -4481708731385084502L; + + private int mcc; + private int mnc; + private String iso; + private String country; + private int countryCode; + private String network; + + public MccMnc() { + + } + + public static MccMnc createWithDefaults() { + return new MccMnc(); + } + + public MccMnc(int mcc, int mnc) { + this(); + this.mcc = mcc; + this.mnc = mnc; + } + + public int getMcc() { + return mcc; + } + + + public void setMcc(int mcc) { + this.mcc = mcc; + } + + + public int getMnc() { + return mnc; + } + + + public void setMnc(int mnc) { + this.mnc = mnc; + } + + + public String getIso() { + return iso; + } + + + public void setIso(String iso) { + this.iso = iso; + } + + + public String getCountry() { + return country; + } + + + public void setCountry(String country) { + this.country = country; + } + + public int getCountryCode() { + return countryCode; + } + + public void setCountryCode(int countryCode) { + this.countryCode = countryCode; + } + + public String getMccMncPairing() { + return getMcc() + "," + getMnc(); + } + + public String getNetwork() { + return network; + } + + public void setNetwork(String network) { + this.network = network; + } + + @Override + public MccMnc clone() { + MccMnc ret = (MccMnc) super.clone(); + ret.country = country; + ret.countryCode = countryCode; + ret.network = network; + ret.iso = iso; + ret.mcc = mcc; + ret.mnc = mnc; + return ret; + } + + @Override + public int hashCode() { + return Objects.hash(country, countryCode, iso, mcc, mnc, network); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof MccMnc)) { + return false; + } + MccMnc other = (MccMnc) obj; + return Objects.equals(country, other.country) && Objects.equals(countryCode, other.countryCode) + && Objects.equals(iso, other.iso) && mcc == other.mcc && mnc == other.mnc + && Objects.equals(network, other.network); + } + + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MobileCountryAndNetworkCodes.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MobileCountryAndNetworkCodes.java new file mode 100644 index 00000000..c79b070d --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/models/MobileCountryAndNetworkCodes.java @@ -0,0 +1,106 @@ +package com.telecominfraproject.wlan.profile.passpoint.models; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; + + +public class MobileCountryAndNetworkCodes { + + private static final Logger LOG = LoggerFactory.getLogger(MobileCountryAndNetworkCodes.class); + + @Value("${tip.wlan.mobileCountryAndNetworkCodesUrl:https://tip-read:tip-read@tip.jfrog.io/artifactory/tip-wlan-cloud-schemas/MobileCountryAndNetworkCodes.txt}") + private static String mobileCountryAndNetworkCodesUrl; + + @Value("${tip.wlan.mobileCountryAndNetworkCodesLocalPath:./MobileCountryAndNetworkCodes.txt}") + private static String mobileCountryAndNetworkCodesLocalPath = "./src/main/resources/MobileCountryAndNetworkCodes.txt"; + + public static File mccMncCodesFile = new File(mobileCountryAndNetworkCodesLocalPath); + + private static Set mccMncCodeSet = new HashSet<>(); + + static { + if (mccMncCodesFile.canRead()) { + try { + List lines = Files.readAllLines(Paths.get(mobileCountryAndNetworkCodesLocalPath)); + + for (String line : lines) { + + LOG.debug("Line {}", line); + String[] tokens = line.split("\t"); + MccMnc mccMnc = MccMnc.createWithDefaults(); + try { + mccMnc.setMcc(Integer.parseInt(tokens[0])); + mccMnc.setMnc(Integer.parseInt(tokens[1])); + } catch (NumberFormatException e) { + LOG.info("Couldn't parse: {}", e.getMessage()); + continue; + } + mccMnc.setIso(tokens[2]); + mccMnc.setCountry(tokens[3]); + mccMnc.setCountryCode(Integer.parseInt(tokens[4])); + mccMnc.setNetwork(tokens[5]); + mccMncCodeSet.add(mccMnc); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + } + + + public static String getMobileCountryAndNetworkCodesUrl() { + return mobileCountryAndNetworkCodesUrl; + } + + + public static void setMobileCountryAndNetworkCodesUrl(String mobileCountryAndNetworkCodesUrl) { + MobileCountryAndNetworkCodes.mobileCountryAndNetworkCodesUrl = mobileCountryAndNetworkCodesUrl; + } + + + public static String getMobileCountryAndNetworkCodesLocalPath() { + return mobileCountryAndNetworkCodesLocalPath; + } + + + public static void setMobileCountryAndNetworkCodesLocalPath(String mobileCountryAndNetworkCodesLocalPath) { + MobileCountryAndNetworkCodes.mobileCountryAndNetworkCodesLocalPath = mobileCountryAndNetworkCodesLocalPath; + } + + + public static File getMccMncCodesFile() { + return mccMncCodesFile; + } + + + public static void setMccMncCodesFile(File mccMncCodesFile) { + MobileCountryAndNetworkCodes.mccMncCodesFile = mccMncCodesFile; + } + + + public static Set getMccMncCodeSet() { + return mccMncCodeSet; + } + + + public static void setMccMncCodeSet(Set mccMncCodeSet) { + MobileCountryAndNetworkCodes.mccMncCodeSet = mccMncCodeSet; + } + + public static void main(String args[]) { + getMccMncCodeSet().stream().forEach(m -> { + LOG.debug("MCC_MNC {}", m.toPrettyString()); + }); + } + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CellularNetworkInformation.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CellularNetworkInformation.java deleted file mode 100644 index b4f1e2c2..00000000 --- a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CellularNetworkInformation.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.telecominfraproject.wlan.profile.passpoint.provider.models; - -import com.telecominfraproject.wlan.core.model.equipment.PushableConfiguration; -import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; - - -public class CellularNetworkInformation extends BaseJsonModel - implements PushableConfiguration { - - private static final long serialVersionUID = -7725583150308531978L; - - @Override - public boolean needsToBeUpdatedOnDevice(CellularNetworkInformation previousVersion) { - if (this.equals(previousVersion)) - return false; - return true; - } - -} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CredentialType.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CredentialType.java new file mode 100644 index 00000000..f16ebf9e --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/CredentialType.java @@ -0,0 +1,148 @@ +package com.telecominfraproject.wlan.profile.passpoint.provider.models; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.telecominfraproject.wlan.core.model.extensibleenum.EnumWithId; +import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; + + +public class CredentialType extends BaseJsonModel implements EnumWithId { + + private static final long serialVersionUID = 3414126959454909905L; + + private static final Logger LOG = LoggerFactory.getLogger(CredentialType.class); + + private static Object lock = new Object(); + private static final Map ELEMENTS = new ConcurrentHashMap<>(); + private static final Map ELEMENTS_BY_NAME = new ConcurrentHashMap<>(); + + public static final CredentialType + + sim = new CredentialType(1, "SIM"), usim = new CredentialType(2, "USIM"), + nfc_secure_element = new CredentialType(3, "NFC Secure Element"), + hardware_token = new CredentialType(4, "Hardware Token"), softoken = new CredentialType(5, "Softoken"), + certificate = new CredentialType(6, "Certificate"), + username_password = new CredentialType(7, "username/password"), + none = new CredentialType(8, "none (server-side authentication only)"), + reserved = new CredentialType(9, "Reserved"), vendor_specific = new CredentialType(10, "Vendor Specific"), + UNSUPPORTED = new CredentialType(-1, "UNSUPPORTED"); + static { + // try to load all the subclasses explicitly - to avoid timing issues + // when items coming from subclasses may be registered some time later, + // after the parent class is loaded + Set> subclasses = BaseJsonModel.getReflections() + .getSubTypesOf(CredentialType.class); + for (Class cls : subclasses) { + try { + Class.forName(cls.getName()); + } catch (ClassNotFoundException e) { + LOG.warn("Cannot load class {} : {}", cls.getName(), e); + } + } + } + + private final int id; + private final String name; + + protected CredentialType(int id, String name) { + synchronized (lock) { + + LOG.debug("Registering NonEapInnerAuthenticationTypes by {} : {}", this.getClass().getSimpleName(), name); + + this.id = id; + this.name = name; + + ELEMENTS_BY_NAME.values().forEach(s -> { + if (s.getName().equals(name)) { + throw new IllegalStateException("NonEapInnerAuthenticationTypes item for " + name + + " is already defined, cannot have more than one of them"); + } + }); + + if (ELEMENTS.containsKey(id)) { + throw new IllegalStateException("NonEapInnerAuthenticationTypes item " + name + "(" + id + + ") is already defined, cannot have more than one of them"); + } + + ELEMENTS.put(id, this); + ELEMENTS_BY_NAME.put(name, this); + } + } + + @Override + public int getId() { + return id; + } + + @Override + public String getName() { + return name; + } + + @JsonIgnore + public String name() { + return name; + } + + @JsonIgnore + public static CredentialType[] values() { + return new ArrayList<>(ELEMENTS.values()).toArray(new CredentialType[0]); + } + + public static CredentialType getById(int enumId) { + return ELEMENTS.get(enumId); + } + + @JsonCreator + public static CredentialType getByName(String value) { + CredentialType ret = ELEMENTS_BY_NAME.get(value); + if (ret == null) { + ret = UNSUPPORTED; + } + + return ret; + } + + + public static List getValues() { + return new ArrayList<>(ELEMENTS.values()); + } + + public static boolean isUnsupported(CredentialType value) { + return (UNSUPPORTED.equals(value)); + } + + @Override + public int hashCode() { + return id; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CredentialType)) { + return false; + } + CredentialType other = (CredentialType) obj; + return id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return name; + } + + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/EapMethods.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/EapMethods.java new file mode 100644 index 00000000..e034f751 --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/EapMethods.java @@ -0,0 +1,148 @@ +package com.telecominfraproject.wlan.profile.passpoint.provider.models; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.telecominfraproject.wlan.core.model.extensibleenum.EnumWithId; +import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; + + +public class EapMethods extends BaseJsonModel implements EnumWithId { + + + /** + * + */ + private static final long serialVersionUID = -1873755168561965743L; + + private static final Logger LOG = LoggerFactory.getLogger(EapMethods.class); + + private static Object lock = new Object(); + private static final Map ELEMENTS = new ConcurrentHashMap<>(); + private static final Map ELEMENTS_BY_NAME = new ConcurrentHashMap<>(); + + public static final EapMethods + + eap_tls = new EapMethods(13, "EAP-TLS with certificate"), + eap_ttls = new EapMethods(21, "EAP-TTLS with username/password"), + eap_mschap_v2 = new EapMethods(29, "EAP-MSCHAP-V2 with username/password"), + + UNSUPPORTED = new EapMethods(-1, "UNSUPPORTED"); + + static { + // try to load all the subclasses explicitly - to avoid timing issues + // when items coming from subclasses may be registered some time later, + // after the parent class is loaded + Set> subclasses = BaseJsonModel.getReflections().getSubTypesOf(EapMethods.class); + for (Class cls : subclasses) { + try { + Class.forName(cls.getName()); + } catch (ClassNotFoundException e) { + LOG.warn("Cannot load class {} : {}", cls.getName(), e); + } + } + } + + private final int id; + private final String name; + + protected EapMethods(int id, String name) { + synchronized (lock) { + + LOG.debug("Registering EapMethods by {} : {}", this.getClass().getSimpleName(), name); + + this.id = id; + this.name = name; + + ELEMENTS_BY_NAME.values().forEach(s -> { + if (s.getName().equals(name)) { + throw new IllegalStateException( + "EapMethods item for " + name + " is already defined, cannot have more than one of them"); + } + }); + + if (ELEMENTS.containsKey(id)) { + throw new IllegalStateException("EapMethods item " + name + "(" + id + + ") is already defined, cannot have more than one of them"); + } + + ELEMENTS.put(id, this); + ELEMENTS_BY_NAME.put(name, this); + } + } + + @Override + public int getId() { + return id; + } + + @Override + public String getName() { + return name; + } + + @JsonIgnore + public String name() { + return name; + } + + @JsonIgnore + public static EapMethods[] values() { + return new ArrayList<>(ELEMENTS.values()).toArray(new EapMethods[0]); + } + + public static EapMethods getById(int enumId) { + return ELEMENTS.get(enumId); + } + + @JsonCreator + public static EapMethods getByName(String value) { + EapMethods ret = ELEMENTS_BY_NAME.get(value); + if (ret == null) { + ret = UNSUPPORTED; + } + + return ret; + } + + + public static List getValues() { + return new ArrayList<>(ELEMENTS.values()); + } + + public static boolean isUnsupported(EapMethods value) { + return (UNSUPPORTED.equals(value)); + } + + @Override + public int hashCode() { + return id; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof EapMethods)) { + return false; + } + EapMethods other = (EapMethods) obj; + return id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return name; + } + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/Hotspot20IdProviderProfile.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/Hotspot20IdProviderProfile.java new file mode 100644 index 00000000..d2516373 --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/Hotspot20IdProviderProfile.java @@ -0,0 +1,236 @@ +package com.telecominfraproject.wlan.profile.passpoint.provider.models; + +import java.util.List; +import java.util.Objects; + +import com.telecominfraproject.wlan.core.model.equipment.PushableConfiguration; +import com.telecominfraproject.wlan.profile.models.ProfileDetails; +import com.telecominfraproject.wlan.profile.models.ProfileType; +import com.telecominfraproject.wlan.profile.passpoint.models.Hotspot20Duple; +import com.telecominfraproject.wlan.profile.passpoint.models.MccMnc; + + +public class Hotspot20IdProviderProfile extends ProfileDetails + implements PushableConfiguration { + + + private String domainName; + + private List mccMncList; + private List naiRealmList; + private List osuIconList; + private String radiusProfileAuth; + private String radiusProfileAccounting; + private String osuSsid; + private String osuServerUri; + private Hotspot20Duple osuFriendlyName; + private String osuNaiStandalone; // needs to be unsigned, so do take byte + // value, and make osuNaiStandalone & 0xff; + private String osuNaiShared; + private List osuMethodList; + private List osuServiceDescription; + + private static final long serialVersionUID = -6146454085334670280L; + + public String getDomainName() { + return domainName; + } + + public void setDomainName(String domainName) { + this.domainName = domainName; + } + + private Hotspot20IdProviderProfile() { + } + + public static Hotspot20IdProviderProfile createWithDefaults() { + + return new Hotspot20IdProviderProfile(); + } + + + @Override + public ProfileType getProfileType() { + return ProfileType.id_provider; + } + + + public List getMccMncList() { + return mccMncList; + } + + + public void setMccMncList(List mccMncList) { + this.mccMncList = mccMncList; + } + + + public List getNaiRealmList() { + return naiRealmList; + } + + + public void setNaiRealmList(List naiRealmList) { + this.naiRealmList = naiRealmList; + } + + + public List getOsuIconList() { + return osuIconList; + } + + + public void setOsuIconList(List osuIconList) { + this.osuIconList = osuIconList; + } + + + public String getRadiusProfileAuth() { + return radiusProfileAuth; + } + + + public void setRadiusProfileAuth(String radiusProfileAuth) { + this.radiusProfileAuth = radiusProfileAuth; + } + + + public String getRadiusProfileAccounting() { + return radiusProfileAccounting; + } + + + public void setRadiusProfileAccounting(String radiusProfileAccounting) { + this.radiusProfileAccounting = radiusProfileAccounting; + } + + + public String getOsuSsid() { + return osuSsid; + } + + + public void setOsuSsid(String osuSsid) { + this.osuSsid = osuSsid; + } + + + public String getOsuServerUri() { + return osuServerUri; + } + + + public void setOsuServerUri(String osuServerUri) { + this.osuServerUri = osuServerUri; + } + + + public Hotspot20Duple getOsuFriendlyName() { + return osuFriendlyName; + } + + public void setOsuFriendlyName(Hotspot20Duple osuFriendlyName) { + this.osuFriendlyName = osuFriendlyName; + } + + + public String getOsuNaiStandalone() { + return osuNaiStandalone; + } + + + public void setOsuNaiStandalone(String osuNaiStandalone) { + this.osuNaiStandalone = osuNaiStandalone; + } + + + public String getOsuNaiShared() { + return osuNaiShared; + } + + + public void setOsuNaiShared(String osuNaiShared) { + this.osuNaiShared = osuNaiShared; + } + + + public List getOsuMethodList() { + return osuMethodList; + } + + + public void setOsuMethodList(List osuMethodList) { + this.osuMethodList = osuMethodList; + } + + + public List getOsuServiceDescription() { + return osuServiceDescription; + } + + + public void setOsuServiceDescription(List osuServiceDescription) { + this.osuServiceDescription = osuServiceDescription; + } + + @Override + public boolean needsToBeUpdatedOnDevice(Hotspot20IdProviderProfile previousVersion) { + if (this.equals(previousVersion)) + return false; + return true; + } + + public Hotspot20IdProviderProfile clone() { + Hotspot20IdProviderProfile ret = (Hotspot20IdProviderProfile) super.clone(); + ret.domainName = getDomainName(); + if (mccMncList != null) + ret.mccMncList = getMccMncList(); + if (naiRealmList != null) + ret.naiRealmList = getNaiRealmList(); + if (osuIconList != null) + ret.osuIconList = getOsuIconList(); + if (osuMethodList != null) + ret.osuMethodList = getOsuMethodList(); + if (osuServiceDescription != null) + ret.osuServiceDescription = getOsuServiceDescription(); + ret.radiusProfileAccounting = getRadiusProfileAccounting(); + ret.radiusProfileAuth = getRadiusProfileAuth(); + ret.osuSsid = getOsuSsid(); + ret.osuServerUri = getOsuServerUri(); + ret.osuFriendlyName = getOsuFriendlyName(); + ret.osuNaiShared = getOsuNaiShared(); + ret.osuNaiStandalone = getOsuNaiStandalone(); + return ret; + } + + @Override + public int hashCode() { + return Objects.hash(domainName, mccMncList, naiRealmList, osuFriendlyName, osuIconList, osuMethodList, + osuNaiShared, osuNaiStandalone, osuServerUri, osuServiceDescription, osuSsid, radiusProfileAccounting, + radiusProfileAuth); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof Hotspot20IdProviderProfile)) { + return false; + } + Hotspot20IdProviderProfile other = (Hotspot20IdProviderProfile) obj; + return Objects.equals(domainName, other.domainName) && Objects.equals(mccMncList, other.mccMncList) + && Objects.equals(naiRealmList, other.naiRealmList) + && Objects.equals(osuFriendlyName, other.osuFriendlyName) + && Objects.equals(osuIconList, other.osuIconList) && Objects.equals(osuMethodList, other.osuMethodList) + && Objects.equals(osuNaiShared, other.osuNaiShared) + && Objects.equals(osuNaiStandalone, other.osuNaiStandalone) + && Objects.equals(osuServerUri, other.osuServerUri) + && Objects.equals(osuServiceDescription, other.osuServiceDescription) + && Objects.equals(osuSsid, other.osuSsid) + && Objects.equals(radiusProfileAccounting, other.radiusProfileAccounting) + && Objects.equals(radiusProfileAuth, other.radiusProfileAuth); + } + + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealm.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealm.java deleted file mode 100644 index 8fd6029a..00000000 --- a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealm.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.telecominfraproject.wlan.profile.passpoint.provider.models; - -import com.telecominfraproject.wlan.core.model.equipment.PushableConfiguration; -import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; - - -public class NaiRealm extends BaseJsonModel implements PushableConfiguration { - - /** - * - */ - private static final long serialVersionUID = -6102005274671968193L; - - @Override - public boolean needsToBeUpdatedOnDevice(NaiRealm previousVersion) { - // TODO Auto-generated method stub - return false; - } - - -} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmEncoding.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmEncoding.java new file mode 100644 index 00000000..6b8f4258 --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmEncoding.java @@ -0,0 +1,148 @@ +package com.telecominfraproject.wlan.profile.passpoint.provider.models; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.telecominfraproject.wlan.core.model.extensibleenum.EnumWithId; +import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; + + +public class NaiRealmEncoding extends BaseJsonModel implements EnumWithId { + + private static final long serialVersionUID = -8656752874673129263L; + + private static final Logger LOG = LoggerFactory.getLogger(NaiRealmEncoding.class); + + private static Object lock = new Object(); + private static final Map ELEMENTS = new ConcurrentHashMap<>(); + private static final Map ELEMENTS_BY_NAME = new ConcurrentHashMap<>(); + + public static final NaiRealmEncoding + + // # encoding: + // # 0 = Realm formatted in accordance with IETF RFC 4282 + // # 1 = UTF-8 formatted character string that is not formatted in + // accordance with IETF RFC 4282 + ietf_rfc_4282_encoding = new NaiRealmEncoding(0, "Realm formatted in accordance with IETF RFC 4282"), + utf8_non_ietf_rfc_4282_encoding = new NaiRealmEncoding(1, + "UTF-8 formatted character string that is not formatted in accordance with IETF RFC 4282"), + UNSUPPORTED = new NaiRealmEncoding(-1, "UNSUPPORTED"); + static { + // try to load all the subclasses explicitly - to avoid timing issues + // when items coming from subclasses may be registered some time later, + // after the parent class is loaded + Set> subclasses = BaseJsonModel.getReflections() + .getSubTypesOf(NaiRealmEncoding.class); + for (Class cls : subclasses) { + try { + Class.forName(cls.getName()); + } catch (ClassNotFoundException e) { + LOG.warn("Cannot load class {} : {}", cls.getName(), e); + } + } + } + + private final int id; + private final String name; + + protected NaiRealmEncoding(int id, String name) { + synchronized (lock) { + + LOG.debug("Registering NonEapInnerAuthenticationTypes by {} : {}", this.getClass().getSimpleName(), name); + + this.id = id; + this.name = name; + + ELEMENTS_BY_NAME.values().forEach(s -> { + if (s.getName().equals(name)) { + throw new IllegalStateException("NonEapInnerAuthenticationTypes item for " + name + + " is already defined, cannot have more than one of them"); + } + }); + + if (ELEMENTS.containsKey(id)) { + throw new IllegalStateException("NonEapInnerAuthenticationTypes item " + name + "(" + id + + ") is already defined, cannot have more than one of them"); + } + + ELEMENTS.put(id, this); + ELEMENTS_BY_NAME.put(name, this); + } + } + + @Override + public int getId() { + return id; + } + + @Override + public String getName() { + return name; + } + + @JsonIgnore + public String name() { + return name; + } + + @JsonIgnore + public static NaiRealmEncoding[] values() { + return new ArrayList<>(ELEMENTS.values()).toArray(new NaiRealmEncoding[0]); + } + + public static NaiRealmEncoding getById(int enumId) { + return ELEMENTS.get(enumId); + } + + @JsonCreator + public static NaiRealmEncoding getByName(String value) { + NaiRealmEncoding ret = ELEMENTS_BY_NAME.get(value); + if (ret == null) { + ret = UNSUPPORTED; + } + + return ret; + } + + + public static List getValues() { + return new ArrayList<>(ELEMENTS.values()); + } + + public static boolean isUnsupported(NaiRealmEncoding value) { + return (UNSUPPORTED.equals(value)); + } + + @Override + public int hashCode() { + return Objects.hash(id, name); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof NaiRealmEncoding)) { + return false; + } + NaiRealmEncoding other = (NaiRealmEncoding) obj; + return id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return name; + } + + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmInformation.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmInformation.java new file mode 100644 index 00000000..0eb89bdb --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NaiRealmInformation.java @@ -0,0 +1,121 @@ +package com.telecominfraproject.wlan.profile.passpoint.provider.models; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Objects; +import java.util.Set; + +import com.telecominfraproject.wlan.core.model.equipment.PushableConfiguration; +import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; + + +public class NaiRealmInformation extends BaseJsonModel implements PushableConfiguration { + + private static final long serialVersionUID = -6102005274671968193L; + + private Set naiRealms; + private int encoding; + private Set eapMethods; + private Map> eapMap; + + public NaiRealmInformation() { + + } + + public static NaiRealmInformation createWithDefaults() { + NaiRealmInformation ret = new NaiRealmInformation(); + ret.setEncoding(NaiRealmEncoding.ietf_rfc_4282_encoding.getId()); + ret.naiRealms = new HashSet<>(); + ret.naiRealms.add("example.com"); + ret.naiRealms.add("example.net"); + ret.eapMethods = new HashSet<>(); + ret.eapMethods.add(EapMethods.eap_tls.getName()); + ret.eapMap = new HashMap<>(); + + Set credentialsSet = new HashSet<>(); + credentialsSet.add(CredentialType.softoken.getName()); + credentialsSet.add(CredentialType.certificate.getName()); + ret.eapMap.put(EapMethods.eap_tls.getName(), credentialsSet); + + return ret; + } + + public int getEncoding() { + return encoding; + } + + public void setEncoding(int i) { + this.encoding = i; + } + + + public Set getNaiRealms() { + return naiRealms; + } + + + public void setNaiRealms(Set naiRealms) { + this.naiRealms = naiRealms; + } + + + public Set getEapMethods() { + return eapMethods; + } + + + public void setEapMethods(Set eapMethods) { + this.eapMethods = eapMethods; + } + + + public Map> getEapMap() { + return eapMap; + } + + + public void setEapMap(Map> eapMap) { + this.eapMap = eapMap; + } + + @Override + public boolean needsToBeUpdatedOnDevice(NaiRealmInformation previousVersion) { + if (this.equals(previousVersion)) + return false; + return true; + } + + @Override + public NaiRealmInformation clone() { + NaiRealmInformation ret = (NaiRealmInformation) super.clone(); + if (eapMap != null) + ret.eapMap = eapMap; + if (eapMethods != null) + ret.eapMethods = eapMethods; + if (naiRealms != null) + ret.naiRealms = naiRealms; + ret.encoding = encoding; + return ret; + } + + @Override + public int hashCode() { + return Objects.hash(eapMap, eapMethods, encoding, naiRealms); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof NaiRealmInformation)) { + return false; + } + NaiRealmInformation other = (NaiRealmInformation) obj; + return Objects.equals(eapMap, other.eapMap) && Objects.equals(eapMethods, other.eapMethods) + && encoding == other.encoding && Objects.equals(naiRealms, other.naiRealms); + } + + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NonEapInnerAuthenticationTypes.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NonEapInnerAuthenticationTypes.java new file mode 100644 index 00000000..6d68fe90 --- /dev/null +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/NonEapInnerAuthenticationTypes.java @@ -0,0 +1,145 @@ +package com.telecominfraproject.wlan.profile.passpoint.provider.models; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.telecominfraproject.wlan.core.model.extensibleenum.EnumWithId; +import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; + + +public class NonEapInnerAuthenticationTypes extends BaseJsonModel implements EnumWithId { + + private static final long serialVersionUID = 3414126959454909905L; + + private static final Logger LOG = LoggerFactory.getLogger(NonEapInnerAuthenticationTypes.class); + + private static Object lock = new Object(); + private static final Map ELEMENTS = new ConcurrentHashMap<>(); + private static final Map ELEMENTS_BY_NAME = new ConcurrentHashMap<>(); + + public static final NonEapInnerAuthenticationTypes + + reserved = new NonEapInnerAuthenticationTypes(0, "Reserved"), pap = new NonEapInnerAuthenticationTypes(1, "PAP"), + chap = new NonEapInnerAuthenticationTypes(2, "CHAP"), + mschap = new NonEapInnerAuthenticationTypes(3, "MSCHAP"), + mschap_v2 = new NonEapInnerAuthenticationTypes(4, "MSCHAPV2"), + UNSUPPORTED = new NonEapInnerAuthenticationTypes(-1, "UNSUPPORTED"); + static { + // try to load all the subclasses explicitly - to avoid timing issues + // when items coming from subclasses may be registered some time later, + // after the parent class is loaded + Set> subclasses = BaseJsonModel.getReflections() + .getSubTypesOf(NonEapInnerAuthenticationTypes.class); + for (Class cls : subclasses) { + try { + Class.forName(cls.getName()); + } catch (ClassNotFoundException e) { + LOG.warn("Cannot load class {} : {}", cls.getName(), e); + } + } + } + + private final int id; + private final String name; + + protected NonEapInnerAuthenticationTypes(int id, String name) { + synchronized (lock) { + + LOG.debug("Registering NonEapInnerAuthenticationTypes by {} : {}", this.getClass().getSimpleName(), name); + + this.id = id; + this.name = name; + + ELEMENTS_BY_NAME.values().forEach(s -> { + if (s.getName().equals(name)) { + throw new IllegalStateException("NonEapInnerAuthenticationTypes item for " + name + + " is already defined, cannot have more than one of them"); + } + }); + + if (ELEMENTS.containsKey(id)) { + throw new IllegalStateException("NonEapInnerAuthenticationTypes item " + name + "(" + id + + ") is already defined, cannot have more than one of them"); + } + + ELEMENTS.put(id, this); + ELEMENTS_BY_NAME.put(name, this); + } + } + + @Override + public int getId() { + return id; + } + + @Override + public String getName() { + return name; + } + + @JsonIgnore + public String name() { + return name; + } + + @JsonIgnore + public static NonEapInnerAuthenticationTypes[] values() { + return new ArrayList<>(ELEMENTS.values()).toArray(new NonEapInnerAuthenticationTypes[0]); + } + + public static NonEapInnerAuthenticationTypes getById(int enumId) { + return ELEMENTS.get(enumId); + } + + @JsonCreator + public static NonEapInnerAuthenticationTypes getByName(String value) { + NonEapInnerAuthenticationTypes ret = ELEMENTS_BY_NAME.get(value); + if (ret == null) { + ret = UNSUPPORTED; + } + + return ret; + } + + + public static List getValues() { + return new ArrayList<>(ELEMENTS.values()); + } + + public static boolean isUnsupported(NonEapInnerAuthenticationTypes value) { + return (UNSUPPORTED.equals(value)); + } + + @Override + public int hashCode() { + return id; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof NonEapInnerAuthenticationTypes)) { + return false; + } + NonEapInnerAuthenticationTypes other = (NonEapInnerAuthenticationTypes) obj; + return id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return name; + } + + +} diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/OsuIcon.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/OsuIcon.java index fe26400f..60bbcf92 100644 --- a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/OsuIcon.java +++ b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/OsuIcon.java @@ -1,16 +1,157 @@ package com.telecominfraproject.wlan.profile.passpoint.provider.models; +import java.util.Locale; +import java.util.Objects; + import com.telecominfraproject.wlan.core.model.equipment.PushableConfiguration; import com.telecominfraproject.wlan.core.model.json.BaseJsonModel; -public class OsuIcon extends BaseJsonModel implements PushableConfiguration{ +public class OsuIcon extends BaseJsonModel implements PushableConfiguration { + + private static final String ICON_STRING_DELIMITER = ":"; private static final long serialVersionUID = 6779033020793748979L; + private static final Locale DEFAULT_ICON_LOCALE = Locale.CANADA; + + private Integer iconWidth; + private Integer iconHeight; + private String languageCode; + private Locale iconLocale; + public static final String ICON_TYPE = "image/png"; + private String iconName; + private String filePath; + + public OsuIcon() { + + } + + public static OsuIcon createWithDefaults() { + OsuIcon ret = new OsuIcon(); + ret.iconLocale = DEFAULT_ICON_LOCALE; + ret.iconWidth = 32; + ret.iconHeight = 32; + ret.languageCode = ret.iconLocale.getISO3Language(); + ret.iconName = "icon32.png"; + ret.filePath = "/tmp/icon32.png"; + return ret; + } + + + public Integer getIconWidth() { + return iconWidth; + } + + + public void setIconWidth(Integer iconWidth) { + this.iconWidth = iconWidth; + } + + + public Integer getIconHeight() { + return iconHeight; + } + + + public void setIconHeight(Integer iconHeight) { + this.iconHeight = iconHeight; + } + + + public String getLanguageCode() { + return languageCode; + } + + + public void setLanguageCode(String languageCode) { + this.languageCode = languageCode; + } + + + public String getIconName() { + return iconName; + } + + + public void setIconName(String iconName) { + this.iconName = iconName; + } + + + public String getFilePath() { + return filePath; + } + + + public void setFilePath(String filePath) { + this.filePath = filePath; + } + + + public static String getIconStringDelimiter() { + return ICON_STRING_DELIMITER; + } + + + public static String getIconType() { + return ICON_TYPE; + } + + + public Locale getIconLocale() { + return iconLocale; + } + + + public void setIconLocale(Locale iconLocale) { + this.iconLocale = iconLocale; + } + @Override public boolean needsToBeUpdatedOnDevice(OsuIcon previousVersion) { - // TODO Auto-generated method stub - return false; + if (this.equals(previousVersion)) { + return false; + } + return true; + } + + public OsuIcon clone() { + OsuIcon ret = new OsuIcon(); + ret.filePath = getFilePath(); + ret.iconHeight = getIconHeight(); + ret.iconWidth = getIconWidth(); + ret.iconLocale = getIconLocale(); + ret.iconName = getIconName(); + ret.languageCode = getLanguageCode(); + return ret; + } + + + @Override + public int hashCode() { + return Objects.hash(filePath, iconHeight, iconLocale, iconName, iconWidth, languageCode); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof OsuIcon)) { + return false; + } + OsuIcon other = (OsuIcon) obj; + return Objects.equals(filePath, other.filePath) && Objects.equals(iconHeight, other.iconHeight) + && Objects.equals(iconLocale, other.iconLocale) && Objects.equals(iconName, other.iconName) + && Objects.equals(iconWidth, other.iconWidth) && Objects.equals(languageCode, other.languageCode); + } + + public String getHs20IconString() { + + return iconWidth + ICON_STRING_DELIMITER + iconHeight + ICON_STRING_DELIMITER + languageCode + + ICON_STRING_DELIMITER + ICON_TYPE + ICON_STRING_DELIMITER + iconName + ICON_STRING_DELIMITER + + filePath; + } } diff --git a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/ProviderProfile.java b/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/ProviderProfile.java deleted file mode 100644 index 696d2fe3..00000000 --- a/profile-models/src/main/java/com/telecominfraproject/wlan/profile/passpoint/provider/models/ProviderProfile.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.telecominfraproject.wlan.profile.passpoint.provider.models; - -import java.util.List; - -import com.telecominfraproject.wlan.core.model.equipment.PushableConfiguration; -import com.telecominfraproject.wlan.profile.models.ProfileDetails; -import com.telecominfraproject.wlan.profile.models.ProfileType; -import com.telecominfraproject.wlan.profile.passpoint.models.Hotspot20Duple; - - -public class ProviderProfile extends ProfileDetails implements PushableConfiguration { - - - private String domainName; - - byte[] mcc; - byte[] mnc; - - - List mccMncList; - - List naiRealmList; - - List osuIconList; - - String radiusProfileAuth; - String radiusProfileAccounting; - String osuSsid; - String osuServerUri; - String osuFriendlyName; - int osuNaiStandalone; // needs to be unsigned, so do take byte value, and make osuNaiStandalone & 0xff; - int osuNaiShared; - List osuMethodList; - List osuServiceDescription; - - private static final long serialVersionUID = -6146454085334670280L; - - public String getDomainName() { - return domainName; - } - - public void setDomainName(String domainName) { - this.domainName = domainName; - } - - private ProviderProfile() { - } - - public static ProviderProfile createWithDefaults() { - return new ProviderProfile(); - } - - - @Override - public ProfileType getProfileType() { - return ProfileType.id_provider; - } - - @Override - public boolean needsToBeUpdatedOnDevice(ProviderProfile previousVersion) { - if (this.equals(previousVersion)) - return false; - return true; - } - -} diff --git a/profile-models/src/main/resources/MobileCountryAndNetworkCodes.txt b/profile-models/src/main/resources/MobileCountryAndNetworkCodes.txt new file mode 100644 index 00000000..1951be4b --- /dev/null +++ b/profile-models/src/main/resources/MobileCountryAndNetworkCodes.txt @@ -0,0 +1,1690 @@ +289 88 ge Abkhazia 7 A-Mobile +289 68 ge Abkhazia 7 A-Mobile +289 67 ge Abkhazia 7 Aquafon +412 88 af Afghanistan 93 Afghan Telecom Corp. (AT) +412 80 af Afghanistan 93 Afghan Telecom Corp. (AT) +412 01 af Afghanistan 93 Afghan Wireless/AWCC +412 40 af Afghanistan 93 Areeba/MTN +412 30 af Afghanistan 93 Etisalat +412 50 af Afghanistan 93 Etisalat +412 20 af Afghanistan 93 Roshan/TDCA +412 03 af Afghanistan 93 WaselTelecom (WT) +276 01 al Albania 355 AMC/Cosmote +276 03 al Albania 355 Eagle Mobile +276 04 al Albania 355 PLUS Communication Sh.a +276 02 al Albania 355 Vodafone +603 01 dz Algeria 213 ATM Mobils +603 02 dz Algeria 213 Orascom / DJEZZY +603 03 dz Algeria 213 Oreedo/Wataniya / Nedjma +544 11 as American Samoa 684 Blue Sky Communications +213 03 ad Andorra 376 Mobiland +631 04 ao Angola 244 MoviCel +631 02 ao Angola 244 Unitel +365 840 ai Anguilla 1264 Cable and Wireless +365 010 ai Anguilla 1264 Digicell / Wireless Vent. Ltd +344 030 ag Antigua and Barbuda 1268 APUA PCS +344 920 ag Antigua and Barbuda 1268 C & W +344 930 ag Antigua and Barbuda 1268 DigiCel/Cing. Wireless +722 310 ar Argentina Republic 54 Claro/ CTI/AMX +722 330 ar Argentina Republic 54 Claro/ CTI/AMX +722 320 ar Argentina Republic 54 Claro/ CTI/AMX +722 010 ar Argentina Republic 54 Compania De Radiocomunicaciones Moviles SA +722 070 ar Argentina Republic 54 Movistar/Telefonica +722 020 ar Argentina Republic 54 Nextel +722 341 ar Argentina Republic 54 Telecom Personal S.A. +722 340 ar Argentina Republic 54 Telecom Personal S.A. +283 01 am Armenia 374 ArmenTel/Beeline +283 04 am Armenia 374 Karabakh Telecom +283 10 am Armenia 374 Orange +283 05 am Armenia 374 Vivacell +363 02 aw Aruba 297 Digicel +363 20 aw Aruba 297 Digicel +363 01 aw Aruba 297 Setar GSM +505 14 au Australia 61 AAPT Ltd. +505 24 au Australia 61 Advanced Comm Tech Pty. +505 09 au Australia 61 Airnet Commercial Australia Ltd.. +505 04 au Australia 61 Department of Defense +505 26 au Australia 61 Dialogue Communications Pty Ltd +505 12 au Australia 61 H3G Ltd. +505 06 au Australia 61 H3G Ltd. +505 88 au Australia 61 Localstar Holding Pty. Ltd +505 19 au Australia 61 Lycamobile Pty Ltd +505 08 au Australia 61 Railcorp/Vodafone +505 99 au Australia 61 Railcorp/Vodafone +505 13 au Australia 61 Railcorp/Vodafone +505 90 au Australia 61 Singtel Optus +505 02 au Australia 61 Singtel Optus +505 01 au Australia 61 Telstra Corp. Ltd. +505 11 au Australia 61 Telstra Corp. Ltd. +505 71 au Australia 61 Telstra Corp. Ltd. +505 72 au Australia 61 Telstra Corp. Ltd. +505 05 au Australia 61 The Ozitel Network Pty. +505 16 au Australia 61 Victorian Rail Track Corp. (VicTrack) +505 07 au Australia 61 Vodafone +505 03 au Australia 61 Vodafone +232 11 at Austria 43 A1 MobilKom +232 09 at Austria 43 A1 MobilKom +232 02 at Austria 43 A1 MobilKom +232 01 at Austria 43 A1 MobilKom +232 15 at Austria 43 T-Mobile/Telering +232 10 at Austria 43 H3G +232 14 at Austria 43 H3G +232 05 at Austria 43 3/Orange/One Connect +232 12 at Austria 43 3/Orange/One Connect +232 06 at Austria 43 3/Orange/One Connect +232 17 at Austria 43 Spusu/Mass Response +232 07 at Austria 43 T-Mobile/Telering +232 04 at Austria 43 T-Mobile/Telering +232 03 at Austria 43 T-Mobile/Telering +232 19 at Austria 43 Tele2 +232 08 at Austria 43 A1 MobilKom +232 13 at Austria 43 UPC Austria +400 01 az Azerbaijan 994 Azercell Telekom B.M. +400 04 az Azerbaijan 994 Azerfon. +400 03 az Azerbaijan 994 Caspian American Telecommunications LLC (CATEL) +400 02 az Azerbaijan 994 J.V. Bakcell GSM 2000 +364 39 bs Bahamas 1242 Bahamas Telco. Comp. +364 30 bs Bahamas 1242 Bahamas Telco. Comp. +364 390 bs Bahamas 1242 Bahamas Telco. Comp. +364 03 bs Bahamas 1242 Smart Communications +426 01 bh Bahrain 973 Batelco +426 02 bh Bahrain 973 ZAIN/Vodafone +426 04 bh Bahrain 973 VIVA +470 02 bd Bangladesh 880 Robi/Aktel +470 05 bd Bangladesh 880 Citycell +470 06 bd Bangladesh 880 Citycell +470 01 bd Bangladesh 880 GrameenPhone +470 03 bd Bangladesh 880 Orascom/Banglalink +470 04 bd Bangladesh 880 TeleTalk +470 07 bd Bangladesh 880 Airtel/Warid +342 600 bb Barbados 1246 LIME +342 810 bb Barbados 1246 Cingular Wireless +342 750 bb Barbados 1246 Digicel +342 050 bb Barbados 1246 Digicel +342 820 bb Barbados 1246 Sunbeach +257 03 by Belarus 375 BelCel JV +257 04 by Belarus 375 BeST +257 01 by Belarus 375 Mobile Digital Communications +257 02 by Belarus 375 MTS +206 20 be Belgium 32 Base/KPN +206 01 be Belgium 32 Belgacom/Proximus +206 06 be Belgium 32 Lycamobile Belgium +206 10 be Belgium 32 Mobistar/Orange +206 02 be Belgium 32 SNCT/NMBS +206 05 be Belgium 32 Telenet BidCo NV +702 67 bz Belize 501 DigiCell +702 68 bz Belize 501 International Telco (INTELCO) +616 04 bj Benin 229 Bell Benin/BBCOM +616 02 bj Benin 229 Etisalat/MOOV +616 05 bj Benin 229 GloMobile +616 01 bj Benin 229 Libercom +616 03 bj Benin 229 MTN/Spacetel +350 000 bm Bermuda 1441 Bermuda Digital Communications Ltd (BDC) +350 99 bm Bermuda 1441 CellOne Ltd +350 10 bm Bermuda 1441 DigiCel / Cingular +350 02 bm Bermuda 1441 M3 Wireless Ltd +350 01 bm Bermuda 1441 Telecommunications (Bermuda & West Indies) Ltd (Digicel Bermuda) +402 11 bt Bhutan 975 B-Mobile +402 17 bt Bhutan 975 Bhutan Telecom Ltd (BTL) +402 77 bt Bhutan 975 TashiCell +736 02 bo Bolivia 591 Entel Pcs +736 01 bo Bolivia 591 Viva/Nuevatel +736 03 bo Bolivia 591 Tigo +218 90 ba Bosnia & Herzegov. 387 BH Mobile +218 03 ba Bosnia & Herzegov. 387 Eronet Mobile +218 05 ba Bosnia & Herzegov. 387 M-Tel +652 04 bw Botswana 267 BeMOBILE +652 01 bw Botswana 267 Mascom Wireless (Pty) Ltd. +652 02 bw Botswana 267 Orange +724 12 br Brazil 55 Claro/Albra/America Movil +724 38 br Brazil 55 Claro/Albra/America Movil +724 05 br Brazil 55 Claro/Albra/America Movil +724 01 br Brazil 55 Vivo S.A./Telemig +724 33 br Brazil 55 CTBC Celular SA (CTBC) +724 32 br Brazil 55 CTBC Celular SA (CTBC) +724 34 br Brazil 55 CTBC Celular SA (CTBC) +724 08 br Brazil 55 TIM +724 39 br Brazil 55 Nextel (Telet) +724 00 br Brazil 55 Nextel (Telet) +724 24 br Brazil 55 Amazonia Celular S/A +724 16 br Brazil 55 Brazil Telcom +724 30 br Brazil 55 Oi (TNL PCS / Oi) +724 31 br Brazil 55 Oi (TNL PCS / Oi) +724 54 br Brazil 55 PORTO SEGURO TELECOMUNICACOES +724 15 br Brazil 55 Sercontel Cel +724 07 br Brazil 55 CTBC/Triangulo +724 19 br Brazil 55 Vivo S.A./Telemig +724 03 br Brazil 55 TIM +724 02 br Brazil 55 TIM +724 04 br Brazil 55 TIM +724 37 br Brazil 55 Unicel do Brasil Telecomunicacoes Ltda +724 23 br Brazil 55 Vivo S.A./Telemig +724 11 br Brazil 55 Vivo S.A./Telemig +724 10 br Brazil 55 Vivo S.A./Telemig +724 06 br Brazil 55 Vivo S.A./Telemig +348 570 vg British Virgin Islands 284 Caribbean Cellular +348 770 vg British Virgin Islands 284 Digicel +348 170 vg British Virgin Islands 284 LIME +528 02 bn Brunei Darussalam 673 b-mobile +528 11 bn Brunei Darussalam 673 Datastream (DTSCom) +528 01 bn Brunei Darussalam 673 Telekom Brunei Bhd (TelBru) +284 06 bg Bulgaria 359 BTC Mobile EOOD (vivatel) +284 03 bg Bulgaria 359 BTC Mobile EOOD (vivatel) +284 05 bg Bulgaria 359 Telenor/Cosmo/Globul +284 01 bg Bulgaria 359 MobilTel AD +613 03 bf Burkina Faso 226 TeleCel +613 01 bf Burkina Faso 226 TeleMob-OnaTel +613 02 bf Burkina Faso 226 Airtel/ZAIN/CelTel +642 02 bi Burundi 257 Africel / Safaris +642 08 bi Burundi 257 Lumitel/Viettel +642 03 bi Burundi 257 Onatel / Telecel +642 07 bi Burundi 257 Smart Mobile / LACELL +642 82 bi Burundi 257 Spacetel / Econet / Leo +642 01 bi Burundi 257 Spacetel / Econet / Leo +456 04 kh Cambodia 855 Cambodia Advance Communications Co. Ltd (CADCOMMS) +456 02 kh Cambodia 855 Smart Mobile +456 08 kh Cambodia 855 Metfone +456 18 kh Cambodia 855 MFone/Camshin/Cellcard +456 01 kh Cambodia 855 Mobitel/Cam GSM +456 03 kh Cambodia 855 QB/Cambodia Adv. Comms. +456 05 kh Cambodia 855 Smart Mobile +456 06 kh Cambodia 855 Smart Mobile +456 09 kh Cambodia 855 Sotelco/Beeline +624 01 cm Cameroon 237 MTN +624 04 cm Cameroon 237 Nextel +624 02 cm Cameroon 237 Orange +302 652 ca Canada 1 BC Tel Mobility +302 630 ca Canada 1 Bell Aliant +302 610 ca Canada 1 Bell Mobility +302 651 ca Canada 1 Bell Mobility +302 670 ca Canada 1 CityWest Mobility +302 361 ca Canada 1 Clearnet +302 360 ca Canada 1 Clearnet +302 380 ca Canada 1 DMTS Mobility +302 710 ca Canada 1 Globalstar Canada +302 640 ca Canada 1 Latitude Wireless +302 370 ca Canada 1 FIDO (Rogers AT&T/ Microcell) +302 320 ca Canada 1 mobilicity +302 702 ca Canada 1 MT&T Mobility +302 655 ca Canada 1 MTS Mobility +302 660 ca Canada 1 MTS Mobility +302 701 ca Canada 1 NB Tel Mobility +302 703 ca Canada 1 New Tel Mobility +302 760 ca Canada 1 Public Mobile +302 657 ca Canada 1 Quebectel Mobility +302 720 ca Canada 1 Rogers AT&T Wireless +302 780 ca Canada 1 Sask Tel Mobility +302 654 ca Canada 1 Sask Tel Mobility +302 680 ca Canada 1 Sask Tel Mobility +302 656 ca Canada 1 Tbay Mobility +302 653 ca Canada 1 Telus Mobility +302 220 ca Canada 1 Telus Mobility +302 500 ca Canada 1 Videotron +302 490 ca Canada 1 WIND +625 01 cv Cape Verde 238 CV Movel +625 02 cv Cape Verde 238 T+ Telecom +346 050 ky Cayman Islands 1345 Digicel Cayman Ltd +346 006 ky Cayman Islands 1345 Digicel Ltd. +346 140 ky Cayman Islands 1345 LIME / Cable & Wirel. +623 01 cf Central African Rep. 236 Centrafr. Telecom+ +623 04 cf Central African Rep. 236 Nationlink +623 03 cf Central African Rep. 236 Orange/Celca +623 02 cf Central African Rep. 236 Telecel Centraf. +622 04 td Chad 235 Salam/Sotel +622 02 td Chad 235 Tchad Mobile +622 03 td Chad 235 Tigo/Milicom/Tchad Mobile +622 01 td Chad 235 Airtel/ZAIN/Celtel +730 06 cl Chile 56 Blue Two Chile SA +730 11 cl Chile 56 Celupago SA +730 15 cl Chile 56 Cibeles Telecom SA +730 03 cl Chile 56 Claro +730 10 cl Chile 56 Entel Telefonia +730 01 cl Chile 56 Entel Telefonia Mov +730 14 cl Chile 56 Netline Telefonica Movil Ltda +730 05 cl Chile 56 Nextel SA +730 04 cl Chile 56 Nextel SA +730 09 cl Chile 56 Nextel SA +730 19 cl Chile 56 Sociedad Falabella Movil SPA +730 02 cl Chile 56 TELEFONICA +730 07 cl Chile 56 TELEFONICA +730 12 cl Chile 56 Telestar Movil SA +730 00 cl Chile 56 TESAM SA +730 13 cl Chile 56 Tribe Mobile SPA +730 08 cl Chile 56 VTR Banda Ancha SA +460 07 cn China 86 China Mobile GSM +460 00 cn China 86 China Mobile GSM +460 02 cn China 86 China Mobile GSM +460 04 cn China 86 China Space Mobile Satellite Telecommunications Co. Ltd (China Spacecom) +460 05 cn China 86 China Telecom +460 03 cn China 86 China Telecom +460 06 cn China 86 China Unicom +460 01 cn China 86 China Unicom +732 130 co Colombia 57 Avantel SAS +732 102 co Colombia 57 Movistar +732 103 co Colombia 57 TIGO/Colombia Movil +732 001 co Colombia 57 TIGO/Colombia Movil +732 101 co Colombia 57 Comcel S.A. Occel S.A./Celcaribe +732 002 co Colombia 57 Edatel S.A. +732 187 co Colombia 57 eTb +732 123 co Colombia 57 Movistar +732 111 co Colombia 57 TIGO/Colombia Movil +732 142 co Colombia 57 UNE EPM Telecomunicaciones SA ESP +732 020 co Colombia 57 UNE EPM Telecomunicaciones SA ESP +732 154 co Colombia 57 Virgin Mobile Colombia SAS +654 01 km Comoros 269 HURI - SNPT +630 90 cd Congo, Dem. Rep. 243 Africell +630 86 cd Congo, Dem. Rep. 243 Orange RDC sarl +630 05 cd Congo, Dem. Rep. 243 SuperCell +630 89 cd Congo, Dem. Rep. 243 TIGO/Oasis +630 01 cd Congo, Dem. Rep. 243 Vodacom +630 88 cd Congo, Dem. Rep. 243 Yozma Timeturns sprl (YTT) +630 02 cd Congo, Dem. Rep. 243 Airtel/ZAIN +629 01 cg Congo, Republic 242 Airtel SA +629 02 cg Congo, Republic 242 Azur SA (ETC) +629 10 cg Congo, Republic 242 MTN/Libertis +629 07 cg Congo, Republic 242 Warid +548 01 ck Cook Islands 682 Telecom Cook Islands +712 03 cr Costa Rica 506 Claro +712 02 cr Costa Rica 506 ICE +712 01 cr Costa Rica 506 ICE +712 04 cr Costa Rica 506 Movistar +712 20 cr Costa Rica 506 Virtualis +219 01 hr Croatia 385 T-Mobile/Cronet +219 02 hr Croatia 385 Tele2 +219 10 hr Croatia 385 VIPnet d.o.o. +368 01 cu Cuba 53 C-COM +362 95 cw Curacao 599 EOCG Wireless NV +362 69 cw Curacao 599 Polycom N.V./ Digicel +280 10 cy Cyprus 357 MTN/Areeba +280 20 cy Cyprus 357 PrimeTel PLC +280 01 cy Cyprus 357 Vodafone/CyTa +230 08 cz Czech Rep. 420 Compatel s.r.o. +230 02 cz Czech Rep. 420 O2 +230 01 cz Czech Rep. 420 T-Mobile / RadioMobil +230 05 cz Czech Rep. 420 Travel Telekommunikation s.r.o. +230 04 cz Czech Rep. 420 Ufone +230 03 cz Czech Rep. 420 Vodafone +230 99 cz Czech Rep. 420 Vodafone +238 05 dk Denmark 45 ApS KBUS +238 23 dk Denmark 45 Banedanmark +238 28 dk Denmark 45 CoolTEL ApS +238 06 dk Denmark 45 H3G +238 12 dk Denmark 45 Lycamobile Ltd +238 03 dk Denmark 45 Mach Connectivity ApS +238 07 dk Denmark 45 Mundio Mobile +238 04 dk Denmark 45 NextGen Mobile Ltd (CardBoardFish) +238 10 dk Denmark 45 TDC Denmark +238 01 dk Denmark 45 TDC Denmark +238 77 dk Denmark 45 Telenor/Sonofon +238 02 dk Denmark 45 Telenor/Sonofon +238 20 dk Denmark 45 Telia +238 30 dk Denmark 45 Telia +638 01 dj Djibouti 253 Djibouti Telecom SA (Evatis) +366 110 dm Dominica 1767 C & W +366 020 dm Dominica 1767 Cingular Wireless/Digicel +366 050 dm Dominica 1767 Wireless Ventures (Dominica) Ltd (Digicel Dominica) +370 02 do Dominican Republic 1809 Claro +370 01 do Dominican Republic 1809 Orange +370 03 do Dominican Republic 1809 TRIcom +370 04 do Dominican Republic 1809 Trilogy Dominicana S. A. +740 02 ec Ecuador 593 Alegro/Telcsa +740 00 ec Ecuador 593 MOVISTAR/OteCel +740 01 ec Ecuador 593 Claro/Porta +602 01 eg Egypt 20 Orange/Mobinil +602 03 eg Egypt 20 ETISALAT +602 02 eg Egypt 20 Vodafone/Mirsfone +706 01 sv El Salvador 503 CLARO/CTE +706 02 sv El Salvador 503 Digicel +706 05 sv El Salvador 503 INTELFON SA de CV +706 04 sv El Salvador 503 Telefonica +706 03 sv El Salvador 503 Telemovil +627 03 gq Equatorial Guinea 240 HiTs-GE +627 01 gq Equatorial Guinea 240 ORANGE/GETESA +657 01 er Eritrea 291 Eritel +248 01 ee Estonia 372 EMT GSM +248 02 ee Estonia 372 Radiolinja Eesti +248 03 ee Estonia 372 Tele2 Eesti AS +248 04 ee Estonia 372 Top Connect OU +636 01 et Ethiopia 251 ETH/MTN +750 001 fk Falkland Islands (Malvinas) 500 Cable and Wireless South Atlantic Ltd (Falkland Islands +288 03 fo Faroe Islands 298 Edge Mobile Sp/F +288 01 fo Faroe Islands 298 Faroese Telecom +288 02 fo Faroe Islands 298 Kall GSM +542 02 fj Fiji 679 DigiCell +542 01 fj Fiji 679 Vodafone +244 14 fi Finland 358 Alands +244 26 fi Finland 358 Compatel Ltd +244 03 fi Finland 358 DNA/Finnet +244 12 fi Finland 358 DNA/Finnet +244 13 fi Finland 358 DNA/Finnet +244 04 fi Finland 358 DNA/Finnet +244 21 fi Finland 358 Elisa/Saunalahti +244 05 fi Finland 358 Elisa/Saunalahti +244 82 fi Finland 358 ID-Mobile +244 11 fi Finland 358 Mundio Mobile (Finland) Ltd +244 09 fi Finland 358 Nokia Oyj +244 10 fi Finland 358 TDC Oy Finland +244 91 fi Finland 358 TeliaSonera +208 27 fr France 33 AFONE SA +208 92 fr France 33 Association Plate-forme Telecom +208 28 fr France 33 Astrium +208 88 fr France 33 Bouygues Telecom +208 21 fr France 33 Bouygues Telecom +208 20 fr France 33 Bouygues Telecom +208 14 fr France 33 Lliad/FREE Mobile +208 05 fr France 33 GlobalStar +208 07 fr France 33 GlobalStar +208 06 fr France 33 GlobalStar +208 29 fr France 33 Orange +208 17 fr France 33 Legos - Local Exchange Global Operation Services SA +208 16 fr France 33 Lliad/FREE Mobile +208 15 fr France 33 Lliad/FREE Mobile +208 25 fr France 33 Lycamobile SARL +208 24 fr France 33 MobiquiThings +208 03 fr France 33 MobiquiThings +208 31 fr France 33 Mundio Mobile (France) Ltd +208 26 fr France 33 NRJ +208 89 fr France 33 Virgin Mobile/Omer +208 23 fr France 33 Virgin Mobile/Omer +208 91 fr France 33 Orange +208 02 fr France 33 Orange +208 01 fr France 33 Orange +208 09 fr France 33 S.F.R. +208 13 fr France 33 S.F.R. +208 11 fr France 33 S.F.R. +208 10 fr France 33 S.F.R. +208 04 fr France 33 SISTEER +208 00 fr France 33 Tel/Tel +208 22 fr France 33 Transatel SA +340 20 fg French Guiana 594 Bouygues/DigiCel +340 01 fg French Guiana 594 Orange Caribe +340 02 fg French Guiana 594 Outremer Telecom +340 03 fg French Guiana 594 TelCell GSM +340 11 fg French Guiana 594 TelCell GSM +547 15 pf French Polynesia 689 Pacific Mobile Telecom (PMT) +547 20 pf French Polynesia 689 Vini/Tikiphone +628 04 ga Gabon 241 Azur/Usan S.A. +628 01 ga Gabon 241 Libertis S.A. +628 02 ga Gabon 241 MOOV/Telecel +628 03 ga Gabon 241 Airtel/ZAIN/Celtel Gabon S.A. +607 02 gm Gambia 220 Africel +607 03 gm Gambia 220 Comium +607 01 gm Gambia 220 Gamcel +607 04 gm Gambia 220 Q-Cell +282 01 ge Georgia 995 Geocell Ltd. +282 03 ge Georgia 995 Iberiatel Ltd. +282 02 ge Georgia 995 Magti GSM Ltd. +282 04 ge Georgia 995 MobiTel/Beeline +282 05 ge Georgia 995 Silknet +262 17 de Germany 49 E-Plus +262 10 de Germany 49 DB Netz AG +262 n/a de Germany 49 Debitel +262 05 de Germany 49 E-Plus +262 77 de Germany 49 E-Plus +262 03 de Germany 49 E-Plus +262 20 de Germany 49 E-Plus +262 12 de Germany 49 E-Plus +262 14 de Germany 49 Group 3G UMTS +262 43 de Germany 49 Lycamobile +262 13 de Germany 49 Mobilcom +262 11 de Germany 49 O2 +262 07 de Germany 49 O2 +262 08 de Germany 49 O2 +262 n/a de Germany 49 Talkline +262 06 de Germany 49 T-mobile/Telekom +262 01 de Germany 49 T-mobile/Telekom +262 16 de Germany 49 Telogic/ViStream +262 09 de Germany 49 Vodafone D2 +262 04 de Germany 49 Vodafone D2 +262 02 de Germany 49 Vodafone D2 +262 42 de Germany 49 Vodafone D2 +620 04 gh Ghana 233 Expresso Ghana Ltd +620 07 gh Ghana 233 GloMobile +620 03 gh Ghana 233 Milicom/Tigo +620 01 gh Ghana 233 MTN +620 02 gh Ghana 233 Vodafone +620 06 gh Ghana 233 Airtel/ZAIN +266 06 gi Gibraltar 350 CTS Mobile +266 09 gi Gibraltar 350 eazi telecom +266 01 gi Gibraltar 350 Gibtel GSM +202 07 gr Greece 30 AMD Telecom SA +202 02 gr Greece 30 Cosmote +202 01 gr Greece 30 Cosmote +202 14 gr Greece 30 CyTa Mobile +202 04 gr Greece 30 Organismos Sidirodromon Ellados (OSE) +202 03 gr Greece 30 OTE Hellenic Telecommunications Organization SA +202 10 gr Greece 30 Tim/Wind +202 09 gr Greece 30 Tim/Wind +202 05 gr Greece 30 Vodafone +290 01 gl Greenland 299 Tele Greenland +352 110 gd Grenada 1473 Cable & Wireless +352 030 gd Grenada 1473 Digicel +352 050 gd Grenada 1473 Digicel +340 08 gp Guadeloupe 590 Dauphin Telecom SU (Guadeloupe Telecom) +340 10 gp Guadeloupe 590 +310 470 gu Guam 1671 Docomo +310 370 gu Guam 1671 Docomo +310 140 gu Guam 1671 GTA Wireless +310 033 gu Guam 1671 Guam Teleph. Auth. +310 032 gu Guam 1671 IT&E OverSeas +311 250 gu Guam 1671 Wave Runner LLC +704 01 gt Guatemala 502 Claro +704 03 gt Guatemala 502 Telefonica +704 02 gt Guatemala 502 TIGO/COMCEL +611 04 gn Guinea 224 MTN/Areeba +611 05 gn Guinea 224 Celcom +611 03 gn Guinea 224 Intercel +611 01 gn Guinea 224 Orange/Sonatel/Spacetel +611 02 gn Guinea 224 SotelGui +632 01 gw Guinea-Bissau 245 GuineTel +632 03 gw Guinea-Bissau 245 Orange +632 02 gw Guinea-Bissau 245 SpaceTel +738 02 gy Guyana 592 Cellink Plus +738 01 gy Guyana 592 DigiCel +372 01 ht Haiti 509 Comcel +372 02 ht Haiti 509 Digicel +372 03 ht Haiti 509 National Telecom SA (NatCom) +708 040 hn Honduras 504 Digicel +708 030 hn Honduras 504 HonduTel +708 001 hn Honduras 504 SERCOM/CLARO +708 002 hn Honduras 504 Telefonica/CELTEL +454 13 hk Hongkong, China 852 China Mobile/Peoples +454 12 hk Hongkong, China 852 China Mobile/Peoples +454 28 hk Hongkong, China 852 China Mobile/Peoples +454 09 hk Hongkong, China 852 China Motion +454 07 hk Hongkong, China 852 China Unicom Ltd +454 11 hk Hongkong, China 852 China-HongKong Telecom Ltd (CHKTL) +454 01 hk Hongkong, China 852 Citic Telecom Ltd. +454 02 hk Hongkong, China 852 CSL Ltd. +454 00 hk Hongkong, China 852 CSL Ltd. +454 18 hk Hongkong, China 852 CSL Ltd. +454 10 hk Hongkong, China 852 CSL/New World PCS Ltd. +454 05 hk Hongkong, China 852 H3G/Hutchinson +454 04 hk Hongkong, China 852 H3G/Hutchinson +454 03 hk Hongkong, China 852 H3G/Hutchinson +454 14 hk Hongkong, China 852 H3G/Hutchinson +454 20 hk Hongkong, China 852 HKT/PCCW +454 29 hk Hongkong, China 852 HKT/PCCW +454 16 hk Hongkong, China 852 HKT/PCCW +454 19 hk Hongkong, China 852 HKT/PCCW +454 47 hk Hongkong, China 852 shared by private TETRA systems +454 40 hk Hongkong, China 852 shared by private TETRA systems +454 08 hk Hongkong, China 852 Truephone +454 17 hk Hongkong, China 852 Vodafone/SmarTone +454 15 hk Hongkong, China 852 Vodafone/SmarTone +454 06 hk Hongkong, China 852 Vodafone/SmarTone +216 01 hu Hungary 36 Pannon/Telenor +216 30 hu Hungary 36 T-mobile/Magyar +216 71 hu Hungary 36 UPC Magyarorszag Kft. +216 70 hu Hungary 36 Vodafone +274 09 is Iceland 354 Amitelo +274 07 is Iceland 354 IceCell +274 08 is Iceland 354 Siminn +274 01 is Iceland 354 Siminn +274 11 is Iceland 354 NOVA +274 04 is Iceland 354 VIKING/IMC +274 02 is Iceland 354 Vodafone/Tal hf +274 05 is Iceland 354 Vodafone/Tal hf +274 03 is Iceland 354 Vodafone/Tal hf +404 25 in India 91 Aircel +404 17 in India 91 Aircel +404 42 in India 91 Aircel +404 33 in India 91 Aircel +404 29 in India 91 Aircel +404 28 in India 91 Aircel +404 60 in India 91 Aircel Digilink India +404 01 in India 91 Aircel Digilink India +404 15 in India 91 Aircel Digilink India +405 53 in India 91 AirTel +404 86 in India 91 Barakhamba Sales & Serv. +404 13 in India 91 Barakhamba Sales & Serv. +404 59 in India 91 BSNL +404 75 in India 91 BSNL +404 51 in India 91 BSNL +404 81 in India 91 BSNL +404 58 in India 91 BSNL +404 74 in India 91 BSNL +404 38 in India 91 BSNL +404 80 in India 91 BSNL +404 57 in India 91 BSNL +404 73 in India 91 BSNL +404 34 in India 91 BSNL +404 55 in India 91 BSNL +404 66 in India 91 BSNL +404 72 in India 91 BSNL +404 77 in India 91 BSNL +404 54 in India 91 BSNL +404 64 in India 91 BSNL +404 71 in India 91 BSNL +404 76 in India 91 BSNL +404 53 in India 91 BSNL +404 62 in India 91 BSNL +404 10 in India 91 Bharti Airtel Limited (Delhi) +404 045 in India 91 Bharti Airtel Limited (Karnataka) (India) +404 79 in India 91 CellOne A&N +404 82 in India 91 Escorts Telecom Ltd. +404 89 in India 91 Escorts Telecom Ltd. +404 88 in India 91 Escorts Telecom Ltd. +404 87 in India 91 Escorts Telecom Ltd. +404 12 in India 91 Escotel Mobile Communications +404 19 in India 91 Escotel Mobile Communications +404 56 in India 91 Escotel Mobile Communications +405 05 in India 91 Fascel Limited +404 05 in India 91 Fascel +404 70 in India 91 Hexacom India +404 16 in India 91 Hexcom India +404 07 in India 91 Idea Cellular Ltd. +404 04 in India 91 Idea Cellular Ltd. +404 24 in India 91 Idea Cellular Ltd. +404 22 in India 91 Idea Cellular Ltd. +404 78 in India 91 Idea Cellular Ltd. +404 69 in India 91 Mahanagar Telephone Nigam +404 68 in India 91 Mahanagar Telephone Nigam +404 83 in India 91 Reliable Internet Services +404 18 in India 91 Reliance Telecom Private +404 85 in India 91 Reliance Telecom Private +404 09 in India 91 Reliance Telecom Private +404 36 in India 91 Reliance Telecom Private +404 52 in India 91 Reliance Telecom Private +404 50 in India 91 Reliance Telecom Private +404 67 in India 91 Reliance Telecom Private +404 41 in India 91 RPG Cellular +404 14 in India 91 Spice +404 44 in India 91 Spice +404 11 in India 91 Sterling Cellular Ltd. +405 034 in India 91 TATA / Karnataka +404 30 in India 91 Usha Martin Telecom +510 08 id Indonesia 62 Axis/Natrindo +510 99 id Indonesia 62 Esia (PT Bakrie Telecom) (CDMA) +510 07 id Indonesia 62 Flexi (PT Telkom) (CDMA) +510 89 id Indonesia 62 H3G CP +510 21 id Indonesia 62 Indosat/Satelindo/M3 +510 01 id Indonesia 62 Indosat/Satelindo/M3 +510 00 id Indonesia 62 PT Pasifik Satelit Nusantara (PSN) +510 27 id Indonesia 62 PT Sampoerna Telekomunikasi Indonesia (STI) +510 28 id Indonesia 62 PT Smartfren Telecom Tbk +510 09 id Indonesia 62 PT Smartfren Telecom Tbk +510 11 id Indonesia 62 PT. Excelcom +510 10 id Indonesia 62 Telkomsel +901 13 n/a International Networks 882 Antarctica +432 19 ir Iran 98 Mobile Telecommunications Company of Esfahan JV-PJS (MTCE) +432 70 ir Iran 98 MTCE +432 35 ir Iran 98 MTN/IranCell +432 20 ir Iran 98 Rightel +432 32 ir Iran 98 Taliya +432 11 ir Iran 98 MCI/TCI +432 14 ir Iran 98 TKC/KFZO +418 05 iq Iraq 964 Asia Cell +418 92 iq Iraq 964 Itisaluna and Kalemat +418 40 iq Iraq 964 Korek +418 82 iq Iraq 964 Korek +418 45 iq Iraq 964 Mobitel (Iraq-Kurdistan) and Moutiny +418 30 iq Iraq 964 Orascom Telecom +418 20 iq Iraq 964 ZAIN/Atheer/Orascom +418 08 iq Iraq 964 Sanatel +272 04 ie Ireland 353 Access Telecom Ltd. +272 09 ie Ireland 353 Clever Communications Ltd +272 07 ie Ireland 353 eircom Ltd +272 05 ie Ireland 353 Three/H3G +272 11 ie Ireland 353 Tesco Mobile/Liffey Telecom +272 13 ie Ireland 353 Lycamobile +272 03 ie Ireland 353 Meteor Mobile Ltd. +272 02 ie Ireland 353 Three/O2/Digifone +272 01 ie Ireland 353 Vodafone Eircell +425 14 il Israel 972 Alon Cellular Ltd +425 02 il Israel 972 Cellcom ltd. +425 08 il Israel 972 Golan Telekom +425 15 il Israel 972 Home Cellular Ltd +425 07 il Israel 972 Hot Mobile/Mirs +425 77 il Israel 972 Hot Mobile/Mirs +425 01 il Israel 972 Orange/Partner Co. Ltd. +425 12 il Israel 972 Pelephone +425 03 il Israel 972 Pelephone +425 16 il Israel 972 Rami Levy Hashikma Marketing Communications Ltd +425 19 il Israel 972 Telzar/AZI +222 34 it Italy 39 BT Italia SpA +222 02 it Italy 39 Elsacom +222 08 it Italy 39 Fastweb SpA +222 00 it Italy 39 Fix Line +222 99 it Italy 39 Hi3G +222 77 it Italy 39 IPSE 2000 +222 35 it Italy 39 Lycamobile Srl +222 07 it Italy 39 Noverca Italia Srl +222 33 it Italy 39 PosteMobile SpA +222 00 it Italy 39 Premium Number(s) +222 30 it Italy 39 RFI Rete Ferroviaria Italiana SpA +222 48 it Italy 39 Telecom Italia Mobile SpA +222 43 it Italy 39 Telecom Italia Mobile SpA +222 01 it Italy 39 TIM +222 10 it Italy 39 Vodafone +222 06 it Italy 39 Vodafone +222 00 it Italy 39 VOIP Line +222 44 it Italy 39 WIND (Blu) - +222 88 it Italy 39 WIND (Blu) - +612 07 ci Ivory Coast 225 Aircomm SA +612 02 ci Ivory Coast 225 Atlantik Tel./Moov +612 04 ci Ivory Coast 225 Comium +612 01 ci Ivory Coast 225 Comstar +612 05 ci Ivory Coast 225 MTN +612 03 ci Ivory Coast 225 Orange +612 06 ci Ivory Coast 225 OriCell +338 020 jm Jamaica 1876 Cable & Wireless +338 110 jm Jamaica 1876 Cable & Wireless +338 180 jm Jamaica 1876 Cable & Wireless +338 050 jm Jamaica 1876 DIGICEL/Mossel +440 00 jp Japan 81 Y-Mobile +440 74 jp Japan 81 KDDI Corporation +440 70 jp Japan 81 KDDI Corporation +440 89 jp Japan 81 KDDI Corporation +440 51 jp Japan 81 KDDI Corporation +440 75 jp Japan 81 KDDI Corporation +440 56 jp Japan 81 KDDI Corporation +441 70 jp Japan 81 KDDI Corporation +440 52 jp Japan 81 KDDI Corporation +440 76 jp Japan 81 KDDI Corporation +440 71 jp Japan 81 KDDI Corporation +440 53 jp Japan 81 KDDI Corporation +440 77 jp Japan 81 KDDI Corporation +440 08 jp Japan 81 KDDI Corporation +440 72 jp Japan 81 KDDI Corporation +440 54 jp Japan 81 KDDI Corporation +440 79 jp Japan 81 KDDI Corporation +440 07 jp Japan 81 KDDI Corporation +440 73 jp Japan 81 KDDI Corporation +440 55 jp Japan 81 KDDI Corporation +440 88 jp Japan 81 KDDI Corporation +440 50 jp Japan 81 KDDI Corporation +440 18 jp Japan 81 NTT Docomo +441 91 jp Japan 81 NTT Docomo +440 32 jp Japan 81 NTT Docomo +440 61 jp Japan 81 NTT Docomo +440 35 jp Japan 81 NTT Docomo +441 93 jp Japan 81 NTT Docomo +441 40 jp Japan 81 NTT Docomo +440 66 jp Japan 81 NTT Docomo +440 49 jp Japan 81 NTT Docomo +440 29 jp Japan 81 NTT Docomo +440 09 jp Japan 81 NTT Docomo +441 90 jp Japan 81 NTT Docomo +440 01 jp Japan 81 NTT Docomo +440 33 jp Japan 81 NTT Docomo +440 60 jp Japan 81 NTT Docomo +440 19 jp Japan 81 NTT Docomo +440 14 jp Japan 81 NTT Docomo +441 94 jp Japan 81 NTT Docomo +441 41 jp Japan 81 NTT Docomo +440 67 jp Japan 81 NTT Docomo +440 39 jp Japan 81 NTT Docomo +440 30 jp Japan 81 NTT Docomo +440 10 jp Japan 81 NTT Docomo +440 62 jp Japan 81 NTT Docomo +441 45 jp Japan 81 NTT Docomo +440 24 jp Japan 81 NTT Docomo +440 15 jp Japan 81 NTT Docomo +441 98 jp Japan 81 NTT Docomo +441 42 jp Japan 81 NTT Docomo +440 68 jp Japan 81 NTT Docomo +440 38 jp Japan 81 NTT Docomo +440 26 jp Japan 81 NTT Docomo +440 11 jp Japan 81 NTT Docomo +440 63 jp Japan 81 NTT Docomo +441 44 jp Japan 81 NTT Docomo +440 13 jp Japan 81 NTT Docomo +440 23 jp Japan 81 NTT Docomo +440 21 jp Japan 81 NTT Docomo +440 16 jp Japan 81 NTT Docomo +441 99 jp Japan 81 NTT Docomo +440 34 jp Japan 81 NTT Docomo +440 69 jp Japan 81 NTT Docomo +440 37 jp Japan 81 NTT Docomo +440 25 jp Japan 81 NTT Docomo +440 64 jp Japan 81 NTT Docomo +441 43 jp Japan 81 NTT Docomo +440 27 jp Japan 81 NTT Docomo +440 02 jp Japan 81 NTT Docomo +440 22 jp Japan 81 NTT Docomo +440 17 jp Japan 81 NTT Docomo +440 31 jp Japan 81 NTT Docomo +440 87 jp Japan 81 NTT Docomo +440 36 jp Japan 81 NTT Docomo +441 92 jp Japan 81 NTT Docomo +440 65 jp Japan 81 NTT Docomo +440 58 jp Japan 81 NTT Docomo +440 28 jp Japan 81 NTT Docomo +440 03 jp Japan 81 NTT Docomo +440 12 jp Japan 81 NTT Docomo +440 99 jp Japan 81 NTT Docomo +440 78 jp Japan 81 Okinawa Cellular Telephone +440 93 jp Japan 81 SoftBank Mobile Corp +440 43 jp Japan 81 SoftBank Mobile Corp +440 48 jp Japan 81 SoftBank Mobile Corp +441 61 jp Japan 81 SoftBank Mobile Corp +440 06 jp Japan 81 SoftBank Mobile Corp +440 94 jp Japan 81 SoftBank Mobile Corp +440 44 jp Japan 81 SoftBank Mobile Corp +440 04 jp Japan 81 SoftBank Mobile Corp +441 62 jp Japan 81 SoftBank Mobile Corp +440 96 jp Japan 81 SoftBank Mobile Corp +440 45 jp Japan 81 SoftBank Mobile Corp +440 20 jp Japan 81 SoftBank Mobile Corp +440 40 jp Japan 81 SoftBank Mobile Corp +441 63 jp Japan 81 SoftBank Mobile Corp +440 95 jp Japan 81 SoftBank Mobile Corp +440 47 jp Japan 81 SoftBank Mobile Corp +440 41 jp Japan 81 SoftBank Mobile Corp +441 64 jp Japan 81 SoftBank Mobile Corp +440 97 jp Japan 81 SoftBank Mobile Corp +440 46 jp Japan 81 SoftBank Mobile Corp +440 42 jp Japan 81 SoftBank Mobile Corp +441 65 jp Japan 81 SoftBank Mobile Corp +440 90 jp Japan 81 SoftBank Mobile Corp +440 98 jp Japan 81 SoftBank Mobile Corp +440 92 jp Japan 81 SoftBank Mobile Corp +440 85 jp Japan 81 KDDI Corporation +440 83 jp Japan 81 KDDI Corporation +440 80 jp Japan 81 KDDI Corporation +440 86 jp Japan 81 KDDI Corporation +440 81 jp Japan 81 KDDI Corporation +440 84 jp Japan 81 KDDI Corporation +440 82 jp Japan 81 KDDI Corporation +416 77 jo Jordan 962 Orange/Petra +416 03 jo Jordan 962 Umniah Mobile Co. +416 02 jo Jordan 962 Xpress +416 01 jo Jordan 962 ZAIN /J.M.T.S +401 01 kz Kazakhstan 7 Beeline/KaR-Tel LLP +401 07 kz Kazakhstan 7 Dalacom/Altel +401 02 kz Kazakhstan 7 K-Cell +401 77 kz Kazakhstan 7 Tele2/NEO/MTS +639 05 ke Kenya 254 Econet Wireless +639 07 ke Kenya 254 Orange +639 02 ke Kenya 254 Safaricom Ltd. +639 03 ke Kenya 254 Airtel/Zain/Celtel Ltd. +545 09 ki Kiribati 686 Kiribati Frigate +467 193 kp Korea N., Dem. People's Rep. 850 Sun Net +450 02 kr Korea S, Republic of 82 KT Freetel Co. Ltd. +450 04 kr Korea S, Republic of 82 KT Freetel Co. Ltd. +450 08 kr Korea S, Republic of 82 KT Freetel Co. Ltd. +450 06 kr Korea S, Republic of 82 LG Telecom +450 03 kr Korea S, Republic of 82 SK Telecom +450 05 kr Korea S, Republic of 82 SK Telecom Co. Ltd +419 04 kw Kuwait 965 Viva +419 03 kw Kuwait 965 Wataniya +419 02 kw Kuwait 965 Zain +437 03 kg Kyrgyzstan 996 AkTel LLC +437 01 kg Kyrgyzstan 996 Beeline/Bitel +437 05 kg Kyrgyzstan 996 MEGACOM +437 09 kg Kyrgyzstan 996 O!/NUR Telecom +457 02 la Laos P.D.R. 856 ETL Mobile +457 01 la Laos P.D.R. 856 Lao Tel +457 08 la Laos P.D.R. 856 Beeline/Tigo/Millicom +457 03 la Laos P.D.R. 856 UNITEL/LAT +247 05 lv Latvia 371 Bite +247 01 lv Latvia 371 Latvian Mobile Phone +247 09 lv Latvia 371 SIA Camel Mobile +247 08 lv Latvia 371 SIA IZZI +247 07 lv Latvia 371 SIA Master Telecom +247 06 lv Latvia 371 SIA Rigatta +247 02 lv Latvia 371 Tele2 +247 03 lv Latvia 371 TRIATEL/Telekom Baltija +415 35 lb Lebanon 961 Cellis +415 33 lb Lebanon 961 Cellis +415 32 lb Lebanon 961 Cellis +415 34 lb Lebanon 961 FTML Cellis +415 39 lb Lebanon 961 MIC2/LibanCell/MTC +415 38 lb Lebanon 961 MIC2/LibanCell/MTC +415 37 lb Lebanon 961 MIC2/LibanCell/MTC +415 01 lb Lebanon 961 MIC1 (Alfa) +415 03 lb Lebanon 961 MIC2/LibanCell/MTC +415 36 lb Lebanon 961 MIC2/LibanCell/MTC +651 02 ls Lesotho 266 Econet/Ezi-cel +651 01 ls Lesotho 266 Vodacom Lesotho +618 07 lr Liberia 231 CELLCOM +618 04 lr Liberia 231 Comium BVI +618 02 lr Liberia 231 Libercell +618 20 lr Liberia 231 LibTelco +618 01 lr Liberia 231 Lonestar +606 02 ly Libya 218 Al-Madar +606 01 ly Libya 218 Al-Madar +606 06 ly Libya 218 Hatef +606 00 ly Libya 218 Libyana +606 03 ly Libya 218 Libyana +295 06 li Liechtenstein 423 CUBIC (Liechtenstein +295 07 li Liechtenstein 423 First Mobile AG +295 02 li Liechtenstein 423 Orange +295 01 li Liechtenstein 423 Swisscom FL AG +295 77 li Liechtenstein 423 Alpmobile/Tele2 +295 05 li Liechtenstein 423 Telecom FL1 AG +246 02 lt Lithuania 370 Bite +246 01 lt Lithuania 370 Omnitel +246 03 lt Lithuania 370 Tele2 +270 77 lu Luxembourg 352 Millicom Tango GSM +270 01 lu Luxembourg 352 P+T/Post LUXGSM +270 99 lu Luxembourg 352 Orange/VOXmobile S.A. +455 04 mo Macao, China 853 C.T.M. TELEMOVEL+ +455 01 mo Macao, China 853 C.T.M. TELEMOVEL+ +455 02 mo Macao, China 853 China Telecom +455 05 mo Macao, China 853 Hutchison Telephone Co. Ltd +455 03 mo Macao, China 853 Hutchison Telephone Co. Ltd +455 06 mo Macao, China 853 Smartone Mobile +455 00 mo Macao, China 853 Smartone Mobile +294 75 mk Macedonia 389 ONE/Cosmofone +294 02 mk Macedonia 389 ONE/Cosmofone +294 01 mk Macedonia 389 T-Mobile/Mobimak +294 03 mk Macedonia 389 VIP Mobile +646 01 mg Madagascar 261 Airtel/MADACOM +646 02 mg Madagascar 261 Orange/Soci +646 03 mg Madagascar 261 Sacel +646 04 mg Madagascar 261 Telma +650 01 mw Malawi 265 TNM/Telekom Network Ltd. +650 10 mw Malawi 265 Airtel/Zain/Celtel ltd. +502 01 my Malaysia 60 Art900 +502 151 my Malaysia 60 Baraka Telecom Sdn Bhd +502 19 my Malaysia 60 CelCom +502 13 my Malaysia 60 CelCom +502 198 my Malaysia 60 CelCom +502 10 my Malaysia 60 Digi Telecommunications +502 16 my Malaysia 60 Digi Telecommunications +502 20 my Malaysia 60 Electcoms Wireless Sdn Bhd +502 12 my Malaysia 60 Maxis +502 17 my Malaysia 60 Maxis +502 11 my Malaysia 60 MTX Utara +502 153 my Malaysia 60 Webe/Packet One Networks (Malaysia) Sdn Bhd +502 155 my Malaysia 60 Samata Communications Sdn Bhd +502 154 my Malaysia 60 Tron/Talk Focus Sdn Bhd +502 18 my Malaysia 60 U Mobile +502 195 my Malaysia 60 XOX Com Sdn Bhd +502 152 my Malaysia 60 YES +472 01 mv Maldives 960 Dhiraagu/C&W +472 02 mv Maldives 960 Ooredo/Wataniya +610 01 ml Mali 223 Malitel +610 02 ml Mali 223 Orange/IKATEL +278 21 mt Malta 356 GO Mobile +278 77 mt Malta 356 Melita +278 01 mt Malta 356 Vodafone +340 12 mq Martinique (French Department of) 596 UTS Caraibe +609 02 mr Mauritania 222 Chinguitel SA +609 01 mr Mauritania 222 Mattel +609 10 mr Mauritania 222 Mauritel +617 10 mu Mauritius 230 Emtel Ltd +617 03 mu Mauritius 230 Mahanagar Telephone +617 02 mu Mauritius 230 Mahanagar Telephone +617 01 mu Mauritius 230 Orange/Cellplus +334 04 mx Mexico 52 AT&T/IUSACell +334 50 mx Mexico 52 AT&T/IUSACell +334 050 mx Mexico 52 AT&T/IUSACell +334 040 mx Mexico 52 AT&T/IUSACell +334 030 mx Mexico 52 Movistar/Pegaso +334 03 mx Mexico 52 Movistar/Pegaso +334 010 mx Mexico 52 NEXTEL +334 09 mx Mexico 52 NEXTEL +334 01 mx Mexico 52 NEXTEL +334 090 mx Mexico 52 NEXTEL +334 080 mx Mexico 52 Operadora Unefon SA de CV +334 070 mx Mexico 52 Operadora Unefon SA de CV +334 060 mx Mexico 52 SAI PCS +334 020 mx Mexico 52 TelCel/America Movil +334 02 mx Mexico 52 TelCel/America Movil +550 01 fm Micronesia 691 FSM Telecom +259 04 md Moldova 373 Eventis Mobile +259 05 md Moldova 373 IDC/Unite +259 99 md Moldova 373 IDC/Unite +259 03 md Moldova 373 IDC/Unite +259 02 md Moldova 373 Moldcell +259 01 md Moldova 373 Orange/Voxtel +212 10 mc Monaco 377 Monaco Telecom +212 01 mc Monaco 377 Monaco Telecom +428 98 mn Mongolia 976 G-Mobile Corporation Ltd +428 99 mn Mongolia 976 Mobicom +428 00 mn Mongolia 976 Skytel Co. Ltd +428 91 mn Mongolia 976 Skytel Co. Ltd +428 88 mn Mongolia 976 Unitel +297 02 me Montenegro 382 Monet/T-mobile +297 03 me Montenegro 382 Mtel +297 01 me Montenegro 382 Telenor/Promonte GSM +354 860 ms Montserrat 1664 Cable & Wireless +604 01 ma Morocco 212 IAM/Itissallat +604 02 ma Morocco 212 INWI/WANA +604 00 ma Morocco 212 Medi Telecom +643 01 mz Mozambique 258 mCel +643 03 mz Mozambique 258 Movitel +643 04 mz Mozambique 258 Vodacom +414 01 mm Myanmar (Burma) 95 Myanmar Post & Teleco. +414 05 mm Myanmar (Burma) 95 Oreedoo +414 06 mm Myanmar (Burma) 95 Telenor +649 03 na Namibia 264 Leo / Orascom +649 01 na Namibia 264 MTC +649 02 na Namibia 264 Switch/Nam. Telec. +429 02 np Nepal 977 Ncell +429 01 np Nepal 977 NT Mobile / Namaste +429 04 np Nepal 977 Smart Cell +204 14 nl Netherlands 31 6GMOBILE BV +204 23 nl Netherlands 31 Aspider Solutions +204 05 nl Netherlands 31 Elephant Talk Communications Premium Rate Services Netherlands BV +204 17 nl Netherlands 31 Intercity Mobile Communications BV +204 10 nl Netherlands 31 KPN Telecom B.V. +204 08 nl Netherlands 31 KPN Telecom B.V. +204 69 nl Netherlands 31 KPN Telecom B.V. +204 12 nl Netherlands 31 KPN/Telfort +204 28 nl Netherlands 31 Lancelot BV +204 09 nl Netherlands 31 Lycamobile Ltd +204 06 nl Netherlands 31 Mundio/Vectone Mobile +204 21 nl Netherlands 31 NS Railinfrabeheer B.V. +204 24 nl Netherlands 31 Private Mobility Nederland BV +204 98 nl Netherlands 31 T-Mobile B.V. +204 16 nl Netherlands 31 T-Mobile B.V. +204 20 nl Netherlands 31 T-mobile/former Orange +204 02 nl Netherlands 31 Tele2 +204 07 nl Netherlands 31 Teleena Holding BV +204 68 nl Netherlands 31 Unify Mobile +204 18 nl Netherlands 31 UPC Nederland BV +204 04 nl Netherlands 31 Vodafone Libertel +204 03 nl Netherlands 31 Voiceworks Mobile BV +204 15 nl Netherlands 31 Ziggo BV +362 630 an Netherlands Antilles 599 Cingular Wireless +362 51 an Netherlands Antilles 599 TELCELL GSM +362 91 an Netherlands Antilles 599 SETEL GSM +362 951 an Netherlands Antilles 599 UTS Wireless +546 01 nc New Caledonia 687 OPT Mobilis +530 28 nz New Zealand 64 2degrees +530 05 nz New Zealand 64 Spark/NZ Telecom +530 02 nz New Zealand 64 Spark/NZ Telecom +530 04 nz New Zealand 64 Telstra +530 24 nz New Zealand 64 Two Degrees Mobile Ltd +530 01 nz New Zealand 64 Vodafone +530 03 nz New Zealand 64 Walker Wireless Ltd. +710 21 ni Nicaragua 505 Empresa Nicaraguense de Telecomunicaciones SA (ENITEL) +710 30 ni Nicaragua 505 Movistar +710 73 ni Nicaragua 505 Claro +614 03 ne Niger 227 MOOV/TeleCel +614 04 ne Niger 227 Orange/Sahelc. +614 01 ne Niger 227 Orange/Sahelc. +614 02 ne Niger 227 Airtel/Zain/CelTel +621 20 ng Nigeria 234 Airtel/ZAIN/Econet +621 60 ng Nigeria 234 ETISALAT +621 50 ng Nigeria 234 Glo Mobile +621 40 ng Nigeria 234 M-Tel/Nigeria Telecom. Ltd. +621 30 ng Nigeria 234 MTN +621 99 ng Nigeria 234 Starcomms +621 01 ng Nigeria 234 Visafone +621 25 ng Nigeria 234 Visafone +555 01 nu Niue 683 Niue Telecom +242 09 no Norway 47 Com4 AS +242 14 no Norway 47 ICE Nordisk Mobiltelefon AS +242 21 no Norway 47 Jernbaneverket (GSM-R) +242 20 no Norway 47 Jernbaneverket (GSM-R) +242 23 no Norway 47 Lycamobile Ltd +242 02 no Norway 47 Netcom +242 05 no Norway 47 Network Norway AS +242 22 no Norway 47 Network Norway AS +242 06 no Norway 47 ICE Nordisk Mobiltelefon AS +242 08 no Norway 47 TDC Mobil A/S +242 04 no Norway 47 Tele2 +242 12 no Norway 47 Telenor +242 01 no Norway 47 Telenor +242 03 no Norway 47 Teletopia +242 017 no Norway 47 Ventelo AS +242 07 no Norway 47 Ventelo AS +422 03 om Oman 968 Nawras +422 02 om Oman 968 Oman Mobile/GTO +410 08 pk Pakistan 92 Instaphone +410 01 pk Pakistan 92 Mobilink +410 06 pk Pakistan 92 Telenor +410 03 pk Pakistan 92 UFONE/PAKTel +410 07 pk Pakistan 92 Warid Telecom +410 04 pk Pakistan 92 ZONG/CMPak +552 80 pw Palau (Republic of) 680 Palau Mobile Corp. (PMC) (Palau +552 01 pw Palau (Republic of) 680 Palau National Communications Corp. (PNCC) (Palau +425 05 ps Palestinian Territory 970 Jawwal +425 06 ps Palestinian Territory 970 Wataniya Mobile +714 01 pa Panama 507 Cable & W./Mas Movil +714 03 pa Panama 507 Claro +714 04 pa Panama 507 Digicel +714 020 pa Panama 507 Movistar +714 02 pa Panama 507 Movistar +537 03 pg Papua New Guinea 675 Digicel +537 02 pg Papua New Guinea 675 GreenCom PNG Ltd +537 01 pg Papua New Guinea 675 Pacific Mobile +744 02 py Paraguay 595 Claro/Hutchison +744 03 py Paraguay 595 Compa +744 01 py Paraguay 595 Hola/VOX +744 05 py Paraguay 595 TIM/Nucleo/Personal +744 04 py Paraguay 595 Tigo/Telecel +716 20 pe Peru 51 Claro /Amer.Mov./TIM +716 10 pe Peru 51 Claro /Amer.Mov./TIM +716 02 pe Peru 51 GlobalStar +716 01 pe Peru 51 GlobalStar +716 06 pe Peru 51 Movistar +716 17 pe Peru 51 Nextel +716 07 pe Peru 51 Nextel +716 15 pe Peru 51 Viettel Mobile +515 00 ph Philippines 63 Fix Line +515 01 ph Philippines 63 Globe Telecom +515 02 ph Philippines 63 Globe Telecom +515 88 ph Philippines 63 Next Mobile +515 18 ph Philippines 63 RED Mobile/Cure +515 03 ph Philippines 63 Smart +515 05 ph Philippines 63 SUN/Digitel +260 17 pl Poland 48 Aero2 SP. +260 18 pl Poland 48 AMD Telecom. +260 38 pl Poland 48 CallFreedom Sp. z o.o. +260 12 pl Poland 48 Cyfrowy POLSAT S.A. +260 08 pl Poland 48 e-Telko +260 09 pl Poland 48 Lycamobile +260 16 pl Poland 48 Mobyland +260 36 pl Poland 48 Mundio Mobile Sp. z o.o. +260 07 pl Poland 48 Play/P4 +260 11 pl Poland 48 NORDISK Polska +260 03 pl Poland 48 Orange/IDEA/Centertel +260 05 pl Poland 48 Orange/IDEA/Centertel +260 35 pl Poland 48 PKP Polskie Linie Kolejowe S.A. +260 98 pl Poland 48 Play/P4 +260 06 pl Poland 48 Play/P4 +260 01 pl Poland 48 Polkomtel/Plus +260 14 pl Poland 48 Sferia +260 13 pl Poland 48 Sferia +260 10 pl Poland 48 Sferia +260 34 pl Poland 48 T-Mobile/ERA +260 02 pl Poland 48 T-Mobile/ERA +260 15 pl Poland 48 Tele2 +260 04 pl Poland 48 Tele2 +268 04 pt Portugal 351 Lycamobile +268 03 pt Portugal 351 NOS/Optimus +268 07 pt Portugal 351 NOS/Optimus +268 06 pt Portugal 351 MEO/TMN +268 01 pt Portugal 351 Vodafone +330 11 pr Puerto Rico Puerto Rico Telephone Company Inc. (PRTC) +330 110 pr Puerto Rico Puerto Rico Telephone Company Inc. (PRTC) +427 01 qa Qatar 974 Ooredoo/Qtel +427 02 qa Qatar 974 Vodafone +647 00 re Reunion 262 Orange +647 02 re Reunion 262 Outremer Telecom +647 10 re Reunion 262 SFR +226 03 ro Romania 40 Cosmote +226 11 ro Romania 40 Enigma Systems +226 16 ro Romania 40 Lycamobile +226 10 ro Romania 40 Orange +226 05 ro Romania 40 RCS&RDS Digi Mobile +226 02 ro Romania 40 Romtelecom SA +226 06 ro Romania 40 Telemobil/Zapp +226 01 ro Romania 40 Vodafone +226 04 ro Romania 40 Telemobil/Zapp +250 12 ru Russian Federation 79 Baykal Westcom +250 28 ru Russian Federation 79 BeeLine/VimpelCom +250 10 ru Russian Federation 79 DTC/Don Telecom +250 13 ru Russian Federation 79 Kuban GSM +250 35 ru Russian Federation 79 MOTIV/LLC Ekaterinburg-2000 +250 02 ru Russian Federation 79 Megafon +250 01 ru Russian Federation 79 MTS +250 03 ru Russian Federation 79 NCC +250 16 ru Russian Federation 79 NTC +250 19 ru Russian Federation 79 OJSC Altaysvyaz +250 11 ru Russian Federation 79 Orensot +250 92 ru Russian Federation 79 Printelefone +250 04 ru Russian Federation 79 Sibchallenge +250 44 ru Russian Federation 79 StavTelesot +250 20 ru Russian Federation 79 Tele2/ECC/Volgogr. +250 93 ru Russian Federation 79 Telecom XXL +250 39 ru Russian Federation 79 UralTel +250 17 ru Russian Federation 79 UralTel +250 99 ru Russian Federation 79 BeeLine/VimpelCom +250 05 ru Russian Federation 79 Yenisey Telecom +250 15 ru Russian Federation 79 ZAO SMARTS +250 07 ru Russian Federation 79 ZAO SMARTS +635 14 rw Rwanda 250 Airtel +635 10 rw Rwanda 250 MTN/Rwandacell +635 13 rw Rwanda 250 TIGO +356 110 kn Saint Kitts and Nevis 1869 Cable & Wireless +356 50 kn Saint Kitts and Nevis 1869 Digicel +356 70 kn Saint Kitts and Nevis 1869 UTS Cariglobe +358 110 lc Saint Lucia 1758 Cable & Wireless +358 30 lc Saint Lucia 1758 Cingular Wireless +358 50 lc Saint Lucia 1758 Digicel (St Lucia) Limited +549 27 ws Samoa 685 Samoatel Mobile +549 01 ws Samoa 685 Telecom Samoa Cellular Ltd. +292 01 sm San Marino 378 Prima Telecom +626 01 st Sao Tome & Principe 239 CSTmovel +901 14 n/a Satellite Networks 870 AeroMobile +901 11 n/a Satellite Networks 870 InMarSAT +901 12 n/a Satellite Networks 870 Maritime Communications Partner AS +901 05 n/a Satellite Networks 870 Thuraya Satellite +420 07 sa Saudi Arabia 966 Zain +420 03 sa Saudi Arabia 966 Etihad/Etisalat/Mobily +420 06 sa Saudi Arabia 966 Lebara Mobile +420 01 sa Saudi Arabia 966 STC/Al Jawal +420 05 sa Saudi Arabia 966 Virgin Mobile +420 04 sa Saudi Arabia 966 Zain +608 03 sn Senegal 221 Expresso/Sudatel +608 01 sn Senegal 221 Orange/Sonatel +608 02 sn Senegal 221 TIGO/Sentel GSM +220 03 rs Serbia 381 MTS/Telekom Srbija +220 01 rs Serbia 381 Telenor/Mobtel +220 02 rs Serbia 381 Telenor/Mobtel +220 05 rs Serbia 381 VIP Mobile +633 10 sc Seychelles 248 Airtel +633 01 sc Seychelles 248 C&W +633 02 sc Seychelles 248 Smartcom +619 03 sl Sierra Leone 232 Africel +619 01 sl Sierra Leone 232 Airtel/Zain/Celtel +619 04 sl Sierra Leone 232 Comium +619 05 sl Sierra Leone 232 Africel +619 02 sl Sierra Leone 232 Tigo/Millicom +619 25 sl Sierra Leone 232 Mobitel +525 12 sg Singapore 65 GRID Communications Pte Ltd +525 03 sg Singapore 65 MobileOne Ltd +525 02 sg Singapore 65 Singtel +525 01 sg Singapore 65 Singtel +525 07 sg Singapore 65 Singtel +525 06 sg Singapore 65 Starhub +525 05 sg Singapore 65 Starhub +231 03 sk Slovakia 421 4Ka +231 06 sk Slovakia 421 O2 +231 01 sk Slovakia 421 Orange +231 05 sk Slovakia 421 Orange +231 15 sk Slovakia 421 Orange +231 02 sk Slovakia 421 T-Mobile +231 04 sk Slovakia 421 T-Mobile +231 99 sk Slovakia 421 Zeleznice Slovenskej republiky (ZSR) +293 41 si Slovenia 386 Mobitel +293 40 si Slovenia 386 SI.Mobil +293 10 si Slovenia 386 Slovenske zeleznice d.o.o. +293 64 si Slovenia 386 T-2 d.o.o. +293 70 si Slovenia 386 Telemach/TusMobil/VEGA +540 02 sb Solomon Islands 677 bemobile +540 10 sb Solomon Islands 677 BREEZE +540 01 sb Solomon Islands 677 BREEZE +637 30 so Somalia 252 Golis +637 19 so Somalia 252 HorTel +637 10 so Somalia 252 Nationlink +637 60 so Somalia 252 Nationlink +637 04 so Somalia 252 Somafone +637 82 so Somalia 252 Somtel +637 71 so Somalia 252 Somtel +637 01 so Somalia 252 Telesom +655 02 za South Africa 27 8.ta +655 21 za South Africa 27 Cape Town Metropolitan +655 07 za South Africa 27 Cell C +655 12 za South Africa 27 MTN +655 10 za South Africa 27 MTN +655 06 za South Africa 27 Sentech +655 01 za South Africa 27 Vodacom +655 19 za South Africa 27 Wireless Business Solutions (Pty) Ltd +659 03 ss South Sudan (Republic of) Gemtel Ltd (South Sudan +659 02 ss South Sudan (Republic of) MTN South Sudan (South Sudan +659 04 ss South Sudan (Republic of) Network of The World Ltd (NOW) (South Sudan +659 06 ss South Sudan (Republic of) Zain South Sudan (South Sudan +214 23 es Spain 34 Lycamobile SL +214 22 es Spain 34 Digi Spain Telecom SL +214 15 es Spain 34 BT Espana SAU +214 18 es Spain 34 Cableuropa SAU (ONO) +214 08 es Spain 34 Euskaltel SA +214 20 es Spain 34 fonYou Wireless SL +214 32 es Spain 34 ION Mobile +214 21 es Spain 34 Jazz Telecom SAU +214 26 es Spain 34 Lleida +214 25 es Spain 34 Lycamobile SL +214 07 es Spain 34 Movistar +214 05 es Spain 34 Movistar +214 11 es Spain 34 Orange +214 09 es Spain 34 Orange +214 03 es Spain 34 Orange +214 17 es Spain 34 R Cable y Telec. Galicia SA +214 19 es Spain 34 Simyo/KPN +214 16 es Spain 34 Telecable de Asturias SA +214 27 es Spain 34 Truphone +214 01 es Spain 34 Vodafone +214 06 es Spain 34 Vodafone Enabler Espana SL +214 04 es Spain 34 Yoigo +413 05 lk Sri Lanka 94 Airtel +413 03 lk Sri Lanka 94 Etisalat/Tigo +413 08 lk Sri Lanka 94 H3G Hutchison +413 01 lk Sri Lanka 94 Mobitel Ltd. +413 02 lk Sri Lanka 94 MTN/Dialog +308 01 pm St. Pierre & Miquelon 508 Ameris +360 110 vc St. Vincent & Gren. 1784 C & W +360 100 vc St. Vincent & Gren. 1784 Cingular +360 10 vc St. Vincent & Gren. 1784 Cingular +360 050 vc St. Vincent & Gren. 1784 Digicel +360 70 vc St. Vincent & Gren. 1784 Digicel +634 00 sd Sudan 249 Canar Telecom +634 22 sd Sudan 249 MTN +634 02 sd Sudan 249 MTN +634 07 sd Sudan 249 Sudani One +634 15 sd Sudan 249 Sudani One +634 08 sd Sudan 249 Vivacell +634 05 sd Sudan 249 Vivacell +634 01 sd Sudan 249 ZAIN/Mobitel +634 06 sd Sudan 249 ZAIN/Mobitel +746 03 sr Suriname 597 Digicel +746 01 sr Suriname 597 Telesur +746 02 sr Suriname 597 Telecommunicatiebedrijf Suriname (TELESUR) +746 04 sr Suriname 597 UNIQA +653 10 sz Swaziland 268 Swazi MTN +653 01 sz Swaziland 268 SwaziTelecom +240 35 se Sweden 46 42 Telecom AB +240 16 se Sweden 46 42 Telecom AB +240 26 se Sweden 46 Beepsend +240 30 se Sweden 46 NextGen Mobile Ltd (CardBoardFish) +240 28 se Sweden 46 CoolTEL Aps +240 25 se Sweden 46 Digitel Mobile Srl +240 22 se Sweden 46 Eu Tel AB +240 27 se Sweden 46 Fogg Mobile AB +240 18 se Sweden 46 Generic Mobile Systems Sweden AB +240 17 se Sweden 46 Gotalandsnatet AB +240 04 se Sweden 46 H3G Access AB +240 02 se Sweden 46 H3G Access AB +240 36 se Sweden 46 ID Mobile +240 23 se Sweden 46 Infobip Ltd. +240 11 se Sweden 46 Lindholmen Science Park AB +240 12 se Sweden 46 Lycamobile Ltd +240 29 se Sweden 46 Mercury International Carrier Services +240 19 se Sweden 46 Mundio Mobile (Sweden) Ltd +240 10 se Sweden 46 Spring Mobil AB +240 05 se Sweden 46 Svenska UMTS-N +240 14 se Sweden 46 TDC Sverige AB +240 07 se Sweden 46 Tele2 Sverige AB +240 08 se Sweden 46 Telenor (Vodafone) +240 06 se Sweden 46 Telenor (Vodafone) +240 24 se Sweden 46 Telenor (Vodafone) +240 01 se Sweden 46 Telia Mobile +240 13 se Sweden 46 Ventelo Sverige AB +240 20 se Sweden 46 Wireless Maingate AB +240 15 se Sweden 46 Wireless Maingate Nordic AB +228 51 ch Switzerland 41 BebbiCell AG +228 09 ch Switzerland 41 Comfone AG +228 05 ch Switzerland 41 Comfone AG +228 07 ch Switzerland 41 TDC Sunrise +228 54 ch Switzerland 41 Lycamobile AG +228 52 ch Switzerland 41 Mundio Mobile AG +228 03 ch Switzerland 41 Salt/Orange +228 01 ch Switzerland 41 Swisscom +228 02 ch Switzerland 41 TDC Sunrise +228 12 ch Switzerland 41 TDC Sunrise +228 08 ch Switzerland 41 TDC Sunrise +228 53 ch Switzerland 41 upc cablecom GmbH +417 02 sy Syrian Arab Republic 963 MTN/Spacetel +417 09 sy Syrian Arab Republic 963 Syriatel Holdings +417 01 sy Syrian Arab Republic 963 Syriatel Holdings +466 68 tw Taiwan 886 ACeS Taiwan - ACeS Taiwan Telecommunications Co Ltd +466 05 tw Taiwan 886 Asia Pacific Telecom Co. Ltd (APT) +466 11 tw Taiwan 886 Chunghwa Telecom LDM +466 92 tw Taiwan 886 Chunghwa Telecom LDM +466 07 tw Taiwan 886 Far EasTone +466 01 tw Taiwan 886 Far EasTone +466 06 tw Taiwan 886 Far EasTone +466 02 tw Taiwan 886 Far EasTone +466 03 tw Taiwan 886 Far EasTone +466 10 tw Taiwan 886 Global Mobile Corp. +466 56 tw Taiwan 886 International Telecom Co. Ltd (FITEL) +466 88 tw Taiwan 886 KG Telecom +466 99 tw Taiwan 886 TransAsia +466 97 tw Taiwan 886 Taiwan Cellular +466 93 tw Taiwan 886 Mobitai +466 89 tw Taiwan 886 T-Star/VIBO +466 09 tw Taiwan 886 VMAX Telecom Co. Ltd +436 04 tk Tajikistan 992 Babilon-M +436 05 tk Tajikistan 992 Bee Line +436 02 tk Tajikistan 992 CJSC Indigo Tajikistan +436 12 tk Tajikistan 992 Tcell/JC Somoncom +436 03 tk Tajikistan 992 MLT/TT mobile +436 01 tk Tajikistan 992 Tcell/JC Somoncom +640 08 tz Tanzania 255 Benson Informatics Ltd +640 06 tz Tanzania 255 Dovetel (T) Ltd +640 09 tz Tanzania 255 Halotel/Viettel Ltd +640 11 tz Tanzania 255 Smile Communications Tanzania Ltd +640 07 tz Tanzania 255 Tanzania Telecommunications Company Ltd (TTCL) +640 02 tz Tanzania 255 TIGO/MIC +640 01 tz Tanzania 255 Tri Telecomm. Ltd. +640 04 tz Tanzania 255 Vodacom Ltd +640 05 tz Tanzania 255 Airtel/ZAIN/Celtel +640 03 tz Tanzania 255 Zantel/Zanzibar Telecom +520 20 th Thailand 66 ACeS Thailand - ACeS Regional Services Co Ltd +520 15 th Thailand 66 ACT Mobile +520 03 th Thailand 66 Advanced Wireless Networks/AWN +520 01 th Thailand 66 AIS/Advanced Info Service +520 23 th Thailand 66 Digital Phone Co. +520 00 th Thailand 66 Hutch/CAT CDMA +520 05 th Thailand 66 Total Access (DTAC) +520 18 th Thailand 66 Total Access (DTAC) +520 04 th Thailand 66 True Move/Orange +520 99 th Thailand 66 True Move/Orange +514 01 tp Timor-Leste 670 Telin/ Telkomcel +514 02 tp Timor-Leste 670 Timor Telecom +615 02 tg Togo 228 Telecel/MOOV +615 03 tg Togo 228 Telecel/MOOV +615 01 tg Togo 228 Togo Telecom/TogoCELL +539 43 to Tonga 676 Shoreline Communication +539 01 to Tonga 676 Tonga Communications +374 120 tt Trinidad and Tobago 1868 Bmobile/TSTT +374 12 tt Trinidad and Tobago 1868 Bmobile/TSTT +374 130 tt Trinidad and Tobago 1868 Digicel +374 140 tt Trinidad and Tobago 1868 LaqTel Ltd. +605 01 tn Tunisia 216 Orange +605 03 tn Tunisia 216 Oreedo/Orascom +605 02 tn Tunisia 216 TuniCell/Tunisia Telecom +605 06 tn Tunisia 216 TuniCell/Tunisia Telecom +286 04 tr Turkey 90 AVEA/Aria +286 03 tr Turkey 90 AVEA/Aria +286 01 tr Turkey 90 Turkcell +286 02 tr Turkey 90 Vodafone-Telsim +438 01 tm Turkmenistan 993 MTS/Barash Communication +438 02 tm Turkmenistan 993 Altyn Asyr/TM-Cell +376 350 tc Turks and Caicos Islands Cable & Wireless (TCI) Ltd +376 050 tc Turks and Caicos Islands Digicel TCI Ltd +376 352 tc Turks and Caicos Islands IslandCom Communications Ltd. +553 01 tv Tuvalu Tuvalu Telecommunication Corporation (TTC) +641 01 ug Uganda 256 Airtel/Celtel +641 66 ug Uganda 256 i-Tel Ltd +641 30 ug Uganda 256 K2 Telecom Ltd +641 10 ug Uganda 256 MTN Ltd. +641 14 ug Uganda 256 Orange +641 33 ug Uganda 256 Smile Communications Uganda Ltd +641 18 ug Uganda 256 Suretelecom Uganda Ltd +641 11 ug Uganda 256 Uganda Telecom Ltd. +641 22 ug Uganda 256 Airtel/Warid +255 06 ua Ukraine 380 Astelit/LIFE +255 05 ua Ukraine 380 Golden Telecom +255 39 ua Ukraine 380 Golden Telecom +255 04 ua Ukraine 380 Intertelecom Ltd (IT) +255 67 ua Ukraine 380 KyivStar +255 03 ua Ukraine 380 KyivStar +255 21 ua Ukraine 380 Telesystems Of Ukraine CJSC (TSU) +255 07 ua Ukraine 380 TriMob LLC +255 50 ua Ukraine 380 UMC/MTS +255 02 ua Ukraine 380 Beeline +255 01 ua Ukraine 380 UMC/MTS +255 68 ua Ukraine 380 Beeline +424 03 ae United Arab Emirates 971 DU +431 02 ae United Arab Emirates 971 Etisalat +424 02 ae United Arab Emirates 971 Etisalat +430 02 ae United Arab Emirates 971 Etisalat +234 03 gb United Kingdom 44 Airtel/Vodafone +234 77 gb United Kingdom 44 BT Group +234 76 gb United Kingdom 44 BT Group +234 92 gb United Kingdom 44 Cable and Wireless +234 07 gb United Kingdom 44 Cable and Wireless +234 36 gb United Kingdom 44 Cable and Wireless Isle of Man +234 18 gb United Kingdom 44 Cloud9/wire9 Tel. +235 02 gb United Kingdom 44 Everyth. Ev.wh. +234 17 gb United Kingdom 44 FlexTel +234 55 gb United Kingdom 44 Guernsey Telecoms +234 14 gb United Kingdom 44 HaySystems +234 20 gb United Kingdom 44 H3G Hutchinson +234 94 gb United Kingdom 44 H3G Hutchinson +234 75 gb United Kingdom 44 Inquam Telecom Ltd +234 50 gb United Kingdom 44 Jersey Telecom +234 35 gb United Kingdom 44 JSC Ingenicum +234 26 gb United Kingdom 44 Lycamobile +234 58 gb United Kingdom 44 Manx Telecom +234 01 gb United Kingdom 44 Mapesbury C. Ltd +234 28 gb United Kingdom 44 Marthon Telecom +234 10 gb United Kingdom 44 O2 Ltd. +234 11 gb United Kingdom 44 O2 Ltd. +234 02 gb United Kingdom 44 O2 Ltd. +234 08 gb United Kingdom 44 OnePhone +234 16 gb United Kingdom 44 Opal Telecom +234 34 gb United Kingdom 44 Everyth. Ev.wh./Orange +234 33 gb United Kingdom 44 Everyth. Ev.wh./Orange +234 19 gb United Kingdom 44 PMN/Teleware +234 12 gb United Kingdom 44 Railtrack Plc +234 22 gb United Kingdom 44 Routotelecom +234 57 gb United Kingdom 44 Sky UK Limited +234 24 gb United Kingdom 44 Stour Marine +234 37 gb United Kingdom 44 Synectiv Ltd. +234 31 gb United Kingdom 44 Everyth. Ev.wh./T-Mobile +234 30 gb United Kingdom 44 Everyth. Ev.wh./T-Mobile +234 32 gb United Kingdom 44 Everyth. Ev.wh./T-Mobile +234 27 gb United Kingdom 44 Vodafone +234 09 gb United Kingdom 44 Tismi +234 25 gb United Kingdom 44 Truphone +234 51 gb United Kingdom 44 Jersey Telecom +234 23 gb United Kingdom 44 Vectofone Mobile Wifi +234 91 gb United Kingdom 44 Vodafone +234 15 gb United Kingdom 44 Vodafone +234 78 gb United Kingdom 44 Wave Telecom Ltd +310 050 us United States 1 +310 880 us United States 1 +310 850 us United States 1 Aeris Comm. Inc. +310 640 us United States 1 +310 510 us United States 1 Airtel Wireless LLC +310 190 us United States 1 Unknown +312 090 us United States 1 Allied Wireless Communications Corporation +311 130 us United States 1 +310 710 us United States 1 Arctic Slope Telephone Association Cooperative Inc. +310 150 us United States 1 AT&T Wireless Inc. +310 680 us United States 1 AT&T Wireless Inc. +310 070 us United States 1 AT&T Wireless Inc. +310 560 us United States 1 AT&T Wireless Inc. +310 410 us United States 1 AT&T Wireless Inc. +310 380 us United States 1 AT&T Wireless Inc. +310 170 us United States 1 AT&T Wireless Inc. +310 980 us United States 1 AT&T Wireless Inc. +311 810 us United States 1 Bluegrass Wireless LLC +311 800 us United States 1 Bluegrass Wireless LLC +311 440 us United States 1 Bluegrass Wireless LLC +310 900 us United States 1 Cable & Communications Corp. +311 590 us United States 1 California RSA No. 3 Limited Partnership +311 500 us United States 1 Cambridge Telephone Company Inc. +310 830 us United States 1 Caprock Cellular Ltd. +310 590 us United States 1 Verizon Wireless +311 282 us United States 1 Verizon Wireless +311 487 us United States 1 Verizon Wireless +311 271 us United States 1 Verizon Wireless +311 287 us United States 1 Verizon Wireless +311 276 us United States 1 Verizon Wireless +311 481 us United States 1 Verizon Wireless +310 013 us United States 1 Verizon Wireless +311 281 us United States 1 Verizon Wireless +311 486 us United States 1 Verizon Wireless +311 270 us United States 1 Verizon Wireless +311 286 us United States 1 Verizon Wireless +311 275 us United States 1 Verizon Wireless +311 480 us United States 1 Verizon Wireless +310 012 us United States 1 Verizon Wireless +311 280 us United States 1 Verizon Wireless +311 485 us United States 1 Verizon Wireless +311 110 us United States 1 Verizon Wireless +311 285 us United States 1 Verizon Wireless +311 274 us United States 1 Verizon Wireless +311 390 us United States 1 Verizon Wireless +310 010 us United States 1 Verizon Wireless +311 279 us United States 1 Verizon Wireless +311 484 us United States 1 Verizon Wireless +310 910 us United States 1 Verizon Wireless +311 284 us United States 1 Verizon Wireless +311 489 us United States 1 Verizon Wireless +311 273 us United States 1 Verizon Wireless +311 289 us United States 1 Verizon Wireless +310 004 us United States 1 Verizon Wireless +311 278 us United States 1 Verizon Wireless +311 483 us United States 1 Verizon Wireless +310 890 us United States 1 Verizon Wireless +311 283 us United States 1 Verizon Wireless +311 488 us United States 1 Verizon Wireless +311 272 us United States 1 Verizon Wireless +311 288 us United States 1 Verizon Wireless +311 277 us United States 1 Verizon Wireless +311 482 us United States 1 Verizon Wireless +312 280 us United States 1 Cellular Network Partnership LLC +312 270 us United States 1 Cellular Network Partnership LLC +310 360 us United States 1 Cellular Network Partnership LLC +311 190 us United States 1 +310 030 us United States 1 +311 120 us United States 1 Choice Phone LLC +310 480 us United States 1 Choice Phone LLC +310 630 us United States 1 +310 420 us United States 1 Cincinnati Bell Wireless LLC +310 180 us United States 1 Cingular Wireless +310 620 us United States 1 Coleman County Telco /Trans TX +311 040 us United States 1 +310 06 us United States 1 Consolidated Telcom +310 60 us United States 1 Consolidated Telcom +310 26 us United States 1 +312 380 us United States 1 +310 930 us United States 1 +311 240 us United States 1 +310 080 us United States 1 +310 700 us United States 1 Cross Valliant Cellular Partnership +311 140 us United States 1 Cross Wireless Telephone Co. +312 030 us United States 1 Cross Wireless Telephone Co. +311 520 us United States 1 +312 040 us United States 1 Custer Telephone Cooperative Inc. +310 440 us United States 1 Dobson Cellular Systems +310 990 us United States 1 E.N.M.R. Telephone Coop. +312 120 us United States 1 East Kentucky Network LLC +310 750 us United States 1 East Kentucky Network LLC +312 130 us United States 1 East Kentucky Network LLC +310 090 us United States 1 Edge Wireless LLC +310 610 us United States 1 Elkhart TelCo. / Epic Touch Co. +311 210 us United States 1 +311 311 us United States 1 Farmers +311 460 us United States 1 Fisher Wireless Services Inc. +311 370 us United States 1 GCI Communication Corp. +310 430 us United States 1 GCI Communication Corp. +310 920 us United States 1 Get Mobile Inc. +310 970 us United States 1 +311 340 us United States 1 Illinois Valley Cellular RSA 2 Partnership +311 030 us United States 1 +312 170 us United States 1 Iowa RSA No. 2 Limited Partnership +311 410 us United States 1 Iowa RSA No. 2 Limited Partnership +310 770 us United States 1 Iowa Wireless Services LLC +310 650 us United States 1 Jasper +310 870 us United States 1 Kaplan Telephone Company Inc. +312 180 us United States 1 Keystone Wireless LLC +310 690 us United States 1 Keystone Wireless LLC +311 310 us United States 1 Lamar County Cellular +310 016 us United States 1 Leap Wireless International Inc. +311 090 us United States 1 +310 040 us United States 1 Matanuska Tel. Assn. Inc. +310 780 us United States 1 Message Express Co. / Airlink PCS +311 660 us United States 1 +311 330 us United States 1 Michigan Wireless LLC +311 000 us United States 1 +310 400 us United States 1 Minnesota South. Wirel. Co. / Hickory +312 220 us United States 1 Missouri RSA No 5 Partnership +312 010 us United States 1 Missouri RSA No 5 Partnership +311 920 us United States 1 Missouri RSA No 5 Partnership +311 020 us United States 1 Missouri RSA No 5 Partnership +311 010 us United States 1 Missouri RSA No 5 Partnership +310 350 us United States 1 Mohave Cellular LP +310 570 us United States 1 MTPCS LLC +310 290 us United States 1 NEP Cellcorp Inc. +310 34 us United States 1 Nevada Wireless LLC +311 380 us United States 1 +310 600 us United States 1 New-Cell Inc. +311 100 us United States 1 +311 300 us United States 1 Nexus Communications Inc. +310 130 us United States 1 North Carolina RSA 3 Cellular Tel. Co. +312 230 us United States 1 North Dakota Network Company +311 610 us United States 1 North Dakota Network Company +310 450 us United States 1 Northeast Colorado Cellular Inc. +311 710 us United States 1 Northeast Wireless Networks LLC +310 670 us United States 1 Northstar +310 011 us United States 1 Northstar +311 420 us United States 1 Northwest Missouri Cellular Limited Partnership +310 540 us United States 1 +310 760 us United States 1 Panhandle Telephone Cooperative Inc. +310 580 us United States 1 PCS ONE +311 170 us United States 1 PetroCom +311 670 us United States 1 Pine Belt Cellular, Inc. +311 080 us United States 1 +310 790 us United States 1 +310 100 us United States 1 Plateau Telecommunications Inc. +310 940 us United States 1 Poka Lambro Telco Ltd. +311 730 us United States 1 +311 540 us United States 1 +310 500 us United States 1 Public Service Cellular Inc. +311 430 us United States 1 RSA 1 Limited Partnership +312 160 us United States 1 RSA 1 Limited Partnership +311 350 us United States 1 Sagebrush Cellular Inc. +311 910 us United States 1 +310 46 us United States 1 SIMMETRY +311 260 us United States 1 SLO Cellular Inc / Cellular One of San Luis +310 320 us United States 1 Smith Bagley Inc. +310 15 us United States 1 Unknown +316 011 us United States 1 Southern Communications Services Inc. +312 530 us United States 1 Sprint Spectrum +311 870 us United States 1 Sprint Spectrum +311 490 us United States 1 Sprint Spectrum +310 120 us United States 1 Sprint Spectrum +316 010 us United States 1 Sprint Spectrum +312 190 us United States 1 Sprint Spectrum +311 880 us United States 1 Sprint Spectrum +310 210 us United States 1 T-Mobile +310 260 us United States 1 T-Mobile +310 200 us United States 1 T-Mobile +310 250 us United States 1 T-Mobile +310 160 us United States 1 T-Mobile +310 240 us United States 1 T-Mobile +310 660 us United States 1 T-Mobile +310 230 us United States 1 T-Mobile +310 31 us United States 1 T-Mobile +310 220 us United States 1 T-Mobile +310 270 us United States 1 T-Mobile +310 280 us United States 1 T-Mobile +310 330 us United States 1 T-Mobile +310 800 us United States 1 T-Mobile +310 300 us United States 1 T-Mobile +310 310 us United States 1 T-Mobile +311 740 us United States 1 +310 740 us United States 1 Telemetrix Inc. +310 14 us United States 1 Testing +310 950 us United States 1 Unknown +310 860 us United States 1 Texas RSA 15B2 Limited Partnership +311 830 us United States 1 Thumb Cellular Limited Partnership +311 050 us United States 1 Thumb Cellular Limited Partnership +310 460 us United States 1 TMP Corporation +310 490 us United States 1 Triton PCS +310 960 us United States 1 Uintah Basin Electronics Telecommunications Inc. +312 290 us United States 1 Uintah Basin Electronics Telecommunications Inc. +311 860 us United States 1 Uintah Basin Electronics Telecommunications Inc. +310 020 us United States 1 Union Telephone Co. +311 220 us United States 1 United States Cellular Corp. +310 730 us United States 1 United States Cellular Corp. +311 650 us United States 1 United Wireless Communications Inc. +310 38 us United States 1 USA 3650 AT&T +310 520 us United States 1 VeriSign +310 003 us United States 1 Unknown +310 23 us United States 1 Unknown +310 24 us United States 1 Unknown +310 25 us United States 1 Unknown +310 530 us United States 1 West Virginia Wireless +310 26 us United States 1 Unknown +310 340 us United States 1 Westlink Communications, LLC +311 150 us United States 1 +311 070 us United States 1 Wisconsin RSA #7 Limited Partnership +310 390 us United States 1 Yorkville Telephone Cooperative +748 01 uy Uruguay 598 Ancel/Antel +748 03 uy Uruguay 598 Ancel/Antel +748 10 uy Uruguay 598 Claro/AM Wireless +748 07 uy Uruguay 598 MOVISTAR +434 04 uz Uzbekistan 998 Bee Line/Unitel +434 01 uz Uzbekistan 998 Buztel +434 07 uz Uzbekistan 998 MTS/Uzdunrobita +434 05 uz Uzbekistan 998 Ucell/Coscom +434 02 uz Uzbekistan 998 Uzmacom +541 05 vu Vanuatu 678 DigiCel +541 01 vu Vanuatu 678 SMILE +734 03 ve Venezuela 58 DigiTel C.A. +734 02 ve Venezuela 58 DigiTel C.A. +734 01 ve Venezuela 58 DigiTel C.A. +734 06 ve Venezuela 58 Movilnet C.A. +734 04 ve Venezuela 58 Movistar/TelCel +452 07 vn Viet Nam 84 Beeline +452 01 vn Viet Nam 84 Mobifone +452 03 vn Viet Nam 84 S-Fone/Telecom +452 05 vn Viet Nam 84 VietnaMobile +452 08 vn Viet Nam 84 Viettel Mobile +452 06 vn Viet Nam 84 Viettel Mobile +452 04 vn Viet Nam 84 Viettel Mobile +452 02 vn Viet Nam 84 Vinaphone +376 50 vi Virgin Islands, U.S. 1340 Digicel +421 04 ye Yemen 967 HITS/Y Unitel +421 02 ye Yemen 967 MTN/Spacetel +421 01 ye Yemen 967 Sabaphone +421 03 ye Yemen 967 Yemen Mob. CDMA +645 03 zm Zambia 260 Zamtel/Cell Z/MTS +645 02 zm Zambia 260 MTN/Telecel +645 01 zm Zambia 260 Airtel/Zain/Celtel +648 04 zw Zimbabwe 263 Econet +648 01 zw Zimbabwe 263 Net One +648 03 zw Zimbabwe 263 Telecel \ No newline at end of file