Browse Source

Merge pull request #114 from MHSanaei/dev

clone inbound + reset traffic all inbound
Ho3ein 1 year ago
parent
commit
43aea38641

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

@@ -52,6 +52,7 @@
                         <div slot="title">
                             <a-button type="primary" icon="plus" @click="openAddInbound">{{ i18n "pages.inbounds.addInbound" }}</a-button>
                             <a-button type="primary" icon="export" @click="exportAllLinks">{{ i18n "pages.inbounds.export" }}</a-button>
+							<a-button type="primary" icon="reload" @click="resetAllTraffic">{{ i18n "pages.inbounds.resetAllTraffic" }}</a-button>
                         </div>
                         <a-input v-model.lazy="searchKey" placeholder="{{ i18n "search" }}" autofocus style="max-width: 300px"></a-input>
                         <a-table :columns="columns" :row-key="dbInbound => dbInbound.id"
@@ -95,6 +96,9 @@
                                         </template>
                                         <a-menu-item key="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 key="delete">
                                             <span style="color: #FF4D4F">
@@ -310,11 +314,47 @@
                         break;
                     case "resetTraffic":
                         this.resetTraffic(dbInbound.id);
+                        break;
+					case "clone":
+                        this.openCloneInbound(dbInbound);
                         break;
                     case "delete":
                         this.delInbound(dbInbound.id);
                         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() {
                 inModal.show({
@@ -461,6 +501,22 @@
                         this.updateInbound(inbound, dbInbound);
                     },
                 });
+            },
+			resetAllTraffic() {
+                    this.$confirm({
+                        title: '{{ i18n "pages.inbounds.resetAllTrafficTitle"}}',
+                        content: '{{ i18n "pages.inbounds.resetAllTrafficContent"}}',
+                        okText: '{{ i18n "pages.inbounds.resetAllTrafficOkText"}}',
+                        cancelText: '{{ i18n "pages.inbounds.resetAllTrafficCancelText"}}',
+                        onOk: async () => {
+                            for (const dbInbound of this.dbInbounds) {
+                                const inbound = dbInbound.toInbound();
+                                dbInbound.up = 0;
+                                dbInbound.down = 0;
+                                this.updateInbound(inbound, dbInbound);
+                            }
+                        },
+                    });
             },
             delInbound(dbInboundId) {
                 this.$confirm({

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

@@ -129,6 +129,15 @@
 "clickOnQRcode" = "Click on QR Code to Copy"
 "client" = "Client"
 "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"
+"resetAllTraffic" = "Reset All Inbounds Traffic"
+"resetAllTrafficTitle" = "Reset all inbounds traffic"
+"resetAllTrafficContent" = "Are you sure to reset all inbounds traffic ?"
+"resetAllTrafficOkText" = "Confirm"
+"resetAllTrafficCancelText" = "Cancel"
 
 [pages.client]
 "add" = "Add client"

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

@@ -129,6 +129,16 @@
 "clickOnQRcode" = "برای کپی بر روی کد تصویری کلیک کنید"
 "client" = "کاربر"
 "export" = "استخراج لینکها"
+"Clone" = "کلون"
+"cloneInbound" = "ایجاد"
+"cloneInboundContent" = "همه موارد این ورودی بجز پورت ، ای پی و کلاینت ها روی کلون اعمال خواهند شد"
+"cloneInboundOk" = "ساختن یک کلون از"
+"resetAllTraffic" = "ریست ترافیک کل ورودی ها"
+"resetAllTrafficTitle" = "ریست ترافیک کل ورودی ها"
+"resetAllTrafficContent" = "آیا مطمئن هستید که تمام ترافیک ورودی ها را ریست می کنید؟"
+"resetAllTrafficOkText" = "بله"
+"resetAllTrafficCancelText" = "انصراف"
+
 
 [pages.client]
 "add" = "کاربر جدید"

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

@@ -129,6 +129,15 @@
 "clickOnQRcode" = "点击二维码复制"
 "client" = "客户"
 "export" = "导出链接"
+"Clone" = "克隆"
+"cloneInbound" = "创造"
+"cloneInboundContent" = "此入站的所有项目除 Port、Listening IP、Clients 将应用于克隆"
+"cloneInboundOk" = "从创建克隆"
+"resetAllTraffic" = "重置所有入站流量"
+"resetAllTrafficTitle" = "重置所有入站流量"
+"resetAllTrafficContent" = "您确定要重置所有入站流量吗?"
+"resetAllTrafficOkText" = "确认"
+"resetAllTrafficCancelText" = "取消"
 
 [pages.client]
 "add" = "添加客户端"