mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-04-20 05:52:24 +00:00
[feature] export subs
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
This commit is contained in:
parent
9f6957ef3f
commit
fb76b2d500
1 changed files with 57 additions and 4 deletions
|
@ -133,6 +133,10 @@
|
||||||
<a-icon type="export"></a-icon>
|
<a-icon type="export"></a-icon>
|
||||||
{{ i18n "pages.inbounds.export" }}
|
{{ i18n "pages.inbounds.export" }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
|
<a-menu-item key="subs">
|
||||||
|
<a-icon type="export"></a-icon>
|
||||||
|
{{ i18n "pages.inbounds.export" }} - {{ i18n "pages.settings.subSettings" }}
|
||||||
|
</a-menu-item>
|
||||||
<a-menu-item key="resetInbounds">
|
<a-menu-item key="resetInbounds">
|
||||||
<a-icon type="reload"></a-icon>
|
<a-icon type="reload"></a-icon>
|
||||||
{{ i18n "pages.inbounds.resetAllTraffic" }}
|
{{ i18n "pages.inbounds.resetAllTraffic" }}
|
||||||
|
@ -141,7 +145,7 @@
|
||||||
<a-icon type="file-done"></a-icon>
|
<a-icon type="file-done"></a-icon>
|
||||||
{{ i18n "pages.inbounds.resetAllClientTraffics" }}
|
{{ i18n "pages.inbounds.resetAllClientTraffics" }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="delDepletedClients">
|
<a-menu-item key="delDepletedClients" style="color: #FF4D4F;">
|
||||||
<a-icon type="rest"></a-icon>
|
<a-icon type="rest"></a-icon>
|
||||||
{{ i18n "pages.inbounds.delDepletedClients" }}
|
{{ i18n "pages.inbounds.delDepletedClients" }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
|
@ -217,7 +221,11 @@
|
||||||
<a-icon type="export"></a-icon>
|
<a-icon type="export"></a-icon>
|
||||||
{{ i18n "pages.inbounds.export"}}
|
{{ i18n "pages.inbounds.export"}}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
<a-menu-item key="delDepletedClients">
|
<a-menu-item key="subs">
|
||||||
|
<a-icon type="export"></a-icon>
|
||||||
|
{{ i18n "pages.inbounds.export"}} - {{ i18n "pages.settings.subSettings" }}
|
||||||
|
</a-menu-item>
|
||||||
|
<a-menu-item key="delDepletedClients" style="color: #FF4D4F;">
|
||||||
<a-icon type="rest"></a-icon>
|
<a-icon type="rest"></a-icon>
|
||||||
{{ i18n "pages.inbounds.delDepletedClients" }}
|
{{ i18n "pages.inbounds.delDepletedClients" }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
|
@ -578,6 +586,7 @@
|
||||||
this.refreshing = false;
|
this.refreshing = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.getOnlineUsers();
|
await this.getOnlineUsers();
|
||||||
this.setInbounds(msg.obj);
|
this.setInbounds(msg.obj);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
@ -642,8 +651,12 @@
|
||||||
clientCount = clients.length;
|
clientCount = clients.length;
|
||||||
if (dbInbound.enable) {
|
if (dbInbound.enable) {
|
||||||
clients.forEach(client => {
|
clients.forEach(client => {
|
||||||
client.enable ? active.push(client.email) : deactive.push(client.email);
|
if (client.enable && this.isClientOnline(client.email)) {
|
||||||
if(this.isClientOnline(client.email)) online.push(client.email);
|
active.push(client.email);
|
||||||
|
online.push(client.email);
|
||||||
|
} else {
|
||||||
|
deactive.push(client.email);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
clientStats.forEach(client => {
|
clientStats.forEach(client => {
|
||||||
if (!client.enable) {
|
if (!client.enable) {
|
||||||
|
@ -668,6 +681,7 @@
|
||||||
online: online,
|
online: online,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
searchInbounds(key) {
|
searchInbounds(key) {
|
||||||
if (ObjectUtil.isEmpty(key)) {
|
if (ObjectUtil.isEmpty(key)) {
|
||||||
this.searchedInbounds = this.dbInbounds.slice();
|
this.searchedInbounds = this.dbInbounds.slice();
|
||||||
|
@ -731,6 +745,9 @@
|
||||||
case "export":
|
case "export":
|
||||||
this.exportAllLinks();
|
this.exportAllLinks();
|
||||||
break;
|
break;
|
||||||
|
case "subs":
|
||||||
|
this.exportAllSubs();
|
||||||
|
break;
|
||||||
case "resetInbounds":
|
case "resetInbounds":
|
||||||
this.resetAllTraffic();
|
this.resetAllTraffic();
|
||||||
break;
|
break;
|
||||||
|
@ -762,6 +779,9 @@
|
||||||
case "export":
|
case "export":
|
||||||
this.inboundLinks(dbInbound.id);
|
this.inboundLinks(dbInbound.id);
|
||||||
break;
|
break;
|
||||||
|
case "subs":
|
||||||
|
this.exportSubs(dbInbound.id);
|
||||||
|
break;
|
||||||
case "clipboard":
|
case "clipboard":
|
||||||
this.copyToClipboard(dbInbound.id);
|
this.copyToClipboard(dbInbound.id);
|
||||||
break;
|
break;
|
||||||
|
@ -1186,6 +1206,22 @@
|
||||||
newDbInbound = this.checkFallback(dbInbound);
|
newDbInbound = this.checkFallback(dbInbound);
|
||||||
txtModal.show('{{ i18n "pages.inbounds.export"}}', newDbInbound.genInboundLinks(), newDbInbound.remark);
|
txtModal.show('{{ i18n "pages.inbounds.export"}}', newDbInbound.genInboundLinks(), newDbInbound.remark);
|
||||||
},
|
},
|
||||||
|
exportSubs(dbInboundId) {
|
||||||
|
const dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
|
||||||
|
const clients = this.getInboundClients(dbInbound);
|
||||||
|
let subLinks = []
|
||||||
|
if (clients != null){
|
||||||
|
clients.forEach(c => {
|
||||||
|
if (c.subId && c.subId.length>0){
|
||||||
|
subLinks.push(this.subSettings.subURI + c.subId + "?name=" + c.subId)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
txtModal.show(
|
||||||
|
'{{ i18n "pages.inbounds.export"}} - {{ i18n "pages.settings.subSettings" }}',
|
||||||
|
[...new Set(subLinks)].join('\n'),
|
||||||
|
dbInbound.remark + "-Subs");
|
||||||
|
},
|
||||||
importInbound() {
|
importInbound() {
|
||||||
promptModal.open({
|
promptModal.open({
|
||||||
title: '{{ i18n "pages.inbounds.importInbound" }}',
|
title: '{{ i18n "pages.inbounds.importInbound" }}',
|
||||||
|
@ -1198,6 +1234,23 @@
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
exportAllSubs() {
|
||||||
|
let subLinks = []
|
||||||
|
for (const dbInbound of this.dbInbounds) {
|
||||||
|
const clients = this.getInboundClients(dbInbound);
|
||||||
|
if (clients != null){
|
||||||
|
clients.forEach(c => {
|
||||||
|
if (c.subId && c.subId.length>0){
|
||||||
|
subLinks.push(this.subSettings.subURI + c.subId + "?name=" + c.subId)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
txtModal.show(
|
||||||
|
'{{ i18n "pages.inbounds.export"}} - {{ i18n "pages.settings.subSettings" }}',
|
||||||
|
[...new Set(subLinks)].join('\r\n'),
|
||||||
|
'All-Inbounds-Subs');
|
||||||
|
},
|
||||||
exportAllLinks() {
|
exportAllLinks() {
|
||||||
let copyText = [];
|
let copyText = [];
|
||||||
for (const dbInbound of this.dbInbounds) {
|
for (const dbInbound of this.dbInbounds) {
|
||||||
|
|
Loading…
Reference in a new issue