diff options
| author | Shishkevich D. <135337715+shishkevichd@users.noreply.github.com> | 2025-06-18 19:24:18 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-18 19:24:18 +0300 |
| commit | cb22b4ad47816742e7eaa9b9f46f11530b0aae8e (patch) | |
| tree | 486f3d1c1af5b4bd22c5bd48c164f1db168f88cd | |
| parent | 6a2e0071cfb27d290f3e3aca9eda184f2ac7d15e (diff) | |
chore: add new dns features from v25.6.8
* chore: add new dns params
* chore: add `DNS Presets` modal
* chore: edit file names
20 files changed, 354 insertions, 203 deletions
diff --git a/web/html/modals/dns_presets_modal.html b/web/html/modals/dns_presets_modal.html new file mode 100644 index 00000000..010b973a --- /dev/null +++ b/web/html/modals/dns_presets_modal.html @@ -0,0 +1,110 @@ +{{define "modals/dnsPresetsModal"}} +<a-modal id="dnsPresets-modal" v-model="dnsPresetsModal.visible" :title="dnsPresetsModal.title" :closable="true" + :mask-closable="false" :footer="null" :class="themeSwitcher.currentTheme"> + <a-list class="ant-dns-presets-list" bordered :style="{ width: '100%' }"> + <a-list-item v-for="dns in dnsPresetsDatabase" :style="{ padding: '12px 16px' }"> + <a-row justify="space-between" align="middle"> + <a-col :span="12"> + <a-space direction="vertical" size="small"> + <span class="ant-dns-presets-list-name">[[ dns.name ]]</span> + <a-tag :color="dns.family ? 'purple' : 'green'">[[ dns.family ? '{{ i18n "pages.xray.dns.dnsPresetFamily" }}' : 'DNS' ]]</a-tag> + </a-space> + </a-col> + <a-col :span="12" :style="{ textAlign: 'right' }"> + <a-button type="primary" @click="dnsPresetsModal.install(dns.data)">{{ i18n "install" }}</a-button> + </a-col> + </a-row> + </a-list-item> + </a-list> +</a-modal> + +<style> + .dark .ant-dns-presets-list { + border-color: var(--dark-color-stroke) + } + + .dark .ant-dns-presets-list-name { + color: var(--dark-color-text-primary); + } +</style> + +<script> + const dnsPresetsDatabase = [ + { + name: 'Google DNS', + family: false, + data: [ + "8.8.8.8", + "8.8.4.4", + "2001:4860:4860::8888", + "2001:4860:4860::8844" + ] + }, + { + name: 'Cloudflare DNS', + family: false, + data: [ + "1.1.1.1", + "1.0.0.1", + "2606:4700:4700::1111", + "2606:4700:4700::1001" + ] + }, + { + name: 'Adguard DNS', + family: false, + data: [ + "94.140.14.14", + "94.140.15.15", + "2a10:50c0::ad1:ff", + "2a10:50c0::ad2:ff" + ] + }, + { + name: 'Adguard Family DNS', + family: true, + data: [ + "94.140.14.14", + "94.140.15.15", + "2a10:50c0::ad1:ff", + "2a10:50c0::ad2:ff" + ] + }, + { + name: 'Cloudflare Family DNS', + family: true, + data: [ + "1.1.1.3", + "1.0.0.3", + "2606:4700:4700::1113", + "2606:4700:4700::1003" + ] + } + ] + + const dnsPresetsModal = { + title: '', + visible: false, + selected: null, + install(selectedPreset) { + return ObjectUtil.execute(dnsPresetsModal.selected, selectedPreset); + }, + show({ title = '', selected = (selectedPreset) => { }, isEdit = false }) { + this.title = title; + this.selected = selected; + this.visible = true; + }, + close() { + dnsPresetsModal.visible = false; + }, + }; + + new Vue({ + delimiters: ['[[', ']]'], + el: '#dnsPresets-modal', + data: { + dnsPresetsModal: dnsPresetsModal, + } + }); +</script> +{{end}}
\ No newline at end of file diff --git a/web/html/modals/fakedns_modal.html b/web/html/modals/fakedns_modal.html deleted file mode 100644 index 8e554ac0..00000000 --- a/web/html/modals/fakedns_modal.html +++ /dev/null @@ -1,57 +0,0 @@ -{{define "modals/fakednsModal"}} -<a-modal id="fakedns-modal" v-model="fakednsModal.visible" :title="fakednsModal.title" @ok="fakednsModal.ok" - :closable="true" :mask-closable="false" - :ok-text="fakednsModal.okText" cancel-text='{{ i18n "close" }}' :class="themeSwitcher.currentTheme"> - <a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> - <a-form-item label='{{ i18n "pages.xray.fakedns.ipPool" }}'> - <a-input v-model.trim="fakednsModal.fakeDns.ipPool"></a-input> - </a-form-item> - <a-form-item label='{{ i18n "pages.xray.fakedns.poolSize" }}'> - <a-input-number v-model.number="fakednsModal.fakeDns.poolSize" :min="1"></a-input-number> - </a-form-item> - </a-form> -</a-modal> -<script> - const fakednsModal = { - title: '', - visible: false, - okText: '{{ i18n "confirm" }}', - isEdit: false, - confirm: null, - fakeDns: { - ipPool: "198.18.0.0/16", - poolSize: 65535, - }, - ok() { - ObjectUtil.execute(fakednsModal.confirm, fakednsModal.fakeDns); - }, - show({ title='', okText='{{ i18n "confirm" }}', fakeDns, confirm=(fakeDns)=>{}, isEdit=false }) { - this.title = title; - this.okText = okText; - this.confirm = confirm; - this.visible = true; - if(isEdit) { - this.fakeDns = fakeDns; - } else { - this.fakeDns = { - ipPool: "198.18.0.0/16", - poolSize: 65535, - } - } - this.isEdit = isEdit; - }, - close() { - fakednsModal.visible = false; - }, - }; - - new Vue({ - delimiters: ['[[', ']]'], - el: '#fakedns-modal', - data: { - fakednsModal: fakednsModal, - } - }); - -</script> -{{end}} diff --git a/web/html/modals/dns_modal.html b/web/html/modals/xray_dns_modal.html index e6266c06..484bd2f8 100644 --- a/web/html/modals/dns_modal.html +++ b/web/html/modals/xray_dns_modal.html @@ -6,6 +6,16 @@ <a-form-item label='{{ i18n "pages.xray.outbound.address" }}'> <a-input v-model.trim="dnsModal.dnsServer.address"></a-input> </a-form-item> + <a-form-item label='{{ i18n "pages.inbounds.port" }}'> + <a-input-number v-model.number="dnsModal.dnsServer.port" :min="1" :max="65531"></a-input-number> + </a-form-item> + <a-form-item label='{{ i18n "pages.xray.dns.strategy" }}'> + <a-select v-model="dnsModal.dnsServer.queryStrategy" :style="{ width: '100%' }" + :dropdown-class-name="themeSwitcher.currentTheme"> + <a-select-option :value="l" :label="l" v-for="l in ['UseSystem', 'UseIP', 'UseIPv4', 'UseIPv6']"> [[ l ]] </a-select-option> + </a-select> + </a-form-item> + <a-divider :style="{ margin: '5px 0' }"></a-divider> <a-form-item label='{{ i18n "pages.xray.dns.domains" }}'> <a-button icon="plus" size="small" type="primary" @click="dnsModal.dnsServer.domains.push('')"></a-button> <template v-for="(domain, index) in dnsModal.dnsServer.domains"> @@ -15,15 +25,6 @@ </a-input> </template> </a-form-item> - <a-form-item label='{{ i18n "pages.xray.dns.strategy" }}' v-if="isAdvanced"> - <a-select v-model="dnsModal.dnsServer.queryStrategy" :style="{ width: '100%' }" - :dropdown-class-name="themeSwitcher.currentTheme"> - <a-select-option :value="l" :label="l" v-for="l in ['UseIP', 'UseIPv4', 'UseIPv6']"> [[ l ]] </a-select-option> - </a-select> - </a-form-item> - <a-form-item label='Skip Fallback' v-if="isAdvanced"> - <a-switch v-model="dnsModal.dnsServer.skipFallback"></a-switch> - </a-form-item> <a-form-item label='{{ i18n "pages.xray.dns.expectIPs"}}'> <a-button icon="plus" size="small" type="primary" @click="dnsModal.dnsServer.expectIPs.push('')"></a-button> <template v-for="(domain, index) in dnsModal.dnsServer.expectIPs"> @@ -33,31 +34,50 @@ </a-input> </template> </a-form-item> + <a-form-item label='{{ i18n "pages.xray.dns.unexpectIPs"}}'> + <a-button icon="plus" size="small" type="primary" @click="dnsModal.dnsServer.unexpectedIPs.push('')"></a-button> + <template v-for="(domain, index) in dnsModal.dnsServer.unexpectedIPs"> + <a-input v-model.trim="dnsModal.dnsServer.unexpectedIPs[index]"> + <a-button icon="minus" size="small" slot="addonAfter" + @click="dnsModal.dnsServer.unexpectedIPs.splice(index,1)"></a-button> + </a-input> + </template> + </a-form-item> + <a-divider :style="{ margin: '5px 0' }"></a-divider> + <a-form-item label='Skip Fallback'> + <a-switch v-model="dnsModal.dnsServer.skipFallback"></a-switch> + </a-form-item> + <a-form-item label='Disable Cache'> + <a-switch v-model="dnsModal.dnsServer.disableCache"></a-switch> + </a-form-item> + <a-form-item label='Final Query'> + <a-switch v-model="dnsModal.dnsServer.finalQuery"></a-switch> + </a-form-item> </a-form> </a-modal> <script> + const defaultDnsObject = { + address: "localhost", + port: 53, + domains: [], + expectIPs: [], + unexpectedIPs: [], + queryStrategy: 'UseIP', + skipFallback: true, + disableCache: false, + finalQuery: false + } + const dnsModal = { title: '', visible: false, okText: '{{ i18n "confirm" }}', isEdit: false, confirm: null, - dnsServer: { - address: "localhost", - domains: [], - expectIPs: [], - queryStrategy: 'UseIP', - skipFallback: true, + dnsServer: { ...defaultDnsObject }, + ok() { + ObjectUtil.execute(dnsModal.confirm, { ...dnsModal.dnsServer }); }, - ok() { - domains = dnsModal.dnsServer.domains.filter(d => d.length > 0); - expectIPs = dnsModal.dnsServer.expectIPs.filter(ip => ip.length > 0); - dnsModal.dnsServer.domains = domains; - dnsModal.dnsServer.expectIPs = expectIPs; - newDnsServer = (domains.length > 0 || expectIPs.length > 0) ? dnsModal.dnsServer : dnsModal.dnsServer.address; - ObjectUtil.execute(dnsModal.confirm, newDnsServer); - }, - show({ title = '', okText = '{{ i18n "confirm" }}', @@ -69,28 +89,28 @@ this.okText = okText; this.confirm = confirm; this.visible = true; + this.isEdit = isEdit; + if (isEdit) { - if (typeof dnsServer == 'object') { - this.dnsServer = dnsServer; - } else { - this.dnsServer = { - address: dnsServer ?? "", - domains: [], - expectIPs: [], - queryStrategy: 'UseIP', - skipFallback: true, - } + switch (typeof dnsServer) { + case 'string': + const dnsObj = { ...defaultDnsObject }; + + dnsObj.address = dnsServer; + + this.dnsServer = dnsObj; + break; + case 'object': + this.dnsServer = dnsServer; + break; } } else { - this.dnsServer = { - address: "localhost", - domains: [], - expectIPs: [], - queryStrategy: 'UseIP', - skipFallback: true, - } + this.dnsServer = { ...defaultDnsObject }; + + this.dnsServer.domains = []; + this.dnsServer.expectIPs = []; + this.dnsServer.unexpectedIPs = []; } - this.isEdit = isEdit; }, close() { dnsModal.visible = false; @@ -101,13 +121,6 @@ el: '#dns-modal', data: { dnsModal: dnsModal, - }, - computed: { - isAdvanced: { - get: function () { - return dnsModal.dnsServer.domains.length > 0; - } - } } }); </script> diff --git a/web/html/modals/xray_fakedns_modal.html b/web/html/modals/xray_fakedns_modal.html new file mode 100644 index 00000000..f1f4429c --- /dev/null +++ b/web/html/modals/xray_fakedns_modal.html @@ -0,0 +1,56 @@ +{{define "modals/fakednsModal"}} +<a-modal id="fakedns-modal" v-model="fakednsModal.visible" :title="fakednsModal.title" @ok="fakednsModal.ok" + :closable="true" :mask-closable="false" :ok-text="fakednsModal.okText" cancel-text='{{ i18n "close" }}' + :class="themeSwitcher.currentTheme"> + <a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> + <a-form-item label='{{ i18n "pages.xray.fakedns.ipPool" }}'> + <a-input v-model.trim="fakednsModal.fakeDns.ipPool"></a-input> + </a-form-item> + <a-form-item label='{{ i18n "pages.xray.fakedns.poolSize" }}'> + <a-input-number v-model.number="fakednsModal.fakeDns.poolSize" :min="1"></a-input-number> + </a-form-item> + </a-form> +</a-modal> +<script> + const fakednsDefaultData = { + ipPool: "198.18.0.0/16", + poolSize: 65535, + } + + const fakednsModal = { + title: '', + visible: false, + okText: '{{ i18n "confirm" }}', + isEdit: false, + confirm: null, + fakeDns: { ...fakednsDefaultData }, + ok() { + ObjectUtil.execute(fakednsModal.confirm, fakednsModal.fakeDns); + }, + show({ title = '', okText = '{{ i18n "confirm" }}', fakeDns, confirm = (fakeDns) => { }, isEdit = false }) { + this.title = title; + this.okText = okText; + this.confirm = confirm; + this.visible = true; + if (isEdit) { + this.fakeDns = fakeDns; + } else { + this.fakeDns = { ...fakednsDefaultData } + } + this.isEdit = isEdit; + }, + close() { + fakednsModal.visible = false; + }, + }; + + new Vue({ + delimiters: ['[[', ']]'], + el: '#fakedns-modal', + data: { + fakednsModal: fakednsModal, + } + }); + +</script> +{{end}}
\ No newline at end of file diff --git a/web/html/settings/xray/basics.html b/web/html/settings/xray/basics.html index 374cb7dd..71aa0d7c 100644 --- a/web/html/settings/xray/basics.html +++ b/web/html/settings/xray/basics.html @@ -135,7 +135,7 @@ </template> </a-setting-list-item> </a-collapse-panel> - <a-collapse-panel key="4" header='{{ i18n "pages.xray.blockConfigs"}}'> + <a-collapse-panel key="4" header='{{ i18n "pages.xray.basicRouting"}}'> <a-row :xs="24" :sm="24" :lg="12"> <a-alert type="warning" :style="{ textAlign: 'center' }"> <template slot="message"> @@ -144,22 +144,12 @@ </template> </a-alert> </a-row> - <a-setting-list-item paddings="small"> + <a-setting-list-item paddings="small" :style="{ marginBottom: '20px' }"> <template #title>{{ i18n "pages.xray.Torrent"}}</template> - <template #description>{{ i18n "pages.xray.TorrentDesc"}}</template> <template #control> <a-switch v-model="torrentSettings"></a-switch> </template> </a-setting-list-item> - <a-setting-list-item paddings="small"> - <template #title>{{ i18n "pages.xray.Family"}}</template> - <template #description>{{ i18n "pages.xray.FamilyDesc"}}</template> - <template #control> - <a-switch v-model="familyProtectSettings"></a-switch> - </template> - </a-setting-list-item> - </a-collapse-panel> - <a-collapse-panel key="5" header='{{ i18n "pages.xray.basicRouting"}}'> <a-row :xs="24" :sm="24" :lg="12"> <a-alert type="warning" :style="{ textAlign: 'center' }"> <template slot="message"> diff --git a/web/html/settings/xray/dns.html b/web/html/settings/xray/dns.html index 11558536..ba768cb8 100644 --- a/web/html/settings/xray/dns.html +++ b/web/html/settings/xray/dns.html @@ -29,7 +29,7 @@ <template #control> <a-select v-model="dnsStrategy" :style="{ width: '100%' }" :dropdown-class-name="themeSwitcher.currentTheme"> - <a-select-option :value="l" :label="l" v-for="l in ['UseIP', 'UseIPv4', 'UseIPv6']"> + <a-select-option :value="l" :label="l" v-for="l in ['UseSystem', 'UseIP', 'UseIPv4', 'UseIPv6']"> <span>[[ l ]]</span> </a-select-option> </a-select> @@ -56,6 +56,14 @@ <a-switch v-model="dnsDisableFallbackIfMatch"></a-switch> </template> </a-setting-list-item> + + <a-setting-list-item paddings="small"> + <template #title>{{ i18n "pages.xray.dns.useSystemHosts" }}</template> + <template #description>{{ i18n "pages.xray.dns.useSystemHostsDesc" }}</template> + <template #control> + <a-switch v-model="dnsUseSystemHosts"></a-switch> + </template> + </a-setting-list-item> </template> </a-collapse-panel> <template v-if="enableDNS"> @@ -102,9 +110,12 @@ </template> <template v-else> <a-empty description='{{ i18n "emptyDnsDesc" }}' :style="{ margin: '10px' }"> - <a-button type="primary" icon="plus" @click="addDNSServer()" :style="{ marginTop: '10px' }"> - <span>{{ i18n "pages.xray.dns.add" }}</span> - </a-button> + <a-button-group> + <a-button type="primary" icon="plus" @click="addDNSServer()"> + <span>{{ i18n "pages.xray.dns.add" }}</span> + </a-button> + <a-button type="primary" icon="menu" @click="openDNSPresets()"></a-button> + </a-button-group> </a-empty> </template> </a-collapse-panel> diff --git a/web/html/xray.html b/web/html/xray.html index e051ce15..eb99b794 100644 --- a/web/html/xray.html +++ b/web/html/xray.html @@ -128,6 +128,7 @@ {{template "modals/reverseModal"}} {{template "modals/balancerModal"}} {{template "modals/dnsModal"}} +{{template "modals/dnsPresetsModal"}} {{template "modals/fakednsModal"}} {{template "modals/warpModal"}} <script> @@ -308,16 +309,7 @@ { label: 'Netflix', value: 'geosite:netflix' }, { label: 'Reddit', value: 'geosite:reddit' }, { label: 'Speedtest', value: 'geosite:speedtest' }, - ], - familyProtectDNS: { - "servers": [ - "1.1.1.3", // https://developers.cloudflare.com/1.1.1.1/setup/ - "1.0.0.3", - "2606:4700:4700::1113", - "2606:4700:4700::1003" - ], - "queryStrategy": "UseIP" - }, + ] }, defaultObservatory: { subjectSelector: [], @@ -826,6 +818,16 @@ this.obsSettings = ''; this.changeObsCode() }, + openDNSPresets() { + dnsPresetsModal.show({ + title: '{{ i18n "pages.xray.dns.dnsPresetTitle" }}', + selected: (selectedPreset) => { + this.dnsServers = selectedPreset; + + dnsPresetsModal.close(); + } + }); + }, addDNSServer(){ dnsModal.show({ title: '{{ i18n "pages.xray.dns.add" }}', @@ -1270,21 +1272,6 @@ } }, }, - familyProtectSettings: { - get: function () { - if (!this.templateSettings || !this.templateSettings.dns || !this.templateSettings.dns.servers) return false; - return ArrayUtils.doAllItemsExist(this.settingsData.familyProtectDNS.servers, this.templateSettings.dns.servers); - }, - set: function (newValue) { - newTemplateSettings = this.templateSettings; - if (newValue) { - newTemplateSettings.dns = this.settingsData.familyProtectDNS; - } else { - newTemplateSettings.dns.servers = newTemplateSettings.dns?.servers?.filter(data => !this.settingsData.familyProtectDNS.servers.includes(data)) - } - this.templateSettings = newTemplateSettings; - }, - }, WarpExist: { get: function() { return this.templateSettings ? this.templateSettings.outbounds.findIndex((o) => o.tag == "warp")>=0 : false; @@ -1376,6 +1363,20 @@ this.templateSettings = newTemplateSettings; } }, + dnsUseSystemHosts: { + get: function () { + return this.enableDNS ? this.templateSettings.dns.useSystemHosts : false; + }, + set: function (newValue) { + newTemplateSettings = this.templateSettings; + if (newValue) { + newTemplateSettings.dns.useSystemHosts = newValue; + } else { + delete newTemplateSettings.dns.useSystemHosts + } + this.templateSettings = newTemplateSettings; + } + }, dnsStrategy: { get: function () { return this.enableDNS ? this.templateSettings.dns.queryStrategy : null; diff --git a/web/translation/translate.ar_EG.toml b/web/translation/translate.ar_EG.toml index efb84b69..50e1680f 100644 --- a/web/translation/translate.ar_EG.toml +++ b/web/translation/translate.ar_EG.toml @@ -400,7 +400,6 @@ "generalConfigsDesc" = "الخيارات دي هتحدد التعديلات العامة." "logConfigs" = "السجلات" "logConfigsDesc" = "السجلات ممكن تأثر على كفاءة السيرفر. ننصح بتفعيلها بحكمة لما تكون محتاجها." -"blockConfigs" = "درع الحماية" "blockConfigsDesc" = "الخيارات دي هتحجب الترافيك بناءً على بروتوكولات ومواقع محددة." "basicRouting" = "توجيه أساسي" "blockConnectionsConfigsDesc" = "الخيارات دي هتحجب الترافيك بناءً على الدولة المطلوبة." @@ -420,9 +419,6 @@ "RoutingStrategy" = "استراتيجية التوجيه العامة" "RoutingStrategyDesc" = "حدد استراتيجية التوجيه الإجمالية لحل كل الطلبات." "Torrent" = "حظر بروتوكول التورنت" -"TorrentDesc" = "بيحجب بروتوكول التورنت." -"Family" = "حماية العيلة" -"FamilyDesc" = "بيحجب المحتويات الكبار وعناوين المواقع الضارة." "Inbounds" = "الإدخالات" "InboundsDesc" = "قبول العملاء المعينين." "Outbounds" = "المخرجات" @@ -522,6 +518,12 @@ "edit" = "عدل السيرفر" "domains" = "الدومينات" "expectIPs" = "العناوين المتوقعة" +"unexpectIPs" = "عناوين IP غير متوقعة" +"useSystemHosts" = "استخدام ملف Hosts الخاص بالنظام" +"useSystemHostsDesc" = "استخدام ملف hosts من نظام مثبت" +"usePreset" = "استخدام النموذج" +"dnsPresetTitle" = "قوالب DNS" +"dnsPresetFamily" = "العائلي" [pages.xray.fakedns] "add" = "أضف Fake DNS" diff --git a/web/translation/translate.en_US.toml b/web/translation/translate.en_US.toml index bb407b5f..33339fa7 100644 --- a/web/translation/translate.en_US.toml +++ b/web/translation/translate.en_US.toml @@ -399,7 +399,6 @@ "generalConfigsDesc" = "These options will determine general adjustments." "logConfigs" = "Log" "logConfigsDesc" = "Logs may affect your server's efficiency. It is recommended to enable it wisely only in case of your needs" -"blockConfigs" = "Protection Shield" "blockConfigsDesc" = "These options will block traffic based on specific requested protocols and websites." "basicRouting" = "Basic Routing" "blockConnectionsConfigsDesc" = "These options will block traffic based on the specific requested country." @@ -419,9 +418,6 @@ "RoutingStrategy" = "Overall Routing Strategy" "RoutingStrategyDesc" = "Set the overall traffic routing strategy for resolving all requests." "Torrent" = "Block BitTorrent Protocol" -"TorrentDesc" = "Blocks BitTorrent protocol." -"Family" = "Family Protection" -"FamilyDesc" = "Blocks adult content, and malware websites." "Inbounds" = "Inbounds" "InboundsDesc" = "Accepting the specific clients." "Outbounds" = "Outbounds" @@ -521,6 +517,12 @@ "edit" = "Edit Server" "domains" = "Domains" "expectIPs" = "Expect IPs" +"unexpectIPs" = "Unexpect IPs" +"useSystemHosts" = "Use System Hosts" +"useSystemHostsDesc" = "Use the hosts file from an installed system" +"usePreset" = "Use Preset" +"dnsPresetTitle" = "DNS Presets" +"dnsPresetFamily" = "Family" [pages.xray.fakedns] "add" = "Add Fake DNS" diff --git a/web/translation/translate.es_ES.toml b/web/translation/translate.es_ES.toml index 7d4d8cee..0b8d009c 100644 --- a/web/translation/translate.es_ES.toml +++ b/web/translation/translate.es_ES.toml @@ -402,7 +402,6 @@ "generalConfigsDesc" = "Estas opciones proporcionarán ajustes generales."
"logConfigs" = "Registro"
"logConfigsDesc" = "Los registros pueden afectar la eficiencia de su servidor. Se recomienda habilitarlos sabiamente solo en caso de sus necesidades."
-"blockConfigs" = "Configuraciones de Bloqueo"
"blockConfigsDesc" = "Estas opciones evitarán que los usuarios se conecten a protocolos y sitios web específicos."
"basicRouting" = "Enrutamiento Básico"
"blockConnectionsConfigsDesc" = "Estas opciones bloquearán el tráfico según el país solicitado específico."
@@ -422,9 +421,6 @@ "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."
-"Family" = "Bloquee malware y contenido para adultos"
-"FamilyDesc" = "Resolutores de DNS de Cloudflare para bloquear malware y contenido para adultos para protección familiar."
"Inbounds" = "Entrante"
"InboundsDesc" = "Cambia la plantilla de configuración para aceptar clientes específicos."
"Outbounds" = "Salidas"
@@ -524,6 +520,12 @@ "edit" = "Editar Servidor"
"domains" = "Dominios"
"expectIPs" = "IPs esperadas"
+"unexpectIPs" = "IPs inesperadas"
+"useSystemHosts" = "Usar Hosts del sistema"
+"useSystemHostsDesc" = "Usar el archivo hosts de un sistema instalado"
+"usePreset" = "Usar plantilla"
+"dnsPresetTitle" = "Plantillas DNS"
+"dnsPresetFamily" = "Familiar"
[pages.xray.fakedns]
"add" = "Agregar DNS Falso"
diff --git a/web/translation/translate.fa_IR.toml b/web/translation/translate.fa_IR.toml index 475abcf8..9d53f47d 100644 --- a/web/translation/translate.fa_IR.toml +++ b/web/translation/translate.fa_IR.toml @@ -402,7 +402,6 @@ "generalConfigsDesc" = "این گزینهها استراتژی کلی ترافیک را تعیین میکنند" "logConfigs" = "گزارش" "logConfigsDesc" = "گزارشها ممکن است بر کارایی سرور شما تأثیر بگذارد. توصیه می شود فقط در صورت نیاز آن را عاقلانه فعال کنید" -"blockConfigs" = "سپر محافظ" "blockConfigsDesc" = "این گزینهها ترافیک را بر اساس پروتکلهای درخواستی خاص، و وب سایتها مسدود میکند" "basicRouting" = "مسیریابی پایه" "blockConnectionsConfigsDesc" = "این گزینهها ترافیک را بر اساس کشور درخواستشده خاص مسدود میکنند." @@ -422,9 +421,6 @@ "RoutingStrategy" = "استراتژی کلی مسیریابی" "RoutingStrategyDesc" = "استراتژی کلی مسیریابی برای حل تمام درخواستها را تعیین میکند" "Torrent" = "مسدودسازی پروتکل بیتتورنت" -"TorrentDesc" = "پروتکل بیت تورنت را مسدود میکند" -"Family" = "محافظت خانواده" -"FamilyDesc" = "محتوای مخصوص بزرگسالان، و وبسایتهای ناامن را مسدود میکند" "Inbounds" = "ورودیها" "InboundsDesc" = "پذیرش کلاینت خاص" "Outbounds" = "خروجیها" @@ -524,6 +520,12 @@ "edit" = "ویرایش سرور" "domains" = "دامنهها" "expectIPs" = "آیپیهای مورد انتظار" +"unexpectIPs" = "آیپیهای غیرمنتظره" +"useSystemHosts" = "استفاده از Hosts سیستم" +"useSystemHostsDesc" = "استفاده از فایل hosts یک سیستم نصبشده" +"usePreset" = "استفاده از پیشتنظیم" +"dnsPresetTitle" = "پیشتنظیمهای DNS" +"dnsPresetFamily" = "خانوادگی" [pages.xray.fakedns] "add" = "افزودن دیاناس جعلی" diff --git a/web/translation/translate.id_ID.toml b/web/translation/translate.id_ID.toml index 29422d6e..f6a45b92 100644 --- a/web/translation/translate.id_ID.toml +++ b/web/translation/translate.id_ID.toml @@ -402,7 +402,6 @@ "generalConfigsDesc" = "Opsi ini akan menentukan penyesuaian strategi umum." "logConfigs" = "Catatan" "logConfigsDesc" = "Log dapat mempengaruhi efisiensi server Anda. Disarankan untuk mengaktifkannya dengan bijak hanya jika diperlukan" -"blockConfigs" = "Pelindung" "blockConfigsDesc" = "Opsi ini akan memblokir lalu lintas berdasarkan protokol dan situs web yang diminta." "basicRouting" = "Perutean Dasar" "blockConnectionsConfigsDesc" = "Opsi ini akan memblokir lalu lintas berdasarkan negara yang diminta." @@ -423,8 +422,6 @@ "RoutingStrategyDesc" = "Atur strategi pengalihan lalu lintas keseluruhan untuk menyelesaikan semua permintaan." "Torrent" = "Blokir Protokol BitTorrent" "TorrentDesc" = "Memblokir protokol BitTorrent." -"Family" = "Proteksi Keluarga" -"FamilyDesc" = "Memblokir konten dewasa dan situs web berbahaya." "Inbounds" = "Masuk" "InboundsDesc" = "Menerima klien tertentu." "Outbounds" = "Keluar" @@ -524,6 +521,12 @@ "edit" = "Sunting Server" "domains" = "Domains" "expectIPs" = "IP yang Diharapkan" +"unexpectIPs" = "IP tak terduga" +"useSystemHosts" = "Gunakan Hosts Sistem" +"useSystemHostsDesc" = "Gunakan file hosts dari sistem yang terinstal" +"usePreset" = "Gunakan templat" +"dnsPresetTitle" = "Templat DNS" +"dnsPresetFamily" = "Keluarga" [pages.xray.fakedns] "add" = "Tambahkan DNS Palsu" |
