- Added upstream objects

- Renamed host templates to nginx templates
- Generate upstream templates
- Better nginx error reporting when reloading
- Use tparse for golang test reporting
This commit is contained in:
Jamie Curnow
2023-01-04 15:36:56 +10:00
parent b3ae2f4dbb
commit 5e5f0de0e2
82 changed files with 2209 additions and 294 deletions

View File

@ -64,7 +64,7 @@
"modified_on": 1646279455,
"user_id": 2,
"type": "proxy",
"host_template_id": 1,
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
@ -78,7 +78,6 @@
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"upstream_options": "",
"advanced_config": "",
"is_disabled": false
}

View File

@ -37,7 +37,7 @@
"modified_on": 1646279455,
"user_id": 2,
"type": "proxy",
"host_template_id": 1,
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
@ -51,7 +51,6 @@
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"upstream_options": "",
"advanced_config": "",
"is_disabled": false
}

View File

@ -46,7 +46,7 @@
"modified_on": 1646279455,
"user_id": 2,
"type": "proxy",
"host_template_id": 1,
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
@ -60,7 +60,6 @@
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"upstream_options": "",
"advanced_config": "",
"is_disabled": false
}

View File

@ -33,7 +33,7 @@
"modified_on": 1645700556,
"user_id": 2,
"type": "proxy",
"host_template_id": 1,
"nginx_template_id": 1,
"listen_interface": "",
"domain_names": ["jc21.com"],
"upstream_id": 0,
@ -47,7 +47,6 @@
"hsts_enabled": false,
"hsts_subdomains": false,
"paths": "",
"upstream_options": "",
"advanced_config": "",
"is_disabled": false
}

View File

@ -1,7 +1,7 @@
{
"operationId": "getHostTemplates",
"summary": "Get a list of Host Templates",
"tags": ["Hosts"],
"operationId": "getNginxTemplates",
"summary": "Get a list of Nginx Templates",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "query",
@ -40,7 +40,7 @@
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostTemplateList"
"$ref": "#/components/schemas/NginxTemplateList"
}
}
},
@ -64,7 +64,7 @@
"modified_on": 1646218093,
"user_id": 1,
"name": "Default Proxy Template",
"host_type": "proxy",
"type": "proxy",
"template": "# this is a proxy template"
}
]

View File

@ -1,13 +1,13 @@
{
"operationId": "createHost",
"summary": "Create a new Host",
"tags": ["Hosts"],
"operationId": "createNginxTemplate",
"summary": "Create a new Nginx Template",
"tags": ["Nginx Templates"],
"requestBody": {
"description": "Host to Create",
"description": "Template to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateHostTemplate}}"
"schema": "{{schema.CreateNginxTemplate}}"
}
}
},
@ -20,7 +20,7 @@
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostTemplateObject"
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
@ -33,7 +33,7 @@
"modified_on": 1646218093,
"user_id": 1,
"name": "My proxy template",
"host_type": "proxy",
"type": "proxy",
"template": "# this is a proxy template"
}
}

View File

@ -1,17 +1,17 @@
{
"operationId": "deleteHostTemplate",
"summary": "Delete a Host Template",
"tags": ["Host Templates"],
"operationId": "deleteNginxTemplate",
"summary": "Delete a Nginx Template",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "path",
"name": "hostTemplateID",
"name": "templateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the Host Template",
"description": "Numeric ID of the Template",
"example": 1
}
],
@ -46,7 +46,7 @@
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a host template that is in use!"
"message": "You cannot delete a template that is in use!"
}
}
}

View File

@ -1,11 +1,11 @@
{
"operationId": "getHostTemplate",
"summary": "Get a Host Template object by ID",
"tags": ["Hosts"],
"operationId": "getNginxTemplate",
"summary": "Get a Nginx Template object by ID",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "path",
"name": "hostTemplateID",
"name": "templateID",
"schema": {
"type": "integer",
"minimum": 1
@ -24,7 +24,7 @@
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostTemplateObject"
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
@ -36,8 +36,8 @@
"created_on": 1646218093,
"modified_on": 1646218093,
"user_id": 1,
"name": "Default Host Template",
"host_type": "proxy",
"name": "Default Proxy Template",
"type": "proxy",
"template": "# this is a proxy template"
}
}

View File

@ -1,26 +1,26 @@
{
"operationId": "updateHostTemplate",
"summary": "Update an existing Host Template",
"tags": ["Hosts"],
"operationId": "updateNginxTemplate",
"summary": "Update an existing Nginx Template",
"tags": ["Nginx Templates"],
"parameters": [
{
"in": "path",
"name": "hostTemplateID",
"name": "templateID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Host Template",
"description": "ID of the Template",
"example": 1
}
],
"requestBody": {
"description": "Host Template details to update",
"description": "Template details to update",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.UpdateHostTemplate}}"
"schema": "{{schema.UpdateNginxTemplate}}"
}
}
},
@ -33,7 +33,7 @@
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/HostTemplateObject"
"$ref": "#/components/schemas/NginxTemplateObject"
}
}
},
@ -46,7 +46,7 @@
"modified_on": 1646218093,
"user_id": 1,
"name": "My renamed proxy template",
"host_type": "proxy",
"type": "proxy",
"template": "# this is a proxy template"
}
}

View File

@ -1,11 +1,9 @@
{
"operationId": "createStream",
"summary": "Create a new Stream",
"tags": [
"Streams"
],
"tags": ["Streams"],
"requestBody": {
"description": "Host to Create",
"description": "Stream to Create",
"required": true,
"content": {
"application/json": {
@ -19,9 +17,7 @@
"content": {
"application/json": {
"schema": {
"required": [
"result"
],
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/StreamObject"
@ -39,4 +35,4 @@
}
}
}
}
}

View File

@ -0,0 +1,285 @@
{
"operationId": "getUpstreams",
"summary": "Get a list of Upstreams",
"tags": ["Upstreams"],
"parameters": [
{
"in": "query",
"name": "offset",
"schema": {
"type": "number"
},
"description": "The pagination row offset, default 0",
"example": 0
},
{
"in": "query",
"name": "limit",
"schema": {
"type": "number"
},
"description": "The pagination row limit, default 10",
"example": 10
},
{
"in": "query",
"name": "sort",
"schema": {
"type": "string"
},
"description": "The sorting of the list",
"example": "id,name.asc,value.desc"
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamList"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"total": 5,
"offset": 0,
"limit": 10,
"sort": [
{
"field": "name",
"direction": "ASC"
}
],
"items": [
{
"id": 1,
"created_on": 1672804124,
"modified_on": 1672804124,
"user_id": 2,
"name": "API servers",
"nginx_template_id": 5,
"ip_hash": true,
"ntlm": false,
"keepalive": 10,
"keepalive_requests": 10,
"keepalive_time": "60s",
"keepalive_timeout": "3s",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 1,
"created_on": 1672804124,
"modified_on": 1672804124,
"upstream_group_id": 1,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 2,
"created_on": 1672804124,
"modified_on": 1672804124,
"upstream_group_id": 1,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 2,
"created_on": 1672804197,
"modified_on": 1672804197,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 3,
"created_on": 1672804197,
"modified_on": 1672804197,
"upstream_group_id": 2,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 4,
"created_on": 1672804197,
"modified_on": 1672804197,
"upstream_group_id": 2,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 3,
"created_on": 1672804200,
"modified_on": 1672804200,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 5,
"created_on": 1672804200,
"modified_on": 1672804200,
"upstream_group_id": 3,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 6,
"created_on": 1672804200,
"modified_on": 1672804200,
"upstream_group_id": 3,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 4,
"created_on": 1672804201,
"modified_on": 1672804201,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 7,
"created_on": 1672804201,
"modified_on": 1672804201,
"upstream_group_id": 4,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 8,
"created_on": 1672804201,
"modified_on": 1672804201,
"upstream_group_id": 4,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
},
{
"id": 5,
"created_on": 1672804201,
"modified_on": 1672804201,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ok",
"error_message": "",
"servers": [
{
"id": 9,
"created_on": 1672804201,
"modified_on": 1672804201,
"upstream_group_id": 5,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 10,
"created_on": 1672804201,
"modified_on": 1672804201,
"upstream_group_id": 5,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,80 @@
{
"operationId": "createUpstream",
"summary": "Create a new Upstream",
"tags": ["Upstreams"],
"requestBody": {
"description": "Upstream to Create",
"required": true,
"content": {
"application/json": {
"schema": "{{schema.CreateUpstream}}"
}
}
},
"responses": {
"201": {
"description": "201 response",
"content": {
"application/json": {
"schema": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 6,
"created_on": 1672806857,
"modified_on": 1672806857,
"user_id": 2,
"name": "API servers 2",
"nginx_template_id": 5,
"ip_hash": false,
"ntlm": false,
"keepalive": 0,
"keepalive_requests": 0,
"keepalive_time": "",
"keepalive_timeout": "",
"advanced_config": "",
"status": "ready",
"error_message": "",
"servers": [
{
"id": 11,
"created_on": 1672806857,
"modified_on": 1672806857,
"upstream_id": 6,
"server": "192.168.0.10:80",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 12,
"created_on": 1672806857,
"modified_on": 1672806857,
"upstream_id": 6,
"server": "192.168.0.11:80",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
}
]
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,58 @@
{
"operationId": "deleteUpstream",
"summary": "Delete a Upstream",
"tags": ["Upstreams"],
"parameters": [
{
"in": "path",
"name": "upstreamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "Numeric ID of the Upstream",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": true
}
}
}
}
}
},
"400": {
"description": "400 response",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeletedItemResponse"
},
"examples": {
"default": {
"value": {
"result": null,
"error": {
"code": 400,
"message": "You cannot delete a Upstream that is in use!"
}
}
}
}
}
}
}
}
}

View File

@ -0,0 +1,81 @@
{
"operationId": "getUpstream",
"summary": "Get a Upstream object by ID",
"tags": ["Upstreams"],
"parameters": [
{
"in": "path",
"name": "upstreamID",
"schema": {
"type": "integer",
"minimum": 1
},
"required": true,
"description": "ID of the Upstream",
"example": 1
}
],
"responses": {
"200": {
"description": "200 response",
"content": {
"application/json": {
"schema": {
"required": ["result"],
"properties": {
"result": {
"$ref": "#/components/schemas/UpstreamObject"
}
}
},
"examples": {
"default": {
"value": {
"result": {
"id": 1,
"created_on": 1672786008,
"modified_on": 1672786008,
"user_id": 2,
"name": "API servers 3",
"ip_hash": true,
"ntlm": false,
"keepalive": 10,
"keepalive_requests": 10,
"keepalive_time": "60s",
"keepalive_timeout": "3s",
"advanced_config": "",
"servers": [
{
"id": 1,
"created_on": 1672786009,
"modified_on": 1672786009,
"upstream_id": 1,
"server": "api1.localhost:1234",
"weight": 100,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": false
},
{
"id": 2,
"created_on": 1672786009,
"modified_on": 1672786009,
"upstream_id": 1,
"server": "api2.localhost:1234",
"weight": 50,
"max_conns": 0,
"max_fails": 0,
"fail_timeout": 0,
"backup": true
}
]
}
}
}
}
}
}
}
}
}