v0.32.0
This commit is contained in:
1 parent
d23fa5e154
commit
81ab39e70a
51 files changed
+5352
-1489
No files matched your search
+270
-10
@@ -2,7 +2,7 @@
|
||||
"openapi": "3.0.3",
|
||||
"info": {
|
||||
"title": "RustProxy Administration API",
|
||||
"version": "0.31.9",
|
||||
"version": "0.32.0",
|
||||
"description": "Administration API for the active panel origin. Sign in through the panel; the same-origin HttpOnly cookie authenticates all private operations. Mutations also require the exact Origin, X-RustProxy-Request: 1 and a session-bound X-CSRF-Token. Loopback HTTP is the default; Settings can enable HTTPS before using a non-loopback administration bind. This document contains no live configuration or credentials. Object schemas marked extensible are summaries: full configuration validation is authoritative in Rust."
|
||||
},
|
||||
"servers": [
|
||||
@@ -1521,7 +1521,7 @@
|
||||
},
|
||||
"upstream": {
|
||||
"type": "string",
|
||||
"description": "Single raw upstream as IP:port."
|
||||
"description": "Legacy single TCP/UDP upstream (IP:port); used only when backends is empty. An omitted field gets the legacy model default."
|
||||
},
|
||||
"connect_timeout_seconds": {
|
||||
"type": "integer",
|
||||
@@ -1537,13 +1537,34 @@
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 65535
|
||||
},
|
||||
"backends": {
|
||||
"type": "array",
|
||||
"maxItems": 32,
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/StreamBackend"
|
||||
},
|
||||
"description": "Optional backend pool. Empty retains legacy upstream as primary."
|
||||
},
|
||||
"balance": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"round_robin",
|
||||
"least_connections",
|
||||
"least_sessions"
|
||||
],
|
||||
"default": "round_robin"
|
||||
},
|
||||
"metrics_enabled": {
|
||||
"type": "boolean",
|
||||
"nullable": true,
|
||||
"description": "Optional default for per-backend detailed accounting. Null defaults off; basic Stream counters remain active and Prometheus include_streams remains authoritative."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"protocol",
|
||||
"listen",
|
||||
"upstream"
|
||||
"listen"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"description": "Layer-4 stream host. It bypasses the HTTP vhost/ACL/cache/header/compression pipeline."
|
||||
@@ -1595,6 +1616,13 @@
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"minimum": 0
|
||||
},
|
||||
"backends": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/StreamBackendMetrics"
|
||||
},
|
||||
"description": "Runtime backend states; detail metrics are null when disabled."
|
||||
}
|
||||
},
|
||||
"additionalProperties": false,
|
||||
@@ -3350,7 +3378,7 @@
|
||||
"dashboard_widgets": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"maxItems": 12,
|
||||
"maxItems": 16,
|
||||
"uniqueItems": true,
|
||||
"items": {
|
||||
"type": "string",
|
||||
@@ -3366,7 +3394,11 @@
|
||||
"http3",
|
||||
"tls",
|
||||
"http_protocol",
|
||||
"websocket_protocol"
|
||||
"websocket_protocol",
|
||||
"stream_overview",
|
||||
"stream_traffic",
|
||||
"stream_sessions",
|
||||
"stream_backend_health"
|
||||
]
|
||||
},
|
||||
"default": [
|
||||
@@ -3381,13 +3413,17 @@
|
||||
"http3",
|
||||
"tls",
|
||||
"http_protocol",
|
||||
"websocket_protocol"
|
||||
"websocket_protocol",
|
||||
"stream_overview",
|
||||
"stream_traffic",
|
||||
"stream_sessions",
|
||||
"stream_backend_health"
|
||||
],
|
||||
"description": "Account-scoped order for configurable Overview telemetry cards."
|
||||
},
|
||||
"dashboard_hidden_widgets": {
|
||||
"type": "array",
|
||||
"maxItems": 12,
|
||||
"maxItems": 16,
|
||||
"uniqueItems": true,
|
||||
"items": {
|
||||
"type": "string",
|
||||
@@ -3403,10 +3439,19 @@
|
||||
"http3",
|
||||
"tls",
|
||||
"http_protocol",
|
||||
"websocket_protocol"
|
||||
"websocket_protocol",
|
||||
"stream_overview",
|
||||
"stream_traffic",
|
||||
"stream_sessions",
|
||||
"stream_backend_health"
|
||||
]
|
||||
},
|
||||
"default": [],
|
||||
"default": [
|
||||
"stream_overview",
|
||||
"stream_traffic",
|
||||
"stream_sessions",
|
||||
"stream_backend_health"
|
||||
],
|
||||
"description": "Account-scoped Overview telemetry cards hidden from the dashboard."
|
||||
},
|
||||
"backend_table_columns": {
|
||||
@@ -6116,6 +6161,221 @@
|
||||
"credential",
|
||||
"token"
|
||||
]
|
||||
},
|
||||
"StreamBackend": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": [
|
||||
"id",
|
||||
"address"
|
||||
],
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string",
|
||||
"pattern": "^[A-Za-z0-9_-]{1,64}$"
|
||||
},
|
||||
"name": {
|
||||
"type": "string",
|
||||
"maxLength": 96
|
||||
},
|
||||
"address": {
|
||||
"type": "string",
|
||||
"description": "Concrete upstream IP:port"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"drain": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"weight": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 16,
|
||||
"default": 1
|
||||
},
|
||||
"max_sessions": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 1,
|
||||
"maximum": 65535
|
||||
},
|
||||
"health": {
|
||||
"$ref": "#/components/schemas/StreamHealthCheck"
|
||||
},
|
||||
"metrics_enabled": {
|
||||
"type": "boolean",
|
||||
"nullable": true,
|
||||
"description": "Optional detailed backend metrics. Null inherits Stream metrics_enabled (off when unset); an explicit boolean overrides it."
|
||||
}
|
||||
}
|
||||
},
|
||||
"StreamHealthCheck": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"mode": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"off",
|
||||
"tcp_connect",
|
||||
"udp_probe"
|
||||
],
|
||||
"default": "off"
|
||||
},
|
||||
"interval_seconds": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 3600,
|
||||
"default": 10
|
||||
},
|
||||
"timeout_ms": {
|
||||
"type": "integer",
|
||||
"minimum": 50,
|
||||
"maximum": 30000,
|
||||
"default": 1000
|
||||
},
|
||||
"rise": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 10,
|
||||
"default": 2
|
||||
},
|
||||
"fall": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 10,
|
||||
"default": 2
|
||||
},
|
||||
"payload_hex": {
|
||||
"type": "string",
|
||||
"maxLength": 256,
|
||||
"description": "At most 128 bytes; sent only when exact reply expected"
|
||||
},
|
||||
"expect_hex": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"maxLength": 256,
|
||||
"description": "Exact response; without it, UDP stays Unverified and no probe is sent"
|
||||
}
|
||||
}
|
||||
},
|
||||
"StreamBackendMetrics": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"address": {
|
||||
"type": "string"
|
||||
},
|
||||
"enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"drain": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"detail_enabled": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"unverified",
|
||||
"checking",
|
||||
"healthy",
|
||||
"unhealthy",
|
||||
"disabled"
|
||||
]
|
||||
},
|
||||
"active": {
|
||||
"type": "integer",
|
||||
"minimum": 0
|
||||
},
|
||||
"sessions_total": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"sessions_completed": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"assignments": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"rejected": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"errors": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"bytes_in": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"bytes_out": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"packets_in": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"packets_out": {
|
||||
"type": "integer",
|
||||
"nullable": true,
|
||||
"minimum": 0
|
||||
},
|
||||
"health": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"last_checked_unix_ms": {
|
||||
"type": "integer",
|
||||
"nullable": true
|
||||
},
|
||||
"latency_ms": {
|
||||
"type": "integer",
|
||||
"nullable": true
|
||||
},
|
||||
"last_error": {
|
||||
"type": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"successful": {
|
||||
"type": "integer"
|
||||
},
|
||||
"failed": {
|
||||
"type": "integer"
|
||||
},
|
||||
"last_result": {
|
||||
"type": "string",
|
||||
"nullable": true,
|
||||
"enum": [
|
||||
"success",
|
||||
"failure"
|
||||
],
|
||||
"description": "Most recent active probe outcome, null if no probe has completed."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user