mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-03-01 01:20:49 +03:00
164 lines
5.8 KiB
HTML
164 lines
5.8 KiB
HTML
{{define "inboundModal"}}
|
|
<a-modal id="inbound-modal" v-model="inModal.visible" :title="inModal.title" @ok="inModal.ok"
|
|
:confirm-loading="inModal.confirmLoading" :closable="true" :mask-closable="false"
|
|
:ok-text="inModal.okText" cancel-text='{{ i18n "close" }}'>
|
|
{{template "form/inbound"}}
|
|
</a-modal>
|
|
<script>
|
|
|
|
const inModal = {
|
|
title: '',
|
|
visible: false,
|
|
confirmLoading: false,
|
|
okText: '{{ i18n "sure" }}',
|
|
isEdit: false,
|
|
confirm: null,
|
|
inbound: new Inbound(),
|
|
dbInbound: new DBInbound(),
|
|
ok() {
|
|
ObjectUtil.execute(inModal.confirm, inModal.inbound, inModal.dbInbound);
|
|
},
|
|
show({ title='', okText='{{ i18n "sure" }}', inbound=null, dbInbound=null, confirm=(inbound, dbInbound)=>{}, isEdit=false }) {
|
|
this.title = title;
|
|
this.okText = okText;
|
|
if (inbound) {
|
|
this.inbound = Inbound.fromJson(inbound.toJson());
|
|
} else {
|
|
this.inbound = new Inbound();
|
|
}
|
|
if (dbInbound) {
|
|
this.dbInbound = new DBInbound(dbInbound);
|
|
} else {
|
|
this.dbInbound = new DBInbound();
|
|
}
|
|
this.confirm = confirm;
|
|
this.visible = true;
|
|
this.isEdit = isEdit;
|
|
},
|
|
close() {
|
|
inModal.visible = false;
|
|
inModal.loading(false);
|
|
},
|
|
loading(loading) {
|
|
inModal.confirmLoading = loading;
|
|
},
|
|
};
|
|
|
|
const protocols = {
|
|
VMESS: Protocols.VMESS,
|
|
VLESS: Protocols.VLESS,
|
|
TROJAN: Protocols.TROJAN,
|
|
SHADOWSOCKS: Protocols.SHADOWSOCKS,
|
|
DOKODEMO: Protocols.DOKODEMO,
|
|
SOCKS: Protocols.SOCKS,
|
|
HTTP: Protocols.HTTP,
|
|
};
|
|
|
|
new Vue({
|
|
delimiters: ['[[', ']]'],
|
|
el: '#inbound-modal',
|
|
data: {
|
|
inModal: inModal,
|
|
Protocols: protocols,
|
|
SSMethods: SSMethods,
|
|
get inbound() {
|
|
return inModal.inbound;
|
|
},
|
|
get dbInbound() {
|
|
return inModal.dbInbound;
|
|
},
|
|
get isEdit() {
|
|
return inModal.isEdit;
|
|
}
|
|
},
|
|
methods: {
|
|
streamNetworkChange(oldValue) {
|
|
if (oldValue === 'kcp') {
|
|
this.inModal.inbound.tls = false;
|
|
}
|
|
},
|
|
addClient(protocol, clients) {
|
|
switch (protocol) {
|
|
case Protocols.VMESS: return clients.push(new Inbound.VmessSettings.Vmess());
|
|
case Protocols.VLESS: return clients.push(new Inbound.VLESSSettings.VLESS());
|
|
case Protocols.TROJAN: return clients.push(new Inbound.TrojanSettings.Trojan());
|
|
default: return null;
|
|
}
|
|
},
|
|
removeClient(index, clients) {
|
|
clients.splice(index, 1);
|
|
},
|
|
async resetClientTraffic(client,event) {
|
|
const msg = await HttpUtil.post('/xui/inbound/resetClientTraffic/'+ client.email);
|
|
if (!msg.success) {
|
|
return;
|
|
}
|
|
clientStats = this.inbound.clientStats
|
|
if(clientStats.length > 0)
|
|
{
|
|
for (const key in clientStats) {
|
|
if (Object.hasOwnProperty.call(clientStats, key)) {
|
|
if(clientStats[key]['email'] == client.email){
|
|
clientStats[key]['up'] = 0
|
|
clientStats[key]['down'] = 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
isExpiry(index) {
|
|
return this.inbound.isExpiry(index)
|
|
},
|
|
getUpStats(email) {
|
|
clientStats = this.inbound.clientStats
|
|
if(clientStats.length > 0)
|
|
{
|
|
for (const key in clientStats) {
|
|
if (Object.hasOwnProperty.call(clientStats, key)) {
|
|
if(clientStats[key]['email'] == email)
|
|
return clientStats[key]['up']
|
|
|
|
}
|
|
}
|
|
}
|
|
},
|
|
getDownStats(email) {
|
|
clientStats = this.inbound.clientStats
|
|
if(clientStats.length > 0)
|
|
{
|
|
for (const key in clientStats) {
|
|
if (Object.hasOwnProperty.call(clientStats, key)) {
|
|
if(clientStats[key]['email'] == email)
|
|
return clientStats[key]['down']
|
|
|
|
}
|
|
}
|
|
}
|
|
},
|
|
isClientEnable(email) {
|
|
clientStats = this.dbInbound.clientStats ? this.dbInbound.clientStats.find(stats => stats.email === email) : null
|
|
return clientStats ? clientStats['enable'] : true
|
|
},
|
|
getHeaderText(email) {
|
|
if(email == "")
|
|
return "Add Client"
|
|
|
|
return email + (this.isClientEnable(email) == true ? ' Active' : ' Deactive')
|
|
},
|
|
getHeaderStyle(email) {
|
|
return (this.isClientEnable(email) == true ? '' : 'deactive-client')
|
|
},
|
|
getNewEmail(client) {
|
|
var chars = 'abcdefghijklmnopqrstuvwxyz1234567890';
|
|
var string = '';
|
|
var len = 7 + Math.floor(Math.random() * 5)
|
|
for(var ii=0; ii<len; ii++){
|
|
string += chars[Math.floor(Math.random() * chars.length)];
|
|
}
|
|
client.email = string
|
|
}
|
|
},
|
|
});
|
|
|
|
</script>
|
|
{{end}} |