Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMHSanaei <ho3ein.sanaei@gmail.com>2023-12-10 20:13:48 +0300
committerAlireza Ahmadi <alireza7@gmail.com>2023-12-11 16:58:25 +0300
commita2343d204191617dcf316a6d46277571a5bf9b46 (patch)
tree68e7da87e60b105e81ba7124900d53d891f5daa0
parent24ef7498422bedc73661ea9ebd1300ec12ac681d (diff)
v2.0.0v2.0.0
-rw-r--r--Dockerfile1
-rw-r--r--sub/subService.go2
-rw-r--r--web/assets/css/custom.css4
-rw-r--r--web/assets/js/model/dbinbound.js2
-rw-r--r--web/assets/js/model/xray.js28
-rw-r--r--web/html/xui/inbounds.html12
-rw-r--r--web/html/xui/xray.html56
-rw-r--r--web/translation/translate.en_US.toml120
-rw-r--r--web/translation/translate.es_ES.toml118
-rw-r--r--web/translation/translate.fa_IR.toml118
-rw-r--r--web/translation/translate.ru_RU.toml118
-rw-r--r--web/translation/translate.vi_VN.toml118
-rw-r--r--web/translation/translate.zh_Hans.toml118
13 files changed, 393 insertions, 422 deletions
diff --git a/Dockerfile b/Dockerfile
index 9a33c1d3..951d463b 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -5,6 +5,7 @@ FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS builder
WORKDIR /app
ARG TARGETARCH
ENV CGO_ENABLED=1
+ENV CGO_CFLAGS="-D_LARGEFILE64_SOURCE"
RUN apk --no-cache --update add \
build-base \
diff --git a/sub/subService.go b/sub/subService.go
index 251ef2e8..332f8150 100644
--- a/sub/subService.go
+++ b/sub/subService.go
@@ -876,7 +876,7 @@ func (s *SubService) genRemark(inbound *model.Inbound, email string, extra strin
orders['i'] = inbound.Remark
}
if len(extra) > 0 {
- orders['e'] = extra
+ orders['o'] = extra
}
var remark []string
diff --git a/web/assets/css/custom.css b/web/assets/css/custom.css
index 837ca739..fc1cb59e 100644
--- a/web/assets/css/custom.css
+++ b/web/assets/css/custom.css
@@ -94,10 +94,6 @@ style attribute {
overflow-x: auto !important;
}
-tr.ant-table-expanded-row td>.ant-table-wrapper {
- margin: -12px -16px -13px;
-}
-
.ant-card-hoverable {
cursor: auto;
cursor: pointer;
diff --git a/web/assets/js/model/dbinbound.js b/web/assets/js/model/dbinbound.js
index a7157f49..d8d0b94f 100644
--- a/web/assets/js/model/dbinbound.js
+++ b/web/assets/js/model/dbinbound.js
@@ -137,7 +137,7 @@ class DBInbound {
}
}
- genInboundLinks() {
+ genInboundLinks(remarkModel) {
const inbound = this.toInbound();
return inbound.genInboundLinks(this.remark,remarkModel);
}
diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js
index f0f3c1db..9478312e 100644
--- a/web/assets/js/model/xray.js
+++ b/web/assets/js/model/xray.js
@@ -477,7 +477,7 @@ class TlsStreamSettings extends XrayCommonClass {
alpn=[ALPN_OPTION.HTTP1,ALPN_OPTION.H2],
settings=new TlsStreamSettings.Settings()) {
super();
- this.server = serverName;
+ this.sni = serverName;
this.minVersion = minVersion;
this.maxVersion = maxVersion;
this.cipherSuites = cipherSuites;
@@ -519,7 +519,7 @@ class TlsStreamSettings extends XrayCommonClass {
toJson() {
return {
- serverName: this.server,
+ serverName: this.sni,
minVersion: this.minVersion,
maxVersion: this.maxVersion,
cipherSuites: this.cipherSuites,
@@ -1080,7 +1080,7 @@ class Inbound extends XrayCommonClass {
}
get serverName() {
- if (this.stream.isTls) return this.stream.tls.server;
+ if (this.stream.isTls) return this.stream.tls.sni;
if (this.stream.isXtls) return this.stream.xtls.server;
if (this.stream.isReality) return this.stream.reality.serverNames;
return "";
@@ -1233,7 +1233,7 @@ class Inbound extends XrayCommonClass {
if (security === 'tls') {
if (!ObjectUtil.isEmpty(this.stream.tls.sni)){
- obj.sni = this.stream.tls.server;
+ obj.sni = this.stream.tls.sni;
}
if (!ObjectUtil.isEmpty(this.stream.tls.settings.fingerprint)){
obj.fp = this.stream.tls.settings.fingerprint;
@@ -1311,8 +1311,8 @@ class Inbound extends XrayCommonClass {
if(this.stream.tls.settings.allowInsecure){
params.set("allowInsecure", "1");
}
- if (!ObjectUtil.isEmpty(this.stream.tls.server)){
- params.set("sni", this.stream.tls.server);
+ if (!ObjectUtil.isEmpty(this.stream.tls.sni)){
+ params.set("sni", this.stream.tls.sni);
}
if (type == "tcp" && !ObjectUtil.isEmpty(flow)) {
params.set("flow", flow);
@@ -1425,8 +1425,8 @@ class Inbound extends XrayCommonClass {
if(this.stream.tls.settings.allowInsecure){
params.set("allowInsecure", "1");
}
- if (!ObjectUtil.isEmpty(this.stream.tls.server)){
- params.set("sni", this.stream.tls.server);
+ if (!ObjectUtil.isEmpty(this.stream.tls.sni)){
+ params.set("sni", this.stream.tls.sni);
}
}
}
@@ -1506,8 +1506,8 @@ class Inbound extends XrayCommonClass {
if(this.stream.tls.settings.allowInsecure){
params.set("allowInsecure", "1");
}
- if (!ObjectUtil.isEmpty(this.stream.tls.server)){
- params.set("sni", this.stream.tls.server);
+ if (!ObjectUtil.isEmpty(this.stream.tls.sni)){
+ params.set("sni", this.stream.tls.sni);
}
}
}
@@ -1601,7 +1601,7 @@ class Inbound extends XrayCommonClass {
if(this.clients){
let links = [];
this.clients.forEach((client) => {
- genAllLinks(remark,remarkModel,client).forEach(l => {
+ this.genAllLinks(remark,remarkModel,client).forEach(l => {
links.push(l.link);
})
});
@@ -1797,8 +1797,7 @@ Inbound.VLESSSettings = class extends Inbound.Settings {
Protocols.VLESS,
json.clients.map(client => Inbound.VLESSSettings.VLESS.fromJson(client)),
json.decryption || 'none',
- json.fallbacks.map(fallback => Inbound.VLESSSettings.Fallback.fromJson(fallback)),
- );
+ Inbound.VLESSSettings.Fallback.fromJson(json.fallbacks),);
}
toJson() {
@@ -1925,8 +1924,7 @@ Inbound.TrojanSettings = class extends Inbound.Settings {
return new Inbound.TrojanSettings(
Protocols.TROJAN,
json.clients.map(client => Inbound.TrojanSettings.Trojan.fromJson(client)),
- json.fallbacks.map(fallback => Inbound.TrojanSettings.Fallback.fromJson(fallback))
- );
+ Inbound.TrojanSettings.Fallback.fromJson(json.fallbacks),);
}
toJson() {
diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html
index 00d647f1..c41e4408 100644
--- a/web/html/xui/inbounds.html
+++ b/web/html/xui/inbounds.html
@@ -419,11 +419,11 @@
</template>
<template slot="expandedRowRender" slot-scope="record">
<a-table
- :row-key="client => client.id"
- :columns="isMobile ? innerMobileColumns : innerColumns"
- :data-source="getInboundClients(record)"
- :pagination=pagination(getInboundClients(record))
- :style="isMobile ? 'margin: -12px -5px -13px;' : 'margin-left: 10px;'">
+ :row-key="client => client.id"
+ :columns="isMobile ? innerMobileColumns : innerColumns"
+ :data-source="getInboundClients(record)"
+ :pagination=pagination(getInboundClients(record))
+ style="margin: -12px -6px -13px;">
{{template "client_table"}}
</a-table>
</template>
@@ -1175,7 +1175,7 @@
inboundLinks(dbInboundId) {
dbInbound = this.dbInbounds.find(row => row.id === dbInboundId);
newDbInbound = this.checkFallback(dbInbound);
- txtModal.show('{{ i18n "pages.inbounds.export"}}', newDbInbound.genInboundLinks, newDbInbound.remark);
+ txtModal.show('{{ i18n "pages.inbounds.export"}}', newDbInbound.genInboundLinks(), newDbInbound.remark);
},
importInbound() {
promptModal.open({
diff --git a/web/html/xui/xray.html b/web/html/xui/xray.html
index 99b1878d..05f21052 100644
--- a/web/html/xui/xray.html
+++ b/web/html/xui/xray.html
@@ -106,8 +106,8 @@
<a-row style="padding: 20px">
<a-col :lg="24" :xl="12">
<a-list-item-meta
- title='{{ i18n "pages.xray.xrayConfigFreedomStrategy" }}'
- description='{{ i18n "pages.xray.xrayConfigFreedomStrategyDesc" }}'/>
+ title='{{ i18n "pages.xray.FreedomStrategy" }}'
+ description='{{ i18n "pages.xray.FreedomStrategyDesc" }}'/>
</a-col>
<a-col :lg="24" :xl="12">
<template>
@@ -124,8 +124,8 @@
<a-row style="padding: 20px">
<a-col :lg="24" :xl="12">
<a-list-item-meta
- title='{{ i18n "pages.xray.xrayConfigRoutingStrategy" }}'
- description='{{ i18n "pages.xray.xrayConfigRoutingStrategyDesc" }}'/>
+ title='{{ i18n "pages.xray.RoutingStrategy" }}'
+ description='{{ i18n "pages.xray.RoutingStrategyDesc" }}'/>
</a-col>
<a-col :lg="24" :xl="12">
<template>
@@ -149,11 +149,11 @@
</template>
</a-alert>
</a-row>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigTorrent"}}' desc='{{ i18n "pages.xray.xrayConfigTorrentDesc"}}' v-model="torrentSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigPrivateIp"}}' desc='{{ i18n "pages.xray.xrayConfigPrivateIpDesc"}}' v-model="privateIpSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigAds"}}' desc='{{ i18n "pages.xray.xrayConfigAdsDesc"}}' v-model="AdsSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigFamily"}}' desc='{{ i18n "pages.xray.xrayConfigFamilyDesc"}}' v-model="familyProtectSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigSpeedtest"}}' desc='{{ i18n "pages.xray.xrayConfigSpeedtestDesc"}}' v-model="SpeedTestSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.Torrent"}}' desc='{{ i18n "pages.xray.TorrentDesc"}}' v-model="torrentSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.PrivateIp"}}' desc='{{ i18n "pages.xray.PrivateIpDesc"}}' v-model="privateIpSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.Ads"}}' desc='{{ i18n "pages.xray.AdsDesc"}}' v-model="AdsSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.Family"}}' desc='{{ i18n "pages.xray.FamilyDesc"}}' v-model="familyProtectSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.Speedtest"}}' desc='{{ i18n "pages.xray.SpeedtestDesc"}}' v-model="SpeedTestSettings"></setting-list-item>
</a-collapse-panel>
<a-collapse-panel header='{{ i18n "pages.xray.blockCountryConfigs"}}'>
<a-row :xs="24" :sm="24" :lg="12">
@@ -164,12 +164,12 @@
</template>
</a-alert>
</a-row>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigIRIp"}}' desc='{{ i18n "pages.xray.xrayConfigIRIpDesc"}}' v-model="IRIpSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigIRDomain"}}' desc='{{ i18n "pages.xray.xrayConfigIRDomainDesc"}}' v-model="IRDomainSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigChinaIp"}}' desc='{{ i18n "pages.xray.xrayConfigChinaIpDesc"}}' v-model="ChinaIpSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigChinaDomain"}}' desc='{{ i18n "pages.xray.xrayConfigChinaDomainDesc"}}' v-model="ChinaDomainSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigRussiaIp"}}' desc='{{ i18n "pages.xray.xrayConfigRussiaIpDesc"}}' v-model="RussiaIpSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigRussiaDomain"}}' desc='{{ i18n "pages.xray.xrayConfigRussiaDomainDesc"}}' v-model="RussiaDomainSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.IRIp"}}' desc='{{ i18n "pages.xray.IRIpDesc"}}' v-model="IRIpSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.IRDomain"}}' desc='{{ i18n "pages.xray.IRDomainDesc"}}' v-model="IRDomainSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.ChinaIp"}}' desc='{{ i18n "pages.xray.ChinaIpDesc"}}' v-model="ChinaIpSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.ChinaDomain"}}' desc='{{ i18n "pages.xray.ChinaDomainDesc"}}' v-model="ChinaDomainSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.RussiaIp"}}' desc='{{ i18n "pages.xray.RussiaIpDesc"}}' v-model="RussiaIpSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.RussiaDomain"}}' desc='{{ i18n "pages.xray.RussiaDomainDesc"}}' v-model="RussiaDomainSettings"></setting-list-item>
</a-collapse-panel>
<a-collapse-panel header='{{ i18n "pages.xray.directCountryConfigs"}}'>
<a-row :xs="24" :sm="24" :lg="12">
@@ -180,12 +180,12 @@
</template>
</a-alert>
</a-row>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigDirectIRIp"}}' desc='{{ i18n "pages.xray.xrayConfigDirectIRIpDesc"}}' v-model="IRIpDirectSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigDirectIRDomain"}}' desc='{{ i18n "pages.xray.xrayConfigDirectIRDomainDesc"}}' v-model="IRDomainDirectSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigDirectChinaIp"}}' desc='{{ i18n "pages.xray.xrayConfigDirectChinaIpDesc"}}' v-model="ChinaIpDirectSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigDirectChinaDomain"}}' desc='{{ i18n "pages.xray.xrayConfigDirectChinaDomainDesc"}}' v-model="ChinaDomainDirectSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigDirectRussiaIp"}}' desc='{{ i18n "pages.xray.xrayConfigDirectRussiaIpDesc"}}' v-model="RussiaIpDirectSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigDirectRussiaDomain"}}' desc='{{ i18n "pages.xray.xrayConfigDirectRussiaDomainDesc"}}' v-model="RussiaDomainDirectSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.DirectIRIp"}}' desc='{{ i18n "pages.xray.DirectIRIpDesc"}}' v-model="IRIpDirectSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.DirectIRDomain"}}' desc='{{ i18n "pages.xray.DirectIRDomainDesc"}}' v-model="IRDomainDirectSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.DirectChinaIp"}}' desc='{{ i18n "pages.xray.DirectChinaIpDesc"}}' v-model="ChinaIpDirectSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.DirectChinaDomain"}}' desc='{{ i18n "pages.xray.DirectChinaDomainDesc"}}' v-model="ChinaDomainDirectSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.DirectRussiaIp"}}' desc='{{ i18n "pages.xray.DirectRussiaIpDesc"}}' v-model="RussiaIpDirectSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.DirectRussiaDomain"}}' desc='{{ i18n "pages.xray.DirectRussiaDomainDesc"}}' v-model="RussiaDomainDirectSettings"></setting-list-item>
</a-collapse-panel>
<a-collapse-panel header='{{ i18n "pages.xray.ipv4Configs"}}'>
<a-row :xs="24" :sm="24" :lg="12">
@@ -196,8 +196,8 @@
</template>
</a-alert>
</a-row>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigGoogleIPv4"}}' desc='{{ i18n "pages.xray.xrayConfigGoogleIPv4Desc"}}' v-model="GoogleIPv4Settings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigNetflixIPv4"}}' desc='{{ i18n "pages.xray.xrayConfigNetflixIPv4Desc"}}' v-model="NetflixIPv4Settings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.GoogleIPv4"}}' desc='{{ i18n "pages.xray.GoogleIPv4Desc"}}' v-model="GoogleIPv4Settings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.NetflixIPv4"}}' desc='{{ i18n "pages.xray.NetflixIPv4Desc"}}' v-model="NetflixIPv4Settings"></setting-list-item>
</a-collapse-panel>
<a-collapse-panel header='{{ i18n "pages.xray.warpConfigs"}}'>
<a-row :xs="24" :sm="24" :lg="12">
@@ -208,10 +208,10 @@
</template>
</a-alert>
</a-row>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigGoogleWARP"}}' desc='{{ i18n "pages.xray.xrayConfigGoogleWARPDesc"}}' v-model="GoogleWARPSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigOpenAIWARP"}}' desc='{{ i18n "pages.xray.xrayConfigOpenAIWARPDesc"}}' v-model="OpenAIWARPSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigNetflixWARP"}}' desc='{{ i18n "pages.xray.xrayConfigNetflixWARPDesc"}}' v-model="NetflixWARPSettings"></setting-list-item>
- <setting-list-item type="switch" title='{{ i18n "pages.xray.xrayConfigSpotifyWARP"}}' desc='{{ i18n "pages.xray.xrayConfigSpotifyWARPDesc"}}' v-model="SpotifyWARPSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.GoogleWARP"}}' desc='{{ i18n "pages.xray.GoogleWARPDesc"}}' v-model="GoogleWARPSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.OpenAIWARP"}}' desc='{{ i18n "pages.xray.OpenAIWARPDesc"}}' v-model="OpenAIWARPSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.NetflixWARP"}}' desc='{{ i18n "pages.xray.NetflixWARPDesc"}}' v-model="NetflixWARPSettings"></setting-list-item>
+ <setting-list-item type="switch" title='{{ i18n "pages.xray.SpotifyWARP"}}' desc='{{ i18n "pages.xray.SpotifyWARPDesc"}}' v-model="SpotifyWARPSettings"></setting-list-item>
</a-collapse-panel>
</a-collapse>
</a-tab-pane>
@@ -527,7 +527,7 @@
ips: {
local: ["geoip:private"],
cn: ["geoip:cn"],
- ir: ["ext:geoip_IR.dat:ir","ext:geoip_IR.dat:arvancloud","ext:geoip_IR.dat:derakcloud","ext:geoip_IR.dat:iranserver"],
+ ir: ["ext:geoip_IR.dat:ir","ext:geoip_IR.dat:arvancloud","ext:geoip_IR.dat:derakcloud","ext:geoip_IR.dat:iranserver","ext:geoip_IR.dat:parspack"],
ru: ["geoip:ru"],
},
domains: {
diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml
index e704bf73..b6c30558 100644
--- a/web/translation/translate.en_US.toml
+++ b/web/translation/translate.en_US.toml
@@ -315,71 +315,67 @@
"ipv4ConfigsDesc" = "These options will route to target domains only via IPv4."
"warpConfigs" = "WARP Configs"
"warpConfigsDesc" = "Caution: Before using these options, install WARP in socks5 proxy mode on your server by following the steps on the panel's GitHub. WARP will route traffic to websites through Cloudflare servers."
-"xrayConfigTemplate" = "Xray Configuration Template"
-"xrayConfigTemplateDesc" = "Generate the final Xray configuration file based on this template."
-"xrayConfigFreedomStrategy" = "Configure Strategy for Freedom Protocol"
-"xrayConfigFreedomStrategyDesc" = "Set the output strategy of the network in the Freedom Protocol."
-"xrayConfigRoutingStrategy" = "Configure Domains Routing Strategy"
-"xrayConfigRoutingStrategyDesc" = "Set the overall routing strategy for DNS resolving."
-"xrayConfigTorrent" = "Ban BitTorrent Usage"
-"xrayConfigTorrentDesc" = "Change the configuration template to avoid using BitTorrent by users."
-"xrayConfigPrivateIp" = "Ban Private IP Ranges to Connect"
-"xrayConfigPrivateIpDesc" = "Change the configuration template to avoid connecting to private IP ranges."
-"xrayConfigAds" = "Block Ads"
-"xrayConfigAdsDesc" = "Change the configuration template to block ads."
-"xrayConfigFamily" = "Block Malware and Adult Content"
-"xrayConfigFamilyDesc" = "DNS resolvers to block malware and adult content for family protection."
-"xrayConfigSpeedtest" = "Block Speedtest Websites"
-"xrayConfigSpeedtestDesc" = "Change the configuration template to avoid connecting to speedtest websites."
-"xrayConfigIRIp" = "Disable connection to Iran IP ranges"
-"xrayConfigIRIpDesc" = "Change the configuration template to avoid connecting to Iran IP ranges."
-"xrayConfigIRDomain" = "Disable connection to Iran domains"
-"xrayConfigIRDomainDesc" = "Change the configuration template to avoid connecting to Iran domains."
-"xrayConfigChinaIp" = "Disable connection to China IP ranges"
-"xrayConfigChinaIpDesc" = "Change the configuration template to avoid connecting to China IP ranges."
-"xrayConfigChinaDomain" = "Disable connection to China domains"
-"xrayConfigChinaDomainDesc" = "Change the configuration template to avoid connecting to China domains."
-"xrayConfigRussiaIp" = "Disable connection to Russia IP ranges"
-"xrayConfigRussiaIpDesc" = "Change the configuration template to avoid connecting to Russia IP ranges."
-"xrayConfigRussiaDomain" = "Disable connection to Russia domains"
-"xrayConfigRussiaDomainDesc" = "Change the configuration template to avoid connecting to Russia domains."
-"xrayConfigDirectIRIp" = "Direct connection to Iran IP ranges"
-"xrayConfigDirectIRIpDesc" = "Change the configuration template for direct connecting to Iran IP ranges."
-"xrayConfigDirectIRDomain" = "Direct connection to Iran domains"
-"xrayConfigDirectIRDomainDesc" = "Change the configuration template for direct connecting to Iran domains."
-"xrayConfigDirectChinaIp" = "Direct connection to China IP ranges"
-"xrayConfigDirectChinaIpDesc" = "Change the configuration template for direct connecting to China IP ranges."
-"xrayConfigDirectChinaDomain" = "Direct connection to China domains"
-"xrayConfigDirectChinaDomainDesc" = "Change the configuration template for direct connecting to China domains."
-"xrayConfigDirectRussiaIp" = "Direct connection to Russia IP ranges"
-"xrayConfigDirectRussiaIpDesc" = "Change the configuration template for direct connecting to Russia IP ranges."
-"xrayConfigDirectRussiaDomain" = "Direct connection to Russia domains"
-"xrayConfigDirectRussiaDomainDesc" = "Change the configuration template for direct connecting to Russia domains."
-"xrayConfigGoogleIPv4" = "Use IPv4 for Google"
-"xrayConfigGoogleIPv4Desc" = "Add routing for Google to connect with IPv4."
-"xrayConfigNetflixIPv4" = "Use IPv4 for Netflix"
-"xrayConfigNetflixIPv4Desc" = "Add routing for Netflix to connect with IPv4."
-"xrayConfigGoogleWARP" = "Route Google through WARP."
-"xrayConfigGoogleWARPDesc" = "Add routing for Google via WARP."
-"xrayConfigOpenAIWARP" = "Route OpenAI (ChatGPT) through WARP."
-"xrayConfigOpenAIWARPDesc" = "Add routing for OpenAI (ChatGPT) via WARP."
-"xrayConfigNetflixWARP" = "Route Netflix through WARP."
-"xrayConfigNetflixWARPDesc" = "Add routing for Netflix via WARP."
-"xrayConfigSpotifyWARP" = "Route Spotify through WARP."
-"xrayConfigSpotifyWARPDesc" = "Add routing for Spotify via WARP."
-"xrayConfigIRWARP" = "Route Iran domains through WARP."
-"xrayConfigIRWARPDesc" = "Add routing for Iran domains via WARP."
-"xrayConfigInbounds" = "Configuration of Inbounds"
-"xrayConfigInboundsDesc" = "Change the configuration template to accept specific clients."
-"xrayConfigOutbounds" = "Configuration of Outbounds"
-"xrayConfigOutboundsDesc" = "Change the configuration template to define outgoing ways for this server."
-"xrayConfigRoutings" = "Configuration of routing rules."
-"xrayConfigRoutingsDesc" = "Change the configuration template to define routing rules for this server."
-"completeTemplate" = "All"
+"Template" = "Xray Configuration Template"
+"TemplateDesc" = "Generate the final Xray configuration file based on this template."
+"FreedomStrategy" = "Configure Strategy for Freedom Protocol"
+"FreedomStrategyDesc" = "Set the output strategy of the network in the Freedom Protocol."
+"RoutingStrategy" = "Configure Domains Routing Strategy"
+"RoutingStrategyDesc" = "Set the overall routing strategy for DNS resolving."
+"Torrent" = "Ban BitTorrent Usage"
+"TorrentDesc" = "Change the configuration template to avoid using BitTorrent by users."
+"PrivateIp" = "Ban Private IP Ranges to Connect"
+"PrivateIpDesc" = "Change the configuration template to avoid connecting to private IP ranges."
+"Ads" = "Block Ads"
+"AdsDesc" = "Change the configuration template to block ads."
+"Family" = "Block Malware and Adult Content"
+"FamilyDesc" = "DNS resolvers to block malware and adult content for family protection."
+"Speedtest" = "Block Speedtest Websites"
+"SpeedtestDesc" = "Change the configuration template to avoid connecting to speedtest websites."
+"IRIp" = "Disable connection to Iran IP ranges"
+"IRIpDesc" = "Change the configuration template to avoid connecting to Iran IP ranges."
+"IRDomain" = "Disable connection to Iran domains"
+"IRDomainDesc" = "Change the configuration template to avoid connecting to Iran domains."
+"ChinaIp" = "Disable connection to China IP ranges"
+"ChinaIpDesc" = "Change the configuration template to avoid connecting to China IP ranges."
+"ChinaDomain" = "Disable connection to China domains"
+"ChinaDomainDesc" = "Change the configuration template to avoid connecting to China domains."
+"RussiaIp" = "Disable connection to Russia IP ranges"
+"RussiaIpDesc" = "Change the configuration template to avoid connecting to Russia IP ranges."
+"RussiaDomain" = "Disable connection to Russia domains"
+"RussiaDomainDesc" = "Change the configuration template to avoid connecting to Russia domains."
+"DirectIRIp" = "Direct connection to Iran IP ranges"
+"DirectIRIpDesc" = "Change the configuration template for direct connecting to Iran IP ranges."
+"DirectIRDomain" = "Direct connection to Iran domains"
+"DirectIRDomainDesc" = "Change the configuration template for direct connecting to Iran domains."
+"DirectChinaIp" = "Direct connection to China IP ranges"
+"DirectChinaIpDesc" = "Change the configuration template for direct connecting to China IP ranges."
+"DirectChinaDomain" = "Direct connection to China domains"
+"DirectChinaDomainDesc" = "Change the configuration template for direct connecting to China domains."
+"DirectRussiaIp" = "Direct connection to Russia IP ranges"
+"DirectRussiaIpDesc" = "Change the configuration template for direct connecting to Russia IP ranges."
+"DirectRussiaDomain" = "Direct connection to Russia domains"
+"DirectRussiaDomainDesc" = "Change the configuration template for direct connecting to Russia domains."
+"GoogleIPv4" = "Use IPv4 for Google"
+"GoogleIPv4Desc" = "Add routing for Google to connect with IPv4."
+"NetflixIPv4" = "Use IPv4 for Netflix"
+"NetflixIPv4Desc" = "Add routing for Netflix to connect with IPv4."
+"GoogleWARP" = "Route Google through WARP."
+"GoogleWARPDesc" = "Add routing for Google via WARP."
+"OpenAIWARP" = "Route OpenAI (ChatGPT) through WARP."
+"OpenAIWARPDesc" = "Add routing for OpenAI (ChatGPT) via WARP."
+"NetflixWARP" = "Route Netflix through WARP."
+"NetflixWARPDesc" = "Add routing for Netflix via WARP."
+"SpotifyWARP" = "Route Spotify through WARP."
+"SpotifyWARPDesc" = "Add routing for Spotify via WARP."
+"IRWARP" = "Route Iran domains through WARP."
+"IRWARPDesc" = "Add routing for Iran domains via WARP."
"Inbounds" = "Inbounds"
+"InboundsDesc" = "Change the configuration template to accept specific clients."
"Outbounds" = "Outbounds"
-"Routings" = "Routing rules"
+"OutboundsDesc" = "Change the configuration template to define outgoing ways for this server."
+"Routings" = "routing rules."
"RoutingsDesc" = "The priority of each rule is important!"
+"completeTemplate" = "All"
[pages.xray.rules]
"first" = "First"
diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml
index b3a53ba4..b519ae9e 100644
--- a/web/translation/translate.es_ES.toml
+++ b/web/translation/translate.es_ES.toml
@@ -315,71 +315,67 @@
"ipv4ConfigsDesc" = "Estas opciones solo enrutarán a los dominios objetivo a través de IPv4."
"warpConfigs" = "Configuraciones de WARP"
"warpConfigsDesc" = "Precaución: Antes de usar estas opciones, instale WARP en modo de proxy socks5 en su servidor siguiendo los pasos en el GitHub del panel. WARP enrutará el tráfico a los sitios web a través de los servidores de Cloudflare."
-"xrayConfigTemplate" = "Plantilla de Configuración de Xray"
-"xrayConfigTemplateDesc" = "Genera el archivo de configuración final de Xray basado en esta plantilla."
-"xrayConfigFreedomStrategy" = "Configurar Estrategia para el Protocolo Freedom"
-"xrayConfigFreedomStrategyDesc" = "Establece la estrategia de salida de la red en el Protocolo Freedom."
-"xrayConfigRoutingStrategy" = "Configurar Estrategia de Enrutamiento de Dominios"
-"xrayConfigRoutingStrategyDesc" = "Establece la estrategia general de enrutamiento para la resolución de DNS."
-"xrayConfigTorrent" = "Prohibir Uso de BitTorrent"
-"xrayConfigTorrentDesc" = "Cambia la plantilla de configuración para evitar el uso de BitTorrent por parte de los usuarios."
-"xrayConfigPrivateIp" = "Prohibir Conexiones a Rangos de IP Privadas"
-"xrayConfigPrivateIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP privadas."
-"xrayConfigAds" = "Bloquear Anuncios"
-"xrayConfigAdsDesc" = "Cambia la plantilla de configuración para bloquear anuncios."
-"xrayConfigFamily" = "Bloquear Malware y Contenido para Adultos"
-"xrayConfigFamilyDesc" = "Resolvedores de DNS para bloquear malware y contenido para adultos para protección familiar."
-"xrayConfigSpeedtest" = "Bloquear Sitios Web de Pruebas de Velocidad"
-"xrayConfigSpeedtestDesc" = "Cambia la plantilla de configuración para evitar la conexión a sitios web de pruebas de velocidad."
-"xrayConfigIRIp" = "Desactivar Conexión a Rangos de IP de Irán"
-"xrayConfigIRIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de Irán."
-"xrayConfigIRDomain" = "Desactivar Conexión a Dominios de Irán"
-"xrayConfigIRDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de Irán."
-"xrayConfigChinaIp" = "Desactivar Conexión a Rangos de IP de China"
-"xrayConfigChinaIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de China."
-"xrayConfigChinaDomain" = "Desactivar Conexión a Dominios de China"
-"xrayConfigChinaDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de China."
-"xrayConfigRussiaIp" = "Desactivar Conexión a Rangos de IP de Rusia"
-"xrayConfigRussiaIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de Rusia."
-"xrayConfigRussiaDomain" = "Desactivar Conexión a Dominios de Rusia"
-"xrayConfigRussiaDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de Rusia."
-"xrayConfigDirectIRIp" = "Conexión Directa a Rangos de IP de Irán"
-"xrayConfigDirectIRIpDesc" = "Cambia la plantilla de configuración para conectarse directamente a rangos de IP de Irán."
-"xrayConfigDirectIRDomain" = "Conexión Directa a Dominios de Irán"
-"xrayConfigDirectIRDomainDesc" = "Cambia la plantilla de configuración para conectarse directamente a dominios de Irán."
-"xrayConfigDirectChinaIp" = "Conexión Directa a Rangos de IP de China"
-"xrayConfigDirectChinaIpDesc" = "Cambia la plantilla de configuración para conectarse directamente a rangos de IP de China."
-"xrayConfigDirectChinaDomain" = "Conexión Directa a Dominios de China"
-"xrayConfigDirectChinaDomainDesc" = "Cambia la plantilla de configuración para conectarse directamente a dominios de China."
-"xrayConfigDirectRussiaIp" = "Conexión Directa a Rangos de IP de Rusia"
-"xrayConfigDirectRussiaIpDesc" = "Cambia la plantilla de configuración para conectarse directamente a rangos de IP de Rusia."
-"xrayConfigDirectRussiaDomain" = "Conexión Directa a Dominios de Rusia"
-"xrayConfigDirectRussiaDomainDesc" = "Cambia la plantilla de configuración para conectarse directamente a dominios de Rusia."
-"xrayConfigGoogleIPv4" = "Usar IPv4 para Google"
-"xrayConfigGoogleIPv4Desc" = "Agregar enrutamiento para que Google se conecte con IPv4."
-"xrayConfigNetflixIPv4" = "Usar IPv4 para Netflix"
-"xrayConfigNetflixIPv4Desc" = "Agregar enrutamiento para que Netflix se conecte con IPv4."
-"xrayConfigGoogleWARP" = "Rutear Google a través de WARP."
-"xrayConfigGoogleWARPDesc" = "Agregar enrutamiento para Google a través de WARP."
-"xrayConfigOpenAIWARP" = "Rutear OpenAI (ChatGPT) a través de WARP."
-"xrayConfigOpenAIWARPDesc" = "Agregar enrutamiento para OpenAI (ChatGPT) a través de WARP."
-"xrayConfigNetflixWARP" = "Rutear Netflix a través de WARP."
-"xrayConfigNetflixWARPDesc" = "Agregar enrutamiento para Netflix a través de WARP."
-"xrayConfigSpotifyWARP" = "Rutear Spotify a través de WARP."
-"xrayConfigSpotifyWARPDesc" = "Agregar enrutamiento para Spotify a través de WARP."
-"xrayConfigIRWARP" = "Rutear dominios de Irán a través de WARP."
-"xrayConfigIRWARPDesc" = "Agregar enrutamiento para dominios de Irán a través de WARP."
-"xrayConfigInbounds" = "Configuración de Entradas"
-"xrayConfigInboundsDesc" = "Cambia la plantilla de configuración para aceptar clientes específicos."
-"xrayConfigOutbounds" = "Configuración de Salidas"
-"xrayConfigOutboundsDesc" = "Cambia la plantilla de configuración para definir formas de salida para este servidor."
-"xrayConfigRoutings" = "Configuración de Reglas de Enrutamiento"
-"xrayConfigRoutingsDesc" = "Cambia la plantilla de configuración para definir reglas de enrutamiento para este servidor."
-"completeTemplate" = "Todos"
+"Template" = "Plantilla de Configuración de Xray"
+"TemplateDesc" = "Genera el archivo de configuración final de Xray basado en esta plantilla."
+"FreedomStrategy" = "Configurar Estrategia para el Protocolo Freedom"
+"FreedomStrategyDesc" = "Establece la estrategia de salida de la red en el Protocolo Freedom."
+"RoutingStrategy" = "Configurar Estrategia de Enrutamiento de Dominios"
+"RoutingStrategyDesc" = "Establece la estrategia general de enrutamiento para la resolución de DNS."
+"Torrent" = "Prohibir Uso de BitTorrent"
+"TorrentDesc" = "Cambia la plantilla de configuración para evitar el uso de BitTorrent por parte de los usuarios."
+"PrivateIp" = "Prohibir Conexiones a Rangos de IP Privadas"
+"PrivateIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP privadas."
+"Ads" = "Bloquear Anuncios"
+"AdsDesc" = "Cambia la plantilla de configuración para bloquear anuncios."
+"Family" = "Bloquear Malware y Contenido para Adultos"
+"FamilyDesc" = "Resolvedores de DNS para bloquear malware y contenido para adultos para protección familiar."
+"Speedtest" = "Bloquear Sitios Web de Pruebas de Velocidad"
+"SpeedtestDesc" = "Cambia la plantilla de configuración para evitar la conexión a sitios web de pruebas de velocidad."
+"IRIp" = "Desactivar Conexión a Rangos de IP de Irán"
+"IRIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de Irán."
+"IRDomain" = "Desactivar Conexión a Dominios de Irán"
+"IRDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de Irán."
+"ChinaIp" = "Desactivar Conexión a Rangos de IP de China"
+"ChinaIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de China."
+"ChinaDomain" = "Desactivar Conexión a Dominios de China"
+"ChinaDomainDesc" = "Cambia la plantilla de configuración para evitar la conexión a dominios de China."
+"RussiaIp" = "Desactivar Conexión a Rangos de IP de Rusia"
+"RussiaIpDesc" = "Cambia la plantilla de configuración para evitar la conexión a rangos de IP de Rusia."