1111
Some checks failed
Build Multi-Platform Binaries / build-frontend (push) Successful in 37s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Has been cancelled

This commit is contained in:
2026-01-04 22:48:49 +08:00
parent 02f8c521c2
commit 007c8ed440
8 changed files with 124 additions and 17 deletions

View File

@@ -7,6 +7,7 @@ export interface ProxyRule {
type?: string
enabled?: boolean
plugin_config?: Record<string, string>
plugin_managed?: boolean // 插件管理标记 - 由插件自动创建的规则
}
// 客户端已安装的插件

View File

@@ -167,11 +167,14 @@ const saveRename = async () => {
}
const startEdit = () => {
editRules.value = rules.value.map(rule => ({
...rule,
type: rule.type || 'tcp',
enabled: rule.enabled !== false
}))
// 只编辑非插件管理的规则
editRules.value = rules.value
.filter(rule => !rule.plugin_managed)
.map(rule => ({
...rule,
type: rule.type || 'tcp',
enabled: rule.enabled !== false
}))
editing.value = true
}
@@ -191,7 +194,10 @@ const removeRule = (index: number) => {
const saveEdit = async () => {
try {
await updateClient(clientId, { id: clientId, nickname: nickname.value, rules: editRules.value })
// 合并插件管理的规则和编辑后的规则
const pluginManagedRules = rules.value.filter(r => r.plugin_managed)
const allRules = [...pluginManagedRules, ...editRules.value]
await updateClient(clientId, { id: clientId, nickname: nickname.value, rules: allRules })
editing.value = false
message.success('保存成功')
await loadClient()
@@ -476,6 +482,7 @@ const handleDeletePlugin = (plugin: ClientPlugin) => {
<th>远程端口</th>
<th>类型</th>
<th>状态</th>
<th>来源</th>
</tr>
</thead>
<tbody>
@@ -494,6 +501,10 @@ const handleDeletePlugin = (plugin: ClientPlugin) => {
{{ rule.enabled !== false ? '启用' : '禁用' }}
</n-tag>
</td>
<td>
<n-tag v-if="rule.plugin_managed" size="small" type="info">插件</n-tag>
<n-tag v-else size="small" type="default">手动</n-tag>
</td>
</tr>
</tbody>
</n-table>