This commit is contained in:
Mateusz Gruszczyński committed 2026-10-08 15:59:37 +02:00
1 parent 65e082b9d1
commit 76cb4acef0
72 files changed
+6134 -4709

No files matched your search

+70 -3
View File
@@ -2,7 +2,7 @@
"openapi": "3.0.3",
"info": {
"title": "RustProxy Administration API",
"version": "0.28.2",
"version": "0.29.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": [
@@ -375,6 +375,43 @@
},
"source": {
"$ref": "#/components/schemas/Source"
},
"redirect": {
"type": "object",
"nullable": true,
"additionalProperties": false,
"properties": {
"status": {
"type": "integer",
"enum": [
301,
302,
303,
307,
308
],
"default": 302
},
"target": {
"type": "string",
"maxLength": 2048,
"description": "Absolute HTTP(S) redirect target. Capture references are allowed only in path/query."
},
"rewrite_pattern": {
"type": "string",
"maxLength": 1024,
"nullable": true,
"description": "Optional Rust regex applied to the matched request path before expanding captures in target."
},
"preserve_query": {
"type": "boolean",
"default": true
}
},
"required": [
"target"
],
"description": "Backend-less client redirect for this location."
}
},
"additionalProperties": false,
@@ -395,6 +432,15 @@
"type": "boolean",
"description": "Redirect cleartext requests for this vhost to the selected HTTPS listener using HTTP 308."
},
"www_redirect": {
"type": "boolean",
"default": false,
"description": "Claim the direct www/non-www companion of the selected exact DNS hostname and redirect it permanently to that hostname."
},
"www_redirect_target": {
"type": ["string", "null"],
"description": "An exact hostname from frontend.hosts to use as the canonical redirect destination. Null uses the first hostname for compatibility. Other hostnames continue serving the same vhost without redirects."
},
"forward_client_ip": {
"type": "boolean",
"default": true,
@@ -446,7 +492,27 @@
},
"cache": {
"type": "object",
"properties": {},
"properties": {
"unsafe_force": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean",
"default": false
},
"targets": {
"type": "array",
"maxItems": 32,
"items": {
"type": "string",
"maxLength": 2048
}
}
},
"description": "Dangerous per-vhost-only request-side forced-cache target prefixes. Response privacy exclusions remain authoritative."
}
},
"additionalProperties": true
},
"load_balancing": {
@@ -2889,7 +2955,8 @@
},
"host": {
"type": "string",
"nullable": true
"nullable": true,
"description": "Optional HTTP Host override. When null for an HTTP vhost probe, RustProxy uses the first exact vhost DNS hostname; if none exists it falls back to the backend host."
},
"interval_ms": {
"type": "integer",