mirror of
https://github.com/Sagit-chu/flvx.git
synced 2026-10-04 17:16:37 +08:00
fix: 节点离线时允许删除隧道关联,但禁止新增隧道 (#342)
- prepareTunnelCreateState: 更新隧道时允许已关联的离线节点,仅拒绝新增的离线节点 - syncForwardServicesWithWarnings: 离线节点跳过下发并返回警告,不再硬性失败 - applyTunnelRuntime: 所有节点类型均支持离线错误延迟处理 - 前端 validateTunnelForm: 编辑模式下跳过离线节点验证 Closes #342
This commit is contained in:
@@ -418,7 +418,7 @@ export default function TunnelPage() {
|
||||
|
||||
// 表单验证
|
||||
const validateForm = (): boolean => {
|
||||
const newErrors = validateTunnelForm(form, nodes);
|
||||
const newErrors = validateTunnelForm(form, nodes, isEdit);
|
||||
|
||||
setErrors(newErrors);
|
||||
|
||||
|
||||
@@ -33,6 +33,7 @@ export const createTunnelFormDefaults = () => {
|
||||
export const validateTunnelForm = (
|
||||
form: TunnelFormInput,
|
||||
nodes: TunnelNodeInput[],
|
||||
isEdit = false,
|
||||
): Record<string, string> => {
|
||||
const errors: Record<string, string> = {};
|
||||
|
||||
@@ -44,7 +45,9 @@ export const validateTunnelForm = (
|
||||
|
||||
if (!form.inNodeId || form.inNodeId.length === 0) {
|
||||
errors.inNodeId = "请至少选择一个入口节点";
|
||||
} else {
|
||||
} else if (!isEdit) {
|
||||
// Only enforce online check for new tunnels. During edit the backend
|
||||
// allows existing offline nodes (user may be removing them).
|
||||
const offlineInNodes = form.inNodeId.filter((item) => {
|
||||
const node = nodes.find((n) => n.id === item.nodeId);
|
||||
|
||||
@@ -64,14 +67,16 @@ export const validateTunnelForm = (
|
||||
if (!form.outNodeId || form.outNodeId.length === 0) {
|
||||
errors.outNodeId = "请至少选择一个出口节点";
|
||||
} else {
|
||||
const offlineOutNodes = form.outNodeId.filter((item) => {
|
||||
const node = nodes.find((n) => n.id === item.nodeId);
|
||||
if (!isEdit) {
|
||||
const offlineOutNodes = form.outNodeId.filter((item) => {
|
||||
const node = nodes.find((n) => n.id === item.nodeId);
|
||||
|
||||
return node && node.status !== 1;
|
||||
});
|
||||
return node && node.status !== 1;
|
||||
});
|
||||
|
||||
if (offlineOutNodes.length > 0) {
|
||||
errors.outNodeId = "所有出口节点必须在线";
|
||||
if (offlineOutNodes.length > 0) {
|
||||
errors.outNodeId = "所有出口节点必须在线";
|
||||
}
|
||||
}
|
||||
|
||||
const inNodeIds = form.inNodeId.map((item) => item.nodeId);
|
||||
|
||||
Reference in New Issue
Block a user