platform: modularize api/gui, add docs-tests-web foundation, and refresh root config
This commit is contained in:
252
docs/phase-e/E5_SINGBOX_PROTOCOLS_MANIFEST.example.json
Normal file
252
docs/phase-e/E5_SINGBOX_PROTOCOLS_MANIFEST.example.json
Normal file
@@ -0,0 +1,252 @@
|
||||
{
|
||||
"matrix_version": "2026-03-08",
|
||||
"singbox_version_target": ">=1.12.0",
|
||||
"schema": "e5.singbox.protocol.matrix.v1",
|
||||
"protocols": [
|
||||
{
|
||||
"id": "vless",
|
||||
"mode": "typed+raw",
|
||||
"fields": [
|
||||
{
|
||||
"path": "outbound.server",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.server_port",
|
||||
"type": "int",
|
||||
"required": true,
|
||||
"ui_level": "mvp",
|
||||
"constraints": {
|
||||
"min": 1,
|
||||
"max": 65535
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "outbound.uuid",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.flow",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.tls.reality.public_key",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
}
|
||||
],
|
||||
"guardrails": [
|
||||
{
|
||||
"id": "VLESS-001",
|
||||
"condition": "outbound.tls.reality.enabled == true",
|
||||
"constraint": "outbound.tls.enabled == true",
|
||||
"level": "block"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "trojan",
|
||||
"mode": "typed+raw",
|
||||
"fields": [
|
||||
{
|
||||
"path": "outbound.server",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.server_port",
|
||||
"type": "int",
|
||||
"required": true,
|
||||
"ui_level": "mvp",
|
||||
"constraints": {
|
||||
"min": 1,
|
||||
"max": 65535
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "outbound.password",
|
||||
"type": "secret",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.tls.server_name",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "shadowsocks",
|
||||
"mode": "typed+raw",
|
||||
"fields": [
|
||||
{
|
||||
"path": "outbound.server",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.server_port",
|
||||
"type": "int",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.method",
|
||||
"type": "enum",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.password",
|
||||
"type": "secret",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.plugin",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "advanced"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "wireguard",
|
||||
"mode": "typed+raw",
|
||||
"fields": [
|
||||
{
|
||||
"path": "outbound.server",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.server_port",
|
||||
"type": "int",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.local_address",
|
||||
"type": "array[string]",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.private_key",
|
||||
"type": "secret",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.peer_public_key",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.peers",
|
||||
"type": "array[object]",
|
||||
"required": false,
|
||||
"ui_level": "advanced"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "hysteria2",
|
||||
"mode": "typed+raw",
|
||||
"fields": [
|
||||
{
|
||||
"path": "outbound.server",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.server_port",
|
||||
"type": "int",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.password",
|
||||
"type": "secret",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.up_mbps",
|
||||
"type": "int",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.down_mbps",
|
||||
"type": "int",
|
||||
"required": false,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.obfs",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "advanced"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "tuic",
|
||||
"mode": "typed+raw",
|
||||
"fields": [
|
||||
{
|
||||
"path": "outbound.server",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.server_port",
|
||||
"type": "int",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.uuid",
|
||||
"type": "string",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.password",
|
||||
"type": "secret",
|
||||
"required": true,
|
||||
"ui_level": "mvp"
|
||||
},
|
||||
{
|
||||
"path": "outbound.congestion_control",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "advanced"
|
||||
},
|
||||
{
|
||||
"path": "outbound.udp_relay_mode",
|
||||
"type": "string",
|
||||
"required": false,
|
||||
"ui_level": "advanced"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user