Adding configuration validation.

This commit is contained in:
stephb9959
2021-09-14 17:06:50 -07:00
parent 7af151c697
commit fe98fa5d64
3 changed files with 115 additions and 0 deletions

View File

@@ -107,16 +107,25 @@ namespace OpenWifi{
std::string Arg;
if(HasParameter("validateOnly",Arg) && Arg=="true") {
std::cout << __LINE__ << std::endl;
auto Body = ParseStream();
std::cout << __LINE__ << std::endl;
if(!Body->has("configuration")) {
std::cout << __LINE__ << std::endl;
BadRequest("Must have 'configuration' element.");
return;
}
std::cout << __LINE__ << std::endl;
auto Config=Body->get("configuration").toString();
std::cout << __LINE__ << std::endl;
Poco::JSON::Object Answer;
std::cout << __LINE__ << std::endl;
auto Res = ValidateUCentralConfiguration(Config);
std::cout << __LINE__ << std::endl;
Answer.set("valid",Res);
std::cout << __LINE__ << std::endl;
ReturnObject(Answer);
std::cout << __LINE__ << std::endl;
return;
}

View File

@@ -380,6 +380,15 @@ adddeviceconfig() {
jq < ${result_file}
}
validateconfig() {
curl ${FLAGS} -X POST "https://${OWPROV}/api/v1/configurations/1?validateOnly=true" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${token}" \
-H "accept: application/json" \
-d @"$1" > ${result_file}
jq < ${result_file}
}
shopt -s nocasematch
case "$1" in
"login") login; help ; logout ;;
@@ -413,6 +422,7 @@ case "$1" in
"adddeviceconfig") login; adddeviceconfig "$2" "$3"; logout;;
"addconfigmetrics") login; addconfigmetrics "$2" ; logout;;
"addconfigfile") login; addconfigfile "$2" ; logout;;
"validateconfig") login; validateconfig "$2"; logout;;
*) help ;;
esac

View File

@@ -0,0 +1,96 @@
{
"configuration" : {
"radios": [
{
"band": "5G",
"channel": 52,
"channel-mode": "HE",
"channel-width": 80,
"country": "CA"
},
{
"band": "2G",
"channel": 11,
"channel-mode": "HE",
"channel-width": 20,
"country": "CA"
}
],
"interfaces": [
{
"name": "WAN",
"role": "upstream",
"services": [ "lldp" ],
"ethernet": [
{
"select-ports": [
"WAN*"
]
}
],
"ipv4": {
"addressing": "dynamic"
}
},
{
"name": "LAN",
"role": "downstream",
"services": [ "ssh", "lldp" ],
"ethernet": [
{
"select-ports": [
"LAN*"
]
}
],
"ipv4": {
"addressing": "static",
"subnet": "192.168.1.1/24",
"dhcp": {
"lease-first": 10,
"lease-count": 100,
"lease-time": "6h"
}
},
"ssids": [
{
"name": "OpenWifi",
"role": "downstream",
"wifi-bands": [
"2G", "5G"
],
"bss-mode": "ap",
"encryption": {
"proto": "psk2",
"key": "OpenWifi",
"ieee80211w": "optional"
}
}
]
}
],
"metrics": {
"statistics": {
"interval": 120,
"types": [ "ssids", "lldp", "clients" ]
},
"health": {
"interval": 120
},
"wifi-frames": {
"filters": [ "probe", "auth" ]
}
},
"services": {
"lldp": {
"describe": "uCentral",
"location": "universe"
},
"ssh": {
"port": 22
}
}
}
}