feat(clients): bind host rules to individual clients in subscriptions (#6620)

Host rules applied per inbound only, so every client of an inbound got the same
subscription endpoints (#6618). A client can now be bound to one or more host
rules, and its raw, JSON and Clash subscriptions render only those hosts, in
either subscription order; an unbound client is unchanged. A binding whose hosts
are deleted, disabled or excluded from the format fails closed: the client gets
no links there but stays in traffic accounting. Host edits keep row ids, so
bindings survive them; nil leaves a stored binding alone and an empty list
clears it.
This commit is contained in:
Nethmina Yasas
2026-10-24 16:03:02 +05:30
committed by GitHub
parent d103c0c012
commit bc1b750e00
47 changed files with 1940 additions and 168 deletions
+21
View File
@@ -1704,6 +1704,17 @@ export const SCHEMAS: Record<string, unknown> = {
"description": "Auth password (Hysteria)",
"type": "string"
},
"clientHostRuleIds": {
"description": "ClientHostRuleIds binds the client to these host rules, one link each; nil preserves, empty\nclears, and bindings with no usable host leave that inbound out of the subscription.",
"example": [
1,
2
],
"items": {
"type": "integer"
},
"type": "array"
},
"comment": {
"description": "Client comment",
"type": "string"
@@ -1941,6 +1952,16 @@ export const SCHEMAS: Record<string, unknown> = {
"auth": {
"type": "string"
},
"clientHostRuleIds": {
"example": [
1,
2
],
"items": {
"type": "integer"
},
"type": "array"
},
"comment": {
"type": "string"
},