From aa196372887dcfd1048522d13c573f8c0296548c Mon Sep 17 00:00:00 2001 From: Alireza Ahmadi Date: Tue, 5 Dec 2023 23:03:38 +0100 Subject: [PATCH] outbound tag validation #1286 --- web/html/xui/xray.html | 6 ++++-- web/html/xui/xray_outbound_modal.html | 6 ++++-- web/html/xui/xray_reverse_modal.html | 4 ++-- web/html/xui/xray_rule_modal.html | 4 ++-- web/translation/translate.en_US.toml | 1 + web/translation/translate.es_ES.toml | 1 + web/translation/translate.fa_IR.toml | 1 + web/translation/translate.ru_RU.toml | 1 + web/translation/translate.vi_VN.toml | 1 + web/translation/translate.zh_Hans.toml | 1 + 10 files changed, 18 insertions(+), 8 deletions(-) diff --git a/web/html/xui/xray.html b/web/html/xui/xray.html index 9bcacebd..b8bbe094 100644 --- a/web/html/xui/xray.html +++ b/web/html/xui/xray.html @@ -747,7 +747,8 @@ } outModal.close(); }, - isEdit: false + isEdit: false, + tags: this.templateSettings.outbounds.map(obj => obj.tag) }); }, editOutbound(index){ @@ -760,7 +761,8 @@ this.outboundSettings = JSON.stringify(this.templateSettings.outbounds); outModal.close(); }, - isEdit: true + isEdit: true, + tags: this.outboundData.filter((o) => o.key != index ).map(obj => obj.tag) }); }, deleteOutbound(index){ diff --git a/web/html/xui/xray_outbound_modal.html b/web/html/xui/xray_outbound_modal.html index c8be04c4..2941e096 100644 --- a/web/html/xui/xray_outbound_modal.html +++ b/web/html/xui/xray_outbound_modal.html @@ -21,10 +21,11 @@ duplicateTag: false, isValid: true, activeKey: '1', + tags: [], ok() { ObjectUtil.execute(outModal.confirm, outModal.outbound.toJson()); }, - show({ title='', okText='{{ i18n "sure" }}', outbound, confirm=(outbound)=>{}, isEdit=false }) { + show({ title='', okText='{{ i18n "sure" }}', outbound, confirm=(outbound)=>{}, isEdit=false, tags=[] }) { this.title = title; this.okText = okText; this.confirm = confirm; @@ -34,6 +35,7 @@ this.visible = true; this.outbound = isEdit ? Outbound.fromJson(outbound) : new Outbound(); this.isEdit = isEdit; + this.tags = tags; this.check() }, close() { @@ -44,7 +46,7 @@ outModal.confirmLoading = loading; }, check(){ - if(outModal.outbound.tag == ''){ + if(outModal.outbound.tag == '' || outModal.tags.includes(outModal.outbound.tag)){ this.duplicateTag = true; this.isValid = false; } else { diff --git a/web/html/xui/xray_reverse_modal.html b/web/html/xui/xray_reverse_modal.html index bd0152bb..71a21517 100644 --- a/web/html/xui/xray_reverse_modal.html +++ b/web/html/xui/xray_reverse_modal.html @@ -111,9 +111,9 @@ ] } this.isEdit = isEdit; - this.inboundTags = app.templateSettings.inbounds.map(obj => obj.tag); + this.inboundTags = app.templateSettings.inbounds.filter((i) => !ObjectUtil.isEmpty(i.tag)).map(obj => obj.tag); this.inboundTags.push(...app.inboundTags); - this.outboundTags = app.templateSettings.outbounds.map(obj => obj.tag); + this.outboundTags = app.templateSettings.outbounds.filter((o) => !ObjectUtil.isEmpty(o.tag)).map(obj => obj.tag); }, close() { reverseModal.visible = false; diff --git a/web/html/xui/xray_rule_modal.html b/web/html/xui/xray_rule_modal.html index d786ebb7..6c5b3c08 100644 --- a/web/html/xui/xray_rule_modal.html +++ b/web/html/xui/xray_rule_modal.html @@ -152,9 +152,9 @@ } } this.isEdit = isEdit; - this.inboundTags = app.templateSettings.inbounds.map(obj => obj.tag); + this.inboundTags = app.templateSettings.inbounds.filter((i) => !ObjectUtil.isEmpty(i.tag)).map(obj => obj.tag); this.inboundTags.push(...app.inboundTags); - this.outboundTags = app.templateSettings.outbounds.map(obj => obj.tag); + this.outboundTags = app.templateSettings.outbounds.filter((o) => !ObjectUtil.isEmpty(o.tag)).map(obj => obj.tag); if(app.templateSettings.reverse){ if(app.templateSettings.reverse.bridges) { this.inboundTags.push(...app.templateSettings.reverse.bridges.map(b => b.tag)); diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index fbc8170a..a90f703d 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -390,6 +390,7 @@ "editOutbound" = "Edit outbound" "editReverse" = "Edit reverse" "tag" = "Tag" +"tagDesc" = "Unique tag" "address" = "Address" "reverse" = "Reverse" "domain" = "Domain" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index ea501a6c..c33d6ba9 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -390,6 +390,7 @@ "editOutbound" = "Editar salida" "editReverse" = "Editar reverso" "tag" = "Etiqueta" +"tagDesc" = "etiqueta única" "address" = "Dirección" "reverse" = "Reverso" "domain" = "Dominio" diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index d4809819..3dfb18c4 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -390,6 +390,7 @@ "editOutbound" = "ویرایش خروجی" "editReverse" = "ویرایش معکوس" "tag" = "برچسب" +"tagDesc" = "برچسب یگانه" "address" = "آدرس" "reverse" = "معکوس" "domain" = "دامنه" diff --git a/web/translation/translate.ru_RU.toml b/web/translation/translate.ru_RU.toml index 7cd1cd15..2b3de7a5 100644 --- a/web/translation/translate.ru_RU.toml +++ b/web/translation/translate.ru_RU.toml @@ -390,6 +390,7 @@ "editOutbound" = "Изменить исходящий" "editReverse" = "Редактировать реверс" "tag" = "Тег" +"tagDesc" = "уникальный тег" "address" = "Адрес" "reverse" = "Обратный" "domain" = "Домен" diff --git a/web/translation/translate.vi_VN.toml b/web/translation/translate.vi_VN.toml index 75054d3b..f15f25a1 100644 --- a/web/translation/translate.vi_VN.toml +++ b/web/translation/translate.vi_VN.toml @@ -390,6 +390,7 @@ "editOutbound" = "Chỉnh sửa gửi đi" "editReverse" = "Chỉnh sửa ngược lại" "tag" = "Thẻ" +"tagDesc" = "thẻ duy nhất" "address" = "Địa chỉ" "reverse" = "Đảo ngược" "domain" = "Miền" diff --git a/web/translation/translate.zh_Hans.toml b/web/translation/translate.zh_Hans.toml index 55e8833a..e60f8964 100644 --- a/web/translation/translate.zh_Hans.toml +++ b/web/translation/translate.zh_Hans.toml @@ -390,6 +390,7 @@ "editOutbound" = "编辑出站" "editReverse" = "编辑反向" "tag" = "标签" +"tagDesc" = "独特的标签" "address" = "地址" "rreverse" = "反转" "domain" = "域名"