@black-duty/sing-box-schema 1.13.0 → 1.13.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/dist/index.cjs +189 -222
- package/dist/index.d.cts +6242 -9317
- package/dist/index.d.ts +6242 -9317
- package/dist/index.js +188 -219
- package/package.json +1 -1
- package/schema.json +3052 -2709
- package/schema.zh.json +3053 -2710
package/dist/index.js
CHANGED
|
@@ -39,10 +39,11 @@ const CertificateOptions = z.object({
|
|
|
39
39
|
store: z.enum([
|
|
40
40
|
"system",
|
|
41
41
|
"mozilla",
|
|
42
|
+
"chrome",
|
|
42
43
|
"none"
|
|
43
44
|
]).optional().meta({
|
|
44
|
-
description: "The default X509 trusted CA certificate list. Options: `system` (System trusted CA certificates), `mozilla` (Mozilla Included List with China CA certificates removed), `none` (Empty list).",
|
|
45
|
-
description_zh: "默认的 X509 受信任 CA 证书列表。可选项:`system`(系统受信任的 CA 证书)、`mozilla`(移除中国 CA 证书的 Mozilla 包含列表)、`none`(空列表)。"
|
|
45
|
+
description: "The default X509 trusted CA certificate list. Options: `system` (System trusted CA certificates), `mozilla` (Mozilla Included List with China CA certificates removed), `chrome` (Chrome Root Store with China CA certificates removed), `none` (Empty list).",
|
|
46
|
+
description_zh: "默认的 X509 受信任 CA 证书列表。可选项:`system`(系统受信任的 CA 证书)、`mozilla`(移除中国 CA 证书的 Mozilla 包含列表)、`chrome`(移除中国 CA 证书的 Chrome Root Store)、`none`(空列表)。"
|
|
46
47
|
}),
|
|
47
48
|
certificate: listableString.optional().meta({
|
|
48
49
|
description: "The certificate line array to trust, in PEM format.",
|
|
@@ -100,37 +101,6 @@ const HttpHeader = z.record(z.string(), z.string()).meta({
|
|
|
100
101
|
description: "HTTP headers.",
|
|
101
102
|
description_zh: "HTTP 标头。"
|
|
102
103
|
});
|
|
103
|
-
const InboundOptions = z.object({
|
|
104
|
-
sniff: z.boolean().optional().meta({
|
|
105
|
-
description: "Enable sniffing. Deprecated in sing-box 1.11.0 and removed in 1.13.0.",
|
|
106
|
-
description_zh: "启用协议探测。已在 sing-box 1.11.0 弃用,并将在 1.13.0 移除。",
|
|
107
|
-
deprecated: true
|
|
108
|
-
}),
|
|
109
|
-
sniff_override_destination: z.boolean().optional().meta({
|
|
110
|
-
description: "Override the connection destination address with the sniffed domain. Deprecated in sing-box 1.11.0 and removed in 1.13.0.",
|
|
111
|
-
description_zh: "用探测出的域名覆盖连接目标地址。已在 sing-box 1.11.0 弃用,并将在 1.13.0 移除。",
|
|
112
|
-
deprecated: true
|
|
113
|
-
}),
|
|
114
|
-
sniff_timeout: z.string().optional().meta({
|
|
115
|
-
description: "Timeout for sniffing (default `300ms`). Deprecated in sing-box 1.11.0 and removed in 1.13.0.",
|
|
116
|
-
description_zh: "探测超时时间(默认 `300ms`)。已在 sing-box 1.11.0 弃用,并将在 1.13.0 移除。",
|
|
117
|
-
deprecated: true
|
|
118
|
-
}),
|
|
119
|
-
domain_strategy: DomainStrategy.optional().meta({
|
|
120
|
-
description: "If set, the requested domain name will be resolved to IP before routing. Deprecated in sing-box 1.11.0 and removed in 1.13.0.",
|
|
121
|
-
description_zh: "如果设置,请求的域名将在路由之前解析为 IP。已在 sing-box 1.11.0 弃用,并将在 1.13.0 移除。",
|
|
122
|
-
deprecated: true
|
|
123
|
-
}),
|
|
124
|
-
udp_disable_domain_unmapping: z.boolean().optional().meta({
|
|
125
|
-
description: "If enabled, for UDP proxy requests addressed to a domain, the original packet address will be sent in the response instead of the mapped domain. Deprecated in sing-box 1.11.0 and removed in 1.13.0.",
|
|
126
|
-
description_zh: "如果启用,对于地址为域的 UDP 代理请求,将在响应中发送原始包地址而不是映射的域。已在 sing-box 1.11.0 弃用,并将在 1.13.0 移除。",
|
|
127
|
-
deprecated: true
|
|
128
|
-
}),
|
|
129
|
-
detour: z.string().optional().meta({
|
|
130
|
-
description: "If set, connections will be forwarded to the specified inbound. Requires target inbound support.",
|
|
131
|
-
description_zh: "如果设置,连接将被转发到指定的入站。需要目标入站支持。"
|
|
132
|
-
})
|
|
133
|
-
});
|
|
134
104
|
const ListenOptions = z.object({
|
|
135
105
|
listen: z.string().optional().meta({
|
|
136
106
|
description: "Listen address.",
|
|
@@ -184,6 +154,10 @@ const ListenOptions = z.object({
|
|
|
184
154
|
description: "UDP NAT expiration time. `5m` will be used by default.",
|
|
185
155
|
description_zh: "UDP NAT 过期时间。默认使用 `5m`。"
|
|
186
156
|
}),
|
|
157
|
+
detour: z.string().optional().meta({
|
|
158
|
+
description: "If set, connections will be forwarded to the specified inbound. Requires target inbound support.",
|
|
159
|
+
description_zh: "如果设置,连接将被转发到指定的入站。需要目标入站支持。"
|
|
160
|
+
}),
|
|
187
161
|
proxy_protocol: z.boolean().optional().meta({
|
|
188
162
|
description: "Accept proxy protocol.",
|
|
189
163
|
description_zh: "接受代理协议。",
|
|
@@ -193,8 +167,7 @@ const ListenOptions = z.object({
|
|
|
193
167
|
description: "Accept connections without proxy protocol header.",
|
|
194
168
|
description_zh: "接受没有代理协议头的连接。",
|
|
195
169
|
deprecated: true
|
|
196
|
-
})
|
|
197
|
-
...InboundOptions.shape
|
|
170
|
+
})
|
|
198
171
|
}).meta({
|
|
199
172
|
id: "ListenOptions",
|
|
200
173
|
title: "Listen Options",
|
|
@@ -1033,11 +1006,11 @@ const DNSRouteAction = z.object({
|
|
|
1033
1006
|
description: "Disable cache and save cache in this query.",
|
|
1034
1007
|
description_zh: "在此查询中禁用缓存。"
|
|
1035
1008
|
}),
|
|
1036
|
-
rewrite_ttl: z.number().int().optional().meta({
|
|
1009
|
+
rewrite_ttl: z.number().int().optional().nullable().meta({
|
|
1037
1010
|
description: "Rewrite TTL in DNS responses.",
|
|
1038
1011
|
description_zh: "重写 DNS 回应中的 TTL。"
|
|
1039
1012
|
}),
|
|
1040
|
-
client_subnet: z.string().optional().meta({
|
|
1013
|
+
client_subnet: z.string().optional().nullable().meta({
|
|
1041
1014
|
description: "Append a `edns0-subnet` OPT extra record with the specified IP prefix to every query by default. If the value is an IP address instead of a prefix, `/32` or `/128` will be appended automatically. Will override `dns.client_subnet`.",
|
|
1042
1015
|
description_zh: "默认情况下,将带有指定 IP 前缀的 `edns0-subnet` OPT 附加记录附加到每个查询。如果值是 IP 地址而不是前缀,则会自动附加 `/32` 或 `/128`。将覆盖 `dns.client_subnet`。"
|
|
1043
1016
|
})
|
|
@@ -1077,11 +1050,11 @@ const DNSRouteOptionsAction = z.object({
|
|
|
1077
1050
|
description: "Disable cache and save cache in this query.",
|
|
1078
1051
|
description_zh: "在此查询中禁用缓存。"
|
|
1079
1052
|
}),
|
|
1080
|
-
rewrite_ttl: z.number().int().optional().meta({
|
|
1053
|
+
rewrite_ttl: z.number().int().optional().nullable().meta({
|
|
1081
1054
|
description: "Rewrite TTL in DNS responses.",
|
|
1082
1055
|
description_zh: "重写 DNS 回应中的 TTL。"
|
|
1083
1056
|
}),
|
|
1084
|
-
client_subnet: z.string().optional().meta({
|
|
1057
|
+
client_subnet: z.string().optional().nullable().meta({
|
|
1085
1058
|
description: "Append a `edns0-subnet` OPT extra record with the specified IP prefix to every query by default. If the value is an IP address instead of a prefix, `/32` or `/128` will be appended automatically. Will override `dns.client_subnet`.",
|
|
1086
1059
|
description_zh: "默认情况下,将带有指定 IP 前缀的 `edns0-subnet` OPT 附加记录附加到每个查询。如果值是 IP 地址而不是前缀,则会自动附加 `/32` 或 `/128`。将覆盖 `dns.client_subnet`。"
|
|
1087
1060
|
})
|
|
@@ -1296,6 +1269,11 @@ const BaseDNSRule = z.object({
|
|
|
1296
1269
|
description: "Make `ip_cidr` rule items in rule-sets match the source IP.",
|
|
1297
1270
|
description_zh: "使规则集中的 `ip_cidr` 规则匹配源 IP。"
|
|
1298
1271
|
}),
|
|
1272
|
+
rule_set_ipcidr_match_source: z.boolean().optional().meta({
|
|
1273
|
+
description: "Deprecated in sing-box 1.10.0. `rule_set_ipcidr_match_source` is renamed to `rule_set_ip_cidr_match_source` and will be remove in sing-box 1.11.0. Make `ip_cidr` rule items in rule-sets match the source IP.",
|
|
1274
|
+
description_zh: "已在 sing-box 1.10.0 废弃。`rule_set_ipcidr_match_source` 已重命名为 `rule_set_ip_cidr_match_source` 且将在 sing-box 1.11.0 中被移除。使规则集中的 `ip_cidr` 规则匹配源 IP。",
|
|
1275
|
+
deprecated: true
|
|
1276
|
+
}),
|
|
1299
1277
|
rule_set_ip_cidr_accept_empty: z.boolean().optional().meta({
|
|
1300
1278
|
description: "Make `ip_cidr` rules in rule-sets accept empty query response. Only takes effect for address requests (A/AAAA/HTTPS).",
|
|
1301
1279
|
description_zh: "使规则集中的 `ip_cidr` 规则接受空查询响应。仅对地址请求(A/AAAA/HTTPS)生效。"
|
|
@@ -1316,7 +1294,7 @@ const DefaultDNSRule = z.union([
|
|
|
1316
1294
|
BaseDNSRule.extend(DNSRejectAction.shape),
|
|
1317
1295
|
BaseDNSRule.extend(DNSRouteActionPredefined.shape)
|
|
1318
1296
|
]);
|
|
1319
|
-
const
|
|
1297
|
+
const BaseLogicalDNSRule = z.object({
|
|
1320
1298
|
type: z.literal("logical").meta({
|
|
1321
1299
|
description: "Rule type.",
|
|
1322
1300
|
description_zh: "规则类型。"
|
|
@@ -1335,7 +1313,13 @@ const LogicalDNSRule = z.object({
|
|
|
1335
1313
|
description: "Invert match result.",
|
|
1336
1314
|
description_zh: "反选匹配结果。"
|
|
1337
1315
|
})
|
|
1338
|
-
})
|
|
1316
|
+
});
|
|
1317
|
+
const LogicalDNSRule = z.union([
|
|
1318
|
+
BaseLogicalDNSRule.extend(DNSRouteAction.shape),
|
|
1319
|
+
BaseLogicalDNSRule.extend(DNSRouteOptionsAction.shape),
|
|
1320
|
+
BaseLogicalDNSRule.extend(DNSRejectAction.shape),
|
|
1321
|
+
BaseLogicalDNSRule.extend(DNSRouteActionPredefined.shape)
|
|
1322
|
+
]).meta({
|
|
1339
1323
|
id: "LogicalDNSRule",
|
|
1340
1324
|
title: "Logical DNS Rule",
|
|
1341
1325
|
title_zh: "逻辑 DNS 规则"
|
|
@@ -1420,6 +1404,10 @@ const LegacyDNSServerAddress = z.union([
|
|
|
1420
1404
|
})
|
|
1421
1405
|
]);
|
|
1422
1406
|
const LegacyDNSServerOptions = z.object({
|
|
1407
|
+
type: z.literal("legacy").optional().meta({
|
|
1408
|
+
description: "DNS server type.",
|
|
1409
|
+
description_zh: "DNS 服务器类型。"
|
|
1410
|
+
}),
|
|
1423
1411
|
tag: z.string().meta({
|
|
1424
1412
|
description: "The tag of the dns server.",
|
|
1425
1413
|
description_zh: "DNS 服务器的标签。"
|
|
@@ -1614,6 +1602,10 @@ const HTTP3DNSServerOptions = z.object({
|
|
|
1614
1602
|
description: "The path of the HTTP3 DNS server. `/dns-query` will be used by default.",
|
|
1615
1603
|
description_zh: "HTTP3 DNS 服务器的路径。默认使用 `/dns-query`。"
|
|
1616
1604
|
}),
|
|
1605
|
+
method: z.string().optional().meta({
|
|
1606
|
+
description: "The HTTP method for DNS-over-HTTP/3 requests.",
|
|
1607
|
+
description_zh: "DNS-over-HTTP/3 请求使用的 HTTP 方法。"
|
|
1608
|
+
}),
|
|
1617
1609
|
headers: HttpHeader.optional().meta({
|
|
1618
1610
|
description: "Additional headers to be sent to the DNS server.",
|
|
1619
1611
|
description_zh: "要发送到 DNS 服务器的额外请求头。"
|
|
@@ -1689,7 +1681,7 @@ const ResolvedDNSServerOptions = z.object({
|
|
|
1689
1681
|
title: "Resolved DNS Server",
|
|
1690
1682
|
title_zh: "Resolved DNS 服务器"
|
|
1691
1683
|
});
|
|
1692
|
-
const DNSServer = z.discriminatedUnion("type", [
|
|
1684
|
+
const DNSServer = z.union([z.lazy(() => LegacyDNSServerOptions), z.lazy(() => z.discriminatedUnion("type", [
|
|
1693
1685
|
LocalDNSServerOptions,
|
|
1694
1686
|
HostsDNSServerOptions,
|
|
1695
1687
|
TCPDNSServerOptions,
|
|
@@ -1701,9 +1693,8 @@ const DNSServer = z.discriminatedUnion("type", [
|
|
|
1701
1693
|
DHCPDNSServerOptions,
|
|
1702
1694
|
FakeIPDNSServerOptions,
|
|
1703
1695
|
TailscaleDNSServerOptions,
|
|
1704
|
-
ResolvedDNSServerOptions
|
|
1705
|
-
|
|
1706
|
-
]).meta({
|
|
1696
|
+
ResolvedDNSServerOptions
|
|
1697
|
+
]))]).meta({
|
|
1707
1698
|
id: "DNSServer",
|
|
1708
1699
|
title: "DNS Server",
|
|
1709
1700
|
title_zh: "DNS 服务器"
|
|
@@ -1941,84 +1932,6 @@ const WireGuardEndpointOptions = z$1.object({
|
|
|
1941
1932
|
title: "WireGuard Endpoint",
|
|
1942
1933
|
title_zh: "WireGuard 端点"
|
|
1943
1934
|
});
|
|
1944
|
-
const LegacyWireGuardPeer = z$1.object({
|
|
1945
|
-
public_key: z$1.string().optional().meta({
|
|
1946
|
-
description: "WireGuard peer public key.",
|
|
1947
|
-
description_zh: "WireGuard 对等公钥。"
|
|
1948
|
-
}),
|
|
1949
|
-
pre_shared_key: z$1.string().optional().meta({
|
|
1950
|
-
description: "WireGuard pre-shared key.",
|
|
1951
|
-
description_zh: "WireGuard 预共享密钥。"
|
|
1952
|
-
}),
|
|
1953
|
-
allowed_ips: z$1.union([z$1.string(), z$1.array(z$1.string())]).optional().meta({
|
|
1954
|
-
description: "WireGuard allowed IPs.",
|
|
1955
|
-
description_zh: "WireGuard 允许 IP。"
|
|
1956
|
-
}),
|
|
1957
|
-
reserved: Reserved.optional().meta({
|
|
1958
|
-
description: "WireGuard reserved field bytes.",
|
|
1959
|
-
description_zh: "WireGuard 保留字段字节。"
|
|
1960
|
-
}),
|
|
1961
|
-
...ServerOptions.shape
|
|
1962
|
-
});
|
|
1963
|
-
const LegacyWireGuardOutboundOptions = z$1.object({
|
|
1964
|
-
type: z$1.literal("wireguard"),
|
|
1965
|
-
tag: z$1.string().optional(),
|
|
1966
|
-
system_interface: z$1.boolean().optional().meta({
|
|
1967
|
-
description: "Use system interface. Requires privilege and cannot conflict with existing system interfaces. Forced if gVisor is not included in the build.",
|
|
1968
|
-
description_zh: "使用系统设备。需要特权且不能与已有系统接口冲突。如果未包含 gVisor 构建标签,则强制使用。"
|
|
1969
|
-
}),
|
|
1970
|
-
gso: z$1.boolean().optional().meta({
|
|
1971
|
-
description: "Try to enable generic segmentation offload. Deprecated in sing-box 1.11.0; GSO will be automatically enabled when available. Only supported on Linux.",
|
|
1972
|
-
description_zh: "尝试启用通用分段卸载。已在 sing-box 1.11.0 废弃;可用时将自动启用 GSO。仅在 Linux 上支持。",
|
|
1973
|
-
deprecated: true
|
|
1974
|
-
}),
|
|
1975
|
-
interface_name: z$1.string().optional().meta({
|
|
1976
|
-
description: "Custom interface name for system interface.",
|
|
1977
|
-
description_zh: "为系统接口自定义设备名称。"
|
|
1978
|
-
}),
|
|
1979
|
-
local_address: z$1.union([z$1.string(), z$1.array(z$1.string())]).meta({
|
|
1980
|
-
description: "List of IP (v4 or v6) address prefixes to be assigned to the interface. Required.",
|
|
1981
|
-
description_zh: "接口的 IPv4/IPv6 地址或地址段的列表(必填)。"
|
|
1982
|
-
}),
|
|
1983
|
-
private_key: z$1.string().meta({
|
|
1984
|
-
description: "WireGuard requires base64-encoded public and private keys. These can be generated using wg(8) or `sing-box generate wg-keypair`. Required.",
|
|
1985
|
-
description_zh: "WireGuard 需要 base64 编码的公钥和私钥。可以使用 wg(8) 或 `sing-box generate wg-keypair` 生成。必填。"
|
|
1986
|
-
}),
|
|
1987
|
-
peers: z$1.array(LegacyWireGuardPeer).optional().meta({
|
|
1988
|
-
description: "Multi-peer support. If enabled, `server`, `server_port`, `peer_public_key`, and `pre_shared_key` will be ignored.",
|
|
1989
|
-
description_zh: "多对等支持。启用后将忽略 `server`、`server_port`、`peer_public_key` 和 `pre_shared_key`。"
|
|
1990
|
-
}),
|
|
1991
|
-
peer_public_key: z$1.string().meta({
|
|
1992
|
-
description: "WireGuard peer public key. Required if multi-peer is disabled.",
|
|
1993
|
-
description_zh: "WireGuard 对等公钥(未启用多对等支持时必填)。"
|
|
1994
|
-
}),
|
|
1995
|
-
pre_shared_key: z$1.string().optional().meta({
|
|
1996
|
-
description: "WireGuard pre-shared key.",
|
|
1997
|
-
description_zh: "WireGuard 预共享密钥。"
|
|
1998
|
-
}),
|
|
1999
|
-
reserved: Reserved.optional().meta({
|
|
2000
|
-
description: "WireGuard reserved field bytes. `$outbound.reserved` will be used if empty.",
|
|
2001
|
-
description_zh: "WireGuard 保留字段字节。置空时将使用 `$outbound.reserved`。"
|
|
2002
|
-
}),
|
|
2003
|
-
workers: z$1.number().int().optional().meta({
|
|
2004
|
-
description: "WireGuard worker count. CPU count is used by default.",
|
|
2005
|
-
description_zh: "WireGuard worker 数量。默认使用 CPU 数量。"
|
|
2006
|
-
}),
|
|
2007
|
-
mtu: z$1.number().int().optional().meta({
|
|
2008
|
-
description: "WireGuard MTU. `1408` will be used if empty.",
|
|
2009
|
-
description_zh: "WireGuard MTU。默认使用 1408。"
|
|
2010
|
-
}),
|
|
2011
|
-
network: Network.optional().meta({
|
|
2012
|
-
description: "Enabled network. One of `tcp` `udp`. Both is enabled by default.",
|
|
2013
|
-
description_zh: "启用的网络协议。`tcp` 或 `udp`。默认所有。"
|
|
2014
|
-
}),
|
|
2015
|
-
...ServerOptions.shape,
|
|
2016
|
-
...DialerOptions.shape
|
|
2017
|
-
}).meta({
|
|
2018
|
-
id: "LegacyWireGuardOutboundOptions",
|
|
2019
|
-
title: "Legacy WireGuard Outbound",
|
|
2020
|
-
title_zh: "旧版 WireGuard 出站"
|
|
2021
|
-
});
|
|
2022
1935
|
|
|
2023
1936
|
//#endregion
|
|
2024
1937
|
//#region src/schema/endpoint.ts
|
|
@@ -2152,6 +2065,31 @@ const ClashAPIOptions = z.object({
|
|
|
2152
2065
|
access_control_allow_private_network: z.boolean().optional().meta({
|
|
2153
2066
|
description: "Allow access from private network. To access the Clash API on a private network from a public website, `access_control_allow_private_network` must be enabled.",
|
|
2154
2067
|
description_zh: "允许从私有网络访问。要从公共网站访问私有网络上的 Clash API,必须启用 `access_control_allow_private_network`。"
|
|
2068
|
+
}),
|
|
2069
|
+
store_mode: z.boolean().optional().meta({
|
|
2070
|
+
description: "Store Clash mode in cache file. Deprecated in sing-box 1.8.0 and migrated to the global cache file.",
|
|
2071
|
+
description_zh: "将 Clash 模式存储在缓存文件中。已在 sing-box 1.8.0 弃用并迁移到全局缓存文件。",
|
|
2072
|
+
deprecated: true
|
|
2073
|
+
}),
|
|
2074
|
+
store_selected: z.boolean().optional().meta({
|
|
2075
|
+
description: "Store selected outbound for the Selector outbound in cache file. Deprecated in sing-box 1.8.0 and migrated to the global cache file.",
|
|
2076
|
+
description_zh: "将 Selector 出站中选定的出站存储在缓存文件中。已在 sing-box 1.8.0 弃用并迁移到全局缓存文件。",
|
|
2077
|
+
deprecated: true
|
|
2078
|
+
}),
|
|
2079
|
+
store_fakeip: z.boolean().optional().meta({
|
|
2080
|
+
description: "Store fakeip in cache file. Deprecated in sing-box 1.8.0 and migrated to `cache_file.store_fakeip`.",
|
|
2081
|
+
description_zh: "将 fakeip 存储在缓存文件中。已在 sing-box 1.8.0 弃用并迁移到 `cache_file.store_fakeip`。",
|
|
2082
|
+
deprecated: true
|
|
2083
|
+
}),
|
|
2084
|
+
cache_file: z.string().optional().meta({
|
|
2085
|
+
description: "Cache file path. Deprecated in sing-box 1.8.0 and migrated to `cache_file.enabled` and `cache_file.path`.",
|
|
2086
|
+
description_zh: "缓存文件路径。已在 sing-box 1.8.0 弃用并迁移到 `cache_file.enabled` 和 `cache_file.path`。",
|
|
2087
|
+
deprecated: true
|
|
2088
|
+
}),
|
|
2089
|
+
cache_id: z.string().optional().meta({
|
|
2090
|
+
description: "Identifier in cache file. Deprecated in sing-box 1.8.0 and migrated to `cache_file.cache_id`.",
|
|
2091
|
+
description_zh: "缓存文件中的标识符。已在 sing-box 1.8.0 弃用并迁移到 `cache_file.cache_id`。",
|
|
2092
|
+
deprecated: true
|
|
2155
2093
|
})
|
|
2156
2094
|
}).meta({
|
|
2157
2095
|
id: "ClashAPIOptions",
|
|
@@ -2317,16 +2255,6 @@ const DirectInboundOptions = z.object({
|
|
|
2317
2255
|
const DirectOutboundOptions = z.object({
|
|
2318
2256
|
type: z.literal("direct"),
|
|
2319
2257
|
tag: z.string().optional(),
|
|
2320
|
-
override_address: z.string().optional().meta({
|
|
2321
|
-
description: "Override the connection destination address. Deprecated since sing-box 1.11.0 and will be removed in 1.13.0; see [Migration](/migration/#migrate-destination-override-fields-to-route-options).",
|
|
2322
|
-
description_zh: "覆盖连接目标地址。自 sing-box 1.11.0 起已废弃,并将于 1.13.0 移除;请参阅 [迁移指南](/zh/migration/#migrate-destination-override-fields-to-route-options)。",
|
|
2323
|
-
deprecated: true
|
|
2324
|
-
}),
|
|
2325
|
-
override_port: z.number().int().optional().meta({
|
|
2326
|
-
description: "Override the connection destination port. Deprecated since sing-box 1.11.0 and will be removed in 1.13.0; see [Migration](/migration/#migrate-destination-override-fields-to-route-options).",
|
|
2327
|
-
description_zh: "覆盖连接目标端口。自 sing-box 1.11.0 起已废弃,并将于 1.13.0 移除;请参阅 [迁移指南](/zh/migration/#migrate-destination-override-fields-to-route-options)。",
|
|
2328
|
-
deprecated: true
|
|
2329
|
-
}),
|
|
2330
2258
|
...DialerOptions.shape
|
|
2331
2259
|
}).meta({
|
|
2332
2260
|
id: "DirectOutboundOptions",
|
|
@@ -2726,6 +2654,10 @@ const NaiveInboundOptions = z.object({
|
|
|
2726
2654
|
description: "Naive users. Required.",
|
|
2727
2655
|
description_zh: "Naive 用户。必填。"
|
|
2728
2656
|
}),
|
|
2657
|
+
quic_congestion_control: z.string().optional().meta({
|
|
2658
|
+
description: "QUIC congestion control algorithm.",
|
|
2659
|
+
description_zh: "QUIC 拥塞控制算法。"
|
|
2660
|
+
}),
|
|
2729
2661
|
tls: InboundTLSOptions.optional().meta({
|
|
2730
2662
|
description: "TLS configuration, see [TLS](/configuration/shared/tls/#inbound).",
|
|
2731
2663
|
description_zh: "TLS 配置,参阅 [TLS](/zh/configuration/shared/tls/#inbound)。"
|
|
@@ -2736,6 +2668,56 @@ const NaiveInboundOptions = z.object({
|
|
|
2736
2668
|
title: "Naive Inbound",
|
|
2737
2669
|
title_zh: "Naive 入站"
|
|
2738
2670
|
});
|
|
2671
|
+
const NaiveOutboundOptions = z.object({
|
|
2672
|
+
type: z.literal("naive"),
|
|
2673
|
+
tag: z.string().optional(),
|
|
2674
|
+
username: z.string().optional().meta({
|
|
2675
|
+
description: "Authentication username.",
|
|
2676
|
+
description_zh: "认证用户名。"
|
|
2677
|
+
}),
|
|
2678
|
+
password: z.string().optional().meta({
|
|
2679
|
+
description: "Authentication password.",
|
|
2680
|
+
description_zh: "认证密码。"
|
|
2681
|
+
}),
|
|
2682
|
+
insecure_concurrency: z.number().int().optional().meta({
|
|
2683
|
+
description: "Number of concurrent tunnel connections. Multiple connections make the tunneling easier to detect through traffic analysis.",
|
|
2684
|
+
description_zh: "并发隧道连接数。多个连接会使隧道更容易通过流量分析被检测到。"
|
|
2685
|
+
}),
|
|
2686
|
+
extra_headers: HttpHeader.optional().meta({
|
|
2687
|
+
description: "Extra headers to send in HTTP requests.",
|
|
2688
|
+
description_zh: "HTTP 请求中发送的额外标头。"
|
|
2689
|
+
}),
|
|
2690
|
+
stream_receive_window: z.string().optional().meta({
|
|
2691
|
+
description: "Stream receive window size.",
|
|
2692
|
+
description_zh: "流接收窗口大小。"
|
|
2693
|
+
}),
|
|
2694
|
+
udp_over_tcp: z.union([z.boolean(), UDPOverTCPOptions]).optional().meta({
|
|
2695
|
+
description: "UDP over TCP protocol settings. See [UDP Over TCP](/configuration/shared/udp-over-tcp/) for details.",
|
|
2696
|
+
description_zh: "UDP over TCP 协议设置。参阅 [UDP Over TCP](/zh/configuration/shared/udp-over-tcp/) 以获取详细信息。"
|
|
2697
|
+
}),
|
|
2698
|
+
quic: z.boolean().optional().meta({
|
|
2699
|
+
description: "Use QUIC instead of HTTP/2.",
|
|
2700
|
+
description_zh: "使用 QUIC 而非 HTTP/2。"
|
|
2701
|
+
}),
|
|
2702
|
+
quic_congestion_control: z.string().optional().meta({
|
|
2703
|
+
description: "QUIC congestion control algorithm.",
|
|
2704
|
+
description_zh: "QUIC 拥塞控制算法。"
|
|
2705
|
+
}),
|
|
2706
|
+
quic_session_receive_window: z.string().optional().meta({
|
|
2707
|
+
description: "QUIC session receive window size.",
|
|
2708
|
+
description_zh: "QUIC 会话接收窗口大小。"
|
|
2709
|
+
}),
|
|
2710
|
+
tls: OutboundTLSOptions.meta({
|
|
2711
|
+
description: "TLS configuration, see [TLS](/configuration/shared/tls/#outbound). Required.",
|
|
2712
|
+
description_zh: "TLS 配置,参阅 [TLS](/zh/configuration/shared/tls/#outbound)。必填。"
|
|
2713
|
+
}),
|
|
2714
|
+
...ServerOptions.shape,
|
|
2715
|
+
...DialerOptions.shape
|
|
2716
|
+
}).meta({
|
|
2717
|
+
id: "NaiveOutboundOptions",
|
|
2718
|
+
title: "Naive Outbound",
|
|
2719
|
+
title_zh: "Naive 出站"
|
|
2720
|
+
});
|
|
2739
2721
|
|
|
2740
2722
|
//#endregion
|
|
2741
2723
|
//#region src/schema/protocols/redirect.ts
|
|
@@ -3293,6 +3275,10 @@ const TunInboundOptions = z.object({
|
|
|
3293
3275
|
description: "Exclude android packages in route. Android package rules are only supported on Android and require `auto_route`.",
|
|
3294
3276
|
description_zh: "排除路由的 Android 应用包名。Android 应用规则仅在 Android 下被支持,并且需要 `auto_route`。"
|
|
3295
3277
|
}),
|
|
3278
|
+
udp_timeout: z.union([z.string(), z.number()]).optional().meta({
|
|
3279
|
+
description: "UDP NAT expiration time. `5m` will be used by default.",
|
|
3280
|
+
description_zh: "UDP NAT 过期时间。默认使用 `5m`。"
|
|
3281
|
+
}),
|
|
3296
3282
|
stack: z.enum([
|
|
3297
3283
|
"system",
|
|
3298
3284
|
"gvisor",
|
|
@@ -3304,48 +3290,7 @@ const TunInboundOptions = z.object({
|
|
|
3304
3290
|
platform: TunPlatformOptions.optional().meta({
|
|
3305
3291
|
description: "Platform-specific settings, provided by client applications.",
|
|
3306
3292
|
description_zh: "平台特定的设置,由客户端应用提供。"
|
|
3307
|
-
})
|
|
3308
|
-
gso: z.boolean().optional().meta({
|
|
3309
|
-
description: "Enable generic segmentation offload.",
|
|
3310
|
-
description_zh: "启用通用分段卸载。",
|
|
3311
|
-
deprecated: true
|
|
3312
|
-
}),
|
|
3313
|
-
inet4_address: listableString.optional().meta({
|
|
3314
|
-
description: "IPv4 prefix for the tun interface.",
|
|
3315
|
-
description_zh: "tun 接口的 IPv4 前缀。",
|
|
3316
|
-
deprecated: true
|
|
3317
|
-
}),
|
|
3318
|
-
inet6_address: listableString.optional().meta({
|
|
3319
|
-
description: "IPv6 prefix for the tun interface.",
|
|
3320
|
-
description_zh: "tun 接口的 IPv6 前缀。",
|
|
3321
|
-
deprecated: true
|
|
3322
|
-
}),
|
|
3323
|
-
inet4_route_address: listableString.optional().meta({
|
|
3324
|
-
description: "Use custom routes instead of default when `auto_route` is enabled.",
|
|
3325
|
-
description_zh: "启用 `auto_route` 时使用自定义路由而不是默认路由。",
|
|
3326
|
-
deprecated: true
|
|
3327
|
-
}),
|
|
3328
|
-
inet6_route_address: listableString.optional().meta({
|
|
3329
|
-
description: "Use custom routes instead of default when `auto_route` is enabled.",
|
|
3330
|
-
description_zh: "启用 `auto_route` 时使用自定义路由而不是默认路由。",
|
|
3331
|
-
deprecated: true
|
|
3332
|
-
}),
|
|
3333
|
-
inet4_route_exclude_address: listableString.optional().meta({
|
|
3334
|
-
description: "Exclude custom routes when `auto_route` is enabled.",
|
|
3335
|
-
description_zh: "启用 `auto_route` 时排除自定义路由。",
|
|
3336
|
-
deprecated: true
|
|
3337
|
-
}),
|
|
3338
|
-
inet6_route_exclude_address: listableString.optional().meta({
|
|
3339
|
-
description: "Exclude custom routes when `auto_route` is enabled.",
|
|
3340
|
-
description_zh: "启用 `auto_route` 时排除自定义路由。",
|
|
3341
|
-
deprecated: true
|
|
3342
|
-
}),
|
|
3343
|
-
endpoint_independent_nat: z.boolean().optional().meta({
|
|
3344
|
-
description: "Enable endpoint-independent NAT. This item is only available on the gvisor stack; other stacks are endpoint-independent NAT by default. Performance may degrade slightly, so it is not recommended to enable when it is not needed.",
|
|
3345
|
-
description_zh: "启用独立于端点的 NAT。此项仅在 gvisor 栈上可用,其他栈默认启用独立于端点的 NAT。性能可能略有下降,因此不建议在不需要时启用。",
|
|
3346
|
-
deprecated: true
|
|
3347
|
-
}),
|
|
3348
|
-
...ListenOptions.shape
|
|
3293
|
+
})
|
|
3349
3294
|
}).meta({
|
|
3350
3295
|
id: "TunInboundOptions",
|
|
3351
3296
|
title: "Tun Inbound",
|
|
@@ -3662,24 +3607,16 @@ const URLTestOutbound = z.object({
|
|
|
3662
3607
|
});
|
|
3663
3608
|
|
|
3664
3609
|
//#endregion
|
|
3665
|
-
//#region src/schema/protocols/
|
|
3666
|
-
const
|
|
3667
|
-
type: z.literal("
|
|
3668
|
-
tag: z.string().optional()
|
|
3669
|
-
method: z.string(),
|
|
3670
|
-
password: z.string(),
|
|
3671
|
-
obfs: z.string().optional(),
|
|
3672
|
-
obfs_param: z.string().optional(),
|
|
3673
|
-
protocol: z.string().optional(),
|
|
3674
|
-
protocol_param: z.string().optional(),
|
|
3675
|
-
network: Network.optional(),
|
|
3676
|
-
...ServerOptions.shape,
|
|
3677
|
-
...DialerOptions.shape
|
|
3610
|
+
//#region src/schema/protocols/block.ts
|
|
3611
|
+
const BlockOutboundOptions = z.object({
|
|
3612
|
+
type: z.literal("block"),
|
|
3613
|
+
tag: z.string().optional()
|
|
3678
3614
|
}).meta({
|
|
3679
|
-
id: "
|
|
3680
|
-
title: "
|
|
3681
|
-
title_zh: "
|
|
3682
|
-
|
|
3615
|
+
id: "BlockOutboundOptions",
|
|
3616
|
+
title: "Block Outbound",
|
|
3617
|
+
title_zh: "Block 出站",
|
|
3618
|
+
description: "Block outbound closes all incoming requests.",
|
|
3619
|
+
description_zh: "Block 出站关闭所有传入请求。"
|
|
3683
3620
|
});
|
|
3684
3621
|
|
|
3685
3622
|
//#endregion
|
|
@@ -3764,14 +3701,14 @@ const Outbound = z.discriminatedUnion("type", [
|
|
|
3764
3701
|
ShadowsocksOutboundOptions,
|
|
3765
3702
|
VMessOutboundOptions,
|
|
3766
3703
|
TrojanOutboundOptions,
|
|
3767
|
-
|
|
3704
|
+
BlockOutboundOptions,
|
|
3768
3705
|
HysteriaOutboundOptions,
|
|
3769
3706
|
ShadowTLSOutboundOptions,
|
|
3770
3707
|
AnyTLSOutboundOptions,
|
|
3771
3708
|
Hysteria2OutboundOptions,
|
|
3772
3709
|
TUICOutboundOptions,
|
|
3773
3710
|
VLESSOutboundOptions,
|
|
3774
|
-
|
|
3711
|
+
NaiveOutboundOptions,
|
|
3775
3712
|
SSHOutboundOptions,
|
|
3776
3713
|
TorOutboundOptions,
|
|
3777
3714
|
SelectorOutbound,
|
|
@@ -3804,14 +3741,6 @@ const RuleActionRouteOptions = z.object({
|
|
|
3804
3741
|
description: "See Dial Fields (/configuration/shared/dial/#network_strategy) for details. Only take effect if outbound is direct without `outbound.bind_interface`, `outbound.inet4_bind_address` and `outbound.inet6_bind_address` set.",
|
|
3805
3742
|
description_zh: "详情参阅 [拨号字段](/configuration/shared/dial/#network_strategy)。仅当出站为 direct 且 `outbound.bind_interface`、`outbound.inet4_bind_address` 与 `outbound.inet6_bind_address` 均未设置时生效。"
|
|
3806
3743
|
}),
|
|
3807
|
-
network_type: listable(NetworkType).optional().meta({
|
|
3808
|
-
description: "See Dial Fields (/configuration/shared/dial/#network_type) for details.",
|
|
3809
|
-
description_zh: "详情参阅 [拨号字段](/configuration/shared/dial/#network_type)。"
|
|
3810
|
-
}),
|
|
3811
|
-
fallback_network_type: listable(NetworkType).optional().meta({
|
|
3812
|
-
description: "See Dial Fields (/configuration/shared/dial/#fallback_network_type) for details.",
|
|
3813
|
-
description_zh: "详情参阅 [拨号字段](/configuration/shared/dial/#fallback_network_type)。"
|
|
3814
|
-
}),
|
|
3815
3744
|
fallback_delay: z.string().optional().meta({
|
|
3816
3745
|
description: "See Dial Fields (/configuration/shared/dial/#fallback_delay) for details.",
|
|
3817
3746
|
description_zh: "详情参阅 [拨号字段](/configuration/shared/dial/#fallback_delay)。"
|
|
@@ -3916,14 +3845,33 @@ const RuleActionRoute = z.object({
|
|
|
3916
3845
|
title: "Rule Action Route",
|
|
3917
3846
|
title_zh: "规则动作路由"
|
|
3918
3847
|
});
|
|
3848
|
+
const RuleActionBypass = z.object({
|
|
3849
|
+
action: z.literal("bypass").meta({
|
|
3850
|
+
description: "Action type.",
|
|
3851
|
+
description_zh: "动作类型。"
|
|
3852
|
+
}),
|
|
3853
|
+
outbound: z.string().optional().meta({
|
|
3854
|
+
description: "Tag of target outbound.",
|
|
3855
|
+
description_zh: "目标出站的标签。"
|
|
3856
|
+
}),
|
|
3857
|
+
...RuleActionRouteOptions.shape
|
|
3858
|
+
}).meta({
|
|
3859
|
+
id: "RuleActionBypass",
|
|
3860
|
+
title: "Rule Action Bypass",
|
|
3861
|
+
title_zh: "规则动作绕过"
|
|
3862
|
+
});
|
|
3919
3863
|
const RuleActionReject = z.object({
|
|
3920
3864
|
action: z.literal("reject").meta({
|
|
3921
3865
|
description: "Action type.",
|
|
3922
3866
|
description_zh: "动作类型。"
|
|
3923
3867
|
}),
|
|
3924
|
-
method: z.enum([
|
|
3925
|
-
|
|
3926
|
-
|
|
3868
|
+
method: z.enum([
|
|
3869
|
+
"default",
|
|
3870
|
+
"drop",
|
|
3871
|
+
"reply"
|
|
3872
|
+
]).optional().meta({
|
|
3873
|
+
description: "`default`: Reply with TCP RST for TCP connections, ICMP port unreachable for UDP packets, and ICMP host unreachable for ICMP echo requests. `drop`: Drop packets. `reply`: Reply with ICMP echo reply for ICMP echo requests.",
|
|
3874
|
+
description_zh: "`default`: 对 TCP 连接回复 RST,对 UDP 包回复 ICMP 端口不可达,并对 ICMP 回显请求回复 ICMP 主机不可达。`drop`: 丢弃数据包。`reply`: 对 ICMP 回显请求回复 ICMP 回显响应。"
|
|
3927
3875
|
}),
|
|
3928
3876
|
no_drop: z.boolean().optional().meta({
|
|
3929
3877
|
description: "If not enabled, `method` will be temporarily overwritten to `drop` after 50 triggers in 30s.",
|
|
@@ -3934,12 +3882,13 @@ const RuleActionReject = z.object({
|
|
|
3934
3882
|
title: "Rule Action Reject",
|
|
3935
3883
|
title_zh: "规则动作拒绝"
|
|
3936
3884
|
});
|
|
3885
|
+
const DirectActionDialerOptions = DialerOptions.omit({ detour: true });
|
|
3937
3886
|
const RuleActionDirect = z.object({
|
|
3938
3887
|
action: z.literal("direct").meta({
|
|
3939
3888
|
description: "Action type.",
|
|
3940
3889
|
description_zh: "动作类型。"
|
|
3941
3890
|
}),
|
|
3942
|
-
...
|
|
3891
|
+
...DirectActionDialerOptions.shape
|
|
3943
3892
|
}).meta({
|
|
3944
3893
|
id: "RuleActionDirect",
|
|
3945
3894
|
title: "Rule Action Direct",
|
|
@@ -4163,6 +4112,7 @@ const BaseRouteRule = z.object({
|
|
|
4163
4112
|
const DefaultRouteRule = z.union([
|
|
4164
4113
|
BaseRouteRule.extend(RuleActionRouteByDefault.shape),
|
|
4165
4114
|
BaseRouteRule.extend(RuleActionRoute.shape),
|
|
4115
|
+
BaseRouteRule.extend(RuleActionBypass.shape),
|
|
4166
4116
|
BaseRouteRule.extend(RuleActionReject.shape),
|
|
4167
4117
|
BaseRouteRule.extend(RuleActionHijackDNS.shape),
|
|
4168
4118
|
BaseRouteRule.extend(RuleActionRouteOptionsWithAction.shape),
|
|
@@ -4170,7 +4120,7 @@ const DefaultRouteRule = z.union([
|
|
|
4170
4120
|
BaseRouteRule.extend(RuleActionResolve.shape),
|
|
4171
4121
|
BaseRouteRule.extend(RuleActionDirect.shape)
|
|
4172
4122
|
]);
|
|
4173
|
-
const
|
|
4123
|
+
const BaseLogicalRouteRule = z.object({
|
|
4174
4124
|
type: z.literal("logical").meta({
|
|
4175
4125
|
description: "Rule type.",
|
|
4176
4126
|
description_zh: "规则类型。"
|
|
@@ -4189,7 +4139,18 @@ const LogicalRouteRule = z.object({
|
|
|
4189
4139
|
description: "Invert match result.",
|
|
4190
4140
|
description_zh: "反选匹配结果。"
|
|
4191
4141
|
})
|
|
4192
|
-
})
|
|
4142
|
+
});
|
|
4143
|
+
const LogicalRouteRule = z.union([
|
|
4144
|
+
BaseLogicalRouteRule.extend(RuleActionRouteByDefault.shape),
|
|
4145
|
+
BaseLogicalRouteRule.extend(RuleActionRoute.shape),
|
|
4146
|
+
BaseLogicalRouteRule.extend(RuleActionBypass.shape),
|
|
4147
|
+
BaseLogicalRouteRule.extend(RuleActionReject.shape),
|
|
4148
|
+
BaseLogicalRouteRule.extend(RuleActionHijackDNS.shape),
|
|
4149
|
+
BaseLogicalRouteRule.extend(RuleActionRouteOptionsWithAction.shape),
|
|
4150
|
+
BaseLogicalRouteRule.extend(RuleActionSniff.shape),
|
|
4151
|
+
BaseLogicalRouteRule.extend(RuleActionResolve.shape),
|
|
4152
|
+
BaseLogicalRouteRule.extend(RuleActionDirect.shape)
|
|
4153
|
+
]).meta({
|
|
4193
4154
|
id: "LogicalRouteRule",
|
|
4194
4155
|
title: "Logical Route Rule",
|
|
4195
4156
|
title_zh: "逻辑路由规则"
|
|
@@ -4339,7 +4300,7 @@ const HeadlessRule = z.union([DefaultHeadlessRule, LogicalHeadlessRule]).meta({
|
|
|
4339
4300
|
title_zh: "无头规则"
|
|
4340
4301
|
});
|
|
4341
4302
|
const InlineRuleSetOptions = z.object({
|
|
4342
|
-
type: z.literal("inline").meta({
|
|
4303
|
+
type: z.literal("inline").optional().meta({
|
|
4343
4304
|
description: "Rule set type.",
|
|
4344
4305
|
description_zh: "规则集类型。"
|
|
4345
4306
|
}),
|
|
@@ -4408,7 +4369,7 @@ const RemoteRuleSetOptions = z.object({
|
|
|
4408
4369
|
title: "Remote Rule Set Options",
|
|
4409
4370
|
title_zh: "远程规则集选项"
|
|
4410
4371
|
});
|
|
4411
|
-
const RuleSet = z.
|
|
4372
|
+
const RuleSet = z.union([
|
|
4412
4373
|
InlineRuleSetOptions,
|
|
4413
4374
|
LocalRuleSetOptions,
|
|
4414
4375
|
RemoteRuleSetOptions
|
|
@@ -4561,7 +4522,11 @@ const CCMServiceOptions = z.object({
|
|
|
4561
4522
|
description: "TLS configuration, see [TLS](/configuration/shared/tls/#inbound).",
|
|
4562
4523
|
description_zh: "TLS 配置,参阅 [TLS](/zh/configuration/shared/tls/#inbound)。"
|
|
4563
4524
|
}),
|
|
4564
|
-
...ListenOptions.shape
|
|
4525
|
+
...ListenOptions.shape,
|
|
4526
|
+
detour: z.string().optional().meta({
|
|
4527
|
+
description: "Outbound tag for connecting to the Claude API.",
|
|
4528
|
+
description_zh: "用于连接到 Claude API 的出站标签。"
|
|
4529
|
+
})
|
|
4565
4530
|
}).meta({
|
|
4566
4531
|
id: "CCMServiceOptions",
|
|
4567
4532
|
title: "CCM",
|
|
@@ -4620,7 +4585,7 @@ const DERPServiceOptions = z.object({
|
|
|
4620
4585
|
description: "TLS configuration, see [TLS](/configuration/shared/tls/#inbound).",
|
|
4621
4586
|
description_zh: "TLS 配置,参阅 [TLS](/zh/configuration/shared/tls/#inbound)。"
|
|
4622
4587
|
}),
|
|
4623
|
-
config_path: z.string().meta({
|
|
4588
|
+
config_path: z.string().optional().meta({
|
|
4624
4589
|
description: "Derper configuration file path. Example: `derper.key`.",
|
|
4625
4590
|
description_zh: "Derper 配置文件路径。示例:`derper.key`。"
|
|
4626
4591
|
}),
|
|
@@ -4699,7 +4664,11 @@ const OCMServiceOptions = z.object({
|
|
|
4699
4664
|
description: "TLS configuration, see [TLS](/configuration/shared/tls/#inbound).",
|
|
4700
4665
|
description_zh: "TLS 配置,参阅 [TLS](/zh/configuration/shared/tls/#inbound)。"
|
|
4701
4666
|
}),
|
|
4702
|
-
...ListenOptions.shape
|
|
4667
|
+
...ListenOptions.shape,
|
|
4668
|
+
detour: z.string().optional().meta({
|
|
4669
|
+
description: "Outbound tag for connecting to the OpenAI API.",
|
|
4670
|
+
description_zh: "用于连接到 OpenAI API 的出站标签。"
|
|
4671
|
+
})
|
|
4703
4672
|
}).meta({
|
|
4704
4673
|
id: "OCMServiceOptions",
|
|
4705
4674
|
title: "OCM",
|
|
@@ -4826,12 +4795,12 @@ const Configuration = z.object({
|
|
|
4826
4795
|
experimental: ExperimentalOptions.optional()
|
|
4827
4796
|
}).meta({
|
|
4828
4797
|
id: "Configuration",
|
|
4829
|
-
title: "Sing-box v1.13.
|
|
4830
|
-
title_zh: "Sing-box v1.13.
|
|
4831
|
-
description: "Sing-box v1.13.
|
|
4832
|
-
description_zh: "Sing-box v1.13.
|
|
4833
|
-
version: "1.13.
|
|
4798
|
+
title: "Sing-box v1.13.13 Configuration",
|
|
4799
|
+
title_zh: "Sing-box v1.13.13 配置文件",
|
|
4800
|
+
description: "Sing-box v1.13.13 configuration file schema. Sing-box uses JSON for configuration files with log, dns, ntp, certificate, endpoints, inbounds, outbounds, route, services, and experimental sections.",
|
|
4801
|
+
description_zh: "Sing-box v1.13.13 配置文件定义。sing-box 使用 JSON 作为配置文件格式,包含 log、dns、ntp、certificate、endpoints、inbounds、outbounds、route、services 与 experimental 字段。",
|
|
4802
|
+
version: "1.13.13"
|
|
4834
4803
|
});
|
|
4835
4804
|
|
|
4836
4805
|
//#endregion
|
|
4837
|
-
export { AnyTLSInboundOptions, AnyTLSOutboundOptions, AnyTLSUser, CertificateOptions, Configuration, DHCPDNSServerOptions, DNSClientOptions, DNSOptions, DNSRule, DNSServer, DebugOptions, DialerOptions, DirectInboundOptions, DirectOutboundOptions, DomainResolverOptions, DomainStrategy, Endpoint, ExperimentalOptions, FakeIPDNSServerOptions, FwMark, GeoIPOptions, GeositeOptions, HTTP3DNSServerOptions, HTTPInboundOptions, HTTPOutboundOptions, HTTPProxyOptions, HTTPSDNSServerOptions, HeadlessRule, HostsDNSServerOptions, HttpHeader, Hysteria2InboundOptions, Hysteria2Masquerade, Hysteria2Obfs, Hysteria2OutboundOptions, Hysteria2User, HysteriaInboundOptions, HysteriaOutboundOptions, HysteriaUser, Inbound, InboundMultiplexOptions,
|
|
4806
|
+
export { AnyTLSInboundOptions, AnyTLSOutboundOptions, AnyTLSUser, BlockOutboundOptions, CertificateOptions, Configuration, DHCPDNSServerOptions, DNSClientOptions, DNSOptions, DNSRule, DNSServer, DebugOptions, DialerOptions, DirectInboundOptions, DirectOutboundOptions, DomainResolverOptions, DomainStrategy, Endpoint, ExperimentalOptions, FakeIPDNSServerOptions, FwMark, GeoIPOptions, GeositeOptions, HTTP3DNSServerOptions, HTTPInboundOptions, HTTPOutboundOptions, HTTPProxyOptions, HTTPSDNSServerOptions, HeadlessRule, HostsDNSServerOptions, HttpHeader, Hysteria2InboundOptions, Hysteria2Masquerade, Hysteria2Obfs, Hysteria2OutboundOptions, Hysteria2User, HysteriaInboundOptions, HysteriaOutboundOptions, HysteriaUser, Inbound, InboundMultiplexOptions, InboundTLSOptions, IpVersion, LegacyDNSFakeIPOptions, LegacyDNSServerOptions, ListenOptions, LocalDNSServerOptions, LogOptions, MixedInboundOptions, NTPOptions, NaiveInboundOptions, NaiveOutboundOptions, Network, NetworkStrategy, NetworkType, Outbound, OutboundMultiplexOptions, OutboundTLSOptions, QUICDNSServerOptions, RedirectInboundOptions, ResolvedDNSServerOptions, RouteOptions, RouteRule, RuleSet, SSHOutboundOptions, SelectorOutbound, ServerOptions, Service, ShadowTLSInboundOptions, ShadowTLSOutboundOptions, ShadowsocksDestination, ShadowsocksInboundOptions, ShadowsocksOutboundOptions, ShadowsocksUser, SocksInboundOptions, SocksOutboundOptions, TCPDNSServerOptions, TLSDNSServerOptions, TProxyInboundOptions, TUICInboundOptions, TUICOutboundOptions, TUICUser, Tag, TailscaleDNSServerOptions, TailscaleEndpointOptions, TorOutboundOptions, TrojanInboundOptions, TrojanOutboundOptions, TrojanUser, TunInboundOptions, TunPlatformOptions, UDPDNSServerOptions, UDPOverTCPOptions, URLTestOutbound, V2RayTransportOptions, VLESSInboundOptions, VLESSOutboundOptions, VLESSUser, VMessInboundOptions, VMessOutboundOptions, VMessUser, WireGuardEndpointOptions, WireGuardPeer };
|