diff --git a/.github/PULL_REQUEST_TEMPLATE b/.github/PULL_REQUEST_TEMPLATE
index d969343d..d1010108 100644
--- a/.github/PULL_REQUEST_TEMPLATE
+++ b/.github/PULL_REQUEST_TEMPLATE
@@ -1,7 +1,8 @@
Before submitting a PR please make sure that:
1. You have discussed your solution in an issue and have got an
- approval from a maintainer.
+ approval from a maintainer. See our
+ [contribution guide](https://github.com/AdguardTeam/AdGuardHome/blob/master/CONTRIBUTING.md).
2. This isn't a localization fix; please send those to our
[CrowdIn](https://crowdin.com/project/adguard-applications/en#/adguard-home)
@@ -13,8 +14,8 @@ Before submitting a PR please make sure that:
Add a short description here. The description should include:
1. Which issue this PR closes (`Closes #NNNN.`) or updates (`Updates
- #NNNN.`).
+ #NNNN.`). Please do not open PRs without filing an issue first.
2. A short description of how the change achieves that.
-Do not forget to remove these instructions.
+Do not forget to remove these instructions!
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index f1c35913..8a3af2fe 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -1,7 +1,7 @@
'name': 'build'
'env':
- 'GO_VERSION': '1.20.11'
+ 'GO_VERSION': '1.20.12'
'NODE_VERSION': '16'
'on':
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 144cc3f4..1ba27d28 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -1,7 +1,7 @@
'name': 'lint'
'env':
- 'GO_VERSION': '1.20.11'
+ 'GO_VERSION': '1.20.12'
'on':
'push':
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 22b79829..52129c1e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -14,11 +14,11 @@ and this project adheres to
@@ -29,6 +29,52 @@ NOTE: Add new changes ABOVE THIS COMMENT.
+## [v0.107.42] - 2023-12-07
+
+See also the [v0.107.42 GitHub milestone][ms-v0.107.42].
+
+### Security
+
+- Go version has been updated to prevent the possibility of exploiting the
+ CVE-2023-39326, CVE-2023-45283, and CVE-2023-45285 Go vulnerabilities fixed in
+ [Go 1.20.12][go-1.20.12].
+
+### Added
+
+- Ability to set client's custom DNS cache ([#6362]).
+- Ability to disable plain-DNS serving through configuration file if an
+ encrypted protocol is already enabled ([#1660]).
+- Ability to specify rate limiting settings in the Web UI ([#6369]).
+
+### Changed
+
+#### Configuration changes
+
+- The new property `dns.serve_plain_dns` has been added to the configuration
+ file ([#1660]).
+- The property `dns.bogus_nxdomain` is now validated more strictly.
+- Added new properties `clients.persistent.*.upstreams_cache_enabled` and
+ `clients.persistent.*.upstreams_cache_size` that describe cache configuration
+ for each client's custom upstream configuration.
+
+### Fixed
+
+- `ipset` entries family validation ([#6420]).
+- Pre-filling the *New static lease* window with data ([#6402]).
+- Protection pause timer synchronization ([#5759]).
+
+[#1660]: https://github.com/AdguardTeam/AdGuardHome/issues/1660
+[#5759]: https://github.com/AdguardTeam/AdGuardHome/issues/5759
+[#6362]: https://github.com/AdguardTeam/AdGuardHome/issues/6362
+[#6369]: https://github.com/AdguardTeam/AdGuardHome/issues/6369
+[#6402]: https://github.com/AdguardTeam/AdGuardHome/issues/6402
+[#6420]: https://github.com/AdguardTeam/AdGuardHome/issues/6420
+
+[go-1.20.12]: https://groups.google.com/g/golang-announce/c/iLGK3x6yuNo/m/z6MJ-eB0AQAJ
+[ms-v0.107.42]: https://github.com/AdguardTeam/AdGuardHome/milestone/77?closed=1
+
+
+
## [v0.107.41] - 2023-11-13
See also the [v0.107.41 GitHub milestone][ms-v0.107.41].
@@ -2612,11 +2658,12 @@ See also the [v0.104.2 GitHub milestone][ms-v0.104.2].
-[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.41...HEAD
+[Unreleased]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.42...HEAD
+[v0.107.42]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.41...v0.107.42
[v0.107.41]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.40...v0.107.41
[v0.107.40]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.39...v0.107.40
[v0.107.39]: https://github.com/AdguardTeam/AdGuardHome/compare/v0.107.38...v0.107.39
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..ffcda283
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,89 @@
+ # Contributing to AdGuard Home
+
+If you want to contribute to AdGuard Home by filing or commenting on an issue or
+opening a pull request, please follow the instructions below.
+
+
+
+## General recommendations
+
+Please don't:
+
+ * post comments like “+1” or “this”. Use the :+1: reaction on the issue
+ instead, as this allows us to actually see the level of support for issues.
+
+ * file issues about localization errors or send localization updates as PRs.
+ We're using [CrowdIn] to manage our translations and we generally update
+ them before each Beta and Release build. You can learn more about
+ translating AdGuard products [in our Knowledge Base][kb-trans].
+
+ * file issues about a particular filtering-rule list misbehaving. These are
+ tracked through the [separate form for filtering issues][form].
+
+ * send updates to filtering-rule lists, such as the ones for the Blocked
+ Services feature or the list of approved filtering-rule lists. We update
+ them once before each Beta and Release build.
+
+Please do:
+
+ * follow the template instructions and provide data for reproducing issues.
+
+ * write the title of your issue or pull request in English. Any language is
+ fine in the body, but it is important to keep the title in English to make
+ it easier for people and bots to look up duplicated issues.
+
+[CrowdIn]: https://crowdin.com/project/adguard-applications/en#/adguard-home
+[form]: https://link.adtidy.org/forward.html?action=report&app=home&from=github
+[kb-trans]: https://kb.adguard.com/en/general/adguard-translations
+
+
+
+## Issues
+
+ ### Search first
+
+Please make sure that the issue is not a duplicate or a question. If it's a
+duplicate, please react to the original issue with a thumbs up. If it's a
+question, please look through our [Wiki] and, if you haven't found the answer,
+post it to the GitHub [Discussions] page.
+
+[Discussions]: https://github.com/AdguardTeam/AdGuardHome/discussions/categories/q-a
+[Wiki]: https://github.com/AdguardTeam/AdGuardHome/wiki
+
+
+
+ ### Follow the issue template
+
+Developers need to be able to reproduce the faulty behavior in order to fix an
+issue, so please make sure that you follow the instructions in the issue
+template carefully.
+
+
+
+## Pull requests
+
+ ### Discuss your changes first
+
+Please discuss your changes by opening an issue. The maintainers should
+evaluate your proposal, and it's generally better if that's done before any code
+is written.
+
+
+
+ ### Review your changes for style
+
+We have a set of [code guidelines][hacking] that we expect the code to follow.
+Please make sure you follow it.
+
+[hacking]: https://github.com/AdguardTeam/CodeGuidelines/blob/master/Go/Go.md
+
+
+
+ ### Test your changes
+
+Make sure that it passes linters and tests by running the corresponding Make
+targets. For backend changes, it's `make go-check`. For frontend, run
+`make js-lint`.
+
+Additionally, a manual test is often required. While we're constantly working
+on improving our test suites, they're still not as good as we'd like them to be.
diff --git a/bamboo-specs/release.yaml b/bamboo-specs/release.yaml
index 8743a21a..e7004570 100644
--- a/bamboo-specs/release.yaml
+++ b/bamboo-specs/release.yaml
@@ -7,7 +7,7 @@
# Make sure to sync any changes with the branch overrides below.
'variables':
'channel': 'edge'
- 'dockerGo': 'adguard/golang-ubuntu:7.5'
+ 'dockerGo': 'adguard/golang-ubuntu:7.6'
'stages':
- 'Build frontend':
@@ -272,7 +272,7 @@
# need to build a few of these.
'variables':
'channel': 'beta'
- 'dockerGo': 'adguard/golang-ubuntu:7.5'
+ 'dockerGo': 'adguard/golang-ubuntu:7.6'
# release-vX.Y.Z branches are the branches from which the actual final
# release is built.
- '^release-v[0-9]+\.[0-9]+\.[0-9]+':
@@ -287,4 +287,4 @@
# are the ones that actually get released.
'variables':
'channel': 'release'
- 'dockerGo': 'adguard/golang-ubuntu:7.5'
+ 'dockerGo': 'adguard/golang-ubuntu:7.6'
diff --git a/bamboo-specs/snapcraft.yaml b/bamboo-specs/snapcraft.yaml
index d802dba0..77948f13 100644
--- a/bamboo-specs/snapcraft.yaml
+++ b/bamboo-specs/snapcraft.yaml
@@ -10,7 +10,7 @@
# Make sure to sync any changes with the branch overrides below.
'variables':
'channel': 'edge'
- 'dockerGo': 'adguard/golang-ubuntu:7.5'
+ 'dockerGo': 'adguard/golang-ubuntu:7.6'
'snapcraftChannel': 'edge'
'stages':
@@ -191,7 +191,7 @@
# need to build a few of these.
'variables':
'channel': 'beta'
- 'dockerGo': 'adguard/golang-ubuntu:7.5'
+ 'dockerGo': 'adguard/golang-ubuntu:7.6'
'snapcraftChannel': 'beta'
# release-vX.Y.Z branches are the branches from which the actual final
# release is built.
@@ -207,5 +207,5 @@
# are the ones that actually get released.
'variables':
'channel': 'release'
- 'dockerGo': 'adguard/golang-ubuntu:7.5'
+ 'dockerGo': 'adguard/golang-ubuntu:7.6'
'snapcraftChannel': 'candidate'
diff --git a/bamboo-specs/test.yaml b/bamboo-specs/test.yaml
index 746b599d..86e08cc4 100644
--- a/bamboo-specs/test.yaml
+++ b/bamboo-specs/test.yaml
@@ -5,7 +5,7 @@
'key': 'AHBRTSPECS'
'name': 'AdGuard Home - Build and run tests'
'variables':
- 'dockerGo': 'adguard/golang-ubuntu:7.5'
+ 'dockerGo': 'adguard/golang-ubuntu:7.6'
'stages':
- 'Tests':
diff --git a/client/src/__locales/be.json b/client/src/__locales/be.json
index b6ed5cdd..ad13bfac 100644
--- a/client/src/__locales/be.json
+++ b/client/src/__locales/be.json
@@ -1,6 +1,7 @@
{
"client_settings": "Налады кліентаў",
"example_upstream_reserved": "upstream <0>для канкрэтных даменаў0>;",
+ "example_multiple_upstreams_reserved": "некалькі DNS-сервераў <0>для канкрэтных даменаў0>;",
"example_upstream_comment": "каментар.",
"upstream_parallel": "Ужыць адначасныя запыты да ўсіх сервераў для паскарэння апрацоўкі запыту",
"parallel_requests": "Паралельныя запыты",
@@ -143,6 +144,8 @@
"enforced_save_search": "Ужыты бяспечны пошук",
"number_of_dns_query_to_safe_search": "Колькасць запытаў DNS для пошукавых сістэм, для якіх быў ужыты Бяспечны пошук",
"average_processing_time": "Сярэдні час апрацоўкі запыту",
+ "average_upstream_response_time": "Сярэдні час водгуку upstream-сервера",
+ "response_time": "Час водгуку",
"average_processing_time_hint": "Сярэдні час для апрацоўкі запыту DNS у мілісекундах",
"block_domain_use_filters_and_hosts": "Блакаваць дамены з выкарыстаннем фільтраў і файлаў хастоў",
"filters_block_toggle_hint": "Вы можаце наладзіць правілы блакавання ў «Фільтрах».",
@@ -307,6 +310,16 @@
"edns_use_custom_ip": "Выкарыстоўваць указаны IP для DNS",
"edns_use_custom_ip_desc": "Дазволіць выкарыстоўваць уласны IP для DNS",
"rate_limit_desc": "Абмежаванне на колькасць запытаў у секунду для кожнага кліента (0 — неабмежавана)",
+ "rate_limit_subnet_len_ipv4": "Даўжыня прэфікса падсеткі для адрасоў IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Даўжыня прэфікса падсеткі для адрасоў IPv4, якія выкарыстоўваюцца для абмежавання хуткасці. Значэнне па змаўчанні 24",
+ "rate_limit_subnet_len_ipv4_error": "Даўжыня прэфікса падсеткі IPv4 павінна быць ад 0 да 32",
+ "rate_limit_subnet_len_ipv6": "Даўжыня прэфікса падсеткі для адрасоў IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Даўжыня прэфікса падсеткі для адрасоў IPv6, якія выкарыстоўваюцца для абмежавання хуткасці. Значэнне па змаўчанні 56",
+ "rate_limit_subnet_len_ipv6_error": "Даўжыня прэфікса падсеткі IPv6 павінна быць ад 0 да 128",
+ "form_enter_rate_limit_subnet_len": "Увядзіце даўжыню прэфікса падсеткі для абмежавання хуткасці",
+ "rate_limit_whitelist": "Белы спіс з абмежаваннем хуткасці",
+ "rate_limit_whitelist_desc": "IP-адрасы выключаны з абмежавання хуткасці",
+ "rate_limit_whitelist_placeholder": "Увядзіце па адным адрасе на радок",
"blocking_ipv4_desc": "IP-адрас, што вяртаецца пры блакаванню A-запыту",
"blocking_ipv6_desc": "IP-адрас, што вяртаецца пры блакаванню AAAA-запыту",
"blocking_mode_default": "Стандартны: Адказвае з нулёвым IP-адрасам (0.0.0.0 для A; :: для AAAA), калі заблакавана правілам у стылі Adblock; адказвае з IP-адрасам, паказаным у правіле, калі заблакавана правілам у стылі /etc/hosts-style",
@@ -721,5 +734,8 @@
"wednesday_short": "Ср.",
"thursday_short": "Чц.",
"friday_short": "Пт.",
- "saturday_short": "Сб."
+ "saturday_short": "Сб.",
+ "upstream_dns_cache_configuration": "Канфігурацыя кэша upstream DNS-сервераў",
+ "enable_upstream_dns_cache": "Ўключыць кэшаванне для карыстацкай канфігурацыі upstream-сервераў гэтага кліента",
+ "dns_cache_size": "Памер кэша DNS, у байтах"
}
diff --git a/client/src/__locales/cs.json b/client/src/__locales/cs.json
index 6122dec8..5d02697f 100644
--- a/client/src/__locales/cs.json
+++ b/client/src/__locales/cs.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Použít vlastní IP pro EDNS",
"edns_use_custom_ip_desc": "Povolit použití vlastní IP pro EDNS",
"rate_limit_desc": "Počet požadavků za sekundu, které smí jeden klient provádět (0: neomezeno)",
+ "rate_limit_subnet_len_ipv4": "Délka předpony podsítě pro adresy IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Délka předpony podsítě pro adresy IPv4 používané pro omezení rychlosti. Výchozí hodnota je 24",
+ "rate_limit_subnet_len_ipv4_error": "Délka předpony podsítě IPv4 by měla být mezi 0 a 32",
+ "rate_limit_subnet_len_ipv6": "Délka předpony podsítě pro adresy IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Délka předpony podsítě pro adresy IPv6 používané pro omezení rychlosti. Výchozí hodnota je 56",
+ "rate_limit_subnet_len_ipv6_error": "Délka předpony podsítě IPv6 by měla být mezi 0 a 128",
+ "form_enter_rate_limit_subnet_len": "Zadejte délku předpony podsítě pro omezení rychlosti",
+ "rate_limit_whitelist": "Seznam výjimek pro omezení rychlosti",
+ "rate_limit_whitelist_desc": "IP adresy vyloučené z omezení rychlosti",
+ "rate_limit_whitelist_placeholder": "Zadejte jednu IP adresu na řádek",
"blocking_ipv4_desc": "IP adresa, která se má vrátit v případě blokovaného požadavku typu A",
"blocking_ipv6_desc": "IP adresa, která se má vrátit v případě blokovaného požadavku typu AAAA",
"blocking_mode_default": "Výchozí: Odezva s nulovou IP adresou (0.0.0.0 pro A; :: pro AAAA), pokud je blokováno pravidlem ve stylu Adblock; odezva pomocí IP adresy uvedené v pravidle, pokud je blokováno pravidlem /etc/hosts-style",
@@ -724,5 +734,8 @@
"wednesday_short": "Středa",
"thursday_short": "Čtvrtek",
"friday_short": "Pátek",
- "saturday_short": "Sobota"
+ "saturday_short": "Sobota",
+ "upstream_dns_cache_configuration": "Konfigurace mezipaměti odchozího DNS",
+ "enable_upstream_dns_cache": "Povolit ukládání do mezipaměti DNS pro vlastní konfiguraci odchozího připojení tohoto klienta",
+ "dns_cache_size": "Velikost mezipaměti DNS v bajtech"
}
diff --git a/client/src/__locales/da.json b/client/src/__locales/da.json
index dcf6722c..005e60d7 100644
--- a/client/src/__locales/da.json
+++ b/client/src/__locales/da.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Brug tilpasset IP til EDNS",
"edns_use_custom_ip_desc": "Tillad brug af tilpasset IP til EDNS",
"rate_limit_desc": "Antallet af forespørgsler pr. sekund tilladt pr. klient (værdien 0 = ubegrænset)",
+ "rate_limit_subnet_len_ipv4": "Længde på undernetpræfiks for IPv4-adresser",
+ "rate_limit_subnet_len_ipv4_desc": "Længde på undernetpræfiks for IPv4-adresser til hastighedsbegrænsning. Standard er 24",
+ "rate_limit_subnet_len_ipv4_error": "Længden på IPv4-undernetpræfiks skal være mellem 0 og 32",
+ "rate_limit_subnet_len_ipv6": "Længde på undernetpræfiks for IPv6-adresser",
+ "rate_limit_subnet_len_ipv6_desc": "Længde på undernetpræfiks for IPv6-adresser til hastighedsbegrænsning. Standard er 56",
+ "rate_limit_subnet_len_ipv6_error": "Længden på IPv6-undernetpræfiks skal være mellem 0 og 128",
+ "form_enter_rate_limit_subnet_len": "Angiv længden på undernetpræfiks til hastighedsbegrænsning",
+ "rate_limit_whitelist": "Hvidliste til hastighedsbegrænsning",
+ "rate_limit_whitelist_desc": "IP-adresser undtaget fra hastighedsbegrænsning",
+ "rate_limit_whitelist_placeholder": "Angiv én IP-adresse pr. linje",
"blocking_ipv4_desc": "Returneret IP-adresse for en blokeret A-forespørgsel",
"blocking_ipv6_desc": "Returneret IP-adresse for en blokeret AAAA-forespørgsel",
"blocking_mode_default": "Standard: Svar med nul IP-adresse (0.0.0.0 for A; :: for AAAA), når blokeret af Adblock-lignende regel. Svar med IP-adressen angivet i reglen, når blokeret af /etc/hosts-lignende regel",
@@ -724,5 +734,8 @@
"wednesday_short": "Ons",
"thursday_short": "Tors",
"friday_short": "Fre",
- "saturday_short": "Lør"
+ "saturday_short": "Lør",
+ "upstream_dns_cache_configuration": "Upstream DNS-cacheopsætning",
+ "enable_upstream_dns_cache": "Aktivér DNS-cachelagring for denne klients tilpassede upstream-opsætning",
+ "dns_cache_size": "DNS-cachestørrelse i bytes"
}
diff --git a/client/src/__locales/de.json b/client/src/__locales/de.json
index e9ed256c..bf104daf 100644
--- a/client/src/__locales/de.json
+++ b/client/src/__locales/de.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Benutzerdefinierte IP für EDNS verwenden",
"edns_use_custom_ip_desc": "Benutzerdefinierte IP für EDNS zulassen",
"rate_limit_desc": "Die Anzahl der Anfragen pro Sekunde, die ein einzelner Client stellen darf. Das Setzen auf 0 bedeutet keine Begrenzung.",
+ "rate_limit_subnet_len_ipv4": "Länge des Subnetzpräfixes für IPv4-Adressen",
+ "rate_limit_subnet_len_ipv4_desc": "Subnetpräfixlänge für IPv4-Adressen, die für die Ratebegrenzung verwendet werden. Der Standardwert ist 24",
+ "rate_limit_subnet_len_ipv4_error": "Die Subnetzpräfixlänge für IPv4-Adressen sollte zwischen 0 und 32 liegen",
+ "rate_limit_subnet_len_ipv6": "Subnetzpräfixlänge für IPv6-Adressen",
+ "rate_limit_subnet_len_ipv6_desc": "Subnetpräfixlänge für IPv6-Adressen, die für die Ratebegrenzung verwendet werden. Der Standardwert ist 56",
+ "rate_limit_subnet_len_ipv6_error": "Die Subnetzpräfixlänge für IPv6-Adressen sollte zwischen 0 und 128 liegen",
+ "form_enter_rate_limit_subnet_len": "Geben Sie die Subnetzpräfixlänge für die Ratebegrenzung ein",
+ "rate_limit_whitelist": "Zulassungsliste für die Ratebegrenzung",
+ "rate_limit_whitelist_desc": "IP-Adressen, die von der Ratebegrenzung ausgeschlossen sind",
+ "rate_limit_whitelist_placeholder": "Geben Sie eine IP-Adresse pro Zeile ein",
"blocking_ipv4_desc": "IP-Adresse, die für eine gesperrte A-Anfrage zurückgegeben werden soll",
"blocking_ipv6_desc": "IP-Adresse, die für eine gesperrte AAAA-Anfrage zurückgegeben werden soll",
"blocking_mode_default": "Standard: Mit Null IP Adress (0.0.0.0 for A; :: for AAAA) antworten, wenn sie durch eine Regel im Adblock-Stil gesperrt sind; mit der in der Regel angegebenen IP-Adresse antworten, wenn sie durch eine Regel im /etc/hosts-Stil gesperrt wurde",
@@ -724,5 +734,8 @@
"wednesday_short": "Mi",
"thursday_short": "Do",
"friday_short": "Fr",
- "saturday_short": "Sa"
+ "saturday_short": "Sa",
+ "upstream_dns_cache_configuration": "Konfiguration des Upstream-DNS-Cache",
+ "enable_upstream_dns_cache": "Caching für die benutzerdefinierte Upstream-Server-Konfiguration dieses Clients aktivieren",
+ "dns_cache_size": "Größe des DNS-Cache, in Bytes"
}
diff --git a/client/src/__locales/en.json b/client/src/__locales/en.json
index 5e0bf6d1..a5839c0f 100644
--- a/client/src/__locales/en.json
+++ b/client/src/__locales/en.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Use custom IP for EDNS",
"edns_use_custom_ip_desc": "Allow to use custom IP for EDNS",
"rate_limit_desc": "The number of requests per second allowed per client. Setting it to 0 means no limit.",
+ "rate_limit_subnet_len_ipv4": "Subnet prefix length for IPv4 addresses",
+ "rate_limit_subnet_len_ipv4_desc": "Subnet prefix length for IPv4 addresses used for rate limiting. The default is 24",
+ "rate_limit_subnet_len_ipv4_error": "The IPv4 subnet prefix length should be between 0 and 32",
+ "rate_limit_subnet_len_ipv6": "Subnet prefix length for IPv6 addresses",
+ "rate_limit_subnet_len_ipv6_desc": "Subnet prefix length for IPv6 addresses used for rate limiting. The default is 56",
+ "rate_limit_subnet_len_ipv6_error": "The IPv6 subnet prefix length should be between 0 and 128",
+ "form_enter_rate_limit_subnet_len": "Enter subnet prefix length for rate limiting",
+ "rate_limit_whitelist": "Rate limiting allowlist",
+ "rate_limit_whitelist_desc": "IP addresses excluded from rate limiting",
+ "rate_limit_whitelist_placeholder": "Enter one IP address per line",
"blocking_ipv4_desc": "IP address to be returned for a blocked A request",
"blocking_ipv6_desc": "IP address to be returned for a blocked AAAA request",
"blocking_mode_default": "Default: Respond with zero IP address (0.0.0.0 for A; :: for AAAA) when blocked by Adblock-style rule; respond with the IP address specified in the rule when blocked by /etc/hosts-style rule",
@@ -724,5 +734,8 @@
"wednesday_short": "Wed",
"thursday_short": "Thu",
"friday_short": "Fri",
- "saturday_short": "Sat"
+ "saturday_short": "Sat",
+ "upstream_dns_cache_configuration": "Upstream DNS cache configuration",
+ "enable_upstream_dns_cache": "Enable DNS caching for this client's custom upstream configuration",
+ "dns_cache_size": "DNS cache size, in bytes"
}
diff --git a/client/src/__locales/es.json b/client/src/__locales/es.json
index badc0c42..c2f56ad3 100644
--- a/client/src/__locales/es.json
+++ b/client/src/__locales/es.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Usar IP personalizada para EDNS",
"edns_use_custom_ip_desc": "Permitir el uso de IP personalizadas para EDNS",
"rate_limit_desc": "Número de peticiones por segundo permitidas por cliente. Establecerlo en 0 significa que no hay límite.",
+ "rate_limit_subnet_len_ipv4": "Longitud del prefijo de subred para direcciones IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Longitud del prefijo de subred para direcciones IPv4 utilizadas para limitar la velocidad. El valor predeterminado es 24",
+ "rate_limit_subnet_len_ipv4_error": "La longitud del prefijo de subred IPv4 debe estar entre 0 y 32",
+ "rate_limit_subnet_len_ipv6": "Longitud del prefijo de subred para direcciones IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Longitud del prefijo de subred para direcciones IPv6 utilizadas para limitar la velocidad. El valor predeterminado es 56",
+ "rate_limit_subnet_len_ipv6_error": "La longitud del prefijo de subred IPv6 debe estar entre 0 y 128",
+ "form_enter_rate_limit_subnet_len": "Ingresa la longitud del prefijo de subred para limitar la velocidad",
+ "rate_limit_whitelist": "Lista de permitidos de limitación de velocidad",
+ "rate_limit_whitelist_desc": "Direcciones IP excluidas de la limitación de velocidad",
+ "rate_limit_whitelist_placeholder": "Ingresa una dirección IP por línea",
"blocking_ipv4_desc": "Dirección IP devolverá una petición A bloqueada",
"blocking_ipv6_desc": "Dirección IP devolverá una petición AAAA bloqueada",
"blocking_mode_default": "Predeterminado: Responde con dirección IP cero (0.0.0.0 para A; :: para AAAA) cuando está bloqueado por la regla de estilo Adblock; responde con la dirección IP especificada en la regla cuando está bloqueado por una regla de estilo /etc/hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "Mié.",
"thursday_short": "Jue.",
"friday_short": "Vie.",
- "saturday_short": "Sáb."
+ "saturday_short": "Sáb.",
+ "upstream_dns_cache_configuration": "Configuración de la caché DNS upstream",
+ "enable_upstream_dns_cache": "Habilitar el almacenamiento en caché de DNS para la configuración personalizada de este cliente",
+ "dns_cache_size": "Tamaño de la caché DNS, en bytes"
}
diff --git a/client/src/__locales/fi.json b/client/src/__locales/fi.json
index e04256c7..3aa68ca5 100644
--- a/client/src/__locales/fi.json
+++ b/client/src/__locales/fi.json
@@ -1,6 +1,7 @@
{
"client_settings": "Päätelaiteasetukset",
"example_upstream_reserved": "ylävirta <0>tietyille verkkotunnuksille0>;",
+ "example_multiple_upstreams_reserved": "useita ylävirtoja <0>tietyille verkkotunnuksille0>;",
"example_upstream_comment": "kommentti.",
"upstream_parallel": "Käytä rinnakkaisia pyyntöjä ja nopeuta selvitystä käyttämällä kaikkia ylävirtapalvelimia samanaikaisesti.",
"parallel_requests": "Rinnakkaiset pyynnöt",
@@ -143,6 +144,7 @@
"enforced_save_search": "Turvallinen haku pakotettiin",
"number_of_dns_query_to_safe_search": "DNS-pyyntöjen määrä, joille turvallinen haku pakotettiin käyttöön",
"average_processing_time": "Keskimääräinen käsittelyaika",
+ "average_upstream_response_time": "Ylävirran keskimääräinen vasteaika",
"response_time": "Vasteaika",
"average_processing_time_hint": "Keskimääräinen DNS-pyynnön käsittelyyn kulutettu aika millisekunteina",
"block_domain_use_filters_and_hosts": "Estä verkkotunnuksia suodattimilla ja hosts-tiedostoilla",
@@ -308,6 +310,16 @@
"edns_use_custom_ip": "Käytä omaa IP-osoitetta EDNS:lle",
"edns_use_custom_ip_desc": "Salli oman IP-osoitteen käyttö EDNS-mekanismille.",
"rate_limit_desc": "Päätelaitteelle sallittu pyyntöjen enimmäismäärä sekunnissa. Arvo 0 tarkoittaa rajatonta.",
+ "rate_limit_subnet_len_ipv4": "IPv4-osoitteiden aliverkon etuliitteen pituus",
+ "rate_limit_subnet_len_ipv4_desc": "Aliverkon etuliitteen pituus IPv4-osoitteille, joita käytetään nopeuden rajoittamiseen. Oletusarvo on 24",
+ "rate_limit_subnet_len_ipv4_error": "IPv4-aliverkon etuliitteen pituuden tulee olla 0–32",
+ "rate_limit_subnet_len_ipv6": "IPv6-osoitteiden aliverkon etuliitteen pituus",
+ "rate_limit_subnet_len_ipv6_desc": "Aliverkon etuliitteen pituus IPv6-osoitteille, joita käytetään nopeuden rajoittamiseen. Oletusarvo on 56",
+ "rate_limit_subnet_len_ipv6_error": "IPv6-aliverkon etuliitteen pituuden tulee olla 0–128",
+ "form_enter_rate_limit_subnet_len": "Anna aliverkon etuliitteen pituus nopeuden rajoittamista varten",
+ "rate_limit_whitelist": "Nopeutta rajoittava sallittu luettelo",
+ "rate_limit_whitelist_desc": "IP-osoitteet, jotka eivät kuulu nopeusrajoituksen piiriin",
+ "rate_limit_whitelist_placeholder": "Syötä yksi IP-osoite per rivi",
"blocking_ipv4_desc": "Estettyyn A-pyyntöön palautettava IP-osoite",
"blocking_ipv6_desc": "Estettyyn AAAA-pyyntöön palautettava IP-osoite",
"blocking_mode_default": "Oletus: Vastaa IP-nollaosoitteella (0.0.0.0 korvaa A; :: korvaa AAAA) kun estetään mainoseston säännöllä; vastaa säännön määrittämällä IP-osoitteella kun estetään /etc/hosts-tyyppisellä säännöllä",
@@ -722,5 +734,8 @@
"wednesday_short": "Ke",
"thursday_short": "To",
"friday_short": "Pe",
- "saturday_short": "La"
+ "saturday_short": "La",
+ "upstream_dns_cache_configuration": "Ylävirran DNS-välimuistin määritykset",
+ "enable_upstream_dns_cache": "Käytä DNS-välimuistia tämän päätelaitteen mukautetuissa ylävirtamäärityksissä",
+ "dns_cache_size": "DNS-välimuistin koko tavuina"
}
diff --git a/client/src/__locales/fr.json b/client/src/__locales/fr.json
index 2be62963..eb09b830 100644
--- a/client/src/__locales/fr.json
+++ b/client/src/__locales/fr.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Utiliser une IP personnalisée pour EDNS",
"edns_use_custom_ip_desc": "Autoriser l'utilisation d'une adresse IP personnalisée pour EDNS",
"rate_limit_desc": "Le nombre de requêtes par seconde qu’un seul client est autorisé à faire. Le réglage 0 fait illimité.",
+ "rate_limit_subnet_len_ipv4": "Longueur du préfixe de sous-réseau pour les adresses IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Longueur du préfixe de sous-réseau pour les adresses IPv4 utilisé pour la limitation de vitesse. La valeur par défaut est 24",
+ "rate_limit_subnet_len_ipv4_error": "La longueur du préfixe du sous-réseau IPv4 doit être entre 0 et 32",
+ "rate_limit_subnet_len_ipv6": "Longueur du préfixe de sous-réseau pour les adresses IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Longueur du préfixe de sous-réseau pour les adresses IPv6 utilisé pour la limitation de débit. La valeur par défaut est 56",
+ "rate_limit_subnet_len_ipv6_error": "La longueur du préfixe du sous-réseau IPv6 doit être entre 0 et 128",
+ "form_enter_rate_limit_subnet_len": "Saisissez la longueur du préfixe de sous-réseau pour la limitation de débit",
+ "rate_limit_whitelist": "Liste d'autorisation de limitation de débit",
+ "rate_limit_whitelist_desc": "Adresses IP exclues de la limitation du débit",
+ "rate_limit_whitelist_placeholder": "Saisissez une adresse IP par ligne",
"blocking_ipv4_desc": "Adresse IP à renvoyer pour une demande A bloquée",
"blocking_ipv6_desc": "Adresse IP à renvoyer pour une demande AAAA bloquée",
"blocking_mode_default": "Par défaut : Répondre avec adresse IP zéro (0.0.0.0 pour A ; :: pour AAAA) lorsque bloqué par la règle de style Adblock ; répondre avec l’adresse IP spécifiée dans la règle lorsque bloquée par la règle du style /etc/hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "Mer.",
"thursday_short": "Jeu.",
"friday_short": "Ven.",
- "saturday_short": "Sam."
+ "saturday_short": "Sam.",
+ "upstream_dns_cache_configuration": "Configuration du cache DNS en amont",
+ "enable_upstream_dns_cache": "Activer la mise en cache pour la configuration personnalisée du serveur en amont de ce client",
+ "dns_cache_size": "Taille du cache DNS, en bytes"
}
diff --git a/client/src/__locales/hr.json b/client/src/__locales/hr.json
index 1c9ec62e..7fe2c68a 100644
--- a/client/src/__locales/hr.json
+++ b/client/src/__locales/hr.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Koristi prilagođeni IP za EDNS",
"edns_use_custom_ip_desc": "Dopusti korištenje prilagođenog IP-a za EDNS",
"rate_limit_desc": "Broj zahtjeva u sekundi koji su dopušteni po jednom klijentu. Postavljanje na 0 znači neograničeno.",
+ "rate_limit_subnet_len_ipv4": "Duljina prefiksa podmreže za IPv4 adrese",
+ "rate_limit_subnet_len_ipv4_desc": "Duljina prefiksa podmreže za IPv4 adrese koje se koriste za ograničavanje brzine. Zadana vrijednost je 24",
+ "rate_limit_subnet_len_ipv4_error": "Dužina IPv4 prefiksa podmreže trebala bi biti između 0 i 32",
+ "rate_limit_subnet_len_ipv6": "Duljina prefiksa podmreže za IPv6 adrese",
+ "rate_limit_subnet_len_ipv6_desc": "Duljina prefiksa podmreže za IPv6 adrese koje se koriste za ograničavanje brzine. Zadana vrijednost je 56",
+ "rate_limit_subnet_len_ipv6_error": "Dužina IPv6 prefiksa podmreže trebala bi biti između 0 i 128",
+ "form_enter_rate_limit_subnet_len": "Unesite duljinu prefiksa podmreže za ograničenje brzine",
+ "rate_limit_whitelist": "Popis dopuštenih za ograničavanje brzine",
+ "rate_limit_whitelist_desc": "IP adrese isključene iz ograničenja brzine",
+ "rate_limit_whitelist_placeholder": "Unesite jednu adresu poslužitelja po retku",
"blocking_ipv4_desc": "Povratna IP adresa za blokirane A zahtjeve",
"blocking_ipv6_desc": "Povratna IP adresa za blokirane AAAA zahtjeve",
"blocking_mode_default": "Zadano: Odgovori s nultom IP adresom (0.0.0.0 za A; :: za AAAA) kada ga blokira Adblock slično pravilo; odgovorite s IP adresom definiranom u pravilu kada je blokirano od /etc/hosts sličnog pravila",
@@ -724,5 +734,8 @@
"wednesday_short": "Sri",
"thursday_short": "Čet",
"friday_short": "Pet",
- "saturday_short": "Sub"
+ "saturday_short": "Sub",
+ "upstream_dns_cache_configuration": "Konfiguracija predmemoriranja upstream DNS poslužitelja",
+ "enable_upstream_dns_cache": "Uključite keširanje za korisničku konfiguraciju upstream servera ovog klijenta",
+ "dns_cache_size": "Veličina DNS predmemorije, u bajtovima"
}
diff --git a/client/src/__locales/hu.json b/client/src/__locales/hu.json
index 454704c8..40bf8512 100644
--- a/client/src/__locales/hu.json
+++ b/client/src/__locales/hu.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Használjon egyéni IP-címet az EDNS-hez",
"edns_use_custom_ip_desc": "Engedélyezze az egyéni IP-cím használatát az EDNS-hez",
"rate_limit_desc": "Maximálisan hány kérést küldhet egy kliens másodpercenkén. Ha 0-ra állítja, akkor nincs korlátozás.",
+ "rate_limit_subnet_len_ipv4": "Az IPv4-címek alhálózati előtagjának hossza",
+ "rate_limit_subnet_len_ipv4_desc": "A sebességkorlátozáshoz használt IPv4-címek alhálózati előtagjának hossza. Az alapértelmezett érték 24",
+ "rate_limit_subnet_len_ipv4_error": "Az IPv4 alhálózati előtag hosszának 0 és 32 között kell lennie",
+ "rate_limit_subnet_len_ipv6": "Az IPv6-címek alhálózati előtagjának hossza",
+ "rate_limit_subnet_len_ipv6_desc": "A sebességkorlátozáshoz használt IPv6-címek alhálózati előtagjának hossza. Az alapértelmezett érték 56",
+ "rate_limit_subnet_len_ipv6_error": "Az IPv6 alhálózati előtag hosszának 0 és 128 között kell lennie",
+ "form_enter_rate_limit_subnet_len": "Adja meg az alhálózati előtag hosszát a sebességkorlátozáshoz",
+ "rate_limit_whitelist": "Sebességkorlátozó engedélyezési lista",
+ "rate_limit_whitelist_desc": "A sebességkorlátozásból kizárt IP-címek",
+ "rate_limit_whitelist_placeholder": "Adjon meg egy IP-címet soronként",
"blocking_ipv4_desc": "A blokkolt A kéréshez visszaadandó IP-cím",
"blocking_ipv6_desc": "A blokkolt AAAA kéréshez visszaadandó IP-cím",
"blocking_mode_default": "Alapértelmezés: Válaszoljon nulla IP-címmel (vagyis 0.0.0.0 az A-hoz, :: pedig az AAAA-hoz), amikor a blokkolás egy adblock-stílusú szabállyal történik; illetve válaszoljon egy, a szabály által meghatározott IP címmel, amikor a blokkolás egy /etc/hosts stílusú szabállyal történik",
@@ -724,5 +734,8 @@
"wednesday_short": "Szer",
"thursday_short": "Csüt",
"friday_short": "Pén",
- "saturday_short": "Szom"
+ "saturday_short": "Szom",
+ "upstream_dns_cache_configuration": "Upstream DNS gyorsítótár konfigurációja",
+ "enable_upstream_dns_cache": "A DNS gyorsítótárazásának engedélyezése az ügyfél egyéni upstream konfigurációjához",
+ "dns_cache_size": "DNS gyorsítótár mérete, bájtokban"
}
diff --git a/client/src/__locales/id.json b/client/src/__locales/id.json
index 2f7caecc..a8671452 100644
--- a/client/src/__locales/id.json
+++ b/client/src/__locales/id.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Gunakan IP khusus untuk EDNS",
"edns_use_custom_ip_desc": "Izinkan untuk menggunakan IP kustom untuk EDNS",
"rate_limit_desc": "Jumlah permintaan per detik yang diperbolehkan untuk satu klien. Atur ke 0 untuk tidak terbatas.",
+ "rate_limit_subnet_len_ipv4": "Panjang awalan subnet untuk alamat IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Panjang awalan subnet untuk alamat IPv4 yang digunakan untuk pembatasan kecepatan. Standarnya adalah 24",
+ "rate_limit_subnet_len_ipv4_error": "Panjang awalan subnet IPv4 harus antara 0 dan 32",
+ "rate_limit_subnet_len_ipv6": "Panjang awalan subnet untuk alamat IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Panjang awalan subnet untuk alamat IPv6 yang digunakan untuk pembatasan kecepatan. Standarnya adalah 56",
+ "rate_limit_subnet_len_ipv6_error": "Panjang awalan subnet IPv6 harus antara 0 dan 128",
+ "form_enter_rate_limit_subnet_len": "Masukkan panjang awalan subnet untuk pembatasan kecepatan",
+ "rate_limit_whitelist": "Daftar pembatasan tarif yang diizinkan",
+ "rate_limit_whitelist_desc": "Alamat IP dikecualikan dari pembatasan tarif",
+ "rate_limit_whitelist_placeholder": "Masukkan satu alamat IP per baris",
"blocking_ipv4_desc": "Alamat IP akan dikembalikan untuk permintaan A yang diblokir",
"blocking_ipv6_desc": "Alamat IP akan dipulihkan untuk permintaan AAAA yang diblokir",
"blocking_mode_default": "Default: Tanggapi dengan alamat IP nol (0.0.0.0 untuk A; :: untuk AAAA) saat diblokir oleh aturan gaya Adblock; tanggapi dengan alamat IP yang ditentukan dalam aturan ketika diblokir oleh aturan gaya host /etc/",
@@ -724,5 +734,8 @@
"wednesday_short": "Rab",
"thursday_short": "Kam",
"friday_short": "Jum",
- "saturday_short": "Sab"
+ "saturday_short": "Sab",
+ "upstream_dns_cache_configuration": "Konfigurasi cache DNS upstream",
+ "enable_upstream_dns_cache": "Aktifkan cache DNS untuk konfigurasi upstream kustom klien ini",
+ "dns_cache_size": "Ukuran cache DNS, dalam byte"
}
diff --git a/client/src/__locales/it.json b/client/src/__locales/it.json
index 04a09411..fca0d970 100644
--- a/client/src/__locales/it.json
+++ b/client/src/__locales/it.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Usa IP personalizzato per EDNS",
"edns_use_custom_ip_desc": "Consentire l'uso di un IP personalizzato per EDNS",
"rate_limit_desc": "Il numero di richieste al secondo consentite da un singolo client. Impostare questo valore a 0 rimuove le limitazioni.",
+ "rate_limit_subnet_len_ipv4": "Lunghezza prefisso di sottorete per indirizzi IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Lunghezza prefisso sottorete per indirizzi IPv4 usati per la limitazione della velocità. Valore predefinito 24",
+ "rate_limit_subnet_len_ipv4_error": "La lunghezza del prefisso di sottorete IPv4 deve essere compresa tra 0 e 32",
+ "rate_limit_subnet_len_ipv6": "Lunghezza prefisso di sottorete per indirizzi IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Lunghezza prefisso di sottorete per indirizzi IPv6 usati per la limitazione della velocità. Valore predefinito 56",
+ "rate_limit_subnet_len_ipv6_error": "La lunghezza del prefisso di sottorete IPv6 deve essere compresa tra 0 e 128",
+ "form_enter_rate_limit_subnet_len": "Inserisci lunghezza prefisso di sottorete per limitazione velocità",
+ "rate_limit_whitelist": "Lista consentita per limitazione velocità",
+ "rate_limit_whitelist_desc": "Indirizzi IP esclusi dalla limitazione della velocità",
+ "rate_limit_whitelist_placeholder": "Inserisci un indirizzo IP per riga",
"blocking_ipv4_desc": "Indirizzo IP per una richiesta DNS IPv4 bloccata",
"blocking_ipv6_desc": "Indirizzo IP restituito per una richiesta DNS IPv6 bloccata",
"blocking_mode_default": "Risponde con un indirizzo IP pari a zero (0.0.0.0 per A; :: per AAAA) quando bloccato da una regola in stile Blocca-annunci; risponde con l'indirizzo IP specificato nella regola quando bloccato da una regola in stile /etc/hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "Mer",
"thursday_short": "Gio",
"friday_short": "Ven",
- "saturday_short": "Sab"
+ "saturday_short": "Sab",
+ "upstream_dns_cache_configuration": "Configurazione cache DNS upstream",
+ "enable_upstream_dns_cache": "Abilita cache DNS per la configurazione upstream personalizzata del client",
+ "dns_cache_size": "Dimensioni cache DNS (in byte)"
}
diff --git a/client/src/__locales/ja.json b/client/src/__locales/ja.json
index 1e2bb4a4..63cd3c3f 100644
--- a/client/src/__locales/ja.json
+++ b/client/src/__locales/ja.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "EDNSにカスタムIPを使用する",
"edns_use_custom_ip_desc": "EDNS に対してカスタム IP の使用を許可します。",
"rate_limit_desc": "一つのクライアントに対して許可される1秒あたりのリクエスト数(「0」に設定すると、制限なしになります)",
+ "rate_limit_subnet_len_ipv4": "IPv4 アドレスのサブネットプレフィックス長",
+ "rate_limit_subnet_len_ipv4_desc": "rate limiting(レート制限)に使用される IPv4 アドレスのサブネットプレフィックス長です。デフォルト値は 24 です。",
+ "rate_limit_subnet_len_ipv4_error": "IPv4 サブネットプレフィックス長は0〜32の範囲内である必要があります。",
+ "rate_limit_subnet_len_ipv6": "IPv6 アドレスのサブネットプレフィックス長",
+ "rate_limit_subnet_len_ipv6_desc": "rate limiting(レート制限)に使用される IPv6 アドレスのサブネットプレフィックス長です。デフォルト値は 56 です。",
+ "rate_limit_subnet_len_ipv6_error": "IPv6 サブネットのプレフィックス長は0〜128の範囲内である必要があります。",
+ "form_enter_rate_limit_subnet_len": "rate limiting(レート制限)のためのサブネットプレフィックス長を入力してください",
+ "rate_limit_whitelist": "rate limiting(レート制限)の許可リスト",
+ "rate_limit_whitelist_desc": "rate limiting(レート制限)の対象から外すIPアドレスを指定できます。",
+ "rate_limit_whitelist_placeholder": "IPアドレスを1行に1つずづ入力してください。",
"blocking_ipv4_desc": "ブロックされたAリクエストに対して応答されるIPアドレス",
"blocking_ipv6_desc": "ブロックされたAAAAリクエストに対して応答されるIPアドレス",
"blocking_mode_default": "デフォルト:Adblock系ルールによってブロックされると、ゼロIPアドレス(Aに対しては「0.0.0.0」、AAAAに対しては「::」)で応答します。/etc/hosts系ルールによってブロックされると、ルールにて指定されているIPアドレスで応答します。",
@@ -724,5 +734,8 @@
"wednesday_short": "水",
"thursday_short": "木",
"friday_short": "金",
- "saturday_short": "土"
+ "saturday_short": "土",
+ "upstream_dns_cache_configuration": "Upstream DNS cache configuration(アップストリームDNSキャッシュの構成)",
+ "enable_upstream_dns_cache": "このクライアントのカスタムアップストリーム構成に対してDNSキャッシュを有効にする",
+ "dns_cache_size": "DNSキャッシュサイズ(バイト単位)"
}
diff --git a/client/src/__locales/ko.json b/client/src/__locales/ko.json
index b10190e8..e39ca472 100644
--- a/client/src/__locales/ko.json
+++ b/client/src/__locales/ko.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "EDNS에 사용자 지정 IP 사용",
"edns_use_custom_ip_desc": "EDNS에 사용자 지정 IP 사용하도록 허용합니다.",
"rate_limit_desc": "단일 클라이언트에서 허용 가능한 초 당 요청 생성 숫자 (0: 무제한)",
+ "rate_limit_subnet_len_ipv4": "IPv4 주소의 서브넷 접두사 길이",
+ "rate_limit_subnet_len_ipv4_desc": "속도 제한에 사용되는 IPv4 주소의 서브넷 접두사 길이입니다. 기본값은 24입니다.",
+ "rate_limit_subnet_len_ipv4_error": "IPv4 서브넷 접두사 길이는 0에서 32 사이여야 합니다.",
+ "rate_limit_subnet_len_ipv6": "IPv6 주소의 서브넷 접두사 길이",
+ "rate_limit_subnet_len_ipv6_desc": "속도 제한에 사용되는 IPv6 주소의 서브넷 접두사 길이입니다. 기본값은 56입니다.",
+ "rate_limit_subnet_len_ipv6_error": "IPv6 서브넷 접두사 길이는 0에서 128 사이여야 합니다.",
+ "form_enter_rate_limit_subnet_len": "속도 제한을 위한 서브넷 접두사 길이를 입력하세요",
+ "rate_limit_whitelist": "속도 제한 허용 목록",
+ "rate_limit_whitelist_desc": "속도 제한에서 제외되는 IP 주소",
+ "rate_limit_whitelist_placeholder": "한 줄에 하나씩 IP 주소를 입력하세요.",
"blocking_ipv4_desc": "차단된 A 요청에 대해서 반환할 IP 주소",
"blocking_ipv6_desc": "차단된 AAAA 요청에 대해서 반환할 IP 주소",
"blocking_mode_default": "기본: Adblock 스타일 규칙에 의해 차단되면 제로 IP 주소(A는 0.0.0.0; AAAA는 ::)로 응답합니다; /etc/hosts 스타일 규칙에 의해 차단되면 규칙에 정의된 IP 주소로 응답합니다",
@@ -724,5 +734,8 @@
"wednesday_short": "수",
"thursday_short": "목",
"friday_short": "금",
- "saturday_short": "토"
+ "saturday_short": "토",
+ "upstream_dns_cache_configuration": "업스트림 DNS 캐시 설정",
+ "enable_upstream_dns_cache": "이 클라이언트의 사용자 지정 업스트림 설정에서 DNS 캐싱 사용",
+ "dns_cache_size": "DNS 캐시 크기(바이트)"
}
diff --git a/client/src/__locales/nl.json b/client/src/__locales/nl.json
index d35bd741..2fc0f1ee 100644
--- a/client/src/__locales/nl.json
+++ b/client/src/__locales/nl.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Aangepast IP-adres gebruiken voor EDNS",
"edns_use_custom_ip_desc": "Toestaan om aangepast IP-adres voor EDNS te gebruiken",
"rate_limit_desc": "Het aantal verzoeken per seconde toegelaten per toestel. 0 betekent onbeperkt.",
+ "rate_limit_subnet_len_ipv4": "Lengte subnetvoorvoegsel voor IPv4-adressen",
+ "rate_limit_subnet_len_ipv4_desc": "Lengte subnetvoorvoegsel voor IPv4-adressen die worden gebruikt voor snelheidsbeperking. De standaardwaarde is 24",
+ "rate_limit_subnet_len_ipv4_error": "De lengte van het IPv4-subnetvoorvoegsel moet tussen 0 en 32 liggen",
+ "rate_limit_subnet_len_ipv6": "Lengte subnetvoorvoegsel voor IPv6-adressen",
+ "rate_limit_subnet_len_ipv6_desc": "Lengte subnetvoorvoegsel voor IPv6-adressen die worden gebruikt voor snelheidsbeperking. De standaardwaarde is 56",
+ "rate_limit_subnet_len_ipv6_error": "De lengte van het IPv6-subnetvoorvoegsel moet tussen 0 en 128 liggen",
+ "form_enter_rate_limit_subnet_len": "Voer de lengte van het subnetvoorvoegsel in voor snelheidsbeperking",
+ "rate_limit_whitelist": "Toelatingslijst voor snelheidsbeperking",
+ "rate_limit_whitelist_desc": "IP-adressen uitgesloten van snelheidsbeperking",
+ "rate_limit_whitelist_placeholder": "Voer één IP-adres per regel in",
"blocking_ipv4_desc": "IP-adres dat moet worden teruggegeven voor een geblokkeerd A-verzoek",
"blocking_ipv6_desc": "IP-adres dat moet worden teruggegeven voor een geblokkeerd A-verzoek",
"blocking_mode_default": "Standaard: Reageer met een nul IP adres (0.0.0.0 for A; :: voor AAAA) wanneer geblokkeerd door een Adblock-type regel; reageer met het IP-adres dat is opgegeven in de regel wanneer geblokkeerd door een /etc/hosts type regel",
@@ -724,5 +734,8 @@
"wednesday_short": "wo",
"thursday_short": "do",
"friday_short": "vr",
- "saturday_short": "za"
+ "saturday_short": "za",
+ "upstream_dns_cache_configuration": "Upstream DNS-cacheconfiguratie",
+ "enable_upstream_dns_cache": "DNS-caching inschakelen voor de aangepaste upstream-configuratie van deze client",
+ "dns_cache_size": "DNS-cachegrootte, in bytes"
}
diff --git a/client/src/__locales/pl.json b/client/src/__locales/pl.json
index 0668a8be..d657eb06 100644
--- a/client/src/__locales/pl.json
+++ b/client/src/__locales/pl.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Użyj niestandardowego adresu IP dla EDNS",
"edns_use_custom_ip_desc": "Zezwól na użycie niestandardowego adresu IP dla EDNS",
"rate_limit_desc": "Liczba żądań na sekundę dozwolona na klienta. Ustawienie wartości 0 oznacza brak ograniczeń.",
+ "rate_limit_subnet_len_ipv4": "Długość maski podsieci dla adresów IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Długość maski podsieci dla adresów IPv4 używanych do ograniczania prędkości. Domyślnie jest to 24",
+ "rate_limit_subnet_len_ipv4_error": "Długość maski podsieci IPv4 powinna wynosić od 0 do 32",
+ "rate_limit_subnet_len_ipv6": "Długość prefiksu podsieci dla adresów IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Długość prefiksu podsieci dla adresów IPv6 używanych do ograniczania szybkości. Domyślnie jest to 56",
+ "rate_limit_subnet_len_ipv6_error": "Długość prefiksu podsieci IPv6 powinna wynosić od 0 do 128",
+ "form_enter_rate_limit_subnet_len": "Wprowadź długość prefiksu podsieci dla ograniczenia prędkości",
+ "rate_limit_whitelist": "Lista zezwoleń ograniczających prędkość",
+ "rate_limit_whitelist_desc": "Adresy IP wykluczone z ograniczania prędkości",
+ "rate_limit_whitelist_placeholder": "Wprowadź po jednym adresie IP w każdym wierszu",
"blocking_ipv4_desc": "Adres IP, który ma zostać zwrócony w przypadku zablokowanego żądania A",
"blocking_ipv6_desc": "Adres IP, który ma zostać zwrócony w przypadku zablokowanego żądania AAAA",
"blocking_mode_default": "Domyślna: Odpowiedz z zerowym adresem IP (0.0.0.0 dla A; :: dla AAAA) po zablokowaniu przez regułę Adblock; odpowiedź adresem IP wpisanym w regule, jeśli jest blokowany przez regułę w stylu /etc/hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "Śro",
"thursday_short": "Czw",
"friday_short": "Pt",
- "saturday_short": "Sob"
+ "saturday_short": "Sob",
+ "upstream_dns_cache_configuration": "Konfiguracja pamięci podręcznej upstream serwerów DNS",
+ "enable_upstream_dns_cache": "Włącz pamięć podręczną dla niestandardowej konfiguracji serwera upstream tego klienta",
+ "dns_cache_size": "Rozmiar pamięci podręcznej DNS, w bajtach"
}
diff --git a/client/src/__locales/pt-br.json b/client/src/__locales/pt-br.json
index cee9aa64..83a6d9a0 100644
--- a/client/src/__locales/pt-br.json
+++ b/client/src/__locales/pt-br.json
@@ -303,13 +303,23 @@
"download_mobileconfig_dot": "BAixar .mobileconfig para DNS-sobre-TLS",
"download_mobileconfig": "Baixar arquivo de configuração",
"plain_dns": "DNS simples",
- "form_enter_rate_limit": "Insira a taxa limite",
- "rate_limit": "Taxa limite",
+ "form_enter_rate_limit": "Insira a velocidade limite",
+ "rate_limit": "Velocidade limite",
"edns_enable": "Ativar a sub-rede do cliente EDNS",
"edns_cs_desc": "Adicione a opção de sub-rede de cliente EDNS (ECS) às solicitações de servidor DNS primário e registre os valores enviados pelos clientes no registro de consulta.",
"edns_use_custom_ip": "Usar IP personalizado para EDNS",
"edns_use_custom_ip_desc": "Permitir o uso de IP personalizado para EDNS",
"rate_limit_desc": "O número de solicitações por segundo permitidas por cliente. Definir como 0 significa que não há limite.",
+ "rate_limit_subnet_len_ipv4": "Comprimento do prefixo de sub-rede para endereços IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Comprimento do prefixo de sub-rede para endereços IPv4 usados para limitação de velocidade. O padrão é 24",
+ "rate_limit_subnet_len_ipv4_error": "O comprimento do prefixo da sub-rede IPv4 deve estar entre 0 e 32",
+ "rate_limit_subnet_len_ipv6": "Comprimento do prefixo de sub-rede para endereços IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Comprimento do prefixo de sub-rede para endereços IPv6 usados para limitação de velocidade. O padrão é 56",
+ "rate_limit_subnet_len_ipv6_error": "O comprimento do prefixo da sub-rede IPv6 deve estar entre 0 e 128",
+ "form_enter_rate_limit_subnet_len": "Insira o comprimento do prefixo da sub-rede para limitação de taxa",
+ "rate_limit_whitelist": "Lista de permissões de limitação de velocidade",
+ "rate_limit_whitelist_desc": "Endereços IP excluídos da limitação de velocidade",
+ "rate_limit_whitelist_placeholder": "Insira um endereço IP por linha",
"blocking_ipv4_desc": "Endereço de IP a ser retornado para uma solicitação bloqueada",
"blocking_ipv6_desc": "Endereço de IP a ser retornado para uma solicitação AAAA bloqueada",
"blocking_mode_default": "Padrão: Responder com zero endereço IP (0.0.0.0 para A; :: para AAAA) quando bloqueado pela regra de estilo Adblock; responde com o endereço IP especificado na regra quando bloqueado pela regra /etc/hosts-style",
@@ -724,5 +734,8 @@
"wednesday_short": "Quar",
"thursday_short": "Qui",
"friday_short": "Sex",
- "saturday_short": "Sab"
+ "saturday_short": "Sab",
+ "upstream_dns_cache_configuration": "Configuração do cache de DNS upstream",
+ "enable_upstream_dns_cache": "Ativar o armazenamento em cache do DNS para a configuração de upstream personalizada deste cliente",
+ "dns_cache_size": "Tamanho do cache do DNS, em bytes"
}
diff --git a/client/src/__locales/pt-pt.json b/client/src/__locales/pt-pt.json
index 053d4f6f..8f6e6fcf 100644
--- a/client/src/__locales/pt-pt.json
+++ b/client/src/__locales/pt-pt.json
@@ -303,13 +303,23 @@
"download_mobileconfig_dot": "Transferir .mobileconfig para DNS-sobre-TLS",
"download_mobileconfig": "Transferir ficheiro de configuração",
"plain_dns": "DNS simples",
- "form_enter_rate_limit": "Insira o limite de taxa",
- "rate_limit": "Limite de taxa",
+ "form_enter_rate_limit": "Insira o limite de velocidade",
+ "rate_limit": "Limite de velocidade",
"edns_enable": "Ativar a sub-rede do cliente EDNS",
"edns_cs_desc": "Adicione a opção de sub-rede de cliente EDNS (ECS) às solicitações de servidor DNS primário e registre os valores enviados pelos clientes no registo de consulta.",
"edns_use_custom_ip": "Usar IP personalizado para EDNS",
"edns_use_custom_ip_desc": "Permitir a utilização de IP personalizado para EDNS",
"rate_limit_desc": "O número de solicitações por segundo permitido por cliente. Configurando para 0 significa sem limite.",
+ "rate_limit_subnet_len_ipv4": "Comprimento do prefixo de sub-rede para endereços IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Comprimento do prefixo de sub-rede para endereços IPv4 usados para limitação de velocidade. O padrão é 24",
+ "rate_limit_subnet_len_ipv4_error": "O comprimento do prefixo da sub-rede IPv4 deve estar entre 0 e 32",
+ "rate_limit_subnet_len_ipv6": "Comprimento do prefixo de sub-rede para endereços IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Comprimento do prefixo de sub-rede para endereços IPv6 usados para limitação de velocidade. O padrão é 56",
+ "rate_limit_subnet_len_ipv6_error": "O comprimento do prefixo da sub-rede IPv6 deve situar-se entre 0 e 128",
+ "form_enter_rate_limit_subnet_len": "Introduza o comprimento do prefixo da sub-rede para limitação da velocidade",
+ "rate_limit_whitelist": "Lista de permissões de limitação de velocidade",
+ "rate_limit_whitelist_desc": "Endereços IP excluídos da limitação de velocidade",
+ "rate_limit_whitelist_placeholder": "Insira um endereço IP por linha",
"blocking_ipv4_desc": "Endereço IP a ser devolvido para uma solicitação A bloqueada",
"blocking_ipv6_desc": "Endereço IP a ser devolvido para uma solicitação AAAA bloqueada",
"blocking_mode_default": "Predefinido: Responder com zero endereço IP (0.0.0.0 para A; :: para AAAA) quando bloqueado pela regra de estilo Adblock; responde com o endereço IP especificado na regra quando bloqueado pela regra /etc/hosts-style",
@@ -724,5 +734,8 @@
"wednesday_short": "Quarta",
"thursday_short": "Quinta",
"friday_short": "Sexta",
- "saturday_short": "Sábado"
+ "saturday_short": "Sábado",
+ "upstream_dns_cache_configuration": "Configuração da cache do DNS upstream",
+ "enable_upstream_dns_cache": "Ativar o armazenamento em cache do DNS para a configuração de upstream personalizada deste cliente",
+ "dns_cache_size": "Tamanho da cache DNS, em bytes"
}
diff --git a/client/src/__locales/ro.json b/client/src/__locales/ro.json
index 3d86bc6d..03331064 100644
--- a/client/src/__locales/ro.json
+++ b/client/src/__locales/ro.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Utilizați IP personalizat pentru EDNS",
"edns_use_custom_ip_desc": "Permiteți utilizarea IP-ului personalizat pentru EDNS",
"rate_limit_desc": "Numărul de interogări pe secundă permise pe client. Setarea la 0 înseamnă că nu există limită.",
+ "rate_limit_subnet_len_ipv4": "Lungimea prefixului de subrețea pentru adrese IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Lungimea prefixului de subrețea pentru adresele IPv4 utilizate pentru limitarea ratei. Valoarea implicită este 24",
+ "rate_limit_subnet_len_ipv4_error": "Lungimea prefixului de subrețea IPv4 ar trebui să fie între 0 și 32",
+ "rate_limit_subnet_len_ipv6": "Lungimea prefixului de subrețea pentru adrese IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Lungimea prefixului de subrețea pentru adresele IPv6 utilizate pentru limitarea ratei. Valoarea implicită este 56",
+ "rate_limit_subnet_len_ipv6_error": "Lungimea prefixului de subrețea IPv6 ar trebui să fie între 0 și 128",
+ "form_enter_rate_limit_subnet_len": "Introduceți lungimea prefixului de subrețea pentru limitarea ratei",
+ "rate_limit_whitelist": "Lista permisă pentru limitarea ratei",
+ "rate_limit_whitelist_desc": "Adresele IP excluse de la limitarea ratei",
+ "rate_limit_whitelist_placeholder": "Introduceți o adresă IP per linie",
"blocking_ipv4_desc": "Adresa IP de returnat pentru o cerere A de blocare",
"blocking_ipv6_desc": "Adresa IP de returnat pentru o cerere AAAA de blocare",
"blocking_mode_default": "Implicit: Răspunde cu adresa IP (0.0.0.0 for A; :: pentru AAAA) când sunt blocate de regulă tip Adblock; răspunde cu adresa IP specificată în regulă când sunt blocate de regula tip /etc/hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "mi",
"thursday_short": "jo",
"friday_short": "vi",
- "saturday_short": "sa"
+ "saturday_short": "sa",
+ "upstream_dns_cache_configuration": "Configurarea cache-ului DNS în amonte",
+ "enable_upstream_dns_cache": "Activați memoria cache DNS pentru configurația personalizată în amonte a acestui client",
+ "dns_cache_size": "Dimensiunea cache-ului DNS, în octeți"
}
diff --git a/client/src/__locales/ru.json b/client/src/__locales/ru.json
index 9cc1c787..42ee4eb6 100644
--- a/client/src/__locales/ru.json
+++ b/client/src/__locales/ru.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Использовать указанный IP для EDNS",
"edns_use_custom_ip_desc": "Разрешить использовать собственный IP для EDNS",
"rate_limit_desc": "Ограничение на количество запросов в секунду для каждого клиента (0 — неограниченно).",
+ "rate_limit_subnet_len_ipv4": "Длина префикса подсети для IPv4-адресов",
+ "rate_limit_subnet_len_ipv4_desc": "Длина префикса подсети для IPv4-адресов, используемых для ограничения скорости. По умолчанию 24",
+ "rate_limit_subnet_len_ipv4_error": "Длина префикса IPv4-подсетей должна составлять от 0 до 32",
+ "rate_limit_subnet_len_ipv6": "Длина префикса подсети для IPv6-адресов",
+ "rate_limit_subnet_len_ipv6_desc": "Длина префикса подсети для IPv6-адресов, используемых для ограничения скорости. По умолчанию 56",
+ "rate_limit_subnet_len_ipv6_error": "Длина префикса IPv6-подсетей должна составлять от 0 до 128",
+ "form_enter_rate_limit_subnet_len": "Введите длину префикса подсети для ограничения скорости",
+ "rate_limit_whitelist": "Белый список ограничения скорости",
+ "rate_limit_whitelist_desc": "IP-адреса, на которые не распространяется ограничение скорости",
+ "rate_limit_whitelist_placeholder": "Введите по одному адресу на строчку",
"blocking_ipv4_desc": "IP-адрес, возвращаемый при блокировке A-запроса",
"blocking_ipv6_desc": "IP-адрес, возвращаемый при блокировке AAAA-запроса",
"blocking_mode_default": "Стандартный: Отвечает с нулевым IP-адресом, (0.0.0.0 для A; :: для AAAA) когда заблокировано правилом в стиле Adblock; отвечает с IP-адресом, указанным в правиле, когда заблокировано правилом в стиле файлов hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "Ср",
"thursday_short": "Чт",
"friday_short": "Пт",
- "saturday_short": "Сб"
+ "saturday_short": "Сб",
+ "upstream_dns_cache_configuration": "Конфигурация кеша upstream DNS-серверов",
+ "enable_upstream_dns_cache": "Включить кеширование для пользовательской конфигурации upstream-серверов этого клиента",
+ "dns_cache_size": "Размер DNS-кеша в байтах"
}
diff --git a/client/src/__locales/sk.json b/client/src/__locales/sk.json
index 53c00d69..d368fe3d 100644
--- a/client/src/__locales/sk.json
+++ b/client/src/__locales/sk.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Použiť vlastnú IP adresu pre EDNS",
"edns_use_custom_ip_desc": "Povoliť používanie vlastnej IP adresy pre EDNS",
"rate_limit_desc": "Počet požiadaviek za sekundu, ktoré môže jeden klient vykonať. Nastavenie na hodnotu 0 znamená neobmedzene.",
+ "rate_limit_subnet_len_ipv4": "Dĺžka prefixu podsiete pre adresy IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Dĺžka prefixu podsiete pre adresy IPv4 používané na obmedzenie rýchlosti. Predvolená hodnota je 24",
+ "rate_limit_subnet_len_ipv4_error": "Dĺžka prefixu podsiete IPv4 musí byť od 0 do 32",
+ "rate_limit_subnet_len_ipv6": "Dĺžka prefixu podsiete pre adresy IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Dĺžka prefixu podsiete pre adresy IPv6 používané na obmedzenie rýchlosti. Predvolená hodnota je 56",
+ "rate_limit_subnet_len_ipv6_error": "Dĺžka prefixu podsiete IPv6 musí byť od 0 do 128",
+ "form_enter_rate_limit_subnet_len": "Zadajte dĺžku prefixu podsiete pre obmedzenie rýchlosti",
+ "rate_limit_whitelist": "Zoznam povolení obmedzujúcich rýchlosť",
+ "rate_limit_whitelist_desc": "IP adresy vylúčené z obmedzenia rýchlosti",
+ "rate_limit_whitelist_placeholder": "Na každý riadok zadajte IP adresu jedného servera",
"blocking_ipv4_desc": "IP adresa, ktorá sa má vrátiť v prípade blokovanej žiadosti A",
"blocking_ipv6_desc": "IP adresa, ktorá sa má vrátiť v prípade blokovanej žiadosti AAAA",
"blocking_mode_default": "Predvolené: Odpovedať nulovou adresou IP (0,0.0.0 pre A; :: pre AAAA), keď je blokovaná pravidlom v štýle Adblock; odpovedať IP adresou uvedenou v pravidle, keď je blokovaná pravidlom v štýle /etc/hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "Str",
"thursday_short": "Štr",
"friday_short": "Pia",
- "saturday_short": "Sob"
+ "saturday_short": "Sob",
+ "upstream_dns_cache_configuration": "Konfigurácia cache pamäte DNS pre upstream",
+ "enable_upstream_dns_cache": "Zapnúť ukladanie DNS do cache pamäte pre vlastnú konfiguráciu odosielania tohto klienta",
+ "dns_cache_size": "Veľkosť cache pamäte DNS v bajtoch"
}
diff --git a/client/src/__locales/sl.json b/client/src/__locales/sl.json
index d26f994d..70e4eb93 100644
--- a/client/src/__locales/sl.json
+++ b/client/src/__locales/sl.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Uporabi IP po meri za EDNS",
"edns_use_custom_ip_desc": "Dovoli uporabo naslova IP po meri za EDNS",
"rate_limit_desc": "Dovoljeno število zahtev na sekundo na odjemalca. Nastavitev na 0 pomeni brez omejitve.",
+ "rate_limit_subnet_len_ipv4": "Dolžina predpone podomrežja za naslove IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Dolžina predpone podomrežja za naslove IPv4, ki se uporabljajo za omejevanje hitrosti. Privzeto je 24",
+ "rate_limit_subnet_len_ipv4_error": "Dolžina predpone podomrežja IPv4 mora biti med 0 in 32",
+ "rate_limit_subnet_len_ipv6": "Dolžina predpone podomrežja za naslove IPv4",
+ "rate_limit_subnet_len_ipv6_desc": "Dolžina predpone podomrežja za naslove IPv6, ki se uporabljajo za omejevanje hitrosti. Privzeta vrednost je 56",
+ "rate_limit_subnet_len_ipv6_error": "Dolžina podomrežne predpone IPv6 mora biti med 0 in 128",
+ "form_enter_rate_limit_subnet_len": "Vnesite dolžino predpone podomrežja za omejitev hitrosti",
+ "rate_limit_whitelist": "Seznam dovoljenih za omejevanje hitrosti",
+ "rate_limit_whitelist_desc": "Naslovi IP so izključeni iz omejitve hitrosti",
+ "rate_limit_whitelist_placeholder": "Vnesite en naslov IP na vrstico",
"blocking_ipv4_desc": "IP naslov, ki mora biti vrnjen za onemogočeno zahtevo A",
"blocking_ipv6_desc": "IP naslov, ki mora biti vrnjen za onemogočeno zahtevo AAAA",
"blocking_mode_default": "Privzeto: odgovori z ničelnim naslovom IP (0.0.0.0 za A; :: za AAAA), ko je onemogočen s pravilom v slogu Adblocka; odgovor z naslovom IP, določenim v pravilu, ko je onemogočen s pravilom /etc/hosts",
@@ -724,5 +734,8 @@
"wednesday_short": "Sre",
"thursday_short": "Čet",
"friday_short": "Pet",
- "saturday_short": "Sob"
+ "saturday_short": "Sob",
+ "upstream_dns_cache_configuration": "Nastavitve predpomnilnika gorvodnega DNS",
+ "enable_upstream_dns_cache": "Omogoči predpomnjenje nastavitev gorvodnega DNS po meri tega odjemalca",
+ "dns_cache_size": "Velikost predpomnilnika DNS, v bajtih"
}
diff --git a/client/src/__locales/sr-cs.json b/client/src/__locales/sr-cs.json
index 2e0aadf6..583822e7 100644
--- a/client/src/__locales/sr-cs.json
+++ b/client/src/__locales/sr-cs.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Koristi prilagođeni IP za EDNS",
"edns_use_custom_ip_desc": "Dozvoli korišćenje prilagođenog IP-a za EDNS",
"rate_limit_desc": "Broj zahteva u sekundi dozvoljen po klijentu. Postavljanje na 0 znači da nema ograničenja.",
+ "rate_limit_subnet_len_ipv4": "Dužina prefixa podmreže za IPv4 adrese",
+ "rate_limit_subnet_len_ipv4_desc": "Dužina prefixa podmreže za IPv4 adrese koje se koriste za ograničavanje brzine. Podrazumevano je 24",
+ "rate_limit_subnet_len_ipv4_error": "Dužina prefixa IPv4 podmreže treba da bude između 0 i 32",
+ "rate_limit_subnet_len_ipv6": "Dužina prefixa podmreže za IPv6 adrese",
+ "rate_limit_subnet_len_ipv6_desc": "Dužina prefixa podmreže za IPv6 adrese koje se koriste za ograničavanje brzine. Podrazumevano je 56",
+ "rate_limit_subnet_len_ipv6_error": "Dužina prefixa IPv6 podmreže treba da bude između 0 i 128",
+ "form_enter_rate_limit_subnet_len": "Unesite dužinu prefixa podmreže da biste ograničili brzinu",
+ "rate_limit_whitelist": "Lista dozvoljenih lista za ograničavanje brzine",
+ "rate_limit_whitelist_desc": "IP adrese koje nisu obuhvaćene ograničenjem brzine",
+ "rate_limit_whitelist_placeholder": "Unesite jednu IP adresu servera po redu",
"blocking_ipv4_desc": "IP adresa koja će biti vraćena za blokirane zahteve",
"blocking_ipv6_desc": "IP adresa koja će biti vraćena za blokirane AAAA zahteve",
"blocking_mode_default": "Podrazumevano: Odgovara sa REFUSED kada je blokirano od Adblock-style pravila; odgovara sa IP adresom koja je određena u pravilu kada je blokiran od /etc/hosts-style pravila",
@@ -724,5 +734,8 @@
"wednesday_short": "Sre",
"thursday_short": "Čet",
"friday_short": "Pet",
- "saturday_short": "Sub"
+ "saturday_short": "Sub",
+ "upstream_dns_cache_configuration": "Konfiguracija keša upstream DNS servera",
+ "enable_upstream_dns_cache": "Uključite keširanje za korisničku konfiguraciju upstream servera ovog klijenta",
+ "dns_cache_size": "Veličina DNS keša, u bajtovima"
}
diff --git a/client/src/__locales/sv.json b/client/src/__locales/sv.json
index 457859f6..a1a11a6f 100644
--- a/client/src/__locales/sv.json
+++ b/client/src/__locales/sv.json
@@ -310,6 +310,15 @@
"edns_use_custom_ip": "Använd anpassad IP för EDNS",
"edns_use_custom_ip_desc": "Tillåt att använda anpassad IP för EDNS",
"rate_limit_desc": "Antalet förfrågningar per sekund som tillåts per klient. Att sätta den till 0 innebär ingen gräns.",
+ "rate_limit_subnet_len_ipv4": "Prefixlängd för subnät för IPv4-adresser",
+ "rate_limit_subnet_len_ipv4_desc": "Subnätprefixlängd för IPv4-adresser som används för hastighetsbegränsning. Standard är 24",
+ "rate_limit_subnet_len_ipv4_error": "IPv4-subnätets prefixlängd ska vara mellan 0 och 32",
+ "rate_limit_subnet_len_ipv6": "Prefixlängd för subnät för IPv6-adresser",
+ "rate_limit_subnet_len_ipv6_desc": "Subnätprefixlängd för IPv6-adresser som används för hastighetsbegränsning. Standard är 56",
+ "rate_limit_subnet_len_ipv6_error": "IPv6-subnätets prefixlängd ska vara mellan 0 och 128",
+ "form_enter_rate_limit_subnet_len": "Ange subnätprefixlängd för hastighetsbegränsning",
+ "rate_limit_whitelist_desc": "IP-adresser uteslutna från hastighetsbegränsning",
+ "rate_limit_whitelist_placeholder": "Ange en IP-adress per rad",
"blocking_ipv4_desc": "IP adress som ska returneras för en blockerad A förfrågan",
"blocking_ipv6_desc": "IP adress som ska returneras för en blockerad AAAA förfrågan",
"blocking_mode_default": "Standard: Svara med noll IP-adress (0.0.0.0 för A; :: för AAAA) när det blockeras av regel i Adblock-stil; svara med IP-adressen som anges i regeln när den blockeras av regel i /etc/hosts-stil",
@@ -724,5 +733,8 @@
"wednesday_short": "Ons",
"thursday_short": "Tor",
"friday_short": "Fre",
- "saturday_short": "Lör"
+ "saturday_short": "Lör",
+ "upstream_dns_cache_configuration": "Konfiguration av uppströms DNS-cache",
+ "enable_upstream_dns_cache": "Aktivera DNS-cachelagring för den här klientens anpassade uppströmskonfiguration",
+ "dns_cache_size": "DNS-cachestorlek, i byte"
}
diff --git a/client/src/__locales/tr.json b/client/src/__locales/tr.json
index 82ad2c70..3e0008ce 100644
--- a/client/src/__locales/tr.json
+++ b/client/src/__locales/tr.json
@@ -98,7 +98,7 @@
"filters": "Filtreler",
"filter": "Filtre",
"query_log": "Sorgu Günlüğü",
- "compact": "Yoğun",
+ "compact": "Sık",
"nothing_found": "Hiçbir şey bulunamadı",
"faq": "SSS",
"version": "Sürüm",
@@ -310,9 +310,19 @@
"edns_use_custom_ip": "EDNS için özel IP kullan",
"edns_use_custom_ip_desc": "EDNS için özel IP kullanımına izin ver",
"rate_limit_desc": "İstemci başına izin verilen saniyedeki istek sayısı. 0 olarak ayarlamak, sınır olmadığı anlamına gelir.",
+ "rate_limit_subnet_len_ipv4": "IPv4 adresleri için alt ağ önek uzunluğu",
+ "rate_limit_subnet_len_ipv4_desc": "Hız sınırlaması için kullanılan IPv4 adreslerinin alt ağ önek uzunluğu. Varsayılan 24'tür",
+ "rate_limit_subnet_len_ipv4_error": "IPv4 alt ağ önek uzunluğu 0 ile 32 arasında olmalıdır",
+ "rate_limit_subnet_len_ipv6": "IPv6 adresleri için alt ağ önek uzunluğu",
+ "rate_limit_subnet_len_ipv6_desc": "Hız sınırlaması için kullanılan IPv6 adreslerinin alt ağ önek uzunluğu. Varsayılan 56'tür",
+ "rate_limit_subnet_len_ipv6_error": "IPv6 alt ağ önek uzunluğu 0 ile 128 arasında olmalıdır",
+ "form_enter_rate_limit_subnet_len": "Hız sınırlaması için alt ağ önek uzunluğunu girin",
+ "rate_limit_whitelist": "Hız sınırlama izin listesi",
+ "rate_limit_whitelist_desc": "Hız sınırlamasından hariç tutulan IP adresleri",
+ "rate_limit_whitelist_placeholder": "Her satıra bir IP adresi girin",
"blocking_ipv4_desc": "Engellenen bir A isteği için geri döndürülecek IP adresi",
"blocking_ipv6_desc": "Engellenen bir AAAA isteği için geri döndürülecek IP adresi",
- "blocking_mode_default": "Varsayılan: Reklam engelleme tarzı kural tarafından engellendiğinde sıfır IP adresiyle (A için 0.0.0.0; :: AAAA için) yanıt verin; /etc/hosts-tarzı kural tarafından engellendiğinde, kuralda belirtilen IP adresiyle yanıt verin",
+ "blocking_mode_default": "Varsayılan: Reklam engelleme stili kuralı tarafından engellendiğinde sıfır IP adresiyle (A için 0.0.0.0; :: AAAA için) yanıt verin; /etc/hosts-tarzı kural tarafından engellendiğinde, kuralda belirtilen IP adresiyle yanıt verin",
"blocking_mode_refused": "REFUSED: REFUSED koduyla yanıt verin",
"blocking_mode_nxdomain": "NXDOMAIN: NXDOMAIN koduyla yanıt verin",
"blocking_mode_null_ip": "Boş IP: Sıfır IP adresiyle yanıt verin (A için 0.0.0.0; :: AAAA için)",
@@ -724,5 +734,8 @@
"wednesday_short": "Çar",
"thursday_short": "Per",
"friday_short": "Cum",
- "saturday_short": "Cmt"
+ "saturday_short": "Cmt",
+ "upstream_dns_cache_configuration": "Üst kaynak DNS önbellek yapılandırması",
+ "enable_upstream_dns_cache": "Bu istemcinin özel üst kaynak yapılandırması için DNS önbelleğe almayı etkinleştir",
+ "dns_cache_size": "DNS önbellek boyutu, bayt cinsinden"
}
diff --git a/client/src/__locales/uk.json b/client/src/__locales/uk.json
index 1f38d597..98a63085 100644
--- a/client/src/__locales/uk.json
+++ b/client/src/__locales/uk.json
@@ -1,6 +1,7 @@
{
"client_settings": "Налаштування клієнта",
"example_upstream_reserved": "DNS-сервер <0>для певних доменів0>;",
+ "example_multiple_upstreams_reserved": "кілька DNS-серверів <0>для конкретних доменів0>;",
"example_upstream_comment": "коментар.",
"upstream_parallel": "Використовувати паралельні запити, щоб пришвидшити вирішення одночасною чергою всіх оригінальних серверів.",
"parallel_requests": "Паралельні запити",
@@ -143,6 +144,8 @@
"enforced_save_search": "Примусовий безпечний пошук",
"number_of_dns_query_to_safe_search": "Кількість DNS-запитів до пошукових систем, для яких примусово застосований безпечний пошук",
"average_processing_time": "Середній час обробки",
+ "average_upstream_response_time": "Середній час відгуку upstream-сервера",
+ "response_time": "Час відгуку",
"average_processing_time_hint": "Середній час обробки DNS запиту в мілісекундах",
"block_domain_use_filters_and_hosts": "Блокування доменів за допомогою фільтрів та hosts-файлів",
"filters_block_toggle_hint": "Ви можете налаштувати правила блокування в розділі Фільтри.",
@@ -307,6 +310,16 @@
"edns_use_custom_ip": "Використання користувацької IP-адреси для EDNS",
"edns_use_custom_ip_desc": "Дозволити використовувати користувацьку IP-адресу для EDNS",
"rate_limit_desc": "Кількість запитів в секунду, які може робити один клієнт. Встановлене значення «0» означатиме необмежену кількість.",
+ "rate_limit_subnet_len_ipv4": "Довжина префікса підмережі для адрес IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Довжина префікса підмережі для адрес IPv4, які використовуються для обмеження швидкості. Типовим значенням є 24",
+ "rate_limit_subnet_len_ipv4_error": "Довжина префікса підмережі IPv4 має бути від 0 до 32",
+ "rate_limit_subnet_len_ipv6": "Довжина префікса підмережі для адрес IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Довжина префікса підмережі для адрес IPv6, які використовуються для обмеження швидкості. Типовим значенням є 56",
+ "rate_limit_subnet_len_ipv6_error": "Довжина префікса підмережі IPv6 має бути від 0 до 128",
+ "form_enter_rate_limit_subnet_len": "Введіть довжину префікса підмережі для обмеження швидкості",
+ "rate_limit_whitelist": "Список дозволених обмежень швидкості",
+ "rate_limit_whitelist_desc": "IP-адреси, на які не поширюється обмеження швидкості",
+ "rate_limit_whitelist_placeholder": "Вводьте одну адресу на рядок",
"blocking_ipv4_desc": "IP-адреса, яку потрібно видати для заблокованого A запиту",
"blocking_ipv6_desc": "IP-адреса, яку потрібно видати для заблокованого АААА запиту",
"blocking_mode_default": "Усталено: відповідь із нульовою IP-адресою (0.0.0.0 для A; :: для AAAA), якщо заблоковано правилом у Adblock-стилі; відповідь зазначеною у правилі IP-адресою, якщо заблокувано правилом у hosts-стилі",
@@ -721,5 +734,8 @@
"wednesday_short": "СР",
"thursday_short": "ЧТ",
"friday_short": "ПТ",
- "saturday_short": "СБ"
+ "saturday_short": "СБ",
+ "upstream_dns_cache_configuration": "Конфігурація кешу upstream DNS-серверів",
+ "enable_upstream_dns_cache": "Увімкнути кешування для користувацької конфігурації upstream-серверів цього клієнта",
+ "dns_cache_size": "Розмір кешу DNS, у байтах"
}
diff --git a/client/src/__locales/vi.json b/client/src/__locales/vi.json
index 29c49769..fb68549f 100644
--- a/client/src/__locales/vi.json
+++ b/client/src/__locales/vi.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "Sử dụng địa chỉ IP tùy chỉnh cho EDNS",
"edns_use_custom_ip_desc": "Cho phép sử dụng địa chỉ IP tùy chỉnh cho EDNS",
"rate_limit_desc": "Số lượng yêu cầu mỗi giây mà một khách hàng được phép thực hiện (0: không giới hạn)",
+ "rate_limit_subnet_len_ipv4": "Độ dài tiền tố mạng con cho địa chỉ IPv4",
+ "rate_limit_subnet_len_ipv4_desc": "Độ dài tiền tố mạng con cho các địa chỉ IPv4 được sử dụng để giới hạn tốc độ. Mặc định là 24",
+ "rate_limit_subnet_len_ipv4_error": "Độ dài tiền tố mạng con IPv4 phải nằm trong khoảng từ 0 đến 32",
+ "rate_limit_subnet_len_ipv6": "Độ dài tiền tố mạng con cho địa chỉ IPv6",
+ "rate_limit_subnet_len_ipv6_desc": "Độ dài tiền tố mạng con cho các địa chỉ IPv6 được sử dụng để giới hạn tốc độ. Mặc định là 56",
+ "rate_limit_subnet_len_ipv6_error": "Độ dài tiền tố mạng con IPv6 phải nằm trong khoảng từ 0 đến 128",
+ "form_enter_rate_limit_subnet_len": "Nhập độ dài tiền tố mạng con để giới hạn tốc độ",
+ "rate_limit_whitelist": "Danh sách cho phép giới hạn tỷ lệ",
+ "rate_limit_whitelist_desc": "Địa chỉ IP bị loại trừ khỏi giới hạn tốc độ",
+ "rate_limit_whitelist_placeholder": "Nhập một địa chỉ IP trên mỗi dòng",
"blocking_ipv4_desc": "Địa chỉ IP được trả lại cho một yêu cầu A bị chặn",
"blocking_ipv6_desc": "Địa chỉ IP được trả lại cho một yêu cầu AAA bị chặn",
"blocking_mode_default": "Mặc định: Trả lời với NXDOMAIN khi bị chặn bởi quy tắc kiểu Adblock; phản hồi với địa chỉ IP được chỉ định trong quy tắc khi bị chặn bởi quy tắc / etc / hosts-style",
@@ -724,5 +734,8 @@
"wednesday_short": "Thứ 4",
"thursday_short": "Thứ 5",
"friday_short": "Thứ 6",
- "saturday_short": "Thứ 7"
+ "saturday_short": "Thứ 7",
+ "upstream_dns_cache_configuration": "Cấu hình bộ nhớ đệm upstream của các máy chủ DNS",
+ "enable_upstream_dns_cache": "Bật bộ nhớ cache cho cấu hình ngược dòng của máy chủ upstream của khách hàng này",
+ "dns_cache_size": "Kích thước bộ nhớ cache DNS, tính bằng byte"
}
diff --git a/client/src/__locales/zh-cn.json b/client/src/__locales/zh-cn.json
index 26a2c3a0..8080c8db 100644
--- a/client/src/__locales/zh-cn.json
+++ b/client/src/__locales/zh-cn.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "为 EDNS 使用自定义 IP",
"edns_use_custom_ip_desc": "允许为 EDNS 使用自定义 IP",
"rate_limit_desc": "每个客户端每秒钟查询次数的限制。设置为 0 意味着不限制。",
+ "rate_limit_subnet_len_ipv4": "IPv4 地址子网前缀长度",
+ "rate_limit_subnet_len_ipv4_desc": "用于速率限制的 IPv4 地址子网前缀长度。默认为 24",
+ "rate_limit_subnet_len_ipv4_error": "IPv4 子网前缀长度应介于 0 到 32 之间",
+ "rate_limit_subnet_len_ipv6": "IPv6 地址子网前缀长度",
+ "rate_limit_subnet_len_ipv6_desc": "用于速率限制的 IPv6 地址子网前缀长度。默认为 56",
+ "rate_limit_subnet_len_ipv6_error": "IPv6 子网前缀长度应介于 0 到 128 之间",
+ "form_enter_rate_limit_subnet_len": "输入用于速率限制的子网前缀长度",
+ "rate_limit_whitelist": "速率限制白名单",
+ "rate_limit_whitelist_desc": "排除在速率限制之外的 IP 地址",
+ "rate_limit_whitelist_placeholder": "每行输入一个 IP 地址",
"blocking_ipv4_desc": "拦截 A 记录请求返回的 IP 地址",
"blocking_ipv6_desc": "拦截 AAAA 记录请求返回的 IP 地址",
"blocking_mode_default": "默认:被 Adblock 规则拦截时反应为零 IP 地址(A记录:0.0.0.0;AAAA记录:::);被 /etc/hosts 规则拦截时反应为规则中指定 IP 地址",
@@ -724,5 +734,8 @@
"wednesday_short": "周三",
"thursday_short": "周四",
"friday_short": "周五",
- "saturday_short": "周六"
+ "saturday_short": "周六",
+ "upstream_dns_cache_configuration": "上游 DNS 缓存配置",
+ "enable_upstream_dns_cache": "为该客户端的自定义上游配置启用 DNS 缓存",
+ "dns_cache_size": "DNS 缓存大小,单位:字节"
}
diff --git a/client/src/__locales/zh-tw.json b/client/src/__locales/zh-tw.json
index 26b0ed6c..def8ed3d 100644
--- a/client/src/__locales/zh-tw.json
+++ b/client/src/__locales/zh-tw.json
@@ -310,6 +310,16 @@
"edns_use_custom_ip": "為 EDNS 使用自訂的 IP",
"edns_use_custom_ip_desc": "允許為 EDNS 使用自訂的 IP",
"rate_limit_desc": "每個用戶端被允許的每秒請求之數量。設定它為 0 表示無限制。",
+ "rate_limit_subnet_len_ipv4": "IPv4 位址的子網路前綴長度",
+ "rate_limit_subnet_len_ipv4_desc": "用於速率限制的 IPv4 位址的子網路前綴長度。預設值為 24",
+ "rate_limit_subnet_len_ipv4_error": "IPv4 子網路前綴長度應在 0 至 32 之間",
+ "rate_limit_subnet_len_ipv6": "IPv6 位址的子網路前綴長度",
+ "rate_limit_subnet_len_ipv6_desc": "用於速率限制的 IPv6 位址的子網路前綴長度。預設值為 56",
+ "rate_limit_subnet_len_ipv6_error": "IPv6 子網路前綴長度應在 0 至 128 之間",
+ "form_enter_rate_limit_subnet_len": "輸入用於速率限制的子網路前綴長度",
+ "rate_limit_whitelist": "速率限制允許清單",
+ "rate_limit_whitelist_desc": "從速率限制中排除的 IP 位址",
+ "rate_limit_whitelist_placeholder": "每行輸入一個 IP 位址",
"blocking_ipv4_desc": "要被返回給已封鎖的 A 請求之 IP 位址",
"blocking_ipv6_desc": "要被返回給已封鎖的 AAAA 請求之 IP 位址",
"blocking_mode_default": "預設:當被 AdBlock 樣式的規則封鎖時,以零值 IP 位址(0.0.0.0 供 A;:: 供 AAAA)回覆;當被 /etc/hosts 樣式的規則封鎖時,以在該規則中之已明確指定的 IP 位址回覆",
@@ -724,5 +734,8 @@
"wednesday_short": "週三",
"thursday_short": "週四",
"friday_short": "週五",
- "saturday_short": "週六"
+ "saturday_short": "週六",
+ "upstream_dns_cache_configuration": "上游 DNS 快取設定",
+ "enable_upstream_dns_cache": "啟用本用戶端自訂上游配置的 DNS 快取",
+ "dns_cache_size": "DNS 快取大小,單位:位元"
}
diff --git a/client/src/actions/dnsConfig.js b/client/src/actions/dnsConfig.js
index 47823f66..ce8560cf 100644
--- a/client/src/actions/dnsConfig.js
+++ b/client/src/actions/dnsConfig.js
@@ -62,6 +62,10 @@ export const setDnsConfig = (config) => async (dispatch) => {
data.upstream_dns = splitByNewLine(config.upstream_dns);
hasDnsSettings = true;
}
+ if (Object.prototype.hasOwnProperty.call(data, 'ratelimit_whitelist')) {
+ data.ratelimit_whitelist = splitByNewLine(config.ratelimit_whitelist);
+ hasDnsSettings = true;
+ }
await apiClient.setDnsConfig(data);
diff --git a/client/src/actions/index.js b/client/src/actions/index.js
index c577011f..e0e50841 100644
--- a/client/src/actions/index.js
+++ b/client/src/actions/index.js
@@ -338,6 +338,40 @@ export const getDnsStatus = () => async (dispatch) => {
}
};
+export const timerStatusRequest = createAction('TIMER_STATUS_REQUEST');
+export const timerStatusFailure = createAction('TIMER_STATUS_FAILURE');
+export const timerStatusSuccess = createAction('TIMER_STATUS_SUCCESS');
+
+export const getTimerStatus = () => async (dispatch) => {
+ dispatch(timerStatusRequest());
+
+ const handleRequestError = () => {
+ dispatch(addErrorToast({ error: 'dns_status_error' }));
+ dispatch(dnsStatusFailure());
+ window.location.reload(true);
+ };
+
+ const handleRequestSuccess = (response) => {
+ const dnsStatus = response.data;
+ if (dnsStatus.protection_disabled_duration === 0) {
+ dnsStatus.protection_disabled_duration = null;
+ }
+ const { running } = dnsStatus;
+ const runningStatus = dnsStatus && running;
+ if (runningStatus === true) {
+ dispatch(timerStatusSuccess(dnsStatus));
+ } else {
+ dispatch(setDnsRunningStatus(running));
+ }
+ };
+
+ try {
+ checkStatus(handleRequestSuccess, handleRequestError);
+ } catch (error) {
+ handleRequestError();
+ }
+};
+
export const testUpstreamRequest = createAction('TEST_UPSTREAM_REQUEST');
export const testUpstreamFailure = createAction('TEST_UPSTREAM_FAILURE');
export const testUpstreamSuccess = createAction('TEST_UPSTREAM_SUCCESS');
diff --git a/client/src/components/App/index.js b/client/src/components/App/index.js
index 797bf1bc..9cf0083d 100644
--- a/client/src/components/App/index.js
+++ b/client/src/components/App/index.js
@@ -28,7 +28,7 @@ import {
} from '../../helpers/constants';
import { getLogsUrlParams, setHtmlLangAttr, setUITheme } from '../../helpers/helpers';
import Header from '../Header';
-import { changeLanguage, getDnsStatus } from '../../actions';
+import { changeLanguage, getDnsStatus, getTimerStatus } from '../../actions';
import Dashboard from '../../containers/Dashboard';
import SetupGuide from '../../containers/SetupGuide';
@@ -126,6 +126,18 @@ const App = () => {
useEffect(() => {
dispatch(getDnsStatus());
+
+ const handleVisibilityChange = () => {
+ if (document.visibilityState === 'visible') {
+ dispatch(getTimerStatus());
+ }
+ };
+
+ document.addEventListener('visibilitychange', handleVisibilityChange);
+
+ return () => {
+ document.removeEventListener('visibilitychange', handleVisibilityChange);
+ };
}, []);
const setLanguage = () => {
diff --git a/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js b/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js
index 9f65986f..f4744a5a 100644
--- a/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js
+++ b/client/src/components/Settings/Clients/ClientsTable/ClientsTable.js
@@ -79,6 +79,10 @@ const ClientsTable = ({
} else {
config.tags = [];
}
+
+ if (typeof values.upstreams_cache_size === 'string') {
+ config.upstreams_cache_size = 0;
+ }
}
if (modalType === MODAL_TYPE.EDIT_FILTERS) {
diff --git a/client/src/components/Settings/Clients/Form.js b/client/src/components/Settings/Clients/Form.js
index 652957d0..ba4ec4b3 100644
--- a/client/src/components/Settings/Clients/Form.js
+++ b/client/src/components/Settings/Clients/Form.js
@@ -12,8 +12,13 @@ import i18n from '../../../i18n';
import Tabs from '../../ui/Tabs';
import Examples from '../Dns/Upstream/Examples';
import { ScheduleForm } from '../../Filters/Services/ScheduleForm';
-import { toggleAllServices, trimLinesAndRemoveEmpty, captitalizeWords } from '../../../helpers/helpers';
import {
+ toggleAllServices,
+ trimLinesAndRemoveEmpty,
+ captitalizeWords,
+} from '../../../helpers/helpers';
+import {
+ toNumber,
renderInputField,
renderGroupField,
CheckboxField,
@@ -21,7 +26,7 @@ import {
renderTextareaField,
} from '../../../helpers/form';
import { validateClientId, validateRequiredValue } from '../../../helpers/validators';
-import { CLIENT_ID_LINK, FORM_NAME } from '../../../helpers/constants';
+import { CLIENT_ID_LINK, FORM_NAME, UINT32_RANGE } from '../../../helpers/constants';
import './Service.css';
const settingsCheckboxes = [
@@ -307,6 +312,35 @@ let Form = (props) => {
normalizeOnBlur={trimLinesAndRemoveEmpty}
/>