mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2025-08-31 15:26:18 +00:00
Add files via upload
This commit is contained in:
parent
6cfbcfab9a
commit
aced4c41d0
6 changed files with 21 additions and 35 deletions
|
@ -9,11 +9,6 @@ const supportLangs = [
|
||||||
value: 'fa-IR',
|
value: 'fa-IR',
|
||||||
icon: '🇮🇷',
|
icon: '🇮🇷',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: '汉语',
|
|
||||||
value: 'zh-Hans',
|
|
||||||
icon: '🇨🇳',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
name: 'Русский',
|
name: 'Русский',
|
||||||
value: 'ru-RU',
|
value: 'ru-RU',
|
||||||
|
|
|
@ -421,6 +421,7 @@ class HttpStreamSettings extends XrayCommonClass {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class QuicStreamSettings extends XrayCommonClass {
|
class QuicStreamSettings extends XrayCommonClass {
|
||||||
constructor(security=VmessMethods.NONE,
|
constructor(security=VmessMethods.NONE,
|
||||||
key=RandomUtil.randomSeq(10), type='none') {
|
key=RandomUtil.randomSeq(10), type='none') {
|
||||||
|
@ -482,7 +483,7 @@ class TlsStreamSettings extends XrayCommonClass {
|
||||||
cipherSuites = '',
|
cipherSuites = '',
|
||||||
rejectUnknownSni = false,
|
rejectUnknownSni = false,
|
||||||
certificates=[new TlsStreamSettings.Cert()],
|
certificates=[new TlsStreamSettings.Cert()],
|
||||||
alpn=[ALPN_OPTION.HTTP1,ALPN_OPTION.H2],
|
alpn=[ALPN_OPTION.H2,ALPN_OPTION.HTTP1],
|
||||||
settings=new TlsStreamSettings.Settings()) {
|
settings=new TlsStreamSettings.Settings()) {
|
||||||
super();
|
super();
|
||||||
this.server = serverName;
|
this.server = serverName;
|
||||||
|
@ -815,7 +816,6 @@ class SockoptStreamSettings extends XrayCommonClass {
|
||||||
this.tproxy = tproxy;
|
this.tproxy = tproxy;
|
||||||
}
|
}
|
||||||
static fromJson(json = {}) {
|
static fromJson(json = {}) {
|
||||||
if (Object.keys(json).length === 0) return undefined;
|
|
||||||
return new SockoptStreamSettings(
|
return new SockoptStreamSettings(
|
||||||
json.acceptProxyProtocol,
|
json.acceptProxyProtocol,
|
||||||
json.tcpFastOpen,
|
json.tcpFastOpen,
|
||||||
|
@ -823,7 +823,6 @@ class SockoptStreamSettings extends XrayCommonClass {
|
||||||
json.tproxy,
|
json.tproxy,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
toJson() {
|
toJson() {
|
||||||
return {
|
return {
|
||||||
acceptProxyProtocol: this.acceptProxyProtocol,
|
acceptProxyProtocol: this.acceptProxyProtocol,
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
Sniffing
|
Sniffing
|
||||||
<a-tooltip>
|
<a-tooltip>
|
||||||
<template slot="title">
|
<template slot="title">
|
||||||
<span>{{ i18n "pages.inbounds.noRecommendKeepDefault" }}</span>
|
<span >{{ i18n "pages.inbounds.noRecommendKeepDefault" }}</span>
|
||||||
</template>
|
</template>
|
||||||
<a-icon type="question-circle" theme="filled"></a-icon>
|
<a-icon type="question-circle" theme="filled"></a-icon>
|
||||||
</a-tooltip>
|
</a-tooltip>
|
||||||
|
|
|
@ -711,7 +711,7 @@
|
||||||
openEditClient(dbInboundId, client) {
|
openEditClient(dbInboundId, client) {
|
||||||
dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
|
dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
|
||||||
clients = this.getInboundClients(dbInbound);
|
clients = this.getInboundClients(dbInbound);
|
||||||
index = this.findIndexOfClient(dbInbound.protocol, clients, client);
|
index = this.findIndexOfClient(clients, client);
|
||||||
clientModal.show({
|
clientModal.show({
|
||||||
title: '{{ i18n "pages.client.edit"}}',
|
title: '{{ i18n "pages.client.edit"}}',
|
||||||
okText: '{{ i18n "pages.client.submitEdit"}}',
|
okText: '{{ i18n "pages.client.submitEdit"}}',
|
||||||
|
@ -725,13 +725,8 @@
|
||||||
isEdit: true
|
isEdit: true
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
findIndexOfClient(protocol, clients, client) {
|
findIndexOfClient(clients, client) {
|
||||||
switch (protocol) {
|
return clients.findIndex(item => JSON.stringify(item) === JSON.stringify(client));
|
||||||
case Protocols.TROJAN:
|
|
||||||
case Protocols.SHADOWSOCKS:
|
|
||||||
return clients.findIndex(item => item.password === client.password && item.email === client.email);
|
|
||||||
default: return clients.findIndex(item => item.id === client.id && item.email === client.email);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
async addClient(clients, dbInboundId) {
|
async addClient(clients, dbInboundId) {
|
||||||
const data = {
|
const data = {
|
||||||
|
@ -837,7 +832,8 @@
|
||||||
dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
|
dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
|
||||||
inbound = dbInbound.toInbound();
|
inbound = dbInbound.toInbound();
|
||||||
clients = this.getClients(dbInbound.protocol, inbound.settings);
|
clients = this.getClients(dbInbound.protocol, inbound.settings);
|
||||||
index = this.findIndexOfClient(dbInbound.protocol, clients, client);
|
client.enable = !client.enable; // For finding correct index in findIndexOfClient() function
|
||||||
|
index = this.findIndexOfClient(clients, client);
|
||||||
clients[index].enable = !clients[index].enable;
|
clients[index].enable = !clients[index].enable;
|
||||||
clientId = this.getClientId(dbInbound.protocol, clients[index]);
|
clientId = this.getClientId(dbInbound.protocol, clients[index]);
|
||||||
await this.updateClient(clients[index], dbInboundId, clientId);
|
await this.updateClient(clients[index], dbInboundId, clientId);
|
||||||
|
|
|
@ -78,9 +78,8 @@
|
||||||
<a-row>
|
<a-row>
|
||||||
<a-col :sm="24" :md="12">
|
<a-col :sm="24" :md="12">
|
||||||
<a-card hoverable :class="themeSwitcher.darkCardClass">
|
<a-card hoverable :class="themeSwitcher.darkCardClass">
|
||||||
3X: <a href="https://github.com/MHSanaei/3x-ui/releases" target="_blank"><a-tag color="green">v{{ .cur_ver }}</a-tag></a>
|
X-UI: <a href="https://github.com/quydang04/x-ui/releases" target="_blank"><a-tag color="green">v{{ .cur_ver }}</a-tag></a>
|
||||||
Xray: <a-tag color="green" style="cursor: pointer;" @click="openSelectV2rayVersion">v[[ status.xray.version ]]</a-tag>
|
Xray version: <a-tag color="green" style="cursor: pointer;" @click="openSelectV2rayVersion">v[[ status.xray.version ]]</a-tag>
|
||||||
<a href="https://t.me/panel3xui" target="_blank"><a-tag color="green">@panel3xui</a-tag></a>
|
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :sm="24" :md="12">
|
<a-col :sm="24" :md="12">
|
||||||
|
@ -111,7 +110,7 @@
|
||||||
{{ i18n "pages.index.operationHours" }}:
|
{{ i18n "pages.index.operationHours" }}:
|
||||||
Xray:
|
Xray:
|
||||||
<a-tag color="green">[[ formatSecond(status.appStats.uptime) ]]</a-tag>
|
<a-tag color="green">[[ formatSecond(status.appStats.uptime) ]]</a-tag>
|
||||||
OS:
|
System:
|
||||||
<a-tag color="green">[[ formatSecond(status.uptime) ]]</a-tag>
|
<a-tag color="green">[[ formatSecond(status.uptime) ]]</a-tag>
|
||||||
</a-card>
|
</a-card>
|
||||||
</a-col>
|
</a-col>
|
||||||
|
|
|
@ -36,8 +36,8 @@
|
||||||
"status" = "Trạng thái"
|
"status" = "Trạng thái"
|
||||||
"enabled" = "Đã kích hoạt"
|
"enabled" = "Đã kích hoạt"
|
||||||
"disabled" = "Đã tắt"
|
"disabled" = "Đã tắt"
|
||||||
"depleted" = "Đã cạn kiệt"
|
"depleted" = "Depleted"
|
||||||
"depletingSoon" = "Sắp cạn kiệt"
|
"depletingSoon" = "Deplete Soon"
|
||||||
"domainName" = "Tên miền"
|
"domainName" = "Tên miền"
|
||||||
"monitor" = "Listening IP"
|
"monitor" = "Listening IP"
|
||||||
"certificate" = "Chứng chỉ"
|
"certificate" = "Chứng chỉ"
|
||||||
|
@ -127,6 +127,7 @@
|
||||||
"network" = "Mạng"
|
"network" = "Mạng"
|
||||||
"destinationPort" = "Cổng đích"
|
"destinationPort" = "Cổng đích"
|
||||||
"targetAddress" = "Địa chỉ mục tiêu"
|
"targetAddress" = "Địa chỉ mục tiêu"
|
||||||
|
"disableInsecureEncryption" = "Vô hiệu hóa mã hóa không an toàn"
|
||||||
"monitorDesc" = "Mặc định để trống"
|
"monitorDesc" = "Mặc định để trống"
|
||||||
"meansNoLimit" = "Nghĩa là không giới hạn"
|
"meansNoLimit" = "Nghĩa là không giới hạn"
|
||||||
"totalFlow" = "Tổng lưu lượng"
|
"totalFlow" = "Tổng lưu lượng"
|
||||||
|
@ -154,9 +155,9 @@
|
||||||
"resetAllClientTraffics" = "Đặt lại lưu lượng cho tất cả client"
|
"resetAllClientTraffics" = "Đặt lại lưu lượng cho tất cả client"
|
||||||
"resetAllClientTrafficTitle" = "Đặt lại lưu lượng cho tất cả client"
|
"resetAllClientTrafficTitle" = "Đặt lại lưu lượng cho tất cả client"
|
||||||
"resetAllClientTrafficContent" = "Bạn có chắc chắn muốn đặt lại tất cả lưu lượng cho tất cả client không?"
|
"resetAllClientTrafficContent" = "Bạn có chắc chắn muốn đặt lại tất cả lưu lượng cho tất cả client không?"
|
||||||
"delDepletedClients" = "Xóa các client đã cạn kiệt"
|
"delDepletedClients" = "Xóa các client đã Depleted"
|
||||||
"delDepletedClientsTitle" = "Xóa các client đã cạn kiệt"
|
"delDepletedClientsTitle" = "Xóa các client đã Depleted"
|
||||||
"delDepletedClientsContent" = "Bạn có chắc chắn muốn xóa tất cả các client đã cạn kiệt không?"
|
"delDepletedClientsContent" = "Bạn có chắc chắn muốn xóa tất cả các client đã Depleted không?"
|
||||||
"email" = "Email"
|
"email" = "Email"
|
||||||
"emailDesc" = "Vui lòng cung cấp một địa chỉ email duy nhất."
|
"emailDesc" = "Vui lòng cung cấp một địa chỉ email duy nhất."
|
||||||
"IPLimit" = "Giới hạn IP"
|
"IPLimit" = "Giới hạn IP"
|
||||||
|
@ -251,7 +252,7 @@
|
||||||
"expireTimeDiff" = "Ngưỡng hết hạn cho thông báo"
|
"expireTimeDiff" = "Ngưỡng hết hạn cho thông báo"
|
||||||
"expireTimeDiffDesc" = "Nhận thông báo về việc hết hạn tài khoản trước ngưỡng này (đơn vị: ngày)"
|
"expireTimeDiffDesc" = "Nhận thông báo về việc hết hạn tài khoản trước ngưỡng này (đơn vị: ngày)"
|
||||||
"trafficDiff" = "Ngưỡng lưu lượng cho thông báo"
|
"trafficDiff" = "Ngưỡng lưu lượng cho thông báo"
|
||||||
"trafficDiffDesc" = "Nhận thông báo về việc cạn kiệt lưu lượng trước khi đạt đến ngưỡng này (đơn vị: GB)"
|
"trafficDiffDesc" = "Nhận thông báo về việc hết lưu lượng trước khi đạt đến ngưỡng này (đơn vị: GB)"
|
||||||
"tgNotifyCpu" = "Ngưỡng cảnh báo tỷ lệ CPU"
|
"tgNotifyCpu" = "Ngưỡng cảnh báo tỷ lệ CPU"
|
||||||
"tgNotifyCpuDesc" = "Nhận thông báo nếu tỷ lệ sử dụng CPU vượt quá ngưỡng này (đơn vị: %)"
|
"tgNotifyCpuDesc" = "Nhận thông báo nếu tỷ lệ sử dụng CPU vượt quá ngưỡng này (đơn vị: %)"
|
||||||
"timeZone" = "Múi giờ"
|
"timeZone" = "Múi giờ"
|
||||||
|
@ -273,10 +274,6 @@
|
||||||
"subDomainDesc" = "Mặc định để trống để nghe tất cả các tên miền và IP"
|
"subDomainDesc" = "Mặc định để trống để nghe tất cả các tên miền và IP"
|
||||||
"subUpdates" = "Khoảng thời gian cập nhật đăng ký"
|
"subUpdates" = "Khoảng thời gian cập nhật đăng ký"
|
||||||
"subUpdatesDesc" = "Số giờ giữa các cập nhật trong ứng dụng khách"
|
"subUpdatesDesc" = "Số giờ giữa các cập nhật trong ứng dụng khách"
|
||||||
"subEncrypt" = "Mã hóa cấu hình"
|
|
||||||
"subEncryptDesc" = "Mã hóa các cấu hình được trả về trong đăng ký"
|
|
||||||
"subShowInfo" = "Hiển thị thông tin sử dụng"
|
|
||||||
"subShowInfoDesc" = "Hiển thị lưu lượng truy cập còn lại và ngày sau tên cấu hình"
|
|
||||||
|
|
||||||
[pages.settings.templates]
|
[pages.settings.templates]
|
||||||
"title" = "Mẫu"
|
"title" = "Mẫu"
|
||||||
|
@ -445,7 +442,7 @@
|
||||||
"exhaustedMsg" = "🚨 Sự cạn kiệt {{ .Type }}:\r\n"
|
"exhaustedMsg" = "🚨 Sự cạn kiệt {{ .Type }}:\r\n"
|
||||||
"exhaustedCount" = "🚨 Số lần cạn kiệt {{ .Type }}:\r\n"
|
"exhaustedCount" = "🚨 Số lần cạn kiệt {{ .Type }}:\r\n"
|
||||||
"disabled" = "🛑 Vô hiệu hóa: {{ .Disabled }}\r\n"
|
"disabled" = "🛑 Vô hiệu hóa: {{ .Disabled }}\r\n"
|
||||||
"depleteSoon" = "🔜 Sắp cạn kiệt: {{ .Deplete }}\r\n \r\n"
|
"depleteSoon" = "🔜 Deplete: {{ .Deplete }}\r\n \r\n"
|
||||||
"backupTime" = "🗄 Thời gian sao lưu: {{ .Time }}\r\n"
|
"backupTime" = "🗄 Thời gian sao lưu: {{ .Time }}\r\n"
|
||||||
"refreshedOn" = "\r\n📋🔄 Đã cập nhật lần cuối vào: {{ .Time }}\r\n \r\n"
|
"refreshedOn" = "\r\n📋🔄 Đã cập nhật lần cuối vào: {{ .Time }}\r\n \r\n"
|
||||||
|
|
||||||
|
@ -460,7 +457,7 @@
|
||||||
"dbBackup" = "Tải Backup DB"
|
"dbBackup" = "Tải Backup DB"
|
||||||
"serverUsage" = "Sử Dụng Máy Chủ"
|
"serverUsage" = "Sử Dụng Máy Chủ"
|
||||||
"getInbounds" = "Lấy Inbounds"
|
"getInbounds" = "Lấy Inbounds"
|
||||||
"depleteSoon" = "Sắp Cạn Kiệt"
|
"depleteSoon" = "Deplete Soon"
|
||||||
"clientUsage" = "Lấy Sử Dụng"
|
"clientUsage" = "Lấy Sử Dụng"
|
||||||
"commands" = "Lệnh"
|
"commands" = "Lệnh"
|
||||||
"refresh" = "🔄 Cập Nhật"
|
"refresh" = "🔄 Cập Nhật"
|
||||||
|
|
Loading…
Reference in a new issue