mirror of
https://github.com/Telecominfraproject/wlan-cloud-owls.git
synced 2025-10-30 02:02:19 +00:00
Signed-off-by: stephb9959 <stephane.bourque@gmail.com>
This commit is contained in:
@@ -146,12 +146,6 @@ components:
|
|||||||
- $ref: '#/components/schemas/StringList'
|
- $ref: '#/components/schemas/StringList'
|
||||||
- $ref: '#/components/schemas/TagValuePairList'
|
- $ref: '#/components/schemas/TagValuePairList'
|
||||||
|
|
||||||
SystemCommandResults:
|
|
||||||
type: object
|
|
||||||
oneOf:
|
|
||||||
- $ref: '#/components/schemas/StringList'
|
|
||||||
- $ref: '#/components/schemas/TagValuePairList'
|
|
||||||
|
|
||||||
SystemInfoResults:
|
SystemInfoResults:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@@ -180,6 +174,33 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
format: int64
|
format: int64
|
||||||
|
|
||||||
|
SystemResources:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
numberOfFileDescriptors:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
currRealMem:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
peakRealMem:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
currVirtMem:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
peakVirtMem:
|
||||||
|
type: integer
|
||||||
|
format: int64
|
||||||
|
|
||||||
|
SystemCommandResults:
|
||||||
|
type: object
|
||||||
|
oneOf:
|
||||||
|
- $ref: '#/components/schemas/SystemResources'
|
||||||
|
- $ref: '#/components/schemas/SystemInfoResults'
|
||||||
|
- $ref: '#/components/schemas/StringList'
|
||||||
|
- $ref: '#/components/schemas/TagValuePairList'
|
||||||
|
|
||||||
SystemCommandSetLogLevel:
|
SystemCommandSetLogLevel:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@@ -686,18 +707,12 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- info
|
- info
|
||||||
|
- extraConfiguration
|
||||||
|
- resources
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
description: Successful command execution
|
$ref: '#/components/schemas/SystemCommandResults'
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
oneOf:
|
|
||||||
- $ref: '#/components/schemas/SystemInfoResults'
|
|
||||||
400:
|
|
||||||
$ref: '#/components/responses/BadRequest'
|
|
||||||
403:
|
403:
|
||||||
$ref: '#/components/responses/Unauthorized'
|
$ref: '#/components/responses/Unauthorized'
|
||||||
404:
|
404:
|
||||||
|
|||||||
@@ -37,6 +37,10 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"uuid": {
|
"uuid": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"public_ip_lookup": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-fqdn"
|
||||||
|
},
|
||||||
"unit": {
|
"unit": {
|
||||||
"$ref": "#/$defs/unit"
|
"$ref": "#/$defs/unit"
|
||||||
},
|
},
|
||||||
@@ -634,26 +638,6 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"format": "uc-timeout",
|
"format": "uc-timeout",
|
||||||
"default": "6h"
|
"default": "6h"
|
||||||
},
|
|
||||||
"relay-server": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "ipv4",
|
|
||||||
"example": "192.168.2.1"
|
|
||||||
},
|
|
||||||
"circuit-id-format": {
|
|
||||||
"type": "string",
|
|
||||||
"example": [
|
|
||||||
"\\{Interface\\}:\\{VLAN-Id\\}:\\{SSID\\}:\\{Model\\}:\\{Name\\}:\\{AP-MAC\\}:\\{Location\\}",
|
|
||||||
"\\{AP-MAC\\};\\{SSID\\};\\{Crypto\\}",
|
|
||||||
"\\{Name\\} \\{ESSID\\}"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"remote-id-format": {
|
|
||||||
"type": "string",
|
|
||||||
"example": [
|
|
||||||
"\\{Client-MAC-hex\\} \\{SSID\\}",
|
|
||||||
"\\{AP-MAC-hex\\} \\{SSID\\}"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1232,6 +1216,32 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"secret"
|
"secret"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
"secondary": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"host": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-host",
|
||||||
|
"examples": [
|
||||||
|
"192.168.1.10"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"port": {
|
||||||
|
"type": "integer",
|
||||||
|
"maximum": 65535,
|
||||||
|
"minimum": 1024,
|
||||||
|
"examples": [
|
||||||
|
1812
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"secret": {
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"secret"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"request-attribute": {
|
"request-attribute": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
@@ -1309,6 +1319,25 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"value": "Example Operator"
|
"value": "Example Operator"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer",
|
||||||
|
"maximum": 255,
|
||||||
|
"minimum": 1
|
||||||
|
},
|
||||||
|
"hex-value": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"examples": [
|
||||||
|
{
|
||||||
|
"id": 32,
|
||||||
|
"value": "0a0b0c0d"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1658,6 +1687,236 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"service.captive.click": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"auth-mode": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "click-to-continue"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"service.captive.radius": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"auth-mode": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "radius"
|
||||||
|
},
|
||||||
|
"auth-server": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-host",
|
||||||
|
"examples": [
|
||||||
|
"192.168.1.10"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"auth-port": {
|
||||||
|
"type": "integer",
|
||||||
|
"maximum": 65535,
|
||||||
|
"minimum": 1024,
|
||||||
|
"default": 1812
|
||||||
|
},
|
||||||
|
"auth-secret": {
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"secret"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acct-server": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-host",
|
||||||
|
"examples": [
|
||||||
|
"192.168.1.10"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acct-port": {
|
||||||
|
"type": "integer",
|
||||||
|
"maximum": 65535,
|
||||||
|
"minimum": 1024,
|
||||||
|
"default": 1812
|
||||||
|
},
|
||||||
|
"acct-secret": {
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"secret"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acct-interval": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 600
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"service.captive.credentials": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"auth-mode": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "credentials"
|
||||||
|
},
|
||||||
|
"credentials": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"username": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"password": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"service.captive.uam": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"auth-mode": {
|
||||||
|
"type": "string",
|
||||||
|
"const": "uam"
|
||||||
|
},
|
||||||
|
"uam-port": {
|
||||||
|
"type": "integer",
|
||||||
|
"maximum": 65535,
|
||||||
|
"minimum": 1024,
|
||||||
|
"default": 3990
|
||||||
|
},
|
||||||
|
"uam-secret": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"uam-server": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"nasid": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"nasmac": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"auth-server": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-host",
|
||||||
|
"examples": [
|
||||||
|
"192.168.1.10"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"auth-port": {
|
||||||
|
"type": "integer",
|
||||||
|
"maximum": 65535,
|
||||||
|
"minimum": 1024,
|
||||||
|
"default": 1812
|
||||||
|
},
|
||||||
|
"auth-secret": {
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"secret"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acct-server": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-host",
|
||||||
|
"examples": [
|
||||||
|
"192.168.1.10"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acct-port": {
|
||||||
|
"type": "integer",
|
||||||
|
"maximum": 65535,
|
||||||
|
"minimum": 1024,
|
||||||
|
"default": 1812
|
||||||
|
},
|
||||||
|
"acct-secret": {
|
||||||
|
"type": "string",
|
||||||
|
"examples": [
|
||||||
|
"secret"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"acct-interval": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 600
|
||||||
|
},
|
||||||
|
"ssid": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"mac-format": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"aabbccddeeff",
|
||||||
|
"aa-bb-cc-dd-ee-ff",
|
||||||
|
"aa:bb:cc:dd:ee:ff",
|
||||||
|
"AABBCCDDEEFF",
|
||||||
|
"AA:BB:CC:DD:EE:FF",
|
||||||
|
"AA-BB-CC-DD-EE-FF"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"final-redirect-url": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"default",
|
||||||
|
"uam"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"mac-auth": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": "default"
|
||||||
|
},
|
||||||
|
"radius-gw-proxy": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"service.captive": {
|
||||||
|
"allOf": [
|
||||||
|
{
|
||||||
|
"oneOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/service.captive.click"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/service.captive.radius"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/service.captive.credentials"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/service.captive.uam"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"walled-garden-fqdn": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"walled-garden-ipaddr": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-ip"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"web-root": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-base64"
|
||||||
|
},
|
||||||
|
"idle-timeout": {
|
||||||
|
"type": "integer",
|
||||||
|
"default": 600
|
||||||
|
},
|
||||||
|
"session-timeout": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"interface.ssid": {
|
"interface.ssid": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -1710,6 +1969,10 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"isolate-clients": {
|
"isolate-clients": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
|
"strict-forwarding": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": false
|
||||||
|
},
|
||||||
"power-save": {
|
"power-save": {
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
@@ -1778,7 +2041,14 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"$ref": "#/$defs/interface.ssid.rate-limit"
|
"$ref": "#/$defs/interface.ssid.rate-limit"
|
||||||
},
|
},
|
||||||
"roaming": {
|
"roaming": {
|
||||||
"$ref": "#/$defs/interface.ssid.roaming"
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"$ref": "#/$defs/interface.ssid.roaming"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"radius": {
|
"radius": {
|
||||||
"$ref": "#/$defs/interface.ssid.radius"
|
"$ref": "#/$defs/interface.ssid.radius"
|
||||||
@@ -1795,6 +2065,9 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"access-control-list": {
|
"access-control-list": {
|
||||||
"$ref": "#/$defs/interface.ssid.acl"
|
"$ref": "#/$defs/interface.ssid.acl"
|
||||||
},
|
},
|
||||||
|
"captive": {
|
||||||
|
"$ref": "#/$defs/service.captive"
|
||||||
|
},
|
||||||
"hostapd-bss-raw": {
|
"hostapd-bss-raw": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
@@ -2084,6 +2357,10 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
"examples": [
|
"examples": [
|
||||||
"01234567890123456789012345678901"
|
"01234567890123456789012345678901"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"mutual-tls": {
|
||||||
|
"type": "boolean",
|
||||||
|
"default": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -2693,236 +2970,6 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"service.captive.click": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"auth-mode": {
|
|
||||||
"type": "string",
|
|
||||||
"const": "click-to-continue"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"service.captive.radius": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"auth-mode": {
|
|
||||||
"type": "string",
|
|
||||||
"const": "radius"
|
|
||||||
},
|
|
||||||
"auth-server": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uc-host",
|
|
||||||
"examples": [
|
|
||||||
"192.168.1.10"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"auth-port": {
|
|
||||||
"type": "integer",
|
|
||||||
"maximum": 65535,
|
|
||||||
"minimum": 1024,
|
|
||||||
"default": 1812
|
|
||||||
},
|
|
||||||
"auth-secret": {
|
|
||||||
"type": "string",
|
|
||||||
"examples": [
|
|
||||||
"secret"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"acct-server": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uc-host",
|
|
||||||
"examples": [
|
|
||||||
"192.168.1.10"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"acct-port": {
|
|
||||||
"type": "integer",
|
|
||||||
"maximum": 65535,
|
|
||||||
"minimum": 1024,
|
|
||||||
"default": 1812
|
|
||||||
},
|
|
||||||
"acct-secret": {
|
|
||||||
"type": "string",
|
|
||||||
"examples": [
|
|
||||||
"secret"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"acct-interval": {
|
|
||||||
"type": "integer",
|
|
||||||
"default": 600
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"service.captive.credentials": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"auth-mode": {
|
|
||||||
"type": "string",
|
|
||||||
"const": "credentials"
|
|
||||||
},
|
|
||||||
"credentials": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"username": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"password": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"service.captive.uam": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"auth-mode": {
|
|
||||||
"type": "string",
|
|
||||||
"const": "uam"
|
|
||||||
},
|
|
||||||
"uam-port": {
|
|
||||||
"type": "integer",
|
|
||||||
"maximum": 65535,
|
|
||||||
"minimum": 1024,
|
|
||||||
"default": 3990
|
|
||||||
},
|
|
||||||
"uam-secret": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"uam-server": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"nasid": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"nasmac": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"auth-server": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uc-host",
|
|
||||||
"examples": [
|
|
||||||
"192.168.1.10"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"auth-port": {
|
|
||||||
"type": "integer",
|
|
||||||
"maximum": 65535,
|
|
||||||
"minimum": 1024,
|
|
||||||
"default": 1812
|
|
||||||
},
|
|
||||||
"auth-secret": {
|
|
||||||
"type": "string",
|
|
||||||
"examples": [
|
|
||||||
"secret"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"acct-server": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uc-host",
|
|
||||||
"examples": [
|
|
||||||
"192.168.1.10"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"acct-port": {
|
|
||||||
"type": "integer",
|
|
||||||
"maximum": 65535,
|
|
||||||
"minimum": 1024,
|
|
||||||
"default": 1812
|
|
||||||
},
|
|
||||||
"acct-secret": {
|
|
||||||
"type": "string",
|
|
||||||
"examples": [
|
|
||||||
"secret"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"acct-interval": {
|
|
||||||
"type": "integer",
|
|
||||||
"default": 600
|
|
||||||
},
|
|
||||||
"ssid": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"mac-format": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": [
|
|
||||||
"aabbccddeeff",
|
|
||||||
"aa-bb-cc-dd-ee-ff",
|
|
||||||
"aa:bb:cc:dd:ee:ff",
|
|
||||||
"AABBCCDDEEFF",
|
|
||||||
"AA:BB:CC:DD:EE:FF",
|
|
||||||
"AA-BB-CC-DD-EE-FF"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"final-redirect-url": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": [
|
|
||||||
"default",
|
|
||||||
"uam"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"mac-auth": {
|
|
||||||
"type": "boolean",
|
|
||||||
"default": "default"
|
|
||||||
},
|
|
||||||
"radius-gw-proxy": {
|
|
||||||
"type": "boolean",
|
|
||||||
"default": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"service.captive": {
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"oneOf": [
|
|
||||||
{
|
|
||||||
"$ref": "#/$defs/service.captive.click"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$ref": "#/$defs/service.captive.radius"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$ref": "#/$defs/service.captive.credentials"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$ref": "#/$defs/service.captive.uam"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"walled-garden-fqdn": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"walled-garden-ipaddr": {
|
|
||||||
"type": "array",
|
|
||||||
"items": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uc-ip"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"web-root": {
|
|
||||||
"type": "string",
|
|
||||||
"format": "uc-base64"
|
|
||||||
},
|
|
||||||
"idle-timeout": {
|
|
||||||
"type": "integer",
|
|
||||||
"default": 600
|
|
||||||
},
|
|
||||||
"session-timeout": {
|
|
||||||
"type": "integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"service.gps": {
|
"service.gps": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -2941,6 +2988,32 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"service.dhcp-relay": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"select-ports": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"vlans": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"vlan": {
|
||||||
|
"type": "number"
|
||||||
|
},
|
||||||
|
"relay-server": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uc-ip"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"service": {
|
"service": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -3000,6 +3073,9 @@ static std::string DefaultUCentralSchema = R"foo(
|
|||||||
},
|
},
|
||||||
"gps": {
|
"gps": {
|
||||||
"$ref": "#/$defs/service.gps"
|
"$ref": "#/$defs/service.gps"
|
||||||
|
},
|
||||||
|
"dhcp-relay": {
|
||||||
|
"$ref": "#/$defs/service.dhcp-relay"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -24,50 +24,63 @@ namespace OpenWifi {
|
|||||||
Server, TransactionId, Internal) {}
|
Server, TransactionId, Internal) {}
|
||||||
static auto PathName() { return std::list<std::string>{"/api/v1/system"}; }
|
static auto PathName() { return std::list<std::string>{"/api/v1/system"}; }
|
||||||
|
|
||||||
inline void DoGet() {
|
inline void DoGet() final {
|
||||||
std::string Arg;
|
std::string Arg;
|
||||||
if (HasParameter("command", Arg) && Arg == "info") {
|
if (HasParameter("command", Arg)) {
|
||||||
Poco::JSON::Object Answer;
|
if (Arg == "info") {
|
||||||
Answer.set(RESTAPI::Protocol::VERSION, MicroServiceVersion());
|
Poco::JSON::Object Answer;
|
||||||
Answer.set(RESTAPI::Protocol::UPTIME, MicroServiceUptimeTotalSeconds());
|
Answer.set(RESTAPI::Protocol::VERSION, MicroServiceVersion());
|
||||||
Answer.set(RESTAPI::Protocol::START, MicroServiceStartTimeEpochTime());
|
Answer.set(RESTAPI::Protocol::UPTIME, MicroServiceUptimeTotalSeconds());
|
||||||
Answer.set(RESTAPI::Protocol::OS, Poco::Environment::osName());
|
Answer.set(RESTAPI::Protocol::START, MicroServiceStartTimeEpochTime());
|
||||||
Answer.set(RESTAPI::Protocol::PROCESSORS, Poco::Environment::processorCount());
|
Answer.set(RESTAPI::Protocol::OS, Poco::Environment::osName());
|
||||||
Answer.set(RESTAPI::Protocol::HOSTNAME, Poco::Environment::nodeName());
|
Answer.set(RESTAPI::Protocol::PROCESSORS, Poco::Environment::processorCount());
|
||||||
Answer.set(RESTAPI::Protocol::UI, MicroServiceGetUIURI());
|
Answer.set(RESTAPI::Protocol::HOSTNAME, Poco::Environment::nodeName());
|
||||||
|
Answer.set(RESTAPI::Protocol::UI, MicroServiceGetUIURI());
|
||||||
|
|
||||||
Poco::JSON::Array Certificates;
|
Poco::JSON::Array Certificates;
|
||||||
auto SubSystems = MicroServiceGetFullSubSystems();
|
auto SubSystems = MicroServiceGetFullSubSystems();
|
||||||
std::set<std::string> CertNames;
|
std::set<std::string> CertNames;
|
||||||
|
|
||||||
for (const auto &i : SubSystems) {
|
for (const auto &i : SubSystems) {
|
||||||
auto Hosts = i->HostSize();
|
auto Hosts = i->HostSize();
|
||||||
for (uint64_t j = 0; j < Hosts; ++j) {
|
for (uint64_t j = 0; j < Hosts; ++j) {
|
||||||
auto CertFileName = i->Host(j).CertFile();
|
auto CertFileName = i->Host(j).CertFile();
|
||||||
if (!CertFileName.empty()) {
|
if (!CertFileName.empty()) {
|
||||||
Poco::File F1(CertFileName);
|
Poco::File F1(CertFileName);
|
||||||
if (F1.exists()) {
|
if (F1.exists()) {
|
||||||
auto InsertResult = CertNames.insert(CertFileName);
|
auto InsertResult = CertNames.insert(CertFileName);
|
||||||
if (InsertResult.second) {
|
if (InsertResult.second) {
|
||||||
Poco::JSON::Object Inner;
|
Poco::JSON::Object Inner;
|
||||||
Poco::Path F(CertFileName);
|
Poco::Path F(CertFileName);
|
||||||
Inner.set("filename", F.getFileName());
|
Inner.set("filename", F.getFileName());
|
||||||
Poco::Crypto::X509Certificate C(CertFileName);
|
Poco::Crypto::X509Certificate C(CertFileName);
|
||||||
auto ExpiresOn = C.expiresOn();
|
auto ExpiresOn = C.expiresOn();
|
||||||
Inner.set("expiresOn", ExpiresOn.timestamp().epochTime());
|
Inner.set("expiresOn", ExpiresOn.timestamp().epochTime());
|
||||||
Certificates.add(Inner);
|
Certificates.add(Inner);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Answer.set("certificates", Certificates);
|
||||||
|
return ReturnObject(Answer);
|
||||||
|
}
|
||||||
|
if (Arg == "extraConfiguration") {
|
||||||
|
Poco::JSON::Object Answer;
|
||||||
|
MicroServiceGetExtraConfiguration(Answer);
|
||||||
|
return ReturnObject(Answer);
|
||||||
|
}
|
||||||
|
if (Arg == "resources") {
|
||||||
|
Poco::JSON::Object Answer;
|
||||||
|
Answer.set("numberOfFileDescriptors", Utils::get_open_fds());
|
||||||
|
std::uint64_t currRealMem, peakRealMem, currVirtMem, peakVirtMem;
|
||||||
|
Utils::getMemory(currRealMem, peakRealMem, currVirtMem, peakVirtMem);
|
||||||
|
Answer.set("currRealMem", currRealMem);
|
||||||
|
Answer.set("peakRealMem", peakRealMem);
|
||||||
|
Answer.set("currVirtMem", currVirtMem);
|
||||||
|
Answer.set("peakVirtMem", peakVirtMem);
|
||||||
|
return ReturnObject(Answer);
|
||||||
}
|
}
|
||||||
Answer.set("certificates", Certificates);
|
|
||||||
return ReturnObject(Answer);
|
|
||||||
}
|
|
||||||
if (GetBoolParameter("extraConfiguration")) {
|
|
||||||
Poco::JSON::Object Answer;
|
|
||||||
MicroServiceGetExtraConfiguration(Answer);
|
|
||||||
return ReturnObject(Answer);
|
|
||||||
}
|
}
|
||||||
BadRequest(RESTAPI::Errors::InvalidCommand);
|
BadRequest(RESTAPI::Errors::InvalidCommand);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -401,6 +401,9 @@ namespace OpenWifi::RESTAPI::Errors {
|
|||||||
1171, "Command not supported on simulated device."
|
1171, "Command not supported on simulated device."
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static const struct msg DefFirmwareNameExists { 1172, "Firmware name already exists." };
|
||||||
|
|
||||||
static const struct msg SimulationDoesNotExist {
|
static const struct msg SimulationDoesNotExist {
|
||||||
7000, "Simulation Instance ID does not exist."
|
7000, "Simulation Instance ID does not exist."
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
#include "Poco/Base64Decoder.h"
|
#include "Poco/Base64Decoder.h"
|
||||||
#include "Poco/Base64Encoder.h"
|
#include "Poco/Base64Encoder.h"
|
||||||
#include "Poco/File.h"
|
#include "Poco/File.h"
|
||||||
@@ -181,4 +183,67 @@ namespace OpenWifi::Utils {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline std::uint64_t GetValue(FILE *file) {
|
||||||
|
unsigned long v=0;
|
||||||
|
char factor[32];
|
||||||
|
if(fscanf(file, " %lu %31s", &v, factor)==2) {
|
||||||
|
switch (factor[0]) {
|
||||||
|
case 'k':
|
||||||
|
return v * 1000;
|
||||||
|
case 'M':
|
||||||
|
return v * 1000000;
|
||||||
|
case 'G':
|
||||||
|
return v * 1000000000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline bool getMemory(
|
||||||
|
std::uint64_t &currRealMem, std::uint64_t &peakRealMem,
|
||||||
|
std::uint64_t &currVirtMem, std::uint64_t &peakVirtMem) {
|
||||||
|
|
||||||
|
// stores each word in status file
|
||||||
|
char buffer[1024] = "";
|
||||||
|
|
||||||
|
currRealMem = peakRealMem = currVirtMem = peakVirtMem = 0;
|
||||||
|
|
||||||
|
// linux file contains this-process info
|
||||||
|
FILE * file = std::fopen("/proc/self/status", "r");
|
||||||
|
if (file == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// read the entire file, recording mems in kB
|
||||||
|
while (fscanf(file, " %1023s", buffer) == 1) {
|
||||||
|
|
||||||
|
if (strcmp(buffer, "VmRSS:") == 0) {
|
||||||
|
currRealMem= GetValue(file);
|
||||||
|
} else if (strcmp(buffer, "VmHWM:") == 0) {
|
||||||
|
peakRealMem= GetValue(file);
|
||||||
|
} else if (strcmp(buffer, "VmSize:") == 0) {
|
||||||
|
currVirtMem= GetValue(file);
|
||||||
|
} else if (strcmp(buffer, "VmPeak:") == 0) {
|
||||||
|
peakVirtMem= GetValue(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(file);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline int get_open_fds() {
|
||||||
|
DIR *dp = opendir("/proc/self/fd");
|
||||||
|
struct dirent *de;
|
||||||
|
int count = -3; // '.', '..', dp
|
||||||
|
|
||||||
|
if (dp == nullptr)
|
||||||
|
return -1;
|
||||||
|
while ((de = readdir(dp)) != nullptr)
|
||||||
|
count++;
|
||||||
|
(void)closedir(dp);
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace OpenWifi::Utils
|
} // namespace OpenWifi::Utils
|
||||||
|
|||||||
Reference in New Issue
Block a user