فهرست منبع

new feature - clone inbound

MHSanaei 1 سال پیش
والد
کامیت
7b38d02ff0
4فایلهای تغییر یافته به همراه52 افزوده شده و 0 حذف شده
  1. 39 0
      web/html/xui/inbounds.html
  2. 4 0
      web/translation/translate.en_US.toml
  3. 5 0
      web/translation/translate.fa_IR.toml
  4. 4 0
      web/translation/translate.zh_Hans.toml

+ 39 - 0
web/html/xui/inbounds.html

@@ -95,6 +95,9 @@
                                         </template>
                                         </template>
                                         <a-menu-item key="resetTraffic">
                                         <a-menu-item key="resetTraffic">
                                             <a-icon type="retweet"></a-icon> {{ i18n "pages.inbounds.resetTraffic" }}
                                             <a-icon type="retweet"></a-icon> {{ i18n "pages.inbounds.resetTraffic" }}
+                                        </a-menu-item>
+										<a-menu-item key="clone">
+                                            <a-icon type="block"></a-icon> {{ i18n "pages.inbounds.Clone"}}
                                         </a-menu-item>
                                         </a-menu-item>
                                         <a-menu-item key="delete">
                                         <a-menu-item key="delete">
                                             <span style="color: #FF4D4F">
                                             <span style="color: #FF4D4F">
@@ -310,11 +313,47 @@
                         break;
                         break;
                     case "resetTraffic":
                     case "resetTraffic":
                         this.resetTraffic(dbInbound.id);
                         this.resetTraffic(dbInbound.id);
+                        break;
+					case "clone":
+                        this.openCloneInbound(dbInbound);
                         break;
                         break;
                     case "delete":
                     case "delete":
                         this.delInbound(dbInbound.id);
                         this.delInbound(dbInbound.id);
                         break;
                         break;
                 }
                 }
+            },
+			openCloneInbound(dbInbound) {
+                this.$confirm({
+                    title: '{{ i18n "pages.inbounds.cloneInbound"}} ' + dbInbound.remark,
+                    content: '{{ i18n "pages.inbounds.cloneInboundContent"}}',
+                    okText: '{{ i18n "pages.inbounds.cloneInboundOk"}}',
+                    cancelText: '{{ i18n "cancel" }}',
+                    onOk: () => {
+                        const baseInbound = dbInbound.toInbound();
+                        dbInbound.up = 0;
+                        dbInbound.down = 0;
+                        this.cloneInbound(baseInbound, dbInbound);
+                    },
+                });
+            },
+            async cloneInbound(baseInbound, dbInbound) {
+                const inbound = new Inbound();
+                const data = {
+                    up: dbInbound.up,
+                    down: dbInbound.down,
+                    total: dbInbound.total,
+                    remark: dbInbound.remark + " - Cloned",
+                    enable: dbInbound.enable,
+                    expiryTime: dbInbound.expiryTime,
+
+                    listen: inbound.listen,
+                    port: inbound.port,
+                    protocol: baseInbound.protocol,
+                    settings: inbound.settings.toString(),
+                    streamSettings: baseInbound.stream.toString(),
+                    sniffing: baseInbound.canSniffing() ? baseInbound.sniffing.toString() : '{}',
+                };
+                await this.submit('/xui/inbound/add', data, inModal);
             },
             },
             openAddInbound() {
             openAddInbound() {
                 inModal.show({
                 inModal.show({

+ 4 - 0
web/translation/translate.en_US.toml

@@ -129,6 +129,10 @@
 "clickOnQRcode" = "Click on QR Code to Copy"
 "clickOnQRcode" = "Click on QR Code to Copy"
 "client" = "Client"
 "client" = "Client"
 "export" = "Export links"
 "export" = "Export links"
+"Clone" = "Clone"
+"cloneInbound" = "Create"
+"cloneInboundContent" = "All items of this inbound except Port, Listening IP, Clients will be applied to the clone"
+"cloneInboundOk" = "Creating a clone from"
 
 
 [pages.client]
 [pages.client]
 "add" = "Add client"
 "add" = "Add client"

+ 5 - 0
web/translation/translate.fa_IR.toml

@@ -129,6 +129,11 @@
 "clickOnQRcode" = "برای کپی بر روی کد تصویری کلیک کنید"
 "clickOnQRcode" = "برای کپی بر روی کد تصویری کلیک کنید"
 "client" = "کاربر"
 "client" = "کاربر"
 "export" = "استخراج لینکها"
 "export" = "استخراج لینکها"
+"Clone" = "کلون"
+"cloneInbound" = "ایجاد"
+"cloneInboundContent" = "همه موارد این ورودی بجز پورت ، ای پی و کلاینت ها روی کلون اعمال خواهند شد"
+"cloneInboundOk" = "ساختن یک کلون از"
+
 
 
 [pages.client]
 [pages.client]
 "add" = "کاربر جدید"
 "add" = "کاربر جدید"

+ 4 - 0
web/translation/translate.zh_Hans.toml

@@ -129,6 +129,10 @@
 "clickOnQRcode" = "点击二维码复制"
 "clickOnQRcode" = "点击二维码复制"
 "client" = "客户"
 "client" = "客户"
 "export" = "导出链接"
 "export" = "导出链接"
+"Clone" = "克隆"
+"cloneInbound" = "创造"
+"cloneInboundContent" = "此入站的所有项目除 Port、Listening IP、Clients 将应用于克隆"
+"cloneInboundOk" = "从创建克隆"
 
 
 [pages.client]
 [pages.client]
 "add" = "添加客户端"
 "add" = "添加客户端"