新增入站不再预填订阅
来源一个都不选时 AUTO 和 FALLBACK 就是空组,内核会拒绝整份配置 (adapter/outboundgroup/parser.go:117-119),所以 applySetup 这时只建 SELECT、成员只有 DIRECT;用户在配置里选好订阅再保存,那两个组建回来。 链式代理打开时同样不预填入口订阅。 「改成逐条选线路」保持全给上:那一路本来就在把流量送到某个出站, 接管不该顺手把它改成直连。
This commit is contained in:
@@ -285,7 +285,9 @@ watch([() => props.inbound.id, () => JSON.stringify(props.setup)], reset, { imme
|
||||
const chainOn = computed({
|
||||
get: () => form.value.chain !== null,
|
||||
set: (on: boolean) => {
|
||||
form.value.chain = on ? { sources: [...props.subscriptions], filter: null } : null
|
||||
// 入口订阅不预设:入口是「先落到哪一跳」,用户心里有具体的那一条,
|
||||
// 把订阅全给上只是让他保存前先去取消勾选
|
||||
form.value.chain = on ? { sources: [], filter: null } : null
|
||||
},
|
||||
})
|
||||
|
||||
@@ -426,9 +428,15 @@ const flowPreview = computed(
|
||||
pendingEntry.value !== null,
|
||||
)
|
||||
/**
|
||||
* 至少要选一个订阅。AUTO 和 FALLBACK 只有 `use:` 没有点名成员,一个订阅都不选就是空组,
|
||||
* 内核会直接拒绝整份配置(内核源码 adapter/outboundgroup/parser.go:117-119)。
|
||||
* 在这里拦住,比让用户按下保存再读一段内核报错好。
|
||||
* 两边都至少要选一个订阅。
|
||||
*
|
||||
* 入口组只有 `use:` 没有点名成员,一个订阅都不选就是空组,内核会直接拒绝整份配置
|
||||
* (内核源码 adapter/outboundgroup/parser.go:117-119)。在这里拦住,比让用户按下
|
||||
* 保存再读一段内核报错好。
|
||||
*
|
||||
* 代理这边空来源是能落盘的(applySetup 只建 SELECT、成员只有 DIRECT,新增入站就停在
|
||||
* 这个状态),但那是「还没配」的起点,不该是取消勾选保存出来的结果——一路已经在走代理
|
||||
* 的入站不能这么悄悄变成直连。
|
||||
*/
|
||||
const filled = (spec: { sources: string[] }) => spec.sources.length > 0
|
||||
const complete = computed(
|
||||
@@ -586,7 +594,8 @@ const complete = computed(
|
||||
</h3>
|
||||
|
||||
<!-- 草稿态:显示保存后的成员。现有成员点了立刻生效,保存后才加入的点了是预选 -->
|
||||
<div v-if="chainDraft" class="grid">
|
||||
<p v-if="chainDraft && form.chain.sources.length === 0" class="hint">还没有选订阅</p>
|
||||
<div v-else-if="chainDraft" class="grid">
|
||||
<OutboundCard
|
||||
v-for="card in chainCards"
|
||||
:key="card.name"
|
||||
|
||||
Reference in New Issue
Block a user