Compare commits

..

231 Commits

Author SHA1 Message Date
Simon Zolin
4b5f8537be + /dhcp/reset: clear leases 2020-06-01 11:20:58 +03:00
Simon Zolin
93b99039c0 dhcp_available 2020-05-29 14:28:23 +03:00
Simon Zolin
d31d5c1baa Merge remote-tracking branch 'origin/master' into dhcp6
# Conflicts:
#	openapi/openapi.yaml
2020-05-29 14:28:18 +03:00
Simon Zolin
4f0a4173b5 + "dhcp_available" 2020-05-29 14:25:20 +03:00
Simon Zolin
82bd8dbbf2 + doc: /status 2020-05-29 14:02:02 +03:00
Simon Zolin
aaa2b0f830 dhcp: servers use the module's settings "enabled", "interface_name" 2020-05-29 13:26:04 +03:00
Artem Baskal
72f253f62b - client: Match client IP strictly: Merge pull request #620 in DNS/adguard-home from fix/1687 to master
Close #1687

Squashed commit of the following:

commit 5287da0b98d154d4243abdb4b9021006499c225f
Merge: c6b50c70 83b9b701
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri May 29 12:47:23 2020 +0300

    Merge branch 'master' into fix/1687

commit c6b50c70a5089fcadfd2606b07b3b84769db2760
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri May 29 12:42:12 2020 +0300

    minor

commit dab9fa9ee0502838b4e10aef93d037c2fb5bf41b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 28 16:56:08 2020 +0300

    Add support for exact matching of long and short ipv6 notations, add tests

commit e72e86cda81af2c5e54f93abb2890438fd3648b0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 28 13:57:22 2020 +0300

    Update helper, write tests

commit 92f4c34224ab7927b02edde829f2d9653a00a854
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 18:35:05 2020 +0300

    Make variable names more expressive

commit 3d38f21281237e9cccbba26afc1ab641947c5dc0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 17:09:08 2020 +0300

    Add ipv6 cidr support

commit 7db0a2fb18ccd96d8d1def73f12138e4f4e37f71
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 26 12:48:57 2020 +0300

    Minor

commit 65e87f3899aab3417cac57bab0a8fa371cafd4ec
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 26 12:46:30 2020 +0300

    Add breaks between helpers

commit 3f38bdfe7bc17e019bf048c79c9e8f1336b6f3d3
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 21 20:17:27 2020 +0300

    - client: Match client IP strictly
2020-05-29 12:53:40 +03:00
Artem Baskal
83b9b70166 - client: Don't unregister field 'Upstream DNS servers' on rerender and allow input text continuously
Close #1752

Squashed commit of the following:

commit 2f86ade71eadd648fe3e62d8f619d5f1419d6527
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Fri May 29 10:58:42 2020 +0300

    - client: Don't unregister field 'Upstream DNS servers' on rerender and allow input text continuously
2020-05-29 11:12:43 +03:00
Simon Zolin
32d1f385ff + config: new setting "querylog_file_enabled"
Close #876

Squashed commit of the following:

commit f83f60a7340d8a3f6de7ecfebb426e47d19e83d8
Merge: cfb72869 391e6199
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu May 28 15:17:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 876-logs

commit cfb72869f7cf0bf59a478ab8c7920c273e2fa5f9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu May 28 12:50:02 2020 +0300

    tests

commit 35376e4f450cf66507d733c931b7ed27eff1f36c
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 18:15:12 2020 +0300

    fix

commit 0cfb802d73db52a4b09c459a68a8a18918447b76
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 16:49:52 2020 +0300

    tests

commit 03ca280b6aed3a4880a9d4f4cd18bf47b1c742f6
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 15:32:27 2020 +0300

    + config: new setting "querylog_file_enabled" - query log will be written to a file
2020-05-28 15:29:36 +03:00
Simon Zolin
d0bb127a11 minor 2020-05-28 15:15:42 +03:00
Simon Zolin
391e619979 * whois: use the upstream server to resolve whois server hostname
Close #1535

Squashed commit of the following:

commit 7755d7a50e48db5d341029e1c21da95a396d9090
Merge: e24e945f 5c2ca690
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 14:41:24 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1535-whois-resolve

commit e24e945f9b949e3cabcddb3a8a62962bb7a5b0b9
Merge: db764710 355e634f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 14:29:44 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1535-whois-resolve

commit db764710a0f0b60293f7bdf6b0d7b858d56819e0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 12:57:00 2020 +0300

    fix

commit dc38f668d5845cfd696b3107a8f02dda4f10298e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed May 27 12:44:10 2020 +0300

    * whois: use the upstream server to resolve whois server hostname
2020-05-27 14:54:31 +03:00
Simon Zolin
5c2ca69018 Merge: * web: log error messages from HTTP server as "debug"
Close #1167

* commit 'ee690e3e327f7e456de476f84e359faf52229b21':
  * web: log error messages from HTTP server as "debug"
2020-05-27 14:30:18 +03:00
Artem Baskal
355e634f64 - client: Don't hide version string when built-in auto-update is disabled: Merge pull request #628 in DNS/adguard-home from fix/1726 to master
Close #1726

Squashed commit of the following:

commit 3eac793c7c05fbb599f510fd8cae560011b7f5ca
Merge: aebfaf61 16a6aada
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 14:14:58 2020 +0300

    Merge branch 'master' into fix/1726

commit aebfaf610113f83027feb959ed87adef1b2db255
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 12:54:30 2020 +0300

    Always show version but hide update button when program is launched with "--no-check-update" flag

commit 1d4ee05959379420fee9730b3bf8ba737852e96e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 27 11:59:10 2020 +0300

    Use classnames lib

commit 7003a7064c9625fab513dc02222faff4a340393f
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 26 19:40:22 2020 +0300

    - client: Don't hide version string when built-in auto-update is disabled
2020-05-27 14:25:27 +03:00
Simon Zolin
ee690e3e32 * web: log error messages from HTTP server as "debug" 2020-05-27 12:17:05 +03:00
Andrey Meshkov
16a6aada6f Merge: *(querylog): added offset/limit parameters
* commit '61a24ffc71eda26e10a11e3a9c8506909b6c4b52':
  *(querylog): decode methods to a new file
  *(querylog): added offset/limit parameters
2020-05-27 11:40:15 +03:00
Simon Zolin
605d2ae4d3 Merge: * urlfilter v0.10.1
Close #1707

* commit 'ab6be6980a8ef7aeb58913bf0084e4160f6fb899':
  * urlfilter v0.10.1
2020-05-26 19:42:17 +03:00
Simon Zolin
1d75b2a57f Merge: + rewrites: support exceptions
Close #1547

* commit '118b170210962da5d088d196feccc6e14ba5a132':
  + rewrites: support exceptions:
2020-05-26 19:37:46 +03:00
Simon Zolin
ab6be6980a * urlfilter v0.10.1 2020-05-26 19:36:24 +03:00
Simon Zolin
8c5a3c55ab Merge: * clients: set reload ARP data interval to 10 minuntes
Close #1398

* commit '2825691c85fadc7ce1c1727a12e8699ff780d0dd':
  * clients: set reload ARP data interval to 10 minuntes
2020-05-26 17:54:54 +03:00
Simon Zolin
2825691c85 * clients: set reload ARP data interval to 10 minuntes 2020-05-26 16:27:13 +03:00
Andrey Meshkov
61a24ffc71 *(querylog): decode methods to a new file 2020-05-26 16:24:31 +03:00
Andrey Meshkov
ceedc2d1ff *(querylog): added offset/limit parameters
Actually, this is a serious refactoring of the query log module. The
rest API part is refactored, it's now more clear how the search is
conducted. Split the logic into more files and added more tests.

Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1559
2020-05-26 15:37:37 +03:00
Simon Zolin
118b170210 + rewrites: support exceptions:
*.host -> IP
my.host -> my.host
*.my.host -> *.my.host

Requests for my.host and *.my.host will be passed to upstream servers,
 while all other requests for *.host will be answered with a rewritten IP
2020-05-26 11:42:42 +03:00
Artem Baskal
383507bc0c + client: Allow Fastest IP address and Parallel requests to toggle each other: Merge pull request #619 in DNS/adguard-home from feature/1678 to master
Close #1678

Squashed commit of the following:

commit 9251ed0f1b58426104d1b9bdaa4b7af5f92be83e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu May 21 18:25:18 2020 +0300

    + client: Allow `Fastest IP address` and `Parallel requests` to toggle each other
2020-05-25 19:41:04 +03:00
Simon Zolin
2f5073b720 Merge: - filter: don't reset name on update
* commit '2303bb253a94045a0d1d7853f7f0840571f03879':
  - filter: don't reset name on update
2020-05-25 18:27:05 +03:00
Simon Zolin
2303bb253a - filter: don't reset name on update 2020-05-25 17:13:13 +03:00
Simon Zolin
6b2fa5779e fix windows build 2020-05-25 16:43:03 +03:00
Simon Zolin
b08ec98a97 fix 2020-05-25 16:34:13 +03:00
Simon Zolin
f3dd9ca7aa fix 2020-05-25 16:32:12 +03:00
Simon Zolin
c7cc4a9345 finish 2020-05-25 16:29:06 +03:00
Simon Zolin
2acff7757b update dhcp client 2020-05-25 15:41:49 +03:00
Simon Zolin
bbd0e2b4f1 tests 2020-05-25 14:43:33 +03:00
Simon Zolin
f99b4f07e9 dummy build on windows; move code 2020-05-25 12:48:24 +03:00
Simon Zolin
2a2b7c6eb5 Merge: * blocked-services: Update new TikTok domains
#1725

* commit 'b050165566e9335083047ea0d03c1a8b39448064':
  - blocked-services: fix build
  * blocked-services: Update new TikTok domains
2020-05-25 12:46:50 +03:00
Simon Zolin
b050165566 - blocked-services: fix build 2020-05-25 11:01:17 +03:00
Ayhan
31fff2ab2e * blocked-services: Update new TikTok domains 2020-05-25 10:56:57 +03:00
Artem Baskal
6f3cd4e7eb + client: Update packages - Merge pull request #613 in DNS/adguard-home from fix/1597 to master
Close #1597

Squashed commit of the following:

commit 1eb89586dd71260e561420fe669abc8b56a506a1
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 20 14:54:10 2020 +0300

    Fix translation in install options

commit 1ebdc9ebfe12a609f978e47db6505c7095b10f7e
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed May 20 13:11:34 2020 +0300

    Remove commented code

commit 2a8302c65a2a3cf7b6b1596115d1153dac32a794
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 19:02:49 2020 +0300

    Update i18n packages, add development browserlist, downgrade eslint to match peerDepencancies version

commit 3fcf73fb14cd9da508522d1a300b66af24da95e5
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 17:30:37 2020 +0300

    Remove all unused dependencies

commit e761810e3e54e188ada41245bdce7414cd0f03e8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 16:35:24 2020 +0300

    Remove unused dependencies

commit d89d27da6befcaabcdc12bf5e7e94cbb24140010
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 16:14:09 2020 +0300

    Update regular dependencies

commit d2dfd01233d059870d5173ffd748cf61a477936f
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 15:34:10 2020 +0300

    Update all dev dependancies

commit 02b6fb480e9d310039fbe9b7aae062a41128f070
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 14:14:44 2020 +0300

    Update all postcss packages

commit 5e1fa5f99ad75f77e5e429b28ee1ca0b5e65a9a0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 12:45:02 2020 +0300

    Prevent git from converting linebreaks in .js files

commit 0b9b3b0dccd47cfa50c9531fb61729e6b5a04523
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 12:43:01 2020 +0300

    Prevent git from converting linebreaks in .js files

commit 18b7495e9ef7130b1ac4dbba84c54127d16c6350
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 19 12:24:47 2020 +0300

    Remove linebreak-style eslint rule

commit df893dec53adebb1d662fe805fab508fd4ed5e06
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon May 18 20:55:47 2020 +0300

    Add prop types

commit 36178ecfc5c7fa11a6ee08d7705ca8560941af40
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon May 18 18:52:07 2020 +0300

    Update eslint and babel, fix eslint warnings

commit f045b4a2e6b9b78f7e88e3b5d1419c29966a8230
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Mon May 18 16:45:49 2020 +0300

    Update css loading webpack rules

commit 247fa1ed548ef0706a03fdada8309c1454d191f8
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 16:13:49 2020 +0300

    Suppress linebreak-style eslint error for Windows

commit d6499aac507100d6918c849c06d739d80f2229f0
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 14:55:07 2020 +0300

    Suppress eslint exit code

commit ae2d6c614ea23a90d515168f8752e959298894ef
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 14:05:18 2020 +0300

    Edit css file warnings

commit 60675050f2a5baebc679fc05da7e033e5c740d90
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 13:10:26 2020 +0300

    Remove uglifyjs plugin

commit a27806434dd8672e71a26c7a2e810d77e5e229fa
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 01:29:17 2020 +0300

    Fix DefinePlugin value

commit 8f2966ca59195c2f70bca5072d20515d536f42a6
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Sat May 16 01:05:03 2020 +0300

    Update webpack
2020-05-22 17:06:05 +03:00
Simon Zolin
b8a5661277 minor 2020-05-21 16:37:52 +03:00
Simon Zolin
8f9353782b cleanup 2020-05-21 16:31:05 +03:00
Simon Zolin
8b25a4886e Merge: * client: update guide
* commit '53277ee70bb8d9710e2caa346ab371b0bb79c003':
  update guide
2020-05-21 15:05:43 +03:00
Simon Zolin
8d91e042cc Merge:- rewrites: fix crash when handling name->cname->A chain
Close #1704 Close #1712

* commit '0848ca0e69e3c535b70e2d1f7e8c24f0e1941ee9':
  - rewrites: fix crash when handling name->cname->A chain
2020-05-21 14:58:32 +03:00
Archive5
53277ee70b update guide 2020-05-21 14:56:50 +03:00
Simon Zolin
0848ca0e69 - rewrites: fix crash when handling name->cname->A chain
crash.adguard -> adguard.a.record
adguard.a.record -> 1.2.3.4
2020-05-21 14:48:31 +03:00
Simon Zolin
917f20fe1c wip 2020-05-21 12:27:32 +03:00
Andrey Meshkov
b5e78c760a *(documentation): removed unnecessary dependencies 2020-05-21 00:04:41 +03:00
Andrey Meshkov
653d68718b Merge branch 'master' of git://github.com/TXC/AdGuardHome into TXC-master 2020-05-20 23:48:26 +03:00
Simon Zolin
2a9b87c672 wip 2020-05-20 16:48:23 +03:00
Simon Zolin
cdb00a5db7 wip 2020-05-19 19:07:15 +03:00
Simon Zolin
6280a1ad02 wip 2020-05-19 15:34:46 +03:00
Simon Zolin
f60d6f973d v4 2020-05-19 13:03:39 +03:00
Simon Zolin
2d1cba67dc Merge: - filter: fix rules count when data doesn't end with a newline
Close #1694

* commit '286eb43c5622b2f35d7fe2b5f445da2ed2663658':
  - filter: fix rules count when data doesn't end with a newline
2020-05-18 19:34:25 +03:00
Simon Zolin
806f81ede9 Merge: - autohosts: support tab character
Close #1686

* commit '2f454117ce7562df934b20c385c11006f8a1cf8f':
  - autohosts: support tab character
2020-05-18 19:18:48 +03:00
Simon Zolin
2f454117ce - autohosts: support tab character 2020-05-18 18:46:17 +03:00
Simon Zolin
79fe68b35f dynamic leases 2020-05-18 17:06:27 +03:00
Simon Zolin
286eb43c56 - filter: fix rules count when data doesn't end with a newline 2020-05-18 10:53:28 +03:00
Andrey Meshkov
2fca419c7f *(home): fix TLS module initialization
Continue to work even when TLS cert-key pair is invalid

Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1677
2020-05-16 02:02:50 +03:00
Andrey Meshkov
6adf48c938 *(home): added more logging to TLS module 2020-05-16 01:37:12 +03:00
Andrey Meshkov
bab7b2dc65 fix 2020-05-14 23:28:42 +03:00
Andrey Meshkov
332ef250b7 Merge with master 2020-05-14 23:28:05 +03:00
Andrey Meshkov
3b258e536b minor fix of the snap publish script 2020-05-14 23:28:01 +03:00
Andrey Meshkov
35a6708ccf Merge: + client: Add icons for Apple products
Fix #1574

* commit '502fe3cfc5feea46f287854d0c3ebb9e66676bdd':
  *(home): fix assets access
  Fix go lint warning
  Add assets folder
  Add icons to server
  + client: Add icons for Apple products
2020-05-14 18:44:42 +03:00
Andrey Meshkov
c64fdf9442 *(global): update translations 2020-05-14 18:44:12 +03:00
Andrey Meshkov
502fe3cfc5 *(home): fix assets access 2020-05-14 18:37:25 +03:00
Andrey Meshkov
df1f7ebc8d Merge branch 'master' into feature/1574 2020-05-14 18:29:33 +03:00
Andrey Meshkov
fb79416ebe -: fix #1632 2020-05-14 18:24:59 +03:00
Andrey Meshkov
39420c8a00 Merge: -(dnsforward): custom client per-domain upstreams
* commit '5d7b3fb7d5aa14c434dc532aef2fd68e54e7e182':
  -(dnsforward): fix handling RRSIG records
  Added a unit-test for custom upstreams
  -(dnsforward): custom client per-domain upstreams
2020-05-14 18:14:52 +03:00
Andrey Meshkov
b8567c5b56 Merge: Add IntelliJ Project files (*.iml) to .gitignore
* commit '5b7871b6b8836d274f7d4c2d02d5549c58ad6e69':
  Add IntelliJ Project files (*.iml) to .gitignore Rename "Portuguese" to "Português" so it's localized like all other languages
2020-05-14 18:09:36 +03:00
Andrey Meshkov
5d7b3fb7d5 -(dnsforward): fix handling RRSIG records 2020-05-14 18:08:47 +03:00
Christian Glockner
5b7871b6b8 Add IntelliJ Project files (*.iml) to .gitignore Rename "Portuguese" to "Português" so it's localized like all other languages 2020-05-14 17:37:53 +03:00
ArtemBaskal
11d65330a0 Fix go lint warning 2020-05-14 15:03:00 +03:00
ArtemBaskal
5f13d4ab4a Add assets folder 2020-05-14 14:45:16 +03:00
Andrey Meshkov
ae51de9335 Added a unit-test for custom upstreams 2020-05-14 12:57:41 +03:00
ArtemBaskal
26ac9e4224 Add icons to server 2020-05-14 12:06:22 +03:00
Andrey Meshkov
67a39045fc -(dnsforward): custom client per-domain upstreams
Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1539
2020-05-13 20:31:43 +03:00
Artem Baskal
1f954ab673 Merge: + client: Use monospace font in coding-like inputs
Close #1650

Squashed commit of the following:

commit 0956b77d2675bf569ab8413bf1a905167f068fbd
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 18:22:55 2020 +0300

    Replace css variable

commit 7c65954e3727c09404999d4d029276f78a8d0ffe
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 18:06:31 2020 +0300

    + client: Use monospace font in coding-like inputs
2020-05-13 15:34:56 +03:00
Artem Baskal
4d66d25fda Merge: - client: Fix npm ci fail
Close #1597

Squashed commit of the following:

commit 75884d17de9acecf59b4f76a488d37ae76e52246
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 17:18:24 2020 +0300

    - client: Fix npm ci fail
2020-05-13 15:27:07 +03:00
Artem Baskal
ead5a16b2a Merge: + client: trim DNS blocklists fields on blur
Close #1634

Squashed commit of the following:

commit 5f38da50b2075a9b5967aed39b62a8ab05e57a1c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue May 12 20:02:05 2020 +0300

    + client: Trim fields on blur
2020-05-13 15:15:22 +03:00
Andrey Meshkov
a09e59a59d *: upd locales 2020-05-13 00:49:56 +03:00
Andrey Meshkov
8d66ede894 *: memory usage hacks 2020-05-13 00:46:35 +03:00
Andrey Meshkov
408a8dea44 *: fix #1656 2020-05-12 01:36:47 +03:00
Andrey Meshkov
5df42378d0 Merge: +(dnsforward): added bogus-nxdomain setting
Fix #1545

* commit 'cd87169ee43914c97f7f11bf65cb2864de8bc62e':
  *: comments fix
  +(dnsforward): added bogus-nxdomain setting
2020-05-08 19:09:44 +03:00
Andrey Meshkov
5ace7894f8 Merge: * blocked services: Update discord block for new domain
* commit 'e95c4f799bf44bed49856a77738105920b930263':
  * blocked services: Update discord block for new domain
2020-05-08 19:03:51 +03:00
Andrey Meshkov
cd87169ee4 *: comments fix 2020-05-08 19:02:16 +03:00
Andrey Meshkov
8909599739 +(dnsforward): added bogus-nxdomain setting
Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1545
2020-05-08 18:39:37 +03:00
Andrey Meshkov
0311e53ebb *: added comment 2020-05-08 17:43:49 +03:00
Tobias Messner
e95c4f799b * blocked services: Update discord block for new domain
Discord now also uses discord.com as domain, this adds it to the blocked services list
2020-05-08 13:28:33 +03:00
Andrey Meshkov
6d136ee2cb Merge: * filter: skip comment lines starting with '#'
* commit 'b034e25b26ec01c8b2607726646c55777ba66a1d':
  * filter: skip comment lines starting with '#'
2020-05-07 20:10:45 +03:00
DannyHinshaw
b034e25b26 * filter: skip comment lines starting with '#'
Fix #771, filter skips comment lines starting with '#'.

Handle exclamation inline comments.

Refactor for correct logic flow.

Split out hashtag comment logic from exclamation.

Remove trailing whitespace.
2020-05-07 18:03:25 +03:00
ArtemBaskal
8aad02dbf2 + client: Add icons for Apple products 2020-05-06 11:15:19 +03:00
Jonas Marklén
694e649355 Update index.html 2020-05-02 10:57:59 +02:00
Jonas Marklén
8f77a89fce resolve conflicts 2020-05-02 10:39:52 +02:00
Jonas Marklén
efd2b31104 Merge branch 'master' of github.com:AdguardTeam/AdGuardHome
 Conflicts:
	openapi/openapi.yaml
2020-05-02 10:09:25 +02:00
Alan Pope
f250fc16a2 Correct architecture builds
The current syntax means it will build on one of the architectures to run on all. That would be useful if it was an arch-independent snap, such as a shell script. But this contains arch-specific binaries. Using the syntax here, will get four separate builds (one per arch) which is the desired outcome.
2020-05-01 20:55:34 +01:00
Artem Baskal
89920bc518 Merge: + client: Hide dns autofix warning text
Squashed commit of the following:

commit e99192ac85400bcce09ca8d73ceef0224f003e0c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Thu Apr 30 16:03:20 2020 +0300

    Show autofix warning conditionally

commit e5658fc3aaee449a49bee76063033dc62e61c722
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 29 19:18:02 2020 +0300

    + client: Add wiki link on instllation screen
2020-04-30 18:59:14 +03:00
Simon Zolin
c58c758481 tests 2020-04-30 17:59:39 +03:00
Simon Zolin
e51c9d3854 improve 2020-04-30 16:21:24 +03:00
Simon Zolin
4dcc7681d5 minor 2020-04-30 15:04:34 +03:00
Simon Zolin
738c7820fa + tests 2020-04-30 15:01:14 +03:00
Simon Zolin
61e071d275 fix tests 2020-04-30 13:53:54 +03:00
Simon Zolin
4405b619d3 minor 2020-04-30 13:35:45 +03:00
Simon Zolin
c47577b015 minor 2020-04-30 13:28:04 +03:00
Simon Zolin
f5a50e2bc3 http status, set config 2020-04-30 13:24:40 +03:00
Simon Zolin
c8db736745 Stop() 2020-04-30 13:04:21 +03:00
Simon Zolin
a702eda9d9 Merge: dnsproxy v0.27.1
* commit 'efc69047a172074bf7ef5d1271f30d1eb0dba90c':
  dnsproxy v0.27.1
2020-04-30 11:43:56 +03:00
Simon Zolin
efc69047a1 dnsproxy v0.27.1 2020-04-30 10:57:07 +03:00
Artem Baskal
2837502a7b Merge: + client: Make default table height 100%
Squashed commit of the following:

commit d6b07ae070b5ec826dbe3e226e326f9d52b8c7d1
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 29 16:57:22 2020 +0300

    Limit dasboard tables height

commit 6b42f7a1e3cb82e1b792dd352717a3ffa9566b4b
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 29 16:44:08 2020 +0300

    + client: Make default table height 100%
2020-04-29 19:09:00 +03:00
Simon Zolin
2ec69bc6ed minor 2020-04-29 16:22:08 +03:00
Simon Zolin
7d3a46d644 + DNS servers, real SID, check SID 2020-04-29 15:32:34 +03:00
Simon Zolin
7e5648d349 * rename 2020-04-29 13:40:59 +03:00
Simon Zolin
636779fef7 fix 2020-04-28 18:42:12 +03:00
Simon Zolin
9fa72cb7c0 + remove, list static leases 2020-04-28 17:47:58 +03:00
Simon Zolin
ab1ab30e6f Merge: + rewrites: support deeper level wildcards - select the more specific one
#1547

* commit 'b33653ec48a613df24d1768aab56a5c505affd33':
  + rewrites: support deeper level wildcards - select the more specific one
2020-04-28 10:39:30 +03:00
Simon Zolin
a5727f8dcb minor 2020-04-27 18:18:43 +03:00
Simon Zolin
8aa30a8e83 + dhcpv6 server; support static leases 2020-04-27 18:16:32 +03:00
Simon Zolin
b33653ec48 + rewrites: support deeper level wildcards - select the more specific one 2020-04-27 17:24:55 +03:00
Andrey Meshkov
c0ebf9e793 *: more badges to the god of badges 2020-04-27 16:18:35 +03:00
Simon Zolin
14ffd1a3f5 Merge: - blocked-services: settings were reset on restart
Close #1624

Squashed commit of the following:

commit eecc91ca1f9d062c27702a9c07da74da673bef05
Merge: ec53dbeb 26f78dcc
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 27 13:15:58 2020 +0300

    Merge remote-tracking branch 'origin/master' into fix-blocked-svcs

commit ec53dbebdc2fbd2ff94f939d2bd8fb07b9dd1bc8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 27 12:58:50 2020 +0300

    minor

commit 1e3c20ed02151965ebaca55ac4f25a951a772062
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 27 12:53:37 2020 +0300

    - blocked-services: settings were reset on restart

    broken by:
     0789e4b20d
     * refactor: move blocked-services functions to dnsfilter
2020-04-27 13:21:16 +03:00
Simon Zolin
26f78dcc65 Merge: * client: router guide: add more info
Close #1018

* commit '80c3112ab3cf28c75fc7ededf8b917915c32d538':
  * client: router guide: add more info
2020-04-27 11:00:07 +03:00
Andrey Meshkov
08b033dd04 *(dnsforward): upgrade dnsproxy to v0.27.0 2020-04-26 19:16:10 +03:00
Andrey Meshkov
cd15bb5cce Merge: + client: Switch places for "Upstream DNS servers" and "DNS servers configuration"
* commit '3b0914715ee0be2a5b6236729b9976193db9bb17':
  + client: Switch places for "Upstream DNS servers" and "DNS servers configuration"
2020-04-24 18:33:10 +03:00
Simon Zolin
80c3112ab3 * client: router guide: add more info 2020-04-24 16:54:37 +03:00
ArtemBaskal
3b0914715e + client: Switch places for "Upstream DNS servers" and "DNS servers configuration" 2020-04-24 16:51:44 +03:00
Simon Zolin
d01407c1a0 Merge: - Web: flush the bufferred response data before performing global operations
Close #1617

* commit 'e24143a1962c16763cb73f4e41b30117bcf0d80c':
  - Web: flush the bufferred response data before performing global operations
2020-04-24 16:22:16 +03:00
Simon Zolin
e24143a196 - Web: flush the bufferred response data before performing global operations 2020-04-24 15:50:57 +03:00
Simon Zolin
8ab6fa3300 Merge: * TestAuth: improve test
* commit '44353821e6bf99839dac15f0049a3335c0376258':
  * TestAuth: improve test
2020-04-24 15:37:35 +03:00
Andrey Meshkov
8ad9422a48 *(documentation): added info about snap edge/beta channels 2020-04-24 15:13:24 +03:00
Andrey Meshkov
95c5bd35c5 Merge with master 2020-04-24 15:09:03 +03:00
Andrey Meshkov
9ce2a66c0e *(documentation): added Snap Store to documentation 2020-04-24 15:08:58 +03:00
Simon Zolin
44353821e6 * TestAuth: improve test 2020-04-24 14:04:40 +03:00
Simon Zolin
2191c49161 Merge: * use dnsproxy v0.26.3
Close #1612

* commit '490784c285acc6ae32994062e3d9d1db73639713':
  dnsproxy v0.26.3
2020-04-24 13:50:13 +03:00
Andrey Meshkov
c7a2cbe04e *(global): limit architectures list for edge build 2020-04-24 12:28:00 +03:00
Andrey Meshkov
b5d437c92a *: snapfile for edge channel builds 2020-04-24 12:00:20 +03:00
Simon Zolin
490784c285 dnsproxy v0.26.3 2020-04-24 10:25:46 +03:00
Andrey Meshkov
25361836bf *: snap: don't use SNAP_COMMON 2020-04-24 01:15:53 +03:00
Simon Zolin
314a0ca27b Merge: * blocked_services: update
Close #1602

* commit '4889f2d00a2153c6b78d3b92cf050d3b0ad5c763':
  * blocked_services.go: Update blocked services component
2020-04-23 16:23:18 +03:00
Andrey Meshkov
4d73a0148e change snap name to adguard-home 2020-04-23 16:18:58 +03:00
Archive5
4889f2d00a * blocked_services.go: Update blocked services component
rearrange

rearrange
2020-04-23 10:12:13 +03:00
Andrey Meshkov
63d525c4d4 upd snap yaml 2020-04-23 01:05:31 +03:00
Andrey Meshkov
1041aa8aff fix stable snap publishing 2020-04-23 00:27:03 +03:00
Andrey Meshkov
e2ee2d48df Allow to build a specific snap architecture 2020-04-22 21:57:25 +03:00
Andrey Meshkov
4153d973ec update snap script, added temp files to .gitignore 2020-04-22 21:02:38 +03:00
Artem Baskal
0ffc0965dc + client: add fastest_addr setting
Squashed commit of the following:

commit e47fae25f7bac950bfb452fc8f18b9c0865b08ba
Merge: a23285ec e2ddc82d
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 19:16:01 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715

commit a23285ec3ace78fe4ce19122a51ecf3e6cdd942c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Wed Apr 22 18:30:30 2020 +0300

    Review changes

commit f80d62a0d2038ff9d070ae9e9c77c33b92232d9c
Author: ArtemBaskal <a.baskal@adguard.com>
Date:   Tue Apr 21 16:37:42 2020 +0300

    + client: Add fastest addr option

commit 9e713df80c5bf113c98794c0a20915c756a76938
Merge: e3bf4037 9b7c1181
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 16:02:03 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit e3bf4037f49198e42bde55305d6f9077341b556a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 15:40:49 2020 +0300

    minor

commit d6e6a823c5e51acc061b2850d362772efcb827e1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 17:56:24 2020 +0300

    * API changes

    . removed POST /set_upstreams_config
    . removed fields from GET /status: bootstrap_dns, upstream_dns, all_servers
    . added new fields to /dns_config and /dns_info

commit 237a452d09cc48ff8f00e81c7fd35e7828bea835
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 16:43:13 2020 +0300

    * API: /dns_info, /dns_config: add "parallel_requests" instead of "all_servers" from /set_upstreams_config

commit 9976723b9725ed19e0cce152d1d1198b13c4acc1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Mar 23 10:28:25 2020 +0300

    openapi

commit 6f8ea16c6332606f29095b0094d71e8a91798f82
Merge: 36e4d4e8 c8285c41
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:18:48 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit 36e4d4e82cadeaba5a11313f0d69d66a0924c342
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 18:13:43 2020 +0300

    + DNS: add fastest_addr setting
2020-04-22 19:32:07 +03:00
Simon Zolin
e2ddc82d70 + DNS: add fastest_addr setting
* API: /dns_info, /dns_config: add "parallel_requests" instead of "all_servers" from /set_upstreams_config
* API: /status: removed fields

#715

Squashed commit of the following:

commit 7dd913bd336ecbaa7419b998d0bf913d89702fe6
Merge: 43706970 8170955a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 19:09:36 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit 437069702a3e91e0b066e4b22b08cdc02ff19eaf
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 19:08:55 2020 +0300

    minor

commit 9e713df80c5bf113c98794c0a20915c756a76938
Merge: e3bf4037 9b7c1181
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 16:02:03 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit e3bf4037f49198e42bde55305d6f9077341b556a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 15:40:49 2020 +0300

    minor

commit d6e6a823c5e51acc061b2850d362772efcb827e1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 17:56:24 2020 +0300

    * API changes

    . removed POST /set_upstreams_config
    . removed fields from GET /status: bootstrap_dns, upstream_dns, all_servers
    . added new fields to /dns_config and /dns_info

commit 237a452d09cc48ff8f00e81c7fd35e7828bea835
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 16:43:13 2020 +0300

    * API: /dns_info, /dns_config: add "parallel_requests" instead of "all_servers" from /set_upstreams_config

commit 9976723b9725ed19e0cce152d1d1198b13c4acc1
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Mar 23 10:28:25 2020 +0300

    openapi

commit 6f8ea16c6332606f29095b0094d71e8a91798f82
Merge: 36e4d4e8 c8285c41
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:18:48 2020 +0300

    Merge remote-tracking branch 'origin/master' into 715-fastest-addr

commit 36e4d4e82cadeaba5a11313f0d69d66a0924c342
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 18:13:43 2020 +0300

    + DNS: add fastest_addr setting
2020-04-22 19:14:04 +03:00
Andrey Meshkov
8170955a07 Merge: added snapcraft build script
* commit '054980bc8b9cab4ac8dd5421d724f421cd046583':
  *: fix typo
  *: cleanup
  *: rename resulting snapfile -- remove version from it
  *: update build_snap.sh
  *: remove snap from travis
  *: travis - print log on failuer
  *: added snapcraft build configuration
  *: moved docker files to the packaging folder
2020-04-22 19:07:05 +03:00
Andrey Meshkov
054980bc8b *: fix typo 2020-04-22 18:50:24 +03:00
Andrey Meshkov
47160c16d9 *: cleanup 2020-04-22 18:39:47 +03:00
Andrey Meshkov
daf9af9a22 *: rename resulting snapfile -- remove version from it 2020-04-22 17:48:37 +03:00
Simon Zolin
9671050e5b + config: add "debug_pprof" setting
Squashed commit of the following:

commit 96d185cf4acc55b21a00d10072e0a641ef7655b8
Merge: 3b75a8cb 9b7c1181
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 15:57:50 2020 +0300

    Merge remote-tracking branch 'origin/master' into add-pprof

commit 3b75a8cbec5d72be8865a56bfd7ebb8b0673c3bc
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 13:52:36 2020 +0300

    * use localhost:6060 for pprof

commit f66f2fbd7409b98cd9f7d297c268fca998f85e3b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 12:46:25 2020 +0300

    minor

commit 6e38712fb5542f612675858eb957efdefc38f9b0
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 22 11:59:39 2020 +0300

    use separate HTTP server for pprof

commit 988d95b5fad22f536bf9204b6b96f3697cf9a589
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 17:04:04 2020 +0300

    minor

commit 90ee6e9753be2af49467687cdf71c35b3943b78b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Tue Apr 21 16:57:38 2020 +0300

    * use modified version of pprof

commit 413002220fe0717950539a8b7e6b0f31cef31bb8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 20 16:35:21 2020 +0300

    minor

commit d4655d3849de1d9fe97efdb7f18fc21d5ac19eda
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 20 15:57:57 2020 +0300

    + config: add "enable_pprof" setting
2020-04-22 16:00:26 +03:00
Andrey Meshkov
093617e6bd *: update build_snap.sh 2020-04-22 15:07:17 +03:00
Andrey Meshkov
3ae6043748 *: remove snap from travis 2020-04-22 13:40:13 +03:00
Andrey Meshkov
3fdd3f7cec *: travis - print log on failuer 2020-04-21 17:23:29 +03:00
Andrey Meshkov
0cb876a71c *: added snapcraft build configuration 2020-04-21 16:25:29 +03:00
Andrey Meshkov
7f224658e0 *: moved docker files to the packaging folder 2020-04-21 15:05:13 +03:00
Simon Zolin
9b7c118103 * dnsproxy v0.26.2
Close #1588

Squashed commit of the following:

commit a6eedb9883737d93332b59e9de69fbf07b8f81d4
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 20 18:33:37 2020 +0300

    * dnsproxy v0.26.2
2020-04-21 11:08:59 +03:00
Simon Zolin
93a597fce4 - querylog: fix get data
Close #1589

Squashed commit of the following:

commit 83d1d15f06a67746feb0e82fb71d5ea02f86ab69
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Apr 17 14:11:00 2020 +0300

    - querylog: fix get data
2020-04-17 14:40:13 +03:00
Jonas Marklén
037bf43b40 Updated openapi.yaml to OpenAPI 3.0
Included lint to validate yaml file
2020-04-16 22:04:00 +02:00
Andrey Meshkov
e24e5741fe *: fix freebsd build 2020-04-16 20:35:58 +03:00
Andrey Meshkov
96bee3955c *: upd dependencies, go mod tidy 2020-04-16 20:04:34 +03:00
Simon Zolin
158f5e854d * use dnsproxy v0.26.0
Close #1490

Squashed commit of the following:

commit df600c2b11e72783b1422087b861d51a310be2e2
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Apr 16 19:06:19 2020 +0300

    * use dnsproxy v0.26.0
2020-04-16 19:26:17 +03:00
Simon Zolin
1a1c09135d + auto-hosts: respond to PTR requests
Close #1562

Squashed commit of the following:

commit d5c6bb0e5f0c8c1618bd0df764ae86a5e62a850b
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Apr 13 14:10:10 2020 +0300

    + auto-hosts: respond to PTR requests
2020-04-16 18:56:47 +03:00
Andrey Meshkov
215e3eeaf6 Merge: Win travis build
* commit '6503bab1aaa27ff43175d069413630a420093be0':
  *: added cross-env to npm scripts
  run npm build on windows
  *: added more logging
  -: fix autohosts tests on Windows
  -: fix qlog test on Windows
  *: fix nvs script
  *: travis - use nvs on Windows
  *: travis-win -- try nvm
  *(global): travis: choco install nodejs
  +(global): windows travis build
2020-04-15 16:13:24 +03:00
Andrey Meshkov
6503bab1aa *: added cross-env to npm scripts 2020-04-15 15:41:48 +03:00
Andrey Meshkov
af34500729 run npm build on windows 2020-04-15 15:24:12 +03:00
Andrey Meshkov
1a34b96d03 *: added more logging 2020-04-15 15:17:57 +03:00
Andrey Meshkov
4bdf22eadc -: fix autohosts tests on Windows 2020-04-15 14:36:47 +03:00
Andrey Meshkov
e96fd6e42d -: fix qlog test on Windows 2020-04-15 14:11:31 +03:00
Andrey Meshkov
4b57776976 *(home): removed hphosts 2020-04-15 12:56:50 +03:00
Andrey Meshkov
b9b42997af *: fix nvs script
g
2020-04-14 00:30:20 +03:00
Andrey Meshkov
344a0336b0 *: travis - use nvs on Windows 2020-04-14 00:26:44 +03:00
Andrey Meshkov
814a1f6cb3 *: travis-win -- try nvm 2020-04-14 00:16:58 +03:00
Andrey Meshkov
6cdc59db26 *(global): travis: choco install nodejs 2020-04-14 00:08:54 +03:00
Andrey Meshkov
ca418de16f +(global): windows travis build 2020-04-14 00:04:38 +03:00
Artem Baskal
8d9f68b778 Merge: - client: Update locales, change lists phrase
Close #1522

* commit '102da17f9ceeb0abbbc3887d65f3d588acaa61e8':
  Change en locale
  Update sk locale
  Update locales
  Update blocked_by phrase for tr locale
  Roll back ru locale
  Update locales, add locales scripts, update locales readme
  - client: Change phrase
2020-04-09 17:31:04 +03:00
ArtemBaskal
102da17f9c Change en locale 2020-04-09 14:38:38 +03:00
Artem Baskal
f59667cef0 Merge: + client: Validate adding of absolute path to the filtering lists
* commit 'af2adc5b33c4263733159e25fa4ff9581440f703':
  Change absolute path regexps
  Change win absolute path regex
  Fix translations
  Fix file path regexps to match files without extension
  + client: Validate adding of absolute path to the filtering lists
2020-04-09 14:28:14 +03:00
Artem Baskal
6f1fe89bd7 - client: Clear result of checking the filtering result after moving to another page
Close #1548

* commit 'f0b6340e4f3ff36d1068d506564bb68f5f17fa7d':
  - client: Clear result of checking the filtering result after moving to another page
2020-04-09 14:25:38 +03:00
Simon Zolin
1739d7975f Merge: + filters: support filters from local disk
Close #817

* commit '81309c707a70ff15a7075fb5906962764b470ca7':
  + filters: support filters from local disk
2020-04-09 13:51:28 +03:00
Simon Zolin
81309c707a + filters: support filters from local disk 2020-04-09 11:46:52 +03:00
Simon Zolin
fcaed16638 Merge: - DHCP: when adding a new static lease: remove dynamic lease with the same MAC
Close #1531

* commit '33195b91559c36cf2197679ae23e6a732e5c8c04':
  - DHCP: when adding a new static lease: remove dynamic lease with the same MAC
2020-04-09 11:30:17 +03:00
Artem Baskal
f61bab5e59 Merge: Change blocked domains phrase translation
Close #1541

* commit '31b55028d5acff438c35fabb9bee40823d536a6c':
  - client: Change blocked domains phrase translation
2020-04-08 19:14:50 +03:00
Simon Zolin
321b1a7e9c Merge: - web: install: couldn't apply new HTTP port until the restart
Squashed commit of the following:

commit 2480dcbe2390601ab4e423241eb306127e4b6d26
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Apr 8 19:05:06 2020 +0300

    - web: install: couldn't apply new HTTP port until the restart
2020-04-08 19:08:35 +03:00
ArtemBaskal
af2adc5b33 Change absolute path regexps 2020-04-08 14:21:20 +03:00
Andrey Meshkov
8911a38f43 Merge branch 'wikijm-master' 2020-04-08 13:54:02 +03:00
ArtemBaskal
92376690a4 Change win absolute path regex 2020-04-08 13:01:58 +03:00
ArtemBaskal
b8d868efe4 Fix translations 2020-04-08 13:01:58 +03:00
ArtemBaskal
683121ef90 Fix file path regexps to match files without extension 2020-04-08 13:01:58 +03:00
ArtemBaskal
421ad744cb + client: Validate adding of absolute path to the filtering lists 2020-04-08 13:01:58 +03:00
wikijm
d2b58c81f3 Add 'device_camera' and 'device_securityalarm' values 2020-04-08 11:59:36 +02:00
ArtemBaskal
f2ba8c6657 Update sk locale 2020-04-08 12:06:27 +03:00
Simon Zolin
33195b9155 - DHCP: when adding a new static lease: remove dynamic lease with the same MAC 2020-04-08 11:55:58 +03:00
ArtemBaskal
e215e92159 Update locales 2020-04-08 11:40:32 +03:00
Ildar Kamalov
fc03ca4bb8 Merge: + client: handle rewrite auto
Closes #1478

* commit 'c7f8f20aada3e339b82434fab3d1b02c52bdd4e1':
  + client: handle rewrite auto
2020-04-08 09:02:15 +03:00
Ildar Kamalov
bcbffd90be Merge: + client: add IPv6 CIDR validation for the client id
Closes #1479

* commit '69e88cf17d6297d34bf440e01330e335cd662963':
  + client: add IPv6 CIDR validation
2020-04-08 08:44:19 +03:00
Ildar Kamalov
c7f8f20aad + client: handle rewrite auto 2020-04-08 08:23:07 +03:00
Andrey Meshkov
2f9bc13ffd *(home): fix small filters update
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1554
2020-04-07 23:29:03 +03:00
Andrey Meshkov
ea38612a1d Merge: - install: fix crash when trying to use uninitialized TLS module
* commit '6690441240f217cc5e6de93fa0803e3c15a50fef':
  - install: fix crash when trying to use uninitialized TLS module
2020-04-07 23:12:32 +03:00
Simon Zolin
6690441240 - install: fix crash when trying to use uninitialized TLS module 2020-04-07 19:24:29 +03:00
ArtemBaskal
31b55028d5 - client: Change blocked domains phrase translation 2020-04-07 18:07:07 +03:00
ArtemBaskal
e9c94a8c33 Update blocked_by phrase for tr locale 2020-04-07 17:48:18 +03:00
ArtemBaskal
f0b6340e4f - client: Clear result of checking the filtering result after moving to another page 2020-04-07 17:21:44 +03:00
ArtemBaskal
a4aa3426d3 Roll back ru locale 2020-04-07 16:24:02 +03:00
ArtemBaskal
d0d481dd0e Update locales, add locales scripts, update locales readme 2020-04-07 16:17:57 +03:00
ArtemBaskal
39447649d6 - client: Change phrase 2020-04-07 13:25:13 +03:00
Andrey Meshkov
fe056cfaf0 Merge branch 'master' of ssh://bit.adguard.com:7999/dns/adguard-home 2020-04-07 13:02:33 +03:00
Andrey Meshkov
1376d66acb *(home): fix filters update on Windows
 Closes: #1553
2020-04-07 13:02:28 +03:00
Simon Zolin
59b3a5bc6f Merge: * GetValidNetInterfaces: don't skip PointToPoint interfaces
Close #1534

* commit '2b1919137d88902d0cfc0cc8f480274e18b2d109':
  * GetValidNetInterfaces: don't skip PointToPoint interfaces
2020-04-07 12:46:20 +03:00
Simon Zolin
2b1919137d * GetValidNetInterfaces: don't skip PointToPoint interfaces 2020-04-07 12:00:04 +03:00
Simon Zolin
105e2dd1ee Merge: - dhcp: web handlers were not registered when DHCP server is disabled
Close #1552

* commit '43704901384fe35785383b27a1ad0bd7d430830c':
  - dhcp: web handlers were not registered when DHCP server is disabled
2020-04-07 11:54:29 +03:00
Simon Zolin
4370490138 - dhcp: web handlers were not registered when DHCP server is disabled
So there was no way to enable DHCP from UI
2020-04-07 11:48:03 +03:00
Artem Baskal
6ea93d0b8e Merge pull request #569 in DNS/adguard-home from fix/1462 to master
* commit '8c74f983d1c08c03a9f131abdea8e712a5cf7505':
  - client: Enabling or disabling a filter list triggers a "loading" screen
2020-04-07 11:34:03 +03:00
Andrey Meshkov
8f00e1ca5e *: golibs to v0.4.2 2020-04-06 23:40:57 +03:00
Andrey Meshkov
0d66451084 *(global): fix compat with windows
 Closes: https://github.com/AdguardTeam/AdGuardHome/issues/1549
2020-04-06 22:32:18 +03:00
ArtemBaskal
8c74f983d1 - client: Enabling or disabling a filter list triggers a "loading" screen 2020-04-06 18:37:06 +03:00
Andrey Meshkov
1fa6d74862 Merge pull: Fix #1540
* commit '7b8588afa4409117f88eaeffd3e8ebfdc508e72f':
  *: fix golangci-lint warnings
  *(global): upgrade dependencies, start using Go v1.14
2020-04-05 18:52:01 +03:00
Andrey Meshkov
7b8588afa4 *: fix golangci-lint warnings 2020-04-05 18:34:43 +03:00
Andrey Meshkov
d5b826e12f *(global): upgrade dependencies, start using Go v1.14 2020-04-05 18:21:26 +03:00
Simon Zolin
e84c753357 Merge: * blocked_services: update
Close #1519

* commit 'ed0f457b7d8501d2dc79d1c8261d38c5ce538ade':
  Update blocked_services.go
2020-04-03 10:29:37 +03:00
Imre Kristoffer Eilertsen
ed0f457b7d Update blocked_services.go
Update README.md

Trying to fix some Travis comma complaints

Update README.md

Update blocked_services.go

Following GolangCIbot's spacing suggestion (Indentation spacing is pretty complicated sometimes.)

Co-Authored-By: Bot from GolangCI <42910462+golangcibot@users.noreply.github.com>
2020-04-01 10:39:29 +03:00
Andrey Meshkov
c73dd5577f Merge: - DNS: filtering didn't work
Fix #1504

* commit '7c192212410ef877aea5c0d018cc0f9ae8b41879':
  minor
  - DNS: filtering didn't work
2020-03-24 12:01:44 +03:00
Simon Zolin
7c19221241 minor 2020-03-24 11:49:42 +03:00
Simon Zolin
c16dc6cf62 - DNS: filtering didn't work 2020-03-24 11:44:47 +03:00
Simon Zolin
06b3378fd7 Merge: + DNS, Web: use only secure TLSv1.2 ciphers
Close #1384

Squashed commit of the following:

commit cd90abcce573a8e930446ba153565e553e6b81d5
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:17:53 2020 +0300

    minor

commit a1914c5f41425e82cdedc9716bce84470afab65b
Merge: 72c53673 c8285c41
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:17:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1384-tls12-ciphers

commit 72c536737e0502bb397562ade47aedb9f2ae4494
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 4 18:16:24 2020 +0300

    + DNS, Web: use only secure TLSv1.2 ciphers
2020-03-23 10:23:34 +03:00
Ildar Kamalov
69e88cf17d + client: add IPv6 CIDR validation 2020-03-21 20:43:45 +03:00
Simon Zolin
c8285c41d7 Merge: + DNS: new settings cache_ttl_min, cache_ttl_max
Close #1214

Squashed commit of the following:

commit e445125556c9f9441c3d6936cb923db0a7e58260
Merge: c88b25ca 63923fa8
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:12:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1214-cache-min-ttl

commit c88b25ca4b641918f32811212c2cf3b63a5bf654
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 19:02:17 2020 +0300

    minor

commit ec3dc21bb211941c71adcec38796eeadb978b2b7
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 12:18:08 2020 +0300

    + DNS: new settings cache_ttl_min, cache_ttl_max
2020-03-20 19:16:55 +03:00
Simon Zolin
63923fa882 Merge: + DNS: use rules from /etc/hosts
- fix filtering logic: don't do DNS response check for Rewrite rules

Close #1478

Squashed commit of the following:

commit 1206b94881289ff664b7c8998ea97c1455da1ff8
Merge: c462577a 5fe98474
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 15:00:25 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1478-auto-records

commit c462577ad84754f5b3ea4cd58339838af817fe36
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:33:17 2020 +0300

    minor

commit 7e824ba5f432648a976bc4b8076a645ba875ef70
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:29:54 2020 +0300

    more tests

commit a22b62136c5cfd84cd0450897aef9e7d2e20585a
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:09:52 2020 +0300

    rename, move

commit 9e5ed49ad3c27c57d540edf18b78d29e56afb067
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 15:33:27 2020 +0300

    fix logic - don't do DNS response check for Rewrite rules

commit 6cfabc0348a41883b8bba834626a7e8760b76bf2
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 11:35:07 2020 +0300

    minor

commit 4540aed9327566078e5087d43c30f4e8bffab7b9
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 11:03:24 2020 +0300

    fix

commit 9ddddf7bded812da48613cc07084e360c15ddd0e
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 10:49:13 2020 +0300

    fix

commit c5f8ef745b6f2a768be8a2ab23ad80b01b0aa54f
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 10:37:26 2020 +0300

    fix

commit f4be00947bf0528c9a7cd4f09c4090db444c4694
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Mon Mar 16 20:13:00 2020 +0300

    + auto DNS records from /etc/hosts
2020-03-20 15:05:43 +03:00
Simon Zolin
5fe984741e Merge: + qlog: anonymize_client_ip setting
Close #916

* commit 'a0be7f5566a7d5986eb04ed7ffb79c5230171e2a':
  + client: handle hide_client_ip
  + qlog: hide_client_ip setting
2020-03-20 14:55:55 +03:00
Ildar Kamalov
a0be7f5566 + client: handle hide_client_ip 2020-03-20 14:50:43 +03:00
Simon Zolin
2e845e4f4d + qlog: hide_client_ip setting 2020-03-20 14:50:43 +03:00
Simon Zolin
a5b9d1d74c Merge: + DNS: blocked hosts: support wildcards; use urlfilter for processing of the blocked hosts
Close #1469

Squashed commit of the following:

commit b07f408550a526726c8e38886ce0fcc1f4c3d93d
Merge: 56aa0dfc c5a39b94
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 20 14:32:21 2020 +0300

    Merge remote-tracking branch 'origin/master' into 1469-wildcards

commit 56aa0dfcca8265fed35e9b92f85dc54de947cc11
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 12:02:17 2020 +0300

    update text

commit 468bcd9ea6e57eedd96bbb4b8414d86a60abcdc3
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Thu Mar 19 11:51:01 2020 +0300

    * access: use urlfilter for blocked hosts processing

commit 1b157d39dfb32dd74d527274e5466b1642cd6916
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Wed Mar 18 13:13:06 2020 +0300

    minor

commit 34811eb08ab690104d29710b0e1bc9fb003a4cd4
Author: Ildar Kamalov <i.kamalov@adguard.com>
Date:   Fri Mar 13 19:05:12 2020 +0300

    * client: change field description

commit fe0acec1bbd0b810f00481412efcc9776022b694
Author: Simon Zolin <s.zolin@adguard.com>
Date:   Fri Mar 13 16:51:17 2020 +0300

    + DNS: blocked hosts: support wildcards
2020-03-20 14:41:13 +03:00
Simon Zolin
c5a39b942f Merge: - querylog: querylog_memsize setting was reset to 0
* commit 'bebd43923b71b2ef4bf4e1beb5bb69ff6208d06e':
  - querylog: querylog_memsize setting was reset to 0
2020-03-19 18:58:34 +03:00
Simon Zolin
bebd43923b - querylog: querylog_memsize setting was reset to 0
Since v0.100.0 the query logs memory buffer was not active,
 despite the default capacity of 1000 items.

Now we remove querylog_memsize setting and replace it with querylog_size_memory
2020-03-19 15:53:25 +03:00
279 changed files with 22701 additions and 15833 deletions

9
.gitignore vendored
View File

@@ -17,3 +17,12 @@ coverage.txt
# Test output
dnsfilter/tests/top-1m.csv
dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
# Snapcraft build temporary files
*.snap
launchpad_credentials
snapcraft_login
snapcraft.yaml.bak
# IntelliJ IDEA project files
*.iml

View File

@@ -13,6 +13,7 @@ run:
skip-files:
- ".*generated.*"
- dnsfilter/rule_to_regexp.go
- util/pprof.go
- ".*_test.go"
@@ -29,19 +30,26 @@ linters-settings:
line-length: 200
linters:
enable-all: true
disable:
- interfacer
- gocritic
- scopelint
- gochecknoglobals
- gochecknoinits
- prealloc
- maligned
- godox
- funlen
- whitespace
- goconst # disabled until it's possible to configure
enable:
- deadcode
- errcheck
- govet
- ineffassign
- staticcheck
- structcheck
- unused
- varcheck
- bodyclose
- depguard
- dupl
- gocyclo
- goimports
- golint
- gosec
- misspell
- stylecheck
- unconvert
disable-all: true
fast: true
issues:
@@ -57,4 +65,12 @@ issues:
- Error return value of .s.closeConn. is not checked
- Error return value of ..*.Shutdown.
# goconst
- string .forcesafesearch.google.com. has 3 occurrences
- string .forcesafesearch.google.com. has 3 occurrences
# gosec: Profiling endpoint is automatically exposed on /debug/pprof
- G108
# gosec: Subprocess launched with function call as argument or cmd arguments
- G204
# gosec: Potential DoS vulnerability via decompression bomb
- G110
# gosec: Expect WriteFile permissions to be 0600 or less
- G306

View File

@@ -3,18 +3,45 @@ language: go
sudo: false
go:
- 1.13.x
- 1.14.x
os:
- linux
- osx
- windows
before_install:
- nvm install node
- npm install -g npm
- curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin v1.19.1
- |-
case $TRAVIS_OS_NAME in
linux | osx)
nvm install node
npm install -g npm
curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh| sh -s -- -b $(go env GOPATH)/bin v1.23.8
;;
windows)
# Using NVS for managing Node.js versions on Windows
NVS_HOME="C:\ProgramData\nvs"
git clone --single-branch https://github.com/jasongin/nvs $NVS_HOME
source $NVS_HOME/nvs.sh
nvs add latest
nvs use latest
;;
esac
install:
- npm --prefix client ci
- |-
case $TRAVIS_OS_NAME in
linux | osx)
node --version
npm --version
npm --prefix client ci
;;
windows)
node --version
npm --version
nvs --version
npm --prefix client ci
;;
esac
cache:
directories:
@@ -23,10 +50,24 @@ cache:
- $HOME/Library/Caches/go-build
script:
- /bin/bash ci.sh
- |-
case $TRAVIS_OS_NAME in
linux | osx)
/bin/bash ci.sh
;;
windows)
npm --prefix client run build-prod
go test -race -v -bench=. -coverprofile=coverage.txt -covermode=atomic ./...
;;
esac
after_success:
- bash <(curl -s https://codecov.io/bash)
- |-
case $TRAVIS_OS_NAME in
linux)
bash <(curl -s https://codecov.io/bash)
;;
esac
notifications:
slack: performix:yXTihlSzsLFSZiqbXMNzvTSX
@@ -37,7 +78,7 @@ matrix:
- if: repo = AdguardTeam/AdGuardHome
- name: release
go:
- 1.13.x
- 1.14.x
os:
- linux
@@ -45,7 +86,7 @@ matrix:
- node -v
- npm -v
# Prepare releases
- ./release.sh
- ./build_release.sh
- ls -l dist
deploy:
@@ -60,10 +101,12 @@ matrix:
file_glob: true
skip_cleanup: true
# Docker build configuration
- if: repo = AdguardTeam/AdGuardHome
- name: docker
if: type != pull_request AND (branch = master OR tag IS present) AND repo = AdguardTeam/AdGuardHome
go:
- 1.13.x
- 1.14.x
os:
- linux
services:
@@ -75,4 +118,4 @@ matrix:
- docker login -u="$DOCKER_USER" -p="$DOCKER_PASSWORD"
- ./build_docker.sh
after_script:
- docker images
- docker images

View File

@@ -15,8 +15,8 @@
"it": "Italiano",
"no": "Norsk",
"pl": "Polski",
"pt-br": "Portuguese (BR)",
"pt-pt": "Portuguese (PT)",
"pt-br": "Português (BR)",
"pt-pt": "Português (PT)",
"ro": "Română",
"sk": "Slovenčina",
"sl": "Slovenščina",

View File

@@ -12,6 +12,7 @@ Contents:
* Updating
* Get version command
* Update command
* API: Get global status
* TLS
* API: Get TLS configuration
* API: Set TLS configuration
@@ -64,7 +65,6 @@ Contents:
* API: Log in
* API: Log out
* API: Get current user info
* Replace dnsmasq on OpenWRT
## Relations between subsystems
@@ -371,6 +371,28 @@ Error response:
UI shows error message "Auto-update has failed"
## API: Get global status
Request:
GET /control/status
Response:
200 OK
{
"dns_addresses":["..."],
"dns_port":53,
"http_port":3000,
"language":"en",
"protection_enabled":true,
"running":true,
"dhcp_available":true,
"version":"undefined"
}
## Enable DHCP server
Algorithm:
@@ -396,9 +418,9 @@ Response:
200 OK
{
"config":{
"enabled":false,
"interface_name":"...",
"enabled":false,
"interface_name":"...",
"v4":{
"gateway_ip":"...",
"subnet_mask":"...",
"range_start":"...",
@@ -406,6 +428,10 @@ Response:
"lease_duration":60,
"icmp_timeout_msec":0
},
"v6":{
"range_start":"...",
"lease_duration":60,
}
"leases":[
{"ip":"...","mac":"...","hostname":"...","expires":"..."}
...
@@ -464,14 +490,22 @@ Request:
POST /control/dhcp/set_config
{
"v4":{
"enabled":true,
"interface_name":"vboxnet0",
"gateway_ip":"192.169.56.1",
"subnet_mask":"255.255.255.0",
"range_start":"192.169.56.3",
"range_end":"192.169.56.3",
"range_start":"192.169.56.100",
"range_end":"192.169.56.200",
"lease_duration":60,
"icmp_timeout_msec":0
"icmp_timeout_msec":0,
},
"v6":{
"enabled":false,
"range_start":"...",
"lease_duration":60,
}
}
Response:
@@ -612,16 +646,25 @@ Response:
### API: Reset DHCP configuration
Clear all DHCP leases and configuration settings.
DHCP server will be stopped if it's currently running.
Request:
POST /control/dhcp/reset
{
"what": "all" | "leases"
}
Response:
200 OK
`what`:
* all:
Clear all DHCP leases and configuration settings.
DHCP server will be stopped if it's currently running.
* leases:
Clear all DHCP leases
## TLS
@@ -883,6 +926,9 @@ Response:
200 OK
{
"upstream_dns": ["tls://...", ...],
"bootstrap_dns": ["1.2.3.4", ...],
"protection_enabled": true | false,
"ratelimit": 1234,
"blocking_mode": "default" | "nxdomain" | "null_ip" | "custom_ip",
@@ -891,6 +937,8 @@ Response:
"edns_cs_enabled": true | false,
"dnssec_enabled": true | false
"disable_ipv6": true | false,
"fastest_addr": true | false, // use Fastest Address algorithm
"parallel_requests": true | false, // send DNS requests to all upstream servers at once
}
@@ -901,6 +949,9 @@ Request:
POST /control/dns_config
{
"upstream_dns": ["tls://...", ...],
"bootstrap_dns": ["1.2.3.4", ...],
"protection_enabled": true | false,
"ratelimit": 1234,
"blocking_mode": "default" | "nxdomain" | "null_ip" | "custom_ip",
@@ -909,6 +960,8 @@ Request:
"edns_cs_enabled": true | false,
"dnssec_enabled": true | false
"disable_ipv6": true | false,
"fastest_addr": true | false, // use Fastest Address algorithm
"parallel_requests": true | false, // send DNS requests to all upstream servers at once
}
Response:
@@ -947,7 +1000,7 @@ Response:
{
allowed_clients: ["127.0.0.1", ...]
disallowed_clients: ["127.0.0.1", ...]
blocked_hosts: ["host.com", ...]
blocked_hosts: ["host.com", ...] // host name or a wildcard
}
@@ -1288,12 +1341,22 @@ Request:
{
"enabled": true | false
"interval": 1 | 7 | 30 | 90
"anonymize_client_ip": true | false // anonymize clients' IP addresses
}
Response:
200 OK
`anonymize_client_ip`:
1. New log entries written to a log file will contain modified client IP addresses. Note that there's no way to obtain the full IP address later for these entries.
2. `GET /control/querylog` response data will contain modified client IP addresses (masked /24 or /112).
3. Searching by client IP won't work for the previously stored entries.
How `anonymize_client_ip` affects Stats:
1. After AGH restart, new stats entries will contain modified client IP addresses.
2. Existing entries are not affected.
### API: Get querylog parameters
@@ -1308,6 +1371,7 @@ Response:
{
"enabled": true | false
"interval": 1 | 7 | 30 | 90
"anonymize_client_ip": true | false
}
@@ -1319,7 +1383,10 @@ This is how DNS requests and responses are filtered by AGH:
* 'dnsproxy' module receives DNS request from client and passes control to AGH
* AGH applies filtering logic to the host name in DNS Question:
* process Rewrite rules
* process Rewrite rules.
Can set CNAME and a list of IP addresses.
* process /etc/hosts entries.
Can set a list of IP addresses or a hostname (for PTR requests).
* match host name against filtering lists
* match host name against blocked services rules
* process SafeSearch rules
@@ -1429,7 +1496,7 @@ Request:
{
"name": "..."
"url": "..."
"url": "..." // URL or an absolute file path
"whitelist": true
}
@@ -1595,70 +1662,3 @@ Response:
}
If no client is configured then authentication is disabled and server sends an empty response.
## Replace dnsmasq on OpenWRT
`/etc/init.d/dnsmasq` script creates a dnsmasq.conf file and then starts dnsmasq.
To replace dnsmasq we have to read system configuration files and update (create new, if necessary) our .yaml file accordingly.
If started as:
./AdGuardHome --import-openwrt-config
* Read `/etc/config/network`:
config interface 'lan'
option netmask '255.255.255.0'
option ipaddr '192.168.8.1'
* Read `/etc/config/dhcp`:
config dhcp 'lan'
option start '100'
option limit '150'
option leasetime '12h'
config dnsmasq
option leasefile '/tmp/dhcp.leases'
* Write this yaml configuration:
dhcp:
enabled: true
interface_name: "br-lan"
gateway_ip: "192.168.8.1"
subnet_mask: "255.255.255.0"
range_start: "192.168.8.100"
range_end: "192.168.8.249"
lease_duration: 86400
icmp_timeout_msec: 1000
dnsmasq_leasefile "/tmp/dhcp.leases"
* Read `/etc/config/dhcp`:
config host '123412341234'
option mac '12:34:12:34:12:34'
option ip '192.168.8.2'
option name 'hostname'
* Add a static lease to leases.db:
12:34:12:34:12:34 | 192.168.8.2 | hostname
* Read `/etc/resolv.conf`:
nameserver <IP1>
nameserver <IP2>
* Write this yaml configuration:
dns:
bootstrap_dns:
- IP1
- IP2
And service script starts AGH like this:
.../AdGuardHome --import-openwrt-config
.../AdGuardHome

View File

@@ -5,6 +5,9 @@ GOPATH := $(shell go env GOPATH)
JSFILES = $(shell find client -path client/node_modules -prune -o -type f -name '*.js')
STATIC = build/static/index.html
CHANNEL ?= release
DOCKER_IMAGE_DEV_NAME=adguardhome-dev
DOCKERFILE=packaging/docker/Dockerfile
DOCKERFILE_HUB=packaging/docker/Dockerfile.travis
TARGET=AdGuardHome
@@ -26,6 +29,11 @@ $(TARGET): $(STATIC) *.go home/*.go dhcpd/*.go dnsfilter/*.go dnsforward/*.go
CGO_ENABLED=0 go build -ldflags="-s -w -X main.version=$(GIT_VERSION) -X main.channel=$(CHANNEL) -X main.goarm=$(GOARM)" -asmflags="-trimpath=$(PWD)" -gcflags="-trimpath=$(PWD)"
PATH=$(GOPATH)/bin:$(PATH) packr clean
docker:
docker build -t "$(DOCKER_IMAGE_DEV_NAME)" -f "$(DOCKERFILE)" .
@echo Now you can run the docker image:
@echo docker run --name "$(DOCKER_IMAGE_DEV_NAME)" -p 53:53/tcp -p 53:53/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp $(DOCKER_IMAGE_DEV_NAME)
clean:
$(MAKE) cleanfast
rm -rf build

View File

@@ -26,9 +26,19 @@
<a href="https://golangci.com/r/github.com/AdguardTeam/AdGuardHome">
<img src="https://golangci.com/badges/github.com/AdguardTeam/AdGuardHome.svg" alt="GolangCI" />
</a>
<br />
<a href="https://github.com/AdguardTeam/AdGuardHome/releases">
<img src="https://img.shields.io/github/release/AdguardTeam/AdGuardHome/all.svg" alt="Latest release" />
</a>
<a href="https://snapcraft.io/adguard-home">
<img alt="adguard-home" src="https://snapcraft.io/adguard-home/badge.svg" />
</a>
<a href="https://hub.docker.com/r/adguard/adguardhome">
<img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/adguard/adguardhome.svg?maxAge=604800" />
</a>
<a href="https://hub.docker.com/r/adguard/adguardhome">
<img alt="Docker Stars" src="https://img.shields.io/docker/stars/adguard/adguardhome.svg?maxAge=604800" />
</a>
</p>
<br />
@@ -59,7 +69,9 @@ It operates as a DNS server that re-routes tracking domains to a "black hole," t
<a id="getting-started"></a>
## Getting Started
Please read the [Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started) article on our Wiki to learn how to install AdGuard Home, and how to configure your devices to use it.
Please read the **[Getting Started](https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started)** article on our Wiki to learn how to install AdGuard Home, and how to configure your devices to use it.
If you're running **Linux**, there's a secure and easy way to install AdGuard Home - you can get it from the [Snap Store](https://snapcraft.io/adguard-home).
Alternatively, you can use our [official Docker image](https://hub.docker.com/r/adguard/adguardhome).
@@ -69,6 +81,7 @@ Alternatively, you can use our [official Docker image](https://hub.docker.com/r/
* [AdGuard Home as a DNS-over-HTTPS or DNS-over-TLS server](https://github.com/AdguardTeam/AdGuardHome/wiki/Encryption)
* [How to install and run AdGuard Home on Raspberry Pi](https://github.com/AdguardTeam/AdGuardHome/wiki/Raspberry-Pi)
* [How to install and run AdGuard Home on a Virtual Private Server](https://github.com/AdguardTeam/AdGuardHome/wiki/VPS)
* [How to write your own hosts blocklists properly](https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists)
### API
@@ -128,7 +141,7 @@ It depends.
You will need:
* [go](https://golang.org/dl/) v1.13 or later.
* [go](https://golang.org/dl/) v1.14 or later.
* [node.js](https://nodejs.org/en/download/) v10 or later.
You can either install them via the provided links or use [brew.sh](https://brew.sh/) if you're on Mac:
@@ -165,11 +178,12 @@ You are welcome to fork this repository, make your changes and submit a pull req
<a id="test-unstable-versions"></a>
### Test unstable versions
There are two options how you can install an unstable version.
You can either install a beta version of AdGuard Home which we update periodically,
or you can use the Docker image from the `edge` tag, which is synced with the repo master branch.
There are three options how you can install an unstable version.
1. You can either install a beta version of AdGuard Home which we update periodically.
2. You can use the Docker image from the `edge` tag, which is synced with the repo master branch.
3. You can install AdGuard Home from `beta` or `edge` channels on the Snap Store.
* [Docker Hub](https://hub.docker.com/r/adguard/adguardhome)
* Beta builds
* [Raspberry Pi (32-bit ARMv6)](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_arm.tar.gz)
* [MacOS](https://static.adguard.com/adguardhome/beta/AdGuardHome_MacOS.zip)
@@ -182,6 +196,8 @@ or you can use the Docker image from the `edge` tag, which is synced with the re
* [Linux 32-bit ARMv5](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_armv5.tar.gz)
* [MIPS](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mips.tar.gz)
* [MIPSLE](https://static.adguard.com/adguardhome/beta/AdGuardHome_linux_mipsle.tar.gz)
* [Docker Hub](https://hub.docker.com/r/adguard/adguardhome)
* [Snap Store](https://snapcraft.io/adguard-home)
<a id="reporting-issues"></a>
### Report issues
@@ -226,3 +242,5 @@ This software wouldn't have been possible without:
You might have seen that [CoreDNS](https://coredns.io) was mentioned here before — we've stopped using it in AdGuardHome. While we still use it on our servers for [AdGuard DNS](https://adguard.com/adguard-dns/overview.html) service, it seemed like an overkill for Home as it impeded with Home features that we plan to implement.
For a full list of all node.js packages in use, please take a look at [client/package.json](https://github.com/AdguardTeam/AdGuardHome/blob/master/client/package.json) file.
For info on which exact domains that are blocked by the *Blocked services* function, it can be found at [dnsfilter/blocked_services.go](https://github.com/AdguardTeam/AdGuardHome/blob/master/dnsfilter/blocked_services.go)

View File

@@ -4,7 +4,7 @@ set -eE
set -o pipefail
set -x
DOCKERFILE="Dockerfile.travis"
DOCKERFILE="packaging/docker/Dockerfile.hub"
IMAGE_NAME="adguard/adguardhome"
if [[ "${TRAVIS_BRANCH}" == "master" ]]

292
build_snap.sh Executable file
View File

@@ -0,0 +1,292 @@
#!/usr/bin/env bash
set -eE
set -o pipefail
set -x
BUILDER_IMAGE="adguard/snapcraft:1.0"
SNAPCRAFT_TMPL="packaging/snap/snapcraft.yaml"
SNAP_NAME="adguard-home"
LAUNCHPAD_CREDENTIALS_DIR=".local/share/snapcraft/provider/launchpad"
if [[ -z ${VERSION} ]]; then
VERSION=$(git describe --abbrev=4 --dirty --always --tags)
echo "VERSION env variable is not set, getting it from git: ${VERSION}"
fi
# If bash is interactive, set `-it` parameter for docker run
INTERACTIVE=""
if [ -t 0 ]; then
INTERACTIVE="-it"
fi
function usage() {
cat <<EOF
Usage: ${0##*/} command [options]
Please note that in order for the builds to work properly, you need to setup some env variables.
These are necessary for "remote-build' command.
Read this doc on how to generate them: https://uci.readthedocs.io/en/latest/oauth.html
* LAUNCHPAD_KEY -- launchpad CI key
* LAUNCHPAD_ACCESS_TOKEN -- launchpad access token
* LAUNCHPAD_ACCESS_SECRET -- launchpad access secret
These are necessary for snapcraft publish command to work.
They can be exported using "snapcraft export-login"
* SNAPCRAFT_MACAROON
* SNAPCRAFT_UBUNTU_DISCHARGE
* SNAPCRAFT_EMAIL
Examples:
${0##*/} build-docker - builds snaps using remote-build inside a Docker environment
${0##*/} build - builds snaps using remote-build
${0##*/} publish-docker-beta - publishes snaps to the beta channel using Docker environment
${0##*/} publish-docker-release - publishes snaps to the release channel using Docker environment
${0##*/} publish-beta - publishes snaps to the beta channel
${0##*/} publish-release - publishes snaps to the release channel
${0##*/} cleanup - clean up temporary files that were created by the builds
EOF
exit 1
}
#######################################
# helper functions
#######################################
function prepare() {
if [ -z "${LAUNCHPAD_KEY}" ] || [ -z "${LAUNCHPAD_ACCESS_TOKEN}" ] || [ -z "${LAUNCHPAD_ACCESS_SECRET}" ]; then
echo "Launchpad oauth tokens are not set, exiting"
usage
exit 1
fi
if [ -z "${SNAPCRAFT_MACAROON}" ] || [ -z "${SNAPCRAFT_UBUNTU_DISCHARGE}" ] || [ -z "${SNAPCRAFT_EMAIL}" ]; then
echo "Snapcraft auth params are not set, exiting"
usage
exit 1
fi
# Launchpad oauth tokens data is necessary to run snapcraft remote-build
#
# Here's an instruction on how to generate launchpad OAuth tokens:
# https://uci.readthedocs.io/en/latest/oauth.html
#
# Launchpad credentials are necessary to run snapcraft remote-build command
echo "[1]
consumer_key = ${LAUNCHPAD_KEY}
consumer_secret =
access_token = ${LAUNCHPAD_ACCESS_TOKEN}
access_secret = ${LAUNCHPAD_ACCESS_SECRET}
" >launchpad_credentials
# Snapcraft login data
# It can be exported using snapcraft export-login command
echo "[login.ubuntu.com]
macaroon = ${SNAPCRAFT_MACAROON}
unbound_discharge = ${SNAPCRAFT_UBUNTU_DISCHARGE}
email = ${SNAPCRAFT_EMAIL}" >snapcraft_login
# Prepare the snap configuration
cp ${SNAPCRAFT_TMPL} ./snapcraft.yaml
sed -i.bak 's/dev_version/'"${VERSION}"'/g' ./snapcraft.yaml
rm -f snapcraft.yaml.bak
}
build_snap() {
# prepare credentials
prepare
# copy them to the directory where snapcraft will be able to read them
mkdir -p ~/${LAUNCHPAD_CREDENTIALS_DIR}
cp -f snapcraft_login ~/${LAUNCHPAD_CREDENTIALS_DIR}/credentials
chmod 600 ~/${LAUNCHPAD_CREDENTIALS_DIR}/credentials
# run the build
snapcraft remote-build --build-on=${ARCH} --launchpad-accept-public-upload
# remove the credentials - we don't need them anymore
rm -rf ~/${LAUNCHPAD_CREDENTIALS_DIR}
# remove version from the file name
rename_snap_file
# cleanup credentials
cleanup
}
build_snap_docker() {
# prepare credentials
prepare
docker run ${INTERACTIVE} --rm \
-v $(pwd):/build \
-v $(pwd)/launchpad_credentials:/root/${LAUNCHPAD_CREDENTIALS_DIR}/credentials:ro \
${BUILDER_IMAGE} \
snapcraft remote-build --build-on=${ARCH} --launchpad-accept-public-upload
# remove version from the file name
rename_snap_file
# cleanup credentials
cleanup
}
rename_snap_file() {
# In order to make working with snaps easier later on
# we remove version from the file name
# Check that the snap file exists
snapFile="${SNAP_NAME}_${VERSION}_${ARCH}.snap"
if [ ! -f ${snapFile} ]; then
echo "Snap file ${snapFile} not found!"
exit 1
fi
mv -f ${snapFile} "${SNAP_NAME}_${ARCH}.snap"
}
publish_snap() {
# prepare credentials
prepare
# Check that the snap file exists
snapFile="${SNAP_NAME}_${ARCH}.snap"
if [ ! -f ${snapFile} ]; then
echo "Snap file ${snapFile} not found!"
exit 1
fi
# Login if necessary
snapcraft login --with=snapcraft_login
# Push to the channel
snapcraft push --release=${CHANNEL} ${snapFile}
# cleanup credentials
cleanup
}
publish_snap_docker() {
# prepare credentials
prepare
# Check that the snap file exists
snapFile="${SNAP_NAME}_${ARCH}.snap"
if [ ! -f ${snapFile} ]; then
echo "Snap file ${snapFile} not found!"
exit 1
fi
# Login and publish the snap
docker run ${INTERACTIVE} --rm \
-v $(pwd):/build \
${BUILDER_IMAGE} \
sh -c "snapcraft login --with=/build/snapcraft_login && snapcraft push --release=${CHANNEL} /build/${snapFile}"
# cleanup credentials
cleanup
}
#######################################
# main functions
#######################################
build() {
if [[ -n "$1" ]]; then
echo "ARCH is set to $1"
ARCH=$1 build_snap
else
ARCH=i386 build_snap
ARCH=arm64 build_snap
ARCH=armhf build_snap
ARCH=amd64 build_snap
fi
}
build_docker() {
if [[ -n "$1" ]]; then
echo "ARCH is set to $1"
ARCH=$1 build_snap_docker
else
ARCH=i386 build_snap_docker
ARCH=arm64 build_snap_docker
ARCH=armhf build_snap_docker
ARCH=amd64 build_snap_docker
fi
}
publish_docker() {
if [[ -z $1 ]]; then
echo "No channel specified"
exit 1
fi
CHANNEL="${1}"
if [ "$CHANNEL" != "stable" ] && [ "$CHANNEL" != "beta" ]; then
echo "$CHANNEL is an invalid value for the update channel!"
exit 1
fi
if [[ -n "$2" ]]; then
echo "ARCH is set to $2"
ARCH=$2 publish_snap_docker
else
ARCH=i386 publish_snap_docker
ARCH=arm64 publish_snap_docker
ARCH=armhf publish_snap_docker
ARCH=amd64 publish_snap_docker
fi
}
publish() {
if [[ -z $1 ]]; then
echo "No channel specified"
exit 1
fi
CHANNEL="${1}"
if [ "$CHANNEL" != "stable" ] && [ "$CHANNEL" != "beta" ]; then
echo "$CHANNEL is an invalid value for the update channel!"
exit 1
fi
if [[ -n "$2" ]]; then
echo "ARCH is set to $2"
ARCH=$2 publish_snap
else
ARCH=i386 publish_snap
ARCH=arm64 publish_snap
ARCH=armhf publish_snap
ARCH=amd64 publish_snap
fi
}
cleanup() {
rm -f launchpad_credentials
rm -f snapcraft.yaml
rm -f snapcraft.yaml.bak
rm -f snapcraft_login
git checkout snapcraft.yaml
}
#######################################
# main
#######################################
if [[ -z $1 || $1 == "--help" || $1 == "-h" ]]; then
usage
fi
case "$1" in
"build-docker") build_docker $2 ;;
"build") build $2 ;;
"publish-docker-beta") publish_docker beta $2 ;;
"publish-docker-release") publish_docker stable $2 ;;
"publish-beta") publish beta $2 ;;
"publish-release") publish stable $2 ;;
"prepare") prepare ;;
"cleanup") cleanup ;;
*) usage ;;
esac
exit 0

View File

@@ -16,12 +16,14 @@ module.exports = {
],
"scopes": [
"",
"ui",
"global",
"dnsfilter",
"home",
"dnsforward",
"dhcpd",
"documentation"
"querylog",
"documentation",
],
"types": {
"+": {

1
client/.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
*.js text eol=lf

14
client/babel.config.js vendored Normal file
View File

@@ -0,0 +1,14 @@
module.exports = (api) => {
api.cache(false);
return {
presets: [
'@babel/preset-env',
'@babel/preset-react',
],
plugins: [
'@babel/plugin-proposal-class-properties',
'@babel/plugin-transform-runtime',
'@babel/plugin-proposal-object-rest-spread',
],
};
};

5
client/jest.config.js vendored Normal file
View File

@@ -0,0 +1,5 @@
module.exports = {
transform: {
'^.+\\.jsx?$': 'babel-jest',
},
};

18512
client/package-lock.json generated vendored

File diff suppressed because it is too large Load Diff

169
client/package.json vendored
View File

@@ -1,80 +1,93 @@
{
"name": "dashboard",
"version": "0.1.0",
"private": true,
"scripts": {
"build-dev": "NODE_ENV=development ./node_modules/.bin/webpack --config webpack.dev.js",
"watch": "NODE_ENV=development ./node_modules/.bin/webpack --config webpack.dev.js --watch",
"build-prod": "NODE_ENV=production ./node_modules/.bin/webpack --config webpack.prod.js",
"lint": "eslint client/"
},
"dependencies": {
"@nivo/line": "^0.49.1",
"axios": "^0.19.0",
"classnames": "^2.2.6",
"date-fns": "^1.29.0",
"i18next": "^12.0.0",
"i18next-browser-languagedetector": "^2.2.3",
"lodash": "^4.17.15",
"nanoid": "^1.2.3",
"prop-types": "^15.7.2",
"react": "^16.4.0",
"react-click-outside": "^3.0.1",
"react-dom": "^16.4.0",
"react-i18next": "^8.2.0",
"react-modal": "^3.4.5",
"react-redux": "^5.0.7",
"react-redux-loading-bar": "^4.0.7",
"react-router-dom": "^4.2.2",
"react-router-hash-link": "^1.2.2",
"react-select": "^3.0.8",
"react-table": "^6.10.3",
"react-transition-group": "^2.4.0",
"redux": "^4.0.0",
"redux-actions": "^2.4.0",
"redux-form": "^7.4.2",
"redux-thunk": "^2.3.0",
"url-polyfill": "^1.1.7"
},
"devDependencies": {
"autoprefixer": "^8.6.3",
"babel-core": "6.26.0",
"babel-eslint": "^8.2.3",
"babel-loader": "7.1.2",
"babel-plugin-transform-runtime": "^6.23.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-runtime": "6.26.0",
"clean-webpack-plugin": "^0.1.19",
"compression-webpack-plugin": "^1.1.11",
"copy-webpack-plugin": "^4.6.0",
"css-loader": "^2.1.1",
"eslint": "^4.19.1",
"eslint-config-airbnb-base": "^12.1.0",
"eslint-config-react-app": "^2.1.0",
"eslint-import-resolver-webpack": "^0.12.1",
"eslint-loader": "1.9.0",
"eslint-plugin-import": "^2.12.0",
"eslint-plugin-jsx-a11y": "5.1.1",
"eslint-plugin-react": "^7.9.1",
"extract-text-webpack-plugin": "^3.0.2",
"file-loader": "1.1.5",
"html-webpack-plugin": "^3.2.0",
"postcss-flexbugs-fixes": "3.2.0",
"postcss-import": "^11.1.0",
"postcss-loader": "^2.1.5",
"postcss-mixins": "^6.2.0",
"postcss-preset-env": "^5.1.0",
"postcss-svg": "^2.4.0",
"style-loader": "^0.21.0",
"stylelint": "^9.10.1",
"stylelint-webpack-plugin": "0.10.4",
"uglifyjs-webpack-plugin": "^1.2.7",
"url-loader": "^1.0.1",
"webpack": "3.8.1",
"webpack-dev-server": "^3.1.14",
"webpack-merge": "^4.1.3",
"svg-url-loader": "^2.3.2"
}
"name": "dashboard",
"version": "0.1.0",
"private": true,
"scripts": {
"build-dev": "cross-env BUILD_ENV=dev webpack --config webpack.dev.js",
"watch": "cross-env BUILD_ENV=dev webpack --config webpack.dev.js --watch",
"build-prod": "cross-env BUILD_ENV=prod webpack --config webpack.prod.js",
"lint": "eslint src",
"test": "jest",
"test:watch": "jest --watch"
},
"dependencies": {
"@nivo/line": "^0.49.1",
"axios": "^0.19.2",
"classnames": "^2.2.6",
"date-fns": "^1.29.0",
"i18next": "^19.4.4",
"i18next-browser-languagedetector": "^4.2.0",
"ipaddr.js": "^1.9.1",
"lodash": "^4.17.15",
"nanoid": "^3.1.9",
"prop-types": "^15.7.2",
"react": "^16.13.1",
"react-click-outside": "^3.0.1",
"react-dom": "^16.13.1",
"react-i18next": "^11.4.0",
"react-modal": "^3.11.2",
"react-redux": "^7.2.0",
"react-redux-loading-bar": "^4.6.0",
"react-router-dom": "^5.2.0",
"react-router-hash-link": "^1.2.2",
"react-select": "^3.1.0",
"react-table": "^6.11.4",
"react-transition-group": "^4.4.1",
"redux": "^4.0.5",
"redux-actions": "^2.6.5",
"redux-form": "^8.3.5",
"redux-thunk": "^2.3.0",
"url-polyfill": "^1.1.9"
},
"devDependencies": {
"@babel/core": "^7.9.6",
"@babel/plugin-proposal-class-properties": "^7.8.3",
"@babel/plugin-proposal-object-rest-spread": "^7.9.6",
"@babel/plugin-transform-runtime": "^7.9.6",
"@babel/preset-env": "^7.9.6",
"@babel/preset-react": "^7.9.4",
"autoprefixer": "^9.8.0",
"babel-eslint": "^10.1.0",
"babel-loader": "^8.1.0",
"clean-webpack-plugin": "^3.0.0",
"copy-webpack-plugin": "^6.0.1",
"cross-env": "^7.0.2",
"css-loader": "^3.5.3",
"eslint": "^6.8.0",
"eslint-config-airbnb": "^18.1.0",
"eslint-import-resolver-webpack": "^0.12.1",
"eslint-loader": "^4.0.2",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-jsx-a11y": "^6.2.3",
"eslint-plugin-react": "^7.20.0",
"eslint-plugin-react-hooks": "^2.5.0",
"file-loader": "6.0.0",
"html-webpack-plugin": "^4.3.0",
"jest": "^26.0.1",
"mini-css-extract-plugin": "^0.9.0",
"path": "^0.12.7",
"postcss-flexbugs-fixes": "4.2.1",
"postcss-loader": "^3.0.0",
"style-loader": "^1.2.1",
"stylelint": "^13.5.0",
"stylelint-webpack-plugin": "2.0.0",
"url-loader": "^4.1.0",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.11.0",
"webpack-merge": "^4.2.2"
},
"browserslist": {
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
],
"production": [
">1%",
"last 4 versions",
"Firefox ESR",
"not ie < 9"
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="144.000000pt" height="144.000000pt" viewBox="0 0 144.000000 144.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,144.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M485 1424 c-159 -24 -332 -74 -449 -130 l-39 -19 6 -130 c4 -71 13
-166 21 -210 66 -364 268 -656 608 -883 89 -59 79 -59 176 4 336 218 540 516
608 884 11 60 14 91 20 216 l6 120 -78 33 c-267 112 -604 156 -879 115z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 743 B

View File

@@ -6,7 +6,9 @@
<meta name="theme-color" content="#000000">
<meta name="google" content="notranslate">
<meta http-equiv="x-dns-prefetch-control" content="off">
<link rel="icon" type="image/png" href="favicon.png" sizes="48x48">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-180x180.png" />
<link rel="mask-icon" href="assets/safari-pinned-tab.svg" color="#5bbad5">
<link rel="icon" type="image/png" href="assets/favicon.png" sizes="48x48">
<title>AdGuard Home</title>
</head>
<body>

View File

@@ -5,7 +5,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<meta name="google" content="notranslate">
<link rel="icon" type="image/png" href="favicon.png" sizes="48x48">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-180x180.png" />
<link rel="mask-icon" href="assets/safari-pinned-tab.svg" color="#5bbad5">
<link rel="icon" type="image/png" href="assets/favicon.png" sizes="48x48">
<title>Setup AdGuard Home</title>
</head>
<body>

View File

@@ -5,7 +5,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#000000">
<meta name="google" content="notranslate">
<link rel="icon" type="image/png" href="favicon.png" sizes="48x48">
<link rel="apple-touch-icon" sizes="180x180" href="assets/apple-touch-icon-180x180.png" />
<link rel="mask-icon" href="assets/safari-pinned-tab.svg" color="#5bbad5">
<link rel="icon" type="image/png" href="assets/favicon.png" sizes="48x48">
<title>Login</title>
</head>
<body>

View File

@@ -47,7 +47,7 @@
"disabled_protection": "Защитата е забранена",
"refresh_statics": "Обнови статистиката",
"dns_query": "DNS запитвания",
"blocked_by": "Блокирани от",
"blocked_by": "<0>Блокирани от</0>",
"stats_malware_phishing": "вируси/атаки",
"stats_adult": "сайтове за възрастни",
"stats_query_domain": "Най-отваряни страници",
@@ -97,7 +97,6 @@
"filters_and_hosts_hint": "AdGuard Home разбира adblock и host синтаксис.",
"cancel_btn": "Откажи",
"enter_name_hint": "Въведи име",
"enter_url_hint": "Въведи URL",
"custom_filter_rules": "Местни правила за филтриране",
"custom_filter_rules_hint": "Въвеждайте всяко правило на нов ред. Може да използвате adblock или hosts файлов синтаксис.",
"examples_title": "Примери",

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Nastavení klienta",
"example_upstream_reserved": "můžete zadat DNS upstream <0>pro konkrétní doménu(y)</0>",
"upstream_parallel": "Použijte paralelní dotazy na urychlení řešení simultánním dotazováním na všechny navazující servery",
"example_upstream_reserved": "Můžete zadat DNS upstream <0>pro konkrétní doménu(y)</0>",
"upstream_parallel": "Použijte paralelní požadavky na urychlení řešení simultánním dotazováním na všechny navazující servery",
"parallel_requests": "Paralelní požadavky",
"bootstrap_dns": "Bootstrap DNS servery",
"bootstrap_dns_desc": "Servery Bootstrap DNS se používají k řešení IP adres DoH/DoT, které zadáváte jako upstreamy.",
"check_dhcp_servers": "Zkontrolovat DHCP servery",
@@ -25,7 +26,7 @@
"form_error_mac_format": "Neplatný formát MAC",
"form_error_client_id_format": "Neplatný formát ID klienta",
"form_error_positive": "Musí být větší než 0",
"form_error_negative": "Musí být rovno 0 nebo vyšší",
"form_error_negative": "Musí být rovno nebo větší než 0",
"dhcp_form_gateway_input": "IP brána",
"dhcp_form_subnet_input": "Maska podsítě",
"dhcp_form_range_title": "Rozsah IP adres",
@@ -88,7 +89,7 @@
"number_of_dns_query_days_plural": "Počet DNS dotazů zpracovaných za posledních {{count}} dní",
"number_of_dns_query_24_hours": "Počet DNS dotazů zpracovaných za posledních 24 hodin",
"number_of_dns_query_blocked_24_hours": "Počet požadavků DNS zablokovaných filtrem reklam a seznamy blokování hostitelů",
"number_of_dns_query_blocked_24_hours_by_sec": "Počet požadavků DNS zablokovaných AdGuard modulem Bezpečnost prohlížení",
"number_of_dns_query_blocked_24_hours_by_sec": "Počet požadavků DNS zablokovaných AdGuard modulem Bezpečné prohlížení",
"number_of_dns_query_blocked_24_hours_adult": "Počet zablokovaných stránek pro dospělé",
"enforced_save_search": "Vynucené bezpečné vyhledávání",
"number_of_dns_query_to_safe_search": "Počet požadavků DNS na vyhledávače, při kterých bylo vynucené bezpečné vyhledávání",
@@ -96,8 +97,8 @@
"average_processing_time_hint": "Průměrný čas zpracování požadavků DNS v milisekundách",
"block_domain_use_filters_and_hosts": "Blokovat domény pomocí filtrů a seznamů adres",
"filters_block_toggle_hint": "Pravidla blokování můžete nastavit v nastavení <a href='#filters'>Filtry</a>.",
"use_adguard_browsing_sec": "Použít službu AdGuard Bezpečnost prohlížení",
"use_adguard_browsing_sec_hint": "AdGuard Home zkontroluje, zda je doména na seznamu zakázaných služby Bezpečnost prohlížení. Použije API vyhledávání přátelské k ochraně soukromí na provedení kontroly: na server je poslána pouze krátká předpona názvu domény SHA256 hash.",
"use_adguard_browsing_sec": "Použít službu AdGuard Bezpečné prohlížení",
"use_adguard_browsing_sec_hint": "AdGuard Home zkontroluje, zda je doména na seznamu zakázaných ve službě Bezpečné prohlížení. Použije vyhledávací API přátelské k ochraně soukromí na provedení kontroly: na server je odeslána pouze krátká předpona SHA256 otisku názvu domény.",
"use_adguard_parental": "Použít službu AdGuard Rodičovská kontrola",
"use_adguard_parental_hint": "AdGuard Home zkontroluje, zda doména obsahuje materiály pro dospělé. Používá stejné API přátelské k ochraně osobních údajů jako služba Bezpečnost prohlížení.",
"enforce_safe_search": "Vynutit bezpečné vyhledávání",
@@ -115,7 +116,7 @@
"upstream_dns": "Upstream DNS servery",
"upstream_dns_hint": "Pokud toto pole ponecháte prázdné, AdGuard Home použije <a href='https://www.quad9.net/' target='_blank'>Quad9</a> jako upstream.",
"test_upstream_btn": "Test upstreamů",
"upstreams": "Upstreamy",
"upstreams": "Odesláno",
"apply_btn": "Použít",
"disabled_filtering_toast": "Vypnuté filtrování",
"enabled_filtering_toast": "Zapnuté filtrování",
@@ -140,7 +141,7 @@
"add_allowlist": "Přidat seznam povolených",
"cancel_btn": "Zrušit",
"enter_name_hint": "Zadejte název",
"enter_url_hint": "Zadejte URL",
"enter_url_or_path_hint": "Zadejte URL nebo úplnou cestu k seznamu",
"check_updates_btn": "Zkontrolovat aktualizace",
"new_blocklist": "Nový seznam blokovaných",
"new_allowlist": "Nový seznam povolených",
@@ -149,6 +150,7 @@
"enter_valid_blocklist": "Zadejte platnou adresu URL na seznam blokovaných.",
"enter_valid_allowlist": "Zadejte platnou adresu URL na seznam povolených.",
"form_error_url_format": "Neplatný formát URL",
"form_error_url_or_path_format": "Neplatná URL nebo úplná cesta k seznamu",
"custom_filter_rules": "Vlastní pravidla filtrování",
"custom_filter_rules_hint": "Na každý řádek vložte jedno pravidlo. Můžete použít buď pravidla blokování reklam nebo syntaxe hostitelských souborů.",
"examples_title": "Příklady",
@@ -199,7 +201,9 @@
"query_log_disabled": "Protokol dotazu je zakázán a lze jej nakonfigurovat v <0>nastavení</0>",
"query_log_strict_search": "Pro striktní vyhledávání použijte dvojité uvozovky",
"query_log_retention_confirm": "Opravdu chcete změnit uchovávání protokolu dotazů? Pokud snížíte hodnotu intervalu, některá data budou ztracena",
"dns_config": "Konfigurace serveru DNS",
"anonymize_client_ip": "Anonymizovat IP klienta",
"anonymize_client_ip_desc": "Neukládat úplnou IP adresu klienta do protokolů a statistik",
"dns_config": "Konfigurace DNS serveru",
"blocking_mode": "Režim blokování",
"default": "Výchozí",
"nxdomain": "NXDOMAIN",
@@ -210,15 +214,15 @@
"form_enter_rate_limit": "Zadejte rychlostní limit",
"rate_limit": "Rychlostní limit",
"edns_enable": "Povolit klientskou podsíť EDNS",
"edns_cs_desc": "Pokud je povoleno, AdGuard Home bude odesílat podsítě klientů na servery DNS.",
"edns_cs_desc": "Pokud je povoleno, AdGuard Home bude směřovat podsítě klientů na servery DNS.",
"rate_limit_desc": "Počet požadavků za sekundu, které smí jeden klient provádět (0: neomezeno)",
"blocking_ipv4_desc": "IP adresa, která se má vrátit v případě blokovaného požadavku A",
"blocking_ipv6_desc": "IP adresa, která se má vrátit v případě blokovaného požadavku AAAA",
"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 pomocí NXDOMAIN, pokud je blokováno pravidlem ve stylu Adblock; odezva pomocí IP adresy uvedené v pravidle, pokud je blokováno pravidlem /etc/hosts-style",
"blocking_mode_nxdomain": "NXDOMAIN: Odezva s kódem NXDOMAIN",
"blocking_mode_null_ip": "Nulová IP: Odezva s nulovou IP adresou (0.0.0.0 pro A; :: pro AAAA)",
"blocking_mode_custom_ip": "Vlastní IP. odezva s ručně nastavenou IP adresou",
"upstream_dns_client_desc": "Pokud toto pole ponecháte prázdné, AdGuard Home použije servery nakonfigurované v<0>nastavení DNS</0>.",
"upstream_dns_client_desc": "Pokud toto pole ponecháte prázdné, AdGuard Home použije servery nakonfigurované v<0>DNS nastavení</0>.",
"source_label": "Zdroj",
"found_in_known_domain_db": "Nalezeno v databázi známých domén",
"category_label": "Kategorie",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Otevřete předvolby pro router. Obvykle k němu můžete přistupovat z prohlížeče prostřednictvím adresy URL (např. http://192.168.0.1/ nebo http://192.168.1.1/). Můžete být vyzváni k zadání hesla. Pokud si ho nepamatujete, můžete heslo resetovat stisknutím tlačítka na samotném routeru. Některé routery vyžadují specifickou aplikaci, která by v takovém případě měla být již nainstalována v počítači/telefonu.",
"install_devices_router_list_2": "Vyhledejte nastavení DHCP/DNS. Hledejte zkratku DNS vedle pole, které umožňuje vložit dvě nebo tři sady čísel, každé rozděleno do čtyř skupin s jedním až třemi číslicemi.",
"install_devices_router_list_3": "Zadejte adresy Vašeho serveru AdGuard Home.",
"install_devices_router_list_4": "Na některých typech routerů nemůžete nastavit vlastní DNS server. V tomto případě může AdGuard Home pomoct pokud jej nastavíte jako DHCP server. V ostatních případech byste si v manuálu k Vašemu routeru měli zjistit, jak nastavit vlastní DNS servery.",
"install_devices_windows_list_1": "Otevřete ovládací panel prostřednictvím nabídky Start nebo vyhledání v systému Windows.",
"install_devices_windows_list_2": "Přejděte na kategorii Síť a Internet a poté na Centrum sítí a sdílení.",
"install_devices_windows_list_3": "Na levé straně obrazovky najděte možnost Změnit nastavení adaptéru a klepněte na něj.",
@@ -315,8 +320,8 @@
"update_announcement": "AdGuard Home {{version}} je nyní k dispozici! <0>Klikněte zde<0> pro více informací.",
"setup_guide": "Průvodce nastavením",
"dns_addresses": "Adresy DNS",
"dns_start": "Spustí se server DNS",
"dns_status_error": "Chyba při získávání stavu DNS serveru",
"dns_start": "Spouští se DNS server",
"dns_status_error": "Chyba při kontrole stavu DNS serveru",
"down": "Dolů",
"fix": "Opravit",
"dns_providers": "Zde je <0>seznam známých poskytovatelů DNS</0>, z nichž si můžete vybrat.",
@@ -357,7 +362,7 @@
"access_disallowed_title": "Nepovolení klienti",
"access_disallowed_desc": "Seznam adres CIDR nebo IP. Pokud je nakonfigurován, AdGuard Home bude odmítat požadavky pouze z těchto IP adres.",
"access_blocked_title": "Blokované domény",
"access_blocked_desc": "Nezaměňujte to s filtry. AdGuard Home odstraní dotazy DNS s těmito doménami v otázce dotazu.",
"access_blocked_desc": "Nezaměňujte to s filtry. AdGuard Home odstraní dotazy DNS s těmito doménami v otázce dotazu. Zde můžete určit přesné názvy domén, zástupné znaky a pravidla URL adres, např. 'example.org', '*.example.org' nabo '||example.org^'.",
"access_settings_saved": "Nastavení přístupu bylo úspěšně uloženo",
"updates_checked": "Aktualizace úspěšně zkontrolovány",
"updates_version_equal": "AdGuard Home je aktuální",
@@ -385,6 +390,7 @@
"rewrite_confirm_delete": "Jste si jisti, že chcete smazat přesměrování DNS pro „{{key}}“?",
"rewrite_desc": "Umožňuje snadno nakonfigurovat vlastní DNS odezvy pro konkrétní název domény.",
"rewrite_applied": "Aplikované pravidlo přesměrování",
"rewrite_hosts_applied": "Přepsáno pravidlem souboru hosts",
"dns_rewrites": "Přesměrování DNS",
"form_domain": "Zadejte doménu",
"form_answer": "Zadejte IP adresu nebo název domény",
@@ -441,14 +447,16 @@
"netname": "Název sítě",
"descr": "Popis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Další informace</0> o vytváření vlastních seznamů zakázaných hostitelů.",
"blocked_by_response": "Zakázáno s odpovědí CNAME nebo IP",
"filtering_rules_learn_more": "<0>Další informace</0> o vytváření vlastních seznamů hostitelů.",
"blocked_by_response": "Zakázáno dle CNAME nebo IP v odpovědi",
"try_again": "Zkusit znovu",
"domain_desc": "Zadejte název domény nebo zástupný znak, který chcete přepsat.",
"example_rewrite_domain": "přepsat odezvy pouze pro tento název domény.",
"example_rewrite_wildcard": "přepsat odezvy pro všechny subdomény <0>example.org</0>.",
"domain_desc": "Zadejte zástupný znak nebo název domény, kterou chcete přepsat.",
"example_rewrite_domain": "přepsat odpovědi pouze pro tento název domény.",
"example_rewrite_wildcard": "přepsat odpovědi pro všechny subdomény <0>example.org</0>.",
"disable_ipv6": "Zakázat IPv6",
"disable_ipv6_desc": "Pokud je tato funkce povolena, budou všechny dotazy DNS pro adresy IPv6 (typ AAAA) zrušeny.",
"fastest_addr": "Nejrychlejší IP adresa",
"fastest_addr_desc": "Dotazovat všechny DNS servery a vrátit nejrychlejší IP adresu ze všech odpovědí",
"autofix_warning_text": "Pokud kliknete na „Opravit“, AdGuard Home nakonfiguruje váš systém tak, aby používal DNS server AdGuard Home.",
"autofix_warning_list": "Jsou prováděny následující úlohy: <0>Deaktivace systému DNSStubListener</0> <0>Nastavení adresy serveru DNS na 127.0.0.1</0> <0>Nahrazení cíle symbolického odkazu z /etc/resolv.conf do /run/systemd/resolve/resolv.conf</0> <0>Zastavení služby DNSStubListener (znovu načtení služby systemd-resolved)</0>",
"autofix_warning_result": "Výsledkem je, že všechny požadavky DNS z vašeho systému jsou ve výchozím nastavení zpracovány službou AdGuard Home.",
@@ -479,5 +487,7 @@
"install_static_configure": "Detekovali jsme, že se používá dynamická IP adresa — <0>{{ip}}</0>. Chcete ji použít jako statickou adresu?",
"confirm_static_ip": "AdGuard Home nakonfiguruje {{ip}} jako statickou IP adresu. Chcete pokračovat?",
"list_updated": "Byl aktualizován {{count}} seznam",
"list_updated_plural": "Aktualizované seznamy: {{count}}"
"list_updated_plural": "Aktualizované seznamy: {{count}}",
"dnssec_enable": "Zapnout DNSSEC",
"dnssec_enable_desc": "Nastavte příznak DNSSEC v následujících DNS dotazech a zkontrolujte výsledek (je potřebný překladač se zapnutým DNSSEC)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Klient-indstillinger",
"example_upstream_reserved": "du kan angive DNS upstream <0>for et bestemt domæne</0>",
"example_upstream_reserved": "Du kan specificere DNS upstream <0>for det(de) specifikke domæne(r)</0>",
"upstream_parallel": "Brug parallelle forespørgsler til at fremskynde behandlingen ved samtidig at spørge alle upstream servere",
"parallel_requests": "Parallelle forespørgsler",
"bootstrap_dns": "Bootstrap DNS-servere",
"bootstrap_dns_desc": "Bootstrap DNS-servere bliver brugt til at behandle IP-adresser af de DoH/DoT resolvere, som du angiver som upstream.",
"check_dhcp_servers": "Tjek for DHCP-servere",
@@ -140,7 +141,7 @@
"add_allowlist": "Tilføj liste over tilladte",
"cancel_btn": "Annuller",
"enter_name_hint": "Indtast navn",
"enter_url_hint": "Indtast URL",
"enter_url_or_path_hint": "Indtast en URL eller en absolut sti på listen",
"check_updates_btn": "Søg efter opdateringer",
"new_blocklist": "Ny blokeringsliste",
"new_allowlist": "Ny liste over tilladte",
@@ -148,7 +149,8 @@
"edit_allowlist": "Rediger liste over tilladte",
"enter_valid_blocklist": "Indtast en gyldig URL til blokeringslisten.",
"enter_valid_allowlist": "Indtast en gyldig URL til listen over tilladte.",
"form_error_url_format": "Ugyldigt url-format",
"form_error_url_format": "Ugyldigt URL-format",
"form_error_url_or_path_format": "Ugyldig URL eller en absolut sti på listen",
"custom_filter_rules": "Brugerdefinerede filtreringsregler",
"custom_filter_rules_hint": "Indtast en regel per linje. Du kan enten bruge annonceblokeringsregler eller værtsfilsyntaks.",
"examples_title": "Eksempler",
@@ -199,6 +201,8 @@
"query_log_disabled": "Forespørgselsloggen er deaktiveret og kan konfigureres i <0>indstillinger</0>",
"query_log_strict_search": "Brug dobbelt anførselstegn til streng søgning",
"query_log_retention_confirm": "Er du sikker på, at du vil ændre opbevaring af forespørgselsloggen? Hvis du mindsker intervalværdien, vil nogle data gå tabt",
"anonymize_client_ip": "Anonymiser klient-IP",
"anonymize_client_ip_desc": "Gem ikke klientens fulde IP-adresse i logfiler og statistikker",
"dns_config": "DNS-serverkonfiguration",
"blocking_mode": "Blokeringstilstand",
"default": "Standard",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Åbn præferencerne for din router. Normalt kan du få adgang til den fra din browser via en URL (som http://192.168.0.1/ eller http://192.168.1.1/). Du bliver muligvis bedt om at indtaste adgangskoden. Hvis du ikke kan huske den, kan du ofte nulstille adgangskoden ved at trykke på en knap på selve routeren. Nogle routere kræver et bestemt program, som i det tilfælde allerede skulle være installeret på din computer/telefon.",
"install_devices_router_list_2": "Find DHCP/DNS-indstillingerne. Kig efter DNS-bogstaverne ved siden af et felt, der tillader to eller tre sæt tal, hver opdelt i fire grupper med et til tre cifre.",
"install_devices_router_list_3": "Indtast dine AdGuard Home serveradresser der.",
"install_devices_router_list_4": "Du kan ikke opsætte en tilpasset DNS-server på nogle typer routere. I dette tilfælde kan det hjælpe, hvis du konfigurerer AdGuard Home som en DHCP-server. Du kan ellers søge efter manualen om, hvordan du tilpasser DNS-servere til din bestemte routermodel.",
"install_devices_windows_list_1": "Åbn Kontrolpanel gennem menuen Start eller Windows søgning.",
"install_devices_windows_list_2": "Gå til Netværk og internet kategorien og derefter til Netværks- og delingscenter.",
"install_devices_windows_list_3": "På venstre side af skærmen finder du Skift adapterindstillinger og klik på den.",
@@ -356,8 +361,8 @@
"access_allowed_desc": "En liste over CIDR- eller IP-adresser. Hvis den er konfigureret, vil AdGuard Home kun acceptere anmodninger fra disse IP-adresser.",
"access_disallowed_title": "Ikke tilladte klienter",
"access_disallowed_desc": "En liste over CIDR- eller IP-adresser. Hvis den er konfigureret, vil AdGuard Home droppe anmodninger fra disse IP-adresser.",
"access_blocked_title": "Blokerede domæner",
"access_blocked_desc": "Forveksl det ikke med filtre. AdGuard Home vil droppe DNS-forespørgsler for disse domæner i forespørgselsspørgsmål.",
"access_blocked_title": "Ikke tilladte domæner",
"access_blocked_desc": "Forveksl det ikke med filtre. AdGuard Home vil droppe DNS-forespørgsler for disse domæner i forespørgselsspørgsmål. Her kan du specificere de nøjagtige domænenavne, wildcards og urlfilter-regler, f.eks. 'example.org', '*.example.org' eller '||example.org^'.",
"access_settings_saved": "Adgangsindstillinger succesfuldt gemt",
"updates_checked": "Søgt succesfuldt efter opdateringer",
"updates_version_equal": "AdGuard Home er opdateret",
@@ -384,7 +389,8 @@
"rewrite_not_found": "Ingen DNS-omskrivninger fundet",
"rewrite_confirm_delete": "Er du sikker på, at du vil slette DNS-omskrivning for \"{{key}}\"?",
"rewrite_desc": "Gør det nemt at konfigurere det tilpassede DNS-svar for et specifikt domænenavn.",
"rewrite_applied": "Anvendt Omskrivningsregel",
"rewrite_applied": "Anvendt omskrivningsregel",
"rewrite_hosts_applied": "Omskrevet af værtsfilreglen",
"dns_rewrites": "DNS-omskrivninger",
"form_domain": "Indtast domænenavn eller wildcard",
"form_answer": "Indtast IP-adresser eller domænenavne",
@@ -441,7 +447,7 @@
"netname": "Netværksnavn",
"descr": "Beskrivelse",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Lær mere</0> om at oprette dine egne værtsblokeringslister.",
"filtering_rules_learn_more": "<0>Lær mere</0> om at oprette dine egne værtslister.",
"blocked_by_response": "Blokeret af CNAME eller IP som svar",
"try_again": "Prøv igen",
"domain_desc": "Indtast det domænenavn eller wildcard, du ønsker skal omskrives.",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "omskriv svar for alle <0>example.org</0> subdomæner.",
"disable_ipv6": "Deaktiver IPv6",
"disable_ipv6_desc": "Hvis denne funktion er aktiveret, slettes alle DNS-forespørgsler til IPv6-adresser (type AAAA).",
"fastest_addr": "Hurtigste IP-adresse",
"fastest_addr_desc": "Forespørg alle DNS-servere, og returner den hurtigste IP-adresse blandt alle svar",
"autofix_warning_text": "Hvis du klikker på \"Reparer\", vil AdGuardHome konfigurere dit system til at bruge AdGuardHome DNS-server.",
"autofix_warning_list": "Den vil udføre disse opgaver: <0>Deaktivering af DNSStubListener systemet</0> <0>Indstille DNS-serveradressen til 127.0.0.1</0> <0>Erstatte det symbolske linkmål for /etc/resolv.conf til /run/systemd/resolve/resolv.conf</0> <0>Stop DNSStubListener (genindlæs systemd-løst tjeneste)</0>",
"autofix_warning_result": "Som et resultat behandles alle DNS-anmodninger fra dit system som standard af AdGuard Home.",
@@ -479,5 +487,7 @@
"install_static_configure": "Vi har registreret, at der bruges en dynamisk IP-adresse — <0>{{ip}}</0>. Vil du bruge den som din statiske adresse?",
"confirm_static_ip": "AdGuard Home vil konfigurere {{ip}} til at være din statiske IP-adresse. Vil du fortsætte?",
"list_updated": "{{count}} liste opdateret",
"list_updated_plural": "{{count}} lister opdateret"
"list_updated_plural": "{{count}} lister opdateret",
"dnssec_enable": "Aktivér DNSSEC",
"dnssec_enable_desc": "Sæt DNSSEC-flag i de udgående DNS-forespørgsler, og kontroller resultatet (DNSSEC-aktiveret resolver er krævet)"
}

View File

@@ -2,6 +2,7 @@
"client_settings": "Client-Einstellungen",
"example_upstream_reserved": "Sie können DNS-Upstream <0>für bestimmte Domain(s)</0> angeben",
"upstream_parallel": "Parallele Abfragen verwenden, um die Lösung zu beschleunigen, indem Sie alle Upstream-Server gleichzeitig abfragen",
"parallel_requests": "Parallele Abfragen",
"bootstrap_dns": "Bootstrap DNS-Server starten",
"bootstrap_dns_desc": "Bootstrap-DNS-Server werden verwendet, um IP-Adressen der DoH/DoT-Resolver aufzulösen, die Sie als Upstreams angeben.",
"check_dhcp_servers": "Auf DHCP-Server prüfen",
@@ -140,7 +141,7 @@
"add_allowlist": "Freigabeliste hinzufügen",
"cancel_btn": "Abbrechen",
"enter_name_hint": "Name eingeben",
"enter_url_hint": "URL eingeben",
"enter_url_or_path_hint": "URL oder absoluten Pfad der Liste eingeben",
"check_updates_btn": "Nach Updates suchen",
"new_blocklist": "Neue Sperrliste",
"new_allowlist": "Neue Freigabeliste",
@@ -148,7 +149,8 @@
"edit_allowlist": "Freigabeliste bearbeiten",
"enter_valid_blocklist": "Geben Sie eine gültige Adresse in die Sperrliste ein.",
"enter_valid_allowlist": "Geben Sie eine gültige Adresse in die Freigabeliste ein.",
"form_error_url_format": "Ungültiges Adress-Format",
"form_error_url_format": "Ungültiges URL-Format",
"form_error_url_or_path_format": "Ungültige URL oder absoluter Pfad der Liste",
"custom_filter_rules": "Benutzerdefinierte Filterregeln",
"custom_filter_rules_hint": "Geben Sie pro Zeile eine Regel ein. Sie können entweder Werbefilterregeln oder Host-Datei-Syntax verwenden.",
"examples_title": "Beispiele",
@@ -199,6 +201,8 @@
"query_log_disabled": "Das Abfrageprotokoll ist deaktiviert und kann in den <0>Einstellungen</0> konfiguriert werden.",
"query_log_strict_search": "Doppelte Anführungszeichen für die strikte Suche verwenden",
"query_log_retention_confirm": "Möchten Sie die Aufbewahrung des Abfrageprotokolls wirklich ändern? Wenn Sie den Zeitabstand verringern, gehen einige Daten verloren.",
"anonymize_client_ip": "Client-IP anonymisieren",
"anonymize_client_ip_desc": "Vollständige IP-Adresse des Clients nicht in Protokollen und Statistiken speichern",
"dns_config": "DNS-Serverkonfiguration",
"blocking_mode": "Sperrmodus",
"default": "Standard",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Öffnen Sie die Einstellungen für Ihren Router. In der Regel können Sie von Ihrem Browser aus über eine URL (wie http://192.168.0.1/ oder http://192.168.1.1/) darauf zugreifen. Möglicherweise werden Sie aufgefordert, das Passwort einzugeben. Wenn Sie sich nicht mehr daran erinnern, können Sie das Passwort oft durch Drücken einer Taste auf dem Router selbst zurücksetzen. Einige Router benötigen eine bestimmte Anwendung, die in diesem Fall bereits auf Ihrem Computer/Telefon installiert sein sollte.",
"install_devices_router_list_2": "DHCP/DNS-Einstellungen suchen. Suchen Sie nach den DNS-Buchstaben neben einem Feld, das zwei oder drei Zahlensätze erlaubt, die jeweils in vier Gruppen von ein bis drei Ziffern unterteilt sind.",
"install_devices_router_list_3": "Geben Sie dort Ihre AdGuard Home Server-Adressen ein.",
"install_devices_router_list_4": "Sie können auf einigen Routern keine beliebigen DNS-Server festlegen. In diesem Fall kann es hilfreich sein, dass Sie AdGuard Home als DHCP-Server festlegen. Andernfalls sollten Sie nach einer Bedienungsanleitung zum Anpassen des DNS-Server für Ihr Router-Modell suchen.",
"install_devices_windows_list_1": "Öffnen Sie die Systemsteuerung über das Startmenü oder die Windows-Suche.",
"install_devices_windows_list_2": "Öffnen Sie die Kategorie „Netzwerk und Internet” und dann „Netzwerk- und Freigabecenter”.",
"install_devices_windows_list_3": "Suchen Sie auf der linken Seite des Bildschirms nach „Adaptereinstellungen ändern” und klicken Sie darauf.",
@@ -356,8 +361,8 @@
"access_allowed_desc": "Eine Liste von CIDR- oder IP-Adressen. Wenn konfiguriert, akzeptiert AdGuard Home nur Anfragen von diesen IP-Adressen.",
"access_disallowed_title": "Nicht zugelassene Clients",
"access_disallowed_desc": "Eine Liste von CIDR- oder IP-Adressen. Wenn konfiguriert, löscht AdGuard Home Anfragen von diesen IP-Adressen.",
"access_blocked_title": "Gesperrte Domains",
"access_blocked_desc": "Verwechseln Sie dies nicht mit Filtern. AdGuard Home löscht DNS-Abfragen mit diesen Domänen während der Abfrage.",
"access_blocked_title": "Nicht zugelassene Domains",
"access_blocked_desc": "Verwechseln Sie dies nicht mit Filtern. AdGuard Home löscht DNS-Abfragen mit diesen Domänen während der Abfrage. Hier können Sie die genauen Domain-Namen, Wildcards und URL-Filter-Regeln angeben, z.B. 'beispiel.org', '*.beispiel.org' oder '|||beispiel.org^'.",
"access_settings_saved": "Zugriffseinstellungen erfolgreich gespeichert",
"updates_checked": "Erfolgreich auf Aktualisierungen geprüft",
"updates_version_equal": "AdGuard Home ist aktuell",
@@ -384,7 +389,8 @@
"rewrite_not_found": "Keine DNS-Umschreibungen gefunden",
"rewrite_confirm_delete": "Möchten Sie die DNS-Umschreibung für „{{key}}” wirklich entfernen?",
"rewrite_desc": "Ermöglicht die einfache Konfiguration der benutzerdefinierten DNS-Antwort für einen bestimmten Domainnamen.",
"rewrite_applied": "Geltende Umschreibungsregel",
"rewrite_applied": "Umschreibungsregel ist angewendet",
"rewrite_hosts_applied": "Von Hostdatei-Regel umgeschrieben",
"dns_rewrites": "DNS-Umscheibungen",
"form_domain": "Domain eingeben",
"form_answer": "IP-Adresse oder Domainname eingeben",
@@ -441,7 +447,7 @@
"netname": "Netzwerkname",
"descr": "Beschreibung",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Erfahren Sie mehr</0> über die Erstellung eigener Hosts-Blocklisten.",
"filtering_rules_learn_more": "<0>Erfahren Sie mehr</0> über die Erstellung eigener Hosts-Listen.",
"blocked_by_response": "Nach CNAME oder IP-Antwort blockiert",
"try_again": "Erneut versuchen",
"domain_desc": "Geben Sie den Domain-Namen oder den Platzhalter ein, der umgeschrieben werden soll.",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "Antworten nur für alle <0>example.org</0> Subdomains umschreiben.",
"disable_ipv6": "IPv6 deaktivieren",
"disable_ipv6_desc": "Wenn diese Funktion aktiviert ist, werden alle DNS-Abfragen für IPv6-Adressen (Typ AAAA) verworfen.",
"fastest_addr": "Schnellste IP-Adresse",
"fastest_addr_desc": "Abfrage aller DNS-Server und Rückgabe der schnellsten IP-Adresse unter allen Antworten",
"autofix_warning_text": "Wenn Sie auf „Beheben” klicken, konfiguriert AdGuardHome Ihr System für die Verwendung des AdGuardHome-DNS-Servers.",
"autofix_warning_list": "Es werden folgende Aufgaben ausgeführt: <0>Deaktivieren des DNSStubListener-Systems</0> <0>Festlegen der DNS-Server-Adresse auf 127.0.0.1</0> <0>Ersetzen des symbolischen Linkziels von /etc/resolv.conf auf /run/systemd/resolve/resolv.conf</0> <0>Anhalten des DNSStubListener (systemseitig aufgelöster Dienst wird nachladen)</0>",
"autofix_warning_result": "Als Folge daraus werden alle DNS-Anforderungen von Ihrem System standardmäßig von AdGuardHome verarbeitet.",
@@ -479,5 +487,7 @@
"install_static_configure": "Wir haben festgestellt, dass eine dynamische IP-Adresse verwendet wird — <0>{{ip}}</0>. Möchten Sie diese als feste Adresse verwenden?",
"confirm_static_ip": "AdGuard Home konfiguriert {{ip}} als Ihre feste IP-Adresse. Möchten Sie fortfahren?",
"list_updated": "{{count}} Liste aktualisiert",
"list_updated_plural": "{{count}} Listen aktualisiert"
"list_updated_plural": "{{count}} Listen aktualisiert",
"dnssec_enable": "DNSSEC aktivieren",
"dnssec_enable_desc": "DNSSEC-Flag in den ausgehenden DNS-Abfragen mitsenden und das Ergebnis überprüfen (DNSSEC-fähiger Resolver erforderlich)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Client settings",
"example_upstream_reserved": "you can specify DNS upstream <0>for a specific domain(s)</0>",
"upstream_parallel": "Use parallel queries to speed up resolving by simultaneously querying all upstream servers",
"example_upstream_reserved": "You can specify DNS upstream <0>for the specific domain(s)</0>",
"upstream_parallel": "Use parallel requests to speed up resolving by simultaneously querying all upstream servers",
"parallel_requests": "Parallel requests",
"bootstrap_dns": "Bootstrap DNS servers",
"bootstrap_dns_desc": "Bootstrap DNS servers are used to resolve IP addresses of the DoH/DoT resolvers you specify as upstreams.",
"check_dhcp_servers": "Check for DHCP servers",
@@ -140,7 +141,7 @@
"add_allowlist": "Add allowlist",
"cancel_btn": "Cancel",
"enter_name_hint": "Enter name",
"enter_url_hint": "Enter URL",
"enter_url_or_path_hint": "Enter a URL or an absolute path of the list",
"check_updates_btn": "Check for updates",
"new_blocklist": "New blocklist",
"new_allowlist": "New allowlist",
@@ -148,7 +149,8 @@
"edit_allowlist": "Edit allowlist",
"enter_valid_blocklist": "Enter a valid URL to the blocklist.",
"enter_valid_allowlist": "Enter a valid URL to the allowlist.",
"form_error_url_format": "Invalid url format",
"form_error_url_format": "Invalid URL format",
"form_error_url_or_path_format": "Invalid URL or absolute path of the list",
"custom_filter_rules": "Custom filtering rules",
"custom_filter_rules_hint": "Enter one rule on a line. You can use either adblock rules or hosts files syntax.",
"examples_title": "Examples",
@@ -199,6 +201,8 @@
"query_log_disabled": "The query log is disabled and can be configured in the <0>settings</0>",
"query_log_strict_search": "Use double quotes for strict search",
"query_log_retention_confirm": "Are you sure you want to change query log retention? If you decrease the interval value, some data will be lost",
"anonymize_client_ip": "Anonymize client IP",
"anonymize_client_ip_desc": "Don't save the full IP address of the client in logs and statistics",
"dns_config": "DNS server configuration",
"blocking_mode": "Blocking mode",
"default": "Default",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Open the preferences for your router. Usually, you can access it from your browser via a URL (like http://192.168.0.1/ or http://192.168.1.1/). You may be asked to enter the password. If you don't remember it, you can often reset the password by pressing a button on the router itself. Some routers require a specific application, which in that case should be already installed on your computer/phone.",
"install_devices_router_list_2": "Find the DHCP/DNS settings. Look for the DNS letters next to a field which allows two or three sets of numbers, each broken into four groups of one to three digits.",
"install_devices_router_list_3": "Enter your AdGuard Home server addresses there.",
"install_devices_router_list_4": "You can't set a custom DNS server on some types of routers. In this case it may help if you set up AdGuard Home as a <a href='#dhcp'>DHCP server</a>. Otherwise, you should search for the manual on how to customize DNS servers for your particular router model.",
"install_devices_windows_list_1": "Open Control Panel through Start menu or Windows search.",
"install_devices_windows_list_2": "Go to Network and Internet category and then to Network and Sharing Center.",
"install_devices_windows_list_3": "On the left side of the screen find Change adapter settings and click on it.",
@@ -356,8 +361,8 @@
"access_allowed_desc": "A list of CIDR or IP addresses. If configured, AdGuard Home will accept requests from these IP addresses only.",
"access_disallowed_title": "Disallowed clients",
"access_disallowed_desc": "A list of CIDR or IP addresses. If configured, AdGuard Home will drop requests from these IP addresses.",
"access_blocked_title": "Blocked domains",
"access_blocked_desc": "Don't confuse this with filters. AdGuard Home will drop DNS queries with these domains in query's question.",
"access_blocked_title": "Disallowed domains",
"access_blocked_desc": "Don't confuse this with filters. AdGuard Home will drop DNS queries with these domains in query's question. Here you can specify the exact domain names, wildcards and urlfilter-rules, e.g. 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "Access settings successfully saved",
"updates_checked": "Updates successfully checked",
"updates_version_equal": "AdGuard Home is up-to-date",
@@ -384,7 +389,8 @@
"rewrite_not_found": "No DNS rewrites found",
"rewrite_confirm_delete": "Are you sure you want to delete DNS rewrite for \"{{key}}\"?",
"rewrite_desc": "Allows to easily configure custom DNS response for a specific domain name.",
"rewrite_applied": "Applied Rewrite rule",
"rewrite_applied": "Rewrite rule is applied",
"rewrite_hosts_applied": "Rewritten by the hosts file rule",
"dns_rewrites": "DNS rewrites",
"form_domain": "Enter domain name or wildcard",
"form_answer": "Enter IP address or domain name",
@@ -441,7 +447,7 @@
"netname": "Network name",
"descr": "Description",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Learn more</0> about creating your own hosts blocklists.",
"filtering_rules_learn_more": "<0>Learn more</0> about creating your own hosts lists.",
"blocked_by_response": "Blocked by CNAME or IP in response",
"try_again": "Try again",
"domain_desc": "Enter the domain name or wildcard you want to be rewritten.",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "rewrite responses for all <0>example.org</0> subdomains.",
"disable_ipv6": "Disable IPv6",
"disable_ipv6_desc": "If this feature is enabled, all DNS queries for IPv6 addresses (type AAAA) will be dropped.",
"fastest_addr": "Fastest IP address",
"fastest_addr_desc": "Query all DNS servers and return the fastest IP address among all responses. This will slow down the DNS queries as we have to wait for responses from all DNS servers, but improve the overall connectivity.",
"autofix_warning_text": "If you click \"Fix\", AdGuard Home will configure your system to use AdGuard Home DNS server.",
"autofix_warning_list": "It will perform these tasks: <0>Deactivate system DNSStubListener</0> <0>Set DNS server address to 127.0.0.1</0> <0>Replace symbolic link target of /etc/resolv.conf with /run/systemd/resolve/resolv.conf</0> <0>Stop DNSStubListener (reload systemd-resolved service)</0>",
"autofix_warning_result": "As a result all DNS requests from your system will be processed by AdGuard Home by default.",

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Configuración de clientes",
"example_upstream_reserved": "puede especificar el DNS de subida <0>para un dominio específico</0>",
"upstream_parallel": "Usar consultas paralelas para acelerar la resolución al consultar simultáneamente a todos los servidores de subida",
"example_upstream_reserved": "puedes especificar el DNS de subida <0>para un dominio específico</0>",
"upstream_parallel": "Usar peticiones paralelas para acelerar la resolución al consultar simultáneamente a todos los servidores de subida",
"parallel_requests": "Peticiones paralelas",
"bootstrap_dns": "Servidores DNS de arranque",
"bootstrap_dns_desc": "Los servidores DNS de arranque se utilizan para resolver las direcciones IP de los resolutores DoH/DoT que usted especifique como DNS de subida.",
"check_dhcp_servers": "Comprobar si hay servidores DHCP",
@@ -49,7 +50,7 @@
"dhcp_add_static_lease": "Añadir asignación estática",
"dhcp_reset": "¿Está seguro de que desea restablecer la configuración DHCP?",
"delete_confirm": "¿Está seguro de que desea eliminar \"{{key}}\"?",
"form_enter_hostname": "Ingrese el nombre del host",
"form_enter_hostname": "Ingresa el nombre del host",
"error_details": "Detalles del error",
"back": "Atrás",
"dashboard": "Panel de control",
@@ -59,8 +60,8 @@
"faq": "Preguntas frecuentes",
"version": "Versión",
"address": "dirección",
"on": "Activado",
"off": "Desactivado",
"on": "Activo",
"off": "Inactivo",
"copyright": "Copyright",
"homepage": "Página de inicio",
"report_an_issue": "Reportar un error",
@@ -139,18 +140,19 @@
"add_blocklist": "Añadir lista de bloqueo",
"add_allowlist": "Añadir lista de permitido",
"cancel_btn": "Cancelar",
"enter_name_hint": "Ingrese el nombre",
"enter_url_hint": "Ingrese la URL",
"enter_name_hint": "Ingresa el nombre",
"enter_url_or_path_hint": "Ingresa una URL o ruta absoluta para la lista",
"check_updates_btn": "Buscar actualizaciones",
"new_blocklist": "Nueva lista de bloqueo",
"new_allowlist": "Nueva lista de permitido",
"edit_blocklist": "Editar lista de bloqueo",
"edit_allowlist": "Editar lista de permitido",
"enter_valid_blocklist": "Ingrese una URL válida para la lista de bloqueo.",
"enter_valid_allowlist": "Ingrese una URL válida para la lista de permitido.",
"enter_valid_blocklist": "Ingresa una URL válida para la lista de bloqueo.",
"enter_valid_allowlist": "Ingresa una URL válida para la lista de permitido.",
"form_error_url_format": "Formato de URL no válido",
"form_error_url_or_path_format": "URL o ruta absoluta no válida para la lista",
"custom_filter_rules": "Reglas de filtrado personalizado",
"custom_filter_rules_hint": "Ingrese una regla por línea. Puede utilizar reglas de bloqueo o la sintaxis de los archivos hosts.",
"custom_filter_rules_hint": "Ingresa una regla por línea. Puedes utilizar reglas de bloqueo o la sintaxis de los archivos hosts.",
"examples_title": "Ejemplos",
"example_meaning_filter_block": "bloquea el acceso al dominio ejemplo.org y a todos sus subdominios",
"example_meaning_filter_whitelist": "desbloquea el acceso al dominio ejemplo.org y a todos sus subdominios",
@@ -199,6 +201,8 @@
"query_log_disabled": "El registro de consultas está deshabilitado y se puede configurar en la <0>configuración</0>",
"query_log_strict_search": "Usar comillas dobles para una búsqueda estricta",
"query_log_retention_confirm": "¿Está seguro de que desea cambiar la retención del registro de consultas? Si disminuye el valor del intervalo, se perderán algunos datos",
"anonymize_client_ip": "Anonimizar IP del cliente",
"anonymize_client_ip_desc": "No guarda la dirección IP completa del cliente en registros y estadísticas",
"dns_config": "Configuración del servidor DNS",
"blocking_mode": "Modo de bloqueo",
"default": "Predeterminado",
@@ -207,7 +211,7 @@
"custom_ip": "IP personalizada",
"blocking_ipv4": "Bloqueo de IPv4",
"blocking_ipv6": "Bloqueo de IPv6",
"form_enter_rate_limit": "Ingrese el límite de cantidad",
"form_enter_rate_limit": "Ingresa el límite de cantidad",
"rate_limit": "Límite de cantidad",
"edns_enable": "Habilitar subred de cliente EDNS",
"edns_cs_desc": "Si está habilitado, AdGuard Home enviará las subredes de los clientes a los servidores DNS.",
@@ -230,48 +234,49 @@
"install_settings_title": "Interfaz web de administración",
"install_settings_listen": "Interfaz de escucha",
"install_settings_port": "Puerto",
"install_settings_interface_link": "Su interfaz web de administración de AdGuard Home estará disponible en las siguientes direcciones:",
"form_error_port": "Ingrese un valor de puerto válido",
"install_settings_interface_link": "La interfaz web de administración de AdGuard Home estará disponible en las siguientes direcciones:",
"form_error_port": "Ingresa un valor de puerto válido",
"install_settings_dns": "Servidor DNS",
"install_settings_dns_desc": "Deberá configurar sus dispositivos o router para usar el servidor DNS en las siguientes direcciones:",
"install_settings_dns_desc": "Deberás configurar tus dispositivos o router para usar el servidor DNS en las siguientes direcciones:",
"install_settings_all_interfaces": "Todas las interfaces",
"install_auth_title": "Autenticación",
"install_auth_desc": "Se recomienda encarecidamente configurar la autenticación por contraseña para la interfaz web de administración de AdGuard Home. Incluso si solo es accesible en su red local, es importante que esté protegido contra el acceso no autorizado.",
"install_auth_desc": "Se recomienda encarecidamente configurar la autenticación por contraseña para la interfaz web de administración de AdGuard Home. Incluso si solo es accesible en tu red local, es importante que estés protegido contra el acceso no autorizado.",
"install_auth_username": "Usuario",
"install_auth_password": "Contraseña",
"install_auth_confirm": "Confirmar contraseña",
"install_auth_username_enter": "Ingrese su nombre de usuario",
"install_auth_password_enter": "Ingrese su contraseña",
"install_auth_username_enter": "Ingresa tu nombre de usuario",
"install_auth_password_enter": "Ingresa tu contraseña",
"install_step": "Paso",
"install_devices_title": "Configure sus dispositivos",
"install_devices_desc": "Para comenzar a utilizar AdGuard Home, debe configurar sus dispositivos para usarlo.",
"install_devices_title": "Configura tus dispositivos",
"install_devices_desc": "Para comenzar a utilizar AdGuard Home, debes configurar tus dispositivos para usarlo.",
"install_submit_title": "¡Felicitaciones!",
"install_submit_desc": "El proceso de configuración ha finalizado y está listo para comenzar a usar AdGuard Home.",
"install_devices_router": "Router",
"install_devices_router_desc": "Esta configuración cubrirá automáticamente todos los dispositivos conectados a su router doméstico y no necesitará configurar cada uno de ellos manualmente.",
"install_devices_router_desc": "Esta configuración cubrirá automáticamente todos los dispositivos conectados a tu router doméstico y no necesitarás configurar cada uno de ellos manualmente.",
"install_devices_address": "El servidor DNS de AdGuard Home está escuchando en las siguientes direcciones",
"install_devices_router_list_1": "Abra las preferencias de su router. Por lo general, puede acceder a él desde su navegador a través de una URL (como http://192.168.0.1/ o http://192.168.1.1/). Se le puede pedir que ingrese la contraseña. Si no lo recuerda, a menudo puede restablecer la contraseña presionando un botón en el router. Algunos routers requieren una aplicación específica, que en ese caso ya debería estar instalada en su computadora/teléfono.",
"install_devices_router_list_2": "Busque la configuración de DHCP/DNS. Busque las letras DNS junto a un campo que permita ingresar dos o tres grupos de números, cada uno dividido en cuatro grupos de uno a tres dígitos.",
"install_devices_router_list_3": "Ingrese las direcciones de su servidor AdGuard Home allí.",
"install_devices_windows_list_1": "Abra el Panel de control a través del menú Inicio o en el buscador de Windows.",
"install_devices_windows_list_2": "Vaya a la categoría Redes e Internet, luego a Centro de redes y recursos compartidos.",
"install_devices_windows_list_3": "En el lado izquierdo de la pantalla, busque Cambiar configuración del adaptador y luego haga clic en él.",
"install_devices_windows_list_4": "Seleccione su conexión activa, haga clic derecho sobre ella y elija Propiedades.",
"install_devices_windows_list_5": "Busque en la lista el Protocolo de Internet versión 4 (TCP/IP), selecciónelo y vuelva a hacer clic en Propiedades.",
"install_devices_windows_list_6": "Elija Usar las siguientes direcciones de servidor DNS e ingrese las direcciones de su servidor AdGuard Home.",
"install_devices_macos_list_1": "Haga clic en el icono de Apple y vaya a Preferencias del sistema.",
"install_devices_macos_list_2": "Haga clic en Red.",
"install_devices_macos_list_3": "Seleccione la primera conexión de la lista y haga clic en Avanzado.",
"install_devices_macos_list_4": "Seleccione la pestaña DNS e ingrese las direcciones de su servidor AdGuard Home.",
"install_devices_android_list_1": "En la pantalla de inicio del menú Android, pulse en Configuración.",
"install_devices_android_list_2": "Pulse Wi-Fi en el menú. Aparecerá la pantalla que lista todas las redes disponibles (es imposible configurar DNS personalizados para la conexión móvil).",
"install_devices_android_list_3": "Mantenga presionada la red a la que está conectado y pulse Modificar red.",
"install_devices_android_list_4": "En algunos dispositivos, es posible que deba marcar la casilla Avanzado para ver más configuraciones. Para ajustar la configuración DNS de su Android, deberá cambiar la configuración de IP de DHCP a Estática.",
"install_devices_android_list_5": "Cambie los valores de DNS 1 y DNS 2 a las direcciones de su servidor AdGuard Home.",
"install_devices_ios_list_1": "En la pantalla de inicio, pulse en Configuración.",
"install_devices_ios_list_2": "Elija Wi-Fi en el menú de la izquierda (es imposible configurar DNS para redes móviles).",
"install_devices_ios_list_3": "Pulse sobre el nombre de la red activa en ese momento.",
"install_devices_ios_list_4": "En el campo DNS ingrese las direcciones de su servidor AdGuard Home.",
"install_devices_router_list_1": "Abre las preferencias de tu router. Por lo general, puedes acceder a él desde tu navegador a través de una URL (como http://192.168.0.1/ o http://192.168.1.1/). Es posible que se te pida que ingreses la contraseña. Si no lo recuerdas, a menudo puedes restablecer la contraseña presionando un botón en el router. Algunos routers requieren una aplicación específica, que en ese caso ya debería estar instalada en tu computadora/teléfono.",
"install_devices_router_list_2": "Busca la configuración de DHCP/DNS. Busca las letras DNS junto a un campo que permita ingresar dos o tres grupos de números, cada uno dividido en cuatro grupos de uno a tres dígitos.",
"install_devices_router_list_3": "Ingresa las direcciones de tu servidor AdGuard Home allí.",
"install_devices_router_list_4": "No se puede configurar un servidor DNS personalizado en algunos tipos de routers. En este caso puede ayudar si configuras AdGuard Home como un servidor DHCP. De lo contrario, deberías buscar el manual sobre cómo personalizar los servidores DNS para tu modelo de router en particular.",
"install_devices_windows_list_1": "Abre el Panel de control a través del menú Inicio o en el buscador de Windows.",
"install_devices_windows_list_2": "Ve a la categoría Redes e Internet, luego a Centro de redes y recursos compartidos.",
"install_devices_windows_list_3": "En el lado izquierdo de la pantalla, busca Cambiar configuración del adaptador y luego haz clic en él.",
"install_devices_windows_list_4": "Selecciona tu conexión activa, haz clic derecho sobre ella y elige Propiedades.",
"install_devices_windows_list_5": "Busca en la lista el Protocolo de Internet versión 4 (TCP/IP), selecciónalo y vuelve a hacer clic en Propiedades.",
"install_devices_windows_list_6": "Elige Usar las siguientes direcciones de servidor DNS e ingresa las direcciones de tu servidor AdGuard Home.",
"install_devices_macos_list_1": "Haz clic en el icono de Apple y ve a Preferencias del sistema.",
"install_devices_macos_list_2": "Haz clic en Red.",
"install_devices_macos_list_3": "Selecciona la primera conexión de la lista y haz clic en Avanzado.",
"install_devices_macos_list_4": "Selecciona la pestaña DNS e ingresa las direcciones de tu servidor AdGuard Home.",
"install_devices_android_list_1": "En la pantalla de inicio del menú Android, pulsa en Configuración.",
"install_devices_android_list_2": "Pulsa Wi-Fi en el menú. Aparecerá la pantalla que lista todas las redes disponibles (es imposible configurar un DNS personalizado para la conexión móvil).",
"install_devices_android_list_3": "Mantén presionado la red a la que estás conectado y pulsa Modificar red.",
"install_devices_android_list_4": "En algunos dispositivos, es posible que debas marcar la casilla Avanzado para ver más configuraciones. Para ajustar la configuración DNS de Android, deberás cambiar la configuración de IP de DHCP a Estática.",
"install_devices_android_list_5": "Cambia los valores de DNS 1 y DNS 2 a las direcciones de tu servidor AdGuard Home.",
"install_devices_ios_list_1": "En la pantalla de inicio, pulsa en Configuración.",
"install_devices_ios_list_2": "Elige Wi-Fi en el menú de la izquierda (es imposible configurar DNS para redes móviles).",
"install_devices_ios_list_3": "Pulsa sobre el nombre de la red activa en ese momento.",
"install_devices_ios_list_4": "En el campo DNS ingresa las direcciones de tu servidor AdGuard Home.",
"get_started": "Comenzar",
"next": "Siguiente",
"open_dashboard": "Abrir panel de control",
@@ -280,8 +285,8 @@
"encryption_desc": "Soporte de cifrado (HTTPS/TLS) tanto para DNS como para la interfaz web de administración",
"encryption_config_saved": "Configuración de cifrado guardado",
"encryption_server": "Nombre del servidor",
"encryption_server_enter": "Ingrese su nombre de dominio",
"encryption_server_desc": "Para utilizar HTTPS, debe ingresar el nombre del servidor que coincida con tu certificado SSL.",
"encryption_server_enter": "Ingresa el nombre del dominio",
"encryption_server_desc": "Para utilizar HTTPS, debes ingresar el nombre del servidor que coincida con tu certificado SSL.",
"encryption_redirect": "Redireccionar a HTTPS automáticamente",
"encryption_redirect_desc": "Si está marcado, AdGuard Home redireccionará automáticamente de HTTP a las direcciones HTTPS.",
"encryption_https": "Puerto HTTPS",
@@ -289,7 +294,7 @@
"encryption_dot": "Puerto DNS mediante TLS",
"encryption_dot_desc": "Si este puerto está configurado, AdGuard Home ejecutará un servidor DNS mediante TLS en este puerto.",
"encryption_certificates": "Certificados",
"encryption_certificates_desc": "Para utilizar el cifrado, debe proporcionar una cadena de certificado SSL válida para tu dominio. Puede obtener un certificado gratuito en <0>{{link}}</0> o puede comprarlo en una de las autoridades de certificación de confianza.",
"encryption_certificates_desc": "Para utilizar el cifrado, debes proporcionar una cadena de certificado SSL válida para tu dominio. Puedes obtener un certificado gratuito en <0>{{link}}</0> o puedes comprarlo en una de las autoridades de certificación de confianza.",
"encryption_certificates_input": "Copia/pega aquí tu certificado codificado PEM.",
"encryption_status": "Estado",
"encryption_expire": "Expira",
@@ -305,9 +310,9 @@
"encryption_issuer": "Emisor",
"encryption_hostnames": "Nombres de hosts",
"encryption_reset": "¿Está seguro de que desea restablecer la configuración de cifrado?",
"topline_expiring_certificate": "Tu certificado SSL está a punto de expirar. Actualice la <0>configuración del cifrado</0>.",
"topline_expired_certificate": "Tu certificado SSL ha expirado. Actualice la <0>configuración del cifrado</0>.",
"form_error_port_range": "Ingrese el valor del puerto en el rango de 80 a 65535",
"topline_expiring_certificate": "Tu certificado SSL está a punto de expirar. Actualice la <0>configuración de cifrado</0>.",
"topline_expired_certificate": "Tu certificado SSL ha expirado. Actualice la <0>configuración de cifrado</0>.",
"form_error_port_range": "Ingresa el valor del puerto en el rango de 80 a 65535",
"form_error_port_unsafe": "Este es un puerto inseguro",
"form_error_equal": "No debería ser igual",
"form_error_password": "La contraseña no coincide",
@@ -336,11 +341,11 @@
"client_identifier": "Identificador",
"ip_address": "Dirección IP",
"client_identifier_desc": "Los clientes pueden ser identificados por la dirección IP, MAC y CIDR. Tenga en cuenta que el uso de MAC como identificador solo es posible si AdGuard Home también es un <0>servidor DHCP</0>",
"form_enter_ip": "Ingresar IP",
"form_enter_mac": "Ingresar MAC",
"form_enter_id": "Ingrese el identificador",
"form_enter_ip": "Ingresa la IP",
"form_enter_mac": "Ingresa la MAC",
"form_enter_id": "Ingresa el identificador",
"form_add_id": "Añadir identificador",
"form_client_name": "Ingrese el nombre del cliente",
"form_client_name": "Ingresa el nombre del cliente",
"client_global_settings": "Usar configuración global",
"client_deleted": "Cliente \"{{key}}\" eliminado correctamente",
"client_added": "Cliente \"{{key}}\" añadido correctamente",
@@ -356,20 +361,20 @@
"access_allowed_desc": "Lista de CIDR o direcciones IP. Si está configurado, AdGuard Home solo aceptará peticiones de estas direcciones IP.",
"access_disallowed_title": "Clientes no permitidos",
"access_disallowed_desc": "Lista de CIDR o direcciones IP. Si está configurado, AdGuard Home eliminará las peticiones de estas direcciones IP.",
"access_blocked_title": "Dominios bloqueados",
"access_blocked_desc": "No confundas esto con filtros. AdGuard Home eliminará las consultas DNS con estos dominios en la pregunta de la consulta.",
"access_blocked_title": "Dominios no permitidos",
"access_blocked_desc": "No confundas esto con filtros. AdGuard Home eliminará las consultas DNS con estos dominios en la pregunta de la consulta. Aquí puedes especificar los nombres de dominio exactos, comodines y reglas de filtrado de URL, por ejemplo: 'ejemplo.org', '*.ejemplo.org' o '||ejemplo.org^'.",
"access_settings_saved": "Configuración de acceso guardado correctamente",
"updates_checked": "Actualizaciones comprobadas correctamente",
"updates_version_equal": "AdGuard Home está actualizado",
"check_updates_now": "Buscar actualizaciones ahora",
"dns_privacy": "DNS con privacidad",
"dns_privacy": "DNS cifrado",
"setup_dns_privacy_1": "<0>DNS mediante TLS:</0> Utilice la cadena <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS mediante HTTPS:</0> Utilice la cadena <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Tenga en cuenta que los protocolos DNS cifrados solo son compatibles con Android 9. Por lo tanto, necesita instalar software adicional para otros sistemas operativos.</0><0>Aquí hay una lista de software que puedes usar.</0>",
"setup_dns_privacy_android_1": "Android 9 soporta DNS mediante TLS de forma nativa. Para configurarlo, vaya a Configuración → Red e Internet → Avanzado → DNS privado e ingrese su nombre de dominio allí.",
"setup_dns_privacy_android_1": "Android 9 soporta DNS mediante TLS de forma nativa. Para configurarlo, ve a Configuración → Red e Internet → Avanzado → DNS privado e ingresa el nombre del dominio allí.",
"setup_dns_privacy_android_2": "<0>AdGuard para Android</0> soporta <1>DNS mediante HTTPS</1> y <1>DNS mediante TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> añade soporte a Android para <1>DNS mediante HTTPS</1>.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> soporta <1>DNS mediante HTTPS</1>, pero para configurarlo y que use tu propio servidor, necesitará generar un <2>DNS Stamp</2> para ello.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> soporta <1>DNS mediante HTTPS</1>, pero para configurarlo y que uses tu propio servidor, necesitarás generar un <2>DNS Stamp</2> para ello.",
"setup_dns_privacy_ios_2": "<0>AdGuard para iOS</0> soporta la configuración <1>DNS mediante HTTPS</1> y <1>DNS mediante TLS</1>.",
"setup_dns_privacy_other_title": "Otras implementaciones",
"setup_dns_privacy_other_1": "AdGuard Home en sí mismo puede ser un cliente DNS seguro en cualquier plataforma.",
@@ -385,9 +390,10 @@
"rewrite_confirm_delete": "¿Está seguro de que desea eliminar la reescritura DNS para \"{{key}}\"?",
"rewrite_desc": "Permite configurar fácilmente la respuesta DNS personalizada para un nombre de dominio específico.",
"rewrite_applied": "Regla de reescritura aplicada",
"rewrite_hosts_applied": "Reescrito por la regla del archivo hosts",
"dns_rewrites": "Reescrituras DNS",
"form_domain": "Ingrese el nombre del dominio o comodín",
"form_answer": "Ingrese la dirección IP o el nombre del dominio",
"form_domain": "Ingresa el nombre del dominio o comodín",
"form_answer": "Ingresa la dirección IP o el nombre del dominio",
"form_error_domain_format": "Formato de dominio no válido",
"form_error_answer_format": "Formato de respuesta no válido",
"configure": "Configurar",
@@ -429,37 +435,39 @@
"filters_interval": "Intervalo de actualización",
"disabled": "Deshabilitado",
"username_label": "Usuario",
"username_placeholder": "Ingrese su nombre de usuario",
"username_placeholder": "Ingresa tu nombre de usuario",
"password_label": "Contraseña",
"password_placeholder": "Ingrese la contraseña",
"password_placeholder": "Ingresa tu contraseña",
"sign_in": "Iniciar sesión",
"sign_out": "Cerrar sesión",
"forgot_password": "¿Olvidaste tu contraseña?",
"forgot_password_desc": "Por favor siga <0>estos pasos</0> para crear una nueva contraseña para su cuenta de usuario.",
"forgot_password_desc": "Por favor sigue <0>estos pasos</0> para crear una nueva contraseña para tu cuenta de usuario.",
"location": "Ubicación",
"orgname": "Nombre de la organización",
"netname": "Nombre de la red",
"descr": "Descripción",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Más información</0> sobre cómo crear tus propias listas para bloqueo de hosts.",
"filtering_rules_learn_more": "<0>Más información</0> sobre cómo crear tus propias listas de hosts.",
"blocked_by_response": "Bloqueado por CNAME o IP en respuesta",
"try_again": "Volver a intentar",
"domain_desc": "Ingrese el nombre de dominio o comodín que desea reescribir.",
"domain_desc": "Ingresa el nombre del dominio o comodín que deseas reescribir.",
"example_rewrite_domain": "reescribe las respuestas solo para este nombre de dominio.",
"example_rewrite_wildcard": "reescribe las respuestas para todos los subdominios de <0>ejemplo.org</0>.",
"disable_ipv6": "Deshabilitar IPv6",
"disable_ipv6_desc": "Si esta función está habilitada, se eliminarán todas las consultas DNS para direcciones IPv6 (tipo AAAA).",
"fastest_addr": "Dirección IP más rápida",
"fastest_addr_desc": "Consulta todos los servidores DNS y devuelve la dirección IP más rápida de todas las respuestas",
"autofix_warning_text": "Si hace clic en \"Corregir\", AdGuard Home configurará tu sistema para utilizar el servidor DNS de AdGuard Home.",
"autofix_warning_list": "Realizará estas tareas: <0>Deshabilitar el sistema DNSStubListener</0> <0>Establecer la dirección del servidor DNS en 127.0.0.1</0> <0>Reemplazar el destino del enlace simbólico de /etc/resolv.conf por /run/systemd/resolve/resolv.conf</0> <0>Detener DNSStubListener (recargar el servicio systemd-resolved)</0>",
"autofix_warning_result": "Como resultado, todas las peticiones DNS de su sistema serán procesadas por AdGuard Home de manera predeterminada.",
"autofix_warning_result": "Como resultado, todas las peticiones DNS de tu sistema serán procesadas por AdGuard Home de manera predeterminada.",
"tags_title": "Etiquetas",
"tags_desc": "Puede seleccionar las etiquetas que correspondan al cliente. Las etiquetas pueden ser incluidas en las reglas de filtrado y te permiten aplicarlas con mayor precisión. <0>Más información</0>",
"form_select_tags": "Seleccione las etiquetas del cliente",
"check_title": "Comprobar filtrado",
"check_desc": "Comprueba si el nombre del host está siendo filtrado",
"check": "Comprobar",
"form_enter_host": "Ingrese un nombre de host",
"filtered_custom_rules": "Filtrado por reglas de filtrado personalizadas",
"form_enter_host": "Ingresa un nombre de host",
"filtered_custom_rules": "Filtrado por reglas de filtrado personalizado",
"host_whitelisted": "El host está en la lista blanca",
"check_ip": "Direcciones IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
@@ -479,5 +487,7 @@
"install_static_configure": "Hemos detectado que utiliza una dirección IP dinámica: <0>{{ip}}</0>. ¿Deseas usarla como tu dirección estática?",
"confirm_static_ip": "AdGuard Home configurará {{ip}} para ser tu dirección IP estática. ¿Desea continuar?",
"list_updated": "{{count}} lista actualizada",
"list_updated_plural": "{{count}} listas actualizadas"
"list_updated_plural": "{{count}} listas actualizadas",
"dnssec_enable": "Habilitar DNSSEC",
"dnssec_enable_desc": "Establece el indicador DNSSEC en las consultas DNS salientes y comprueba el resultado (se requiere un resolutor habilitado para DNSSEC)"
}

View File

@@ -2,6 +2,7 @@
"client_settings": "تنظیمات کلاینت",
"example_upstream_reserved": "میتوانید جریان ارسالی DNS <0> را برای یک دامنه مشخص تعیین کنید </0>",
"upstream_parallel": "استفاده از جستار موازی برای سرعت دادن به تفکیک با جستار همزمان همه جریان های ارسالی",
"parallel_requests": "درخواست های موازی",
"bootstrap_dns": "خودراه انداز سرورهای DNS",
"bootstrap_dns_desc": "خودراه انداز سرورهای DNS برای تفکیک آدرس آی پی تفکیک کننده های DoH/DoT که شما بعنوان جریان ارسالی تعیین کردید استفاده میشود.",
"check_dhcp_servers": "بررسی برای سرورهای DHCP",
@@ -71,7 +72,7 @@
"disabled_protection": "حفاظت غير فعال شده",
"refresh_statics": "تازه سازی آمار",
"dns_query": "جستار DNS",
"blocked_by": "مسدود شده با",
"blocked_by": "<0/>مسدود شده با<0>",
"stats_malware_phishing": "بدافزار/فیشینگ مسدود شده است",
"stats_adult": "وبسایت غیراخلاقی مسدود شده است",
"stats_query_domain": "دامنه جستار بالا",
@@ -140,7 +141,7 @@
"add_allowlist": "افزودن لیست مجاز",
"cancel_btn": "لغو",
"enter_name_hint": "نام را وارد کنید",
"enter_url_hint": "آدرس را وارد کنید...",
"enter_url_or_path_hint": "یک آدرس یا یک مسیر کامل لیست وارد کنید",
"check_updates_btn": "بررسی بروز رسانی",
"new_blocklist": "لیست سیاه جدید",
"new_allowlist": "لیست مجاز جدید",
@@ -149,6 +150,7 @@
"enter_valid_blocklist": "آدرس معتبر برای لیست سیاه وارد کنید.",
"enter_valid_allowlist": "آدرس معتبر برای لیست مجاز وارد کنید.",
"form_error_url_format": "فرمت آدرس نامعتبر است",
"form_error_url_or_path_format": "آدرس نامعتبر یا یک مسیر کامل لیست",
"custom_filter_rules": "دستورات فیلترینگ دستی",
"custom_filter_rules_hint": "یک دستور در خط وارد کنید.میتوانید از دستورات مسدودساز تبلیغ یا نحو فایل های میزبان استفاده کنید.",
"examples_title": "مثال ها",
@@ -199,6 +201,8 @@
"query_log_disabled": "وقایع جستار غیرفعال شده است و میتواند در <0>تنظیمات</0> پیکربندی شود",
"query_log_strict_search": "برای جستجوی موکد از علامت نقل قول دوتایی استفاده کنید",
"query_log_retention_confirm": "آیا واقعا میخواهید مدت حفظ وقایع جستار را تغییر دهید؟ اگر فاصله را کاهش دهید، برخی داده ها حذف میشود",
"anonymize_client_ip": "گمنام کردن IP کلاینت",
"anonymize_client_ip_desc": "آدرس IP کلاینت در وقایع و آمارها را ذخیره نکن",
"dns_config": "پیکربندی DNS سرور",
"blocking_mode": "حالت مسدودسازی",
"default": "پيش فرض",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "اولویت ها را برای روتر خود باز کنید.معمولا میتوانید آن را ز طریق مرورگر از طریق آدرسی مانند ( http://192.168.0.1/ یا http://192.168.1.1/) دسترسی داشته باشید.ممکن است رمزعبور پرسیده شود،اگر آن را بخاطر ندارید،غالبا میتوان رمزعبور را با فشردن دکمه پشت روتر ریست کرد.برخی روترها برنامه خاصی نیاز دارد که باید در رایانه/گوشی نصب شده باشد.",
"install_devices_router_list_2": "تنظیمات DHCP/DNS را بیابید.دنبال حروف DNS بگردید در فیلدی که اجازه دو یا سه گروه عدد را میدهد و هر کدام در چهار گروه سه عددی شکسته شده است",
"install_devices_router_list_3": "آدرس سرور AdGuard Home خود را آنجا وارد کنید",
"install_devices_router_list_4": "شما نمیتوانید DNS سرور سفارشی در برخی از روترها تنظیم کنید. در این مورد اگر شما AdGuard Home را بعنوان DHCP سرور راه اندازی کنید میتواند کمک کند. در غیر اینصورت باید راهنمای سفارشی سازی DNS سرورها برای مدل خاص روتر خود را انتخاب کنید.",
"install_devices_windows_list_1": "کنترل پنل را از طریق استارت منو یا جستجوی ویندوز باز کنید.",
"install_devices_windows_list_2": "بروید به شبکه و دسته اینترنت و سپس به شبکه و مرکز اشتراک گذاری",
"install_devices_windows_list_3": "در سمت چپ صفحه تنظیمات آداپتور را تغییر داده و روی آن کلیک کنید",
@@ -385,6 +390,7 @@
"rewrite_confirm_delete": "آیا واقعا میخواهید بازنویسی DNS برای \"{{key}}\" را حذف کنید؟",
"rewrite_desc": "به آسانی اجازه پیکربندی پاسخ DNS دستی برای یک نام دامنه خاص را می دهد.",
"rewrite_applied": "دستور بازنویسی اِعمال شد",
"rewrite_hosts_applied": "بازنویسی با دستور فایل میزبان",
"dns_rewrites": "بازنویسی های DNS",
"form_domain": "نام دامنه را وارد کنید",
"form_answer": "نام دامنه یا آدرس آی پی را وارد کنید",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "بازنویسی پاسخ ها برای همه زیردامنه های <0>example.org</0>.",
"disable_ipv6": "غیرفعالسازی IPv6",
"disable_ipv6_desc": "اگر این ویژگی فعال شده، همه جستارهای DNS برای آدرس های IPv6 (نوع AAAA) رها میشود.",
"fastest_addr": "سریعترین آدرس آی پی",
"fastest_addr_desc": "جستار همه سرورهای DNS و بازگرداندن سریعترین آدرس IP از میان همه پاسخ ها",
"autofix_warning_text": "اگر روی \"تعمیر\" کلیک کنید، AdGuardHome سیستم شما را برای استفاده از DNS سرور AdGuardHome پیکربندی می کند.",
"autofix_warning_list": "این وظایف را اجرا میکند: <0>غیرفعالسازی DNSStubListener سیستم</0> <0>تنظیم آدرس DNS 127.0.0.1</0> سرور به <0>جایگزینی لینک نمادی هدف /etc/resolv.conf به/run/systemd/resolve/resolv.conf</0> <0>توقف DNSStubListener (بارگیری مجدد سرویس systemd-resolved)</0>",
"autofix_warning_result": "در نتیجه همه درخواست های DNS از سیستم شما بطور پیش فرض با AdGuardHome پردازش خواهد شد.",
@@ -479,5 +487,7 @@
"install_static_configure": "ما تشخیص دادیم از آدرس آی پی پویا استفاده شده است — <0>{{ip}}</0>. آیا میخواهید از آن بعنوان آدرس ثابت استفاده کنید؟",
"confirm_static_ip": "AdGuard Home {{ip}} بعنوان آدرس آی پی ثابت شما پیکربندی می کند. ادامه میدهید؟",
"list_updated": "{{count}} لیست بروز رسانی شد",
"list_updated_plural": "{{count}} لیست بروز رسانی شد"
"list_updated_plural": "{{count}} لیست بروز رسانی شد",
"dnssec_enable": "فعالسازی DNSSEC",
"dnssec_enable_desc": "تنظیم نشان DNSSEC در جستارهای حاصل DNS و بررسی نتیجه (تفکیک کننده DNSSEC-فعال شده نیاز است)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Paramètres du client",
"example_upstream_reserved": "vous pouvez spécifier un DNS upstream <0>pour un/des domaine(s) spécifique(s)</0>",
"upstream_parallel": "Utilisez des requêtes parallèles pour accélérer la résolution en requêtant simultanément tous les serveurs upstream",
"example_upstream_reserved": "Vous pouvez spécifier un DNS en amont <0>pour un/des domaine(s) spécifique(s)</0>",
"upstream_parallel": "Utiliser des requêtes parallèles pour accélérer la résolution en requêtant simultanément tous les serveurs upstream",
"parallel_requests": "Demandes en parallèle",
"bootstrap_dns": "Serveurs DNS d'amorçage",
"bootstrap_dns_desc": "Les serveurs DNS d'amorçage sont utilisés pour résoudre les adresses IP des résolveurs DoH/DoT que vous spécifiez comme upstream.",
"check_dhcp_servers": "Rechercher les serveurs DHCP",
@@ -108,6 +109,7 @@
"dns_blocklists": "Listes de blocage DNS",
"dns_allowlists": "Listes dautorisation DNS",
"dns_blocklists_desc": "AdGuard Home bloquera les domaines correspondant aux listes de blocage.",
"dns_allowlists_desc": "Les domaines provenant de listes dautorisation DNS seront autorisés même sils figurent dans lune des listes de blocage.",
"custom_filtering_rules": "Règles de filtrage personnalisées",
"encryption_settings": "Paramètres de cryptage",
"dhcp_settings": "Paramètres DHCP",
@@ -139,7 +141,7 @@
"add_allowlist": "Ajouter liste dautorisation",
"cancel_btn": "Annuler",
"enter_name_hint": "Saisir nom",
"enter_url_hint": "Saisir URL",
"enter_url_or_path_hint": "Entrez une URL ou un chemin absolu de la liste",
"check_updates_btn": "Vérifier les mises à jour",
"new_blocklist": "Nouvelle liste de blocage",
"new_allowlist": "Nouvelle liste dautorisation",
@@ -148,6 +150,7 @@
"enter_valid_blocklist": "Saisissez une URL valide vers la liste de blocage.",
"enter_valid_allowlist": "Saisissez une URL valide vers la liste dautorisation.",
"form_error_url_format": "Format dURL incorrect",
"form_error_url_or_path_format": "Entrez une URL ou le chemin absolu de la liste",
"custom_filter_rules": "Règles de filtrage d'utilisateur",
"custom_filter_rules_hint": "Saisissez la règle en une ligne. C'est possible d'utiliser les règles de blocage ou la syntaxe des fichiers hosts.",
"examples_title": "Exemples",
@@ -198,6 +201,8 @@
"query_log_disabled": "Le journal des requêtes est désactivé et peut être configuré dans les <0>paramètres</0>",
"query_log_strict_search": "Utilisez les doubles guillemets pour une recherche stricte",
"query_log_retention_confirm": "Êtes-vous sûr de vouloir modifier la rétention des journaux de requêtes ? Si vous diminuez la valeur de l'intervalle, certaines données seront perdues",
"anonymize_client_ip": "Anonymiser lIP du client",
"anonymize_client_ip_desc": "Ne pas enregistrer ladresse IP complète du client dans les journaux et statistiques",
"dns_config": "Configuration du serveur DNS",
"blocking_mode": "Mode du blocage",
"default": "Par défaut",
@@ -252,6 +257,7 @@
"install_devices_router_list_1": "Ouvrez les préférences de votre routeur. Normalement, vous pouvez y accéder depuis votre navigateur Web via une URL (exemple http://192.168.0.1/ ou http://192.168.1.1/). Vous devrez peut-être saisir le mot de passe. Si vous ne vous en rappelez plus, vous pouvez le réinitialiser en appuyant sur le bouton du routeur. Certains routeurs fonctionnent sous une application spécifique, qui devrait être déjà installée sur votre ordinateur/téléphone.",
"install_devices_router_list_2": "Trouvez les paramètres DHCP/DNS. Recherchez les lettres DNS près d'une zone qui permet la saisie de 2 ou 3 blocs de chiffres, chacun composé de 4 parties de 1 à 3 chiffres.",
"install_devices_router_list_3": "Saisissez vos adresses de serveur AdGuard Home ici.",
"install_devices_router_list_4": "Vous ne pouvez pas définir un serveur DNS personnalisé sur certains types de routeurs. Dans ce cas, cela peut être utile si vous configurez AdGuard Home en tant que serveur DHCP. Sinon, vous devez rechercher le manuel sur la façon de personnaliser les serveurs DNS pour votre modèle de routeur particulier.",
"install_devices_windows_list_1": "Ouvrez votre Panneau de configuration depuis le menu Démarrer ou la recherche Windows.",
"install_devices_windows_list_2": "Allez dans la catégorie Réseau et Internet et ensuite dans le Centre Réseau et Partage.",
"install_devices_windows_list_3": "Sur la partie gauche de l'écran, recherchez Modifier les paramètres de la carte et cliquez dessus.",
@@ -355,8 +361,7 @@
"access_allowed_desc": "Une liste d'adresses IP ou CIDR. Si configuré, AdGuard Home acceptera uniquement les requêtes provenant de ces adresses IP.",
"access_disallowed_title": "Clients non autorisés",
"access_disallowed_desc": "Une liste d'adresses IP ou CIDR. Si configuré, AdGuard Home bloquera les requêtes provenant de ces adresses IP.",
"access_blocked_title": "Domaines bloqués",
"access_blocked_desc": "Ne confondez pas ceci avec les filtres. AdGuard Home bloquera les requêtes DNS avec ces domaines dans la requête.",
"access_blocked_desc": "Ne confondez pas ceci avec les filtres. AdGuard Home ignorera les requêtes DNS portant sur les domaines ci-dessous.",
"access_settings_saved": "Paramètres d'accès enregistrés avec succès",
"updates_checked": "Mises à jour vérifiées",
"updates_version_equal": "AdGuard Home est à jour",
@@ -384,6 +389,7 @@
"rewrite_confirm_delete": "Voulez-vous vraiment supprimer la réécriture DNS pour \"{{key}}\" ?",
"rewrite_desc": "Permet de configurer facilement la réponse DNS personnalisée pour un nom de domaine spécifique.",
"rewrite_applied": "Règle de réécriture appliquée",
"rewrite_hosts_applied": "Réécrit par la règle du fichier dhôtes",
"dns_rewrites": "Réécritures DNS",
"form_domain": "Saisissez un domaine ou caracrtère générique",
"form_answer": "Saisissez une adresse IP ou un nom de domaine",
@@ -448,6 +454,8 @@
"example_rewrite_wildcard": "réécrire les réponses pour tous les sous-domaines <0>exemple.org</0>.",
"disable_ipv6": "Désactiver IPv6",
"disable_ipv6_desc": "Si cette fonctionnalité est activée, toutes les requêtes DNS visant des adresses IPv6 (type AAAA) seront annulées.",
"fastest_addr": "Adresse IP la plus rapide",
"fastest_addr_desc": "Rechercher tous les serveurs DNS et renvoyer ladresse IP la plus rapide parmi toutes les réponses",
"autofix_warning_text": "Si vous cliquez sur \"Réparer\", AdGuardHome configurera votre système pour utiliser le serveur DNS AdGuardHome.",
"autofix_warning_list": "Ceci effectuera les tâches suivantes : <0>Désactiver le système DNSStubListener</0> <0>Définir ladresse du serveur DNS à 127.0.0.1 </0> <0>Remplacer la cible du lien symbolique de /etc/resolv.conf par /run/systemd/resolve/resolv.conf</0> <0>Arrêter DNSStubListener (recharger le service résolu par systemd)</0>",
"autofix_warning_result": "Par conséquent, toutes les demandes DNS de votre système seront traitées par AdGuardHome par défaut.",
@@ -478,5 +486,7 @@
"install_static_configure": "Nous avons détecté quune adresse IP dynamique est utilisée — <0>{{ip}}</0>. Voulez-vous lutiliser comme votre adresse statique?",
"confirm_static_ip": "AdGuard Home configurera {{ip}} pour être votre adresse IP statique. Voulez-vous poursuivre?",
"list_updated": "{{count}} liste mise à jour",
"list_updated_plural": "{{count}} listes mises à jour"
"list_updated_plural": "{{count}} listes mises à jour",
"dnssec_enable": "Activer DNSSEC",
"dnssec_enable_desc": "Définir lindicateur DNSSEC dans les requêtes DNS sortantes et vérifier le résultat (résolveur compatible DNSSEC requis)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Postavke klijenta",
"example_upstream_reserved": "možete odrediti DNS upstream-ove <0>za određene domene</0>",
"upstream_parallel": "Koristi paralelne upite kako bi ubrzali rješavanje istovremenim ispitavanjem svih udaljenih poslužitelja",
"example_upstream_reserved": "VI možete odrediti DNS upstream-ove <0>za određene domene</0>",
"upstream_parallel": "Koristi paralelne upite kako bi ubrzali rješavanje istovremenim ispitavanjem svih upstream poslužitelja",
"parallel_requests": "Paralelni zahtjevi",
"bootstrap_dns": "Bootstrap DNS poslužitelji",
"bootstrap_dns_desc": "Bootstrap DNS poslužitelji koriste se za rezolvanje IP adresa DoH/DoT rezolvera koje navedete kao upstreams.",
"check_dhcp_servers": "Provjera DHCP poslužitelja",
@@ -41,7 +42,7 @@
"dhcp_warning": "Ako svejedno želite omogućiti DHCP poslužitelj, provjerite da nema drugog aktivnog DHCP poslužitelja na vašoj mreži. Inače može pokvariti Internet za ostale povezane uređaje!",
"dhcp_error": "Nismo mogli utvrditi postoji li drugi DHCP poslužitelj na mreži.",
"dhcp_static_ip_error": "Za korištenje DHCP poslužitelja mora se postaviti statička IP adresa. Nismo uspjeli utvrditi je li to mrežno sučelje postavljeno pomoću statičke IP adrese. Ručno postavite statičku IP adresu.",
"dhcp_dynamic_ip_found": "Vaš sustav koristi postavke dinamičkueIP adrese za sučelje <0>{{interfaceName}}</0>. Za korištenje DHCP poslužitelja mora se postaviti statička IP adresa. Vaša trenutna IP adresa je <0>{{ipAddress}}</0>. Ovu ćemo IP adresu automatski postaviti kao statičku ako pritisnete Omogući DHCP dugme.",
"dhcp_dynamic_ip_found": "Vaš sustav koristi postavke dinamičke IP adrese za sučelje <0>{{interfaceName}}</0>. Za korištenje DHCP poslužitelja mora se postaviti statička IP adresa. Vaša trenutna IP adresa je <0>{{ipAddress}}</0>. Ovu IP adresu ćemo automatski postaviti kao statičku ukoliko pritisnete Omogući DHCP dugme.",
"dhcp_lease_added": "Statični lease \"{{key}}\" je uspješno dodan",
"dhcp_lease_deleted": "Statični lease \"{{key}}\" je uspješno uklonjen",
"dhcp_new_static_lease": "Novi static lease",
@@ -67,7 +68,7 @@
"privacy_policy": "Politika privatnosti",
"enable_protection": "Omogući zaštitu",
"enabled_protection": "Omogućena zaštita",
"disable_protection": "Onemogućena zaštita",
"disable_protection": "Onemogući zaštitu",
"disabled_protection": "Onemogućena zaštita",
"refresh_statics": "Osvježi statistiku",
"dns_query": "DNS Upiti",
@@ -140,7 +141,7 @@
"add_allowlist": "Dodaj popis omogućenih",
"cancel_btn": "Poništi",
"enter_name_hint": "Unesite naziv",
"enter_url_hint": "Unesite URL",
"enter_url_or_path_hint": "Unesite URL ili putanju liste",
"check_updates_btn": "Provjeri ažuriranja",
"new_blocklist": "Novi popis blokiranih",
"new_allowlist": "Novi popis omogućenih",
@@ -148,7 +149,8 @@
"edit_allowlist": "Uredi popis omogućenih",
"enter_valid_blocklist": "Unesite valjani URL za popis blokiranih.",
"enter_valid_allowlist": "Unesite valjani URL za popis omogućenih.",
"form_error_url_format": "Nevažeći url format",
"form_error_url_format": "Nevažeći URL format",
"form_error_url_or_path_format": "Nevažeći URL ili putanja od liste",
"custom_filter_rules": "Prilagođena pravila filtriranja",
"custom_filter_rules_hint": "Unesite jedno pravilo po liniji. Možete koristiti sintaksu za pravila blokiranja oglasa ili za hosts datoteke.",
"examples_title": "Primjeri",
@@ -199,6 +201,8 @@
"query_log_disabled": "Zapisnik upita je onemogućen i može se postaviti u <0>postavkama</0>",
"query_log_strict_search": "Koristite dvostruke navodnike za strogo pretraživanje",
"query_log_retention_confirm": "Jeste li sigurni da želite promijeniti zadržavanje zapisnika upita? Ako smanjite vrijednost intervala, neki će podaci biti izgubljeni",
"anonymize_client_ip": "Anonimiraj IP klijenta",
"anonymize_client_ip_desc": "Ne spremajte cijelu IP adresu klijenta u zapisnike i statistike",
"dns_config": "DNS postavke poslužitelja",
"blocking_mode": "Način blokiranja",
"default": "Zadano",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Otvorite postavke za router. Obično mu možete pristupiti iz preglednika putem URL-a (kao što je http://192.168.0.1/ ili http://192.168.1.1/). Od vas će se možda tražiti da unesete lozinku. Ako je se ne sjećate, lozinku možete često poništiti pritiskom na dumge na samom routeru. Neki routeri trebaju određenu aplikaciju, koja bi u tom slučaju trebala biti već instalirana na vašem računalu/telefonu.",
"install_devices_router_list_2": "Pronađite DHCP/DNS postavke. Potražite DNS slova pored polja koje dopušta dva ili tri skupa brojeva, svaki razdvojen u četiri skupine od jedne do tri znamenke.",
"install_devices_router_list_3": "Unesite adresu AdGuard Home poslužitelja ovdje.",
"install_devices_router_list_4": "Ne možete postaviti prilagođeni DNS poslužitelj na nekim vrstama routera. U ovom slučaju, može vam pomoći ako postavite AdGuard Home kao DHCP poslužitelj. U suprotnom, trebali biste potražiti priručnik o tome kako prilagoditi DNS poslužitelje za vaš određeni model routera.",
"install_devices_windows_list_1": "Otvorite Upravljačku ploču putem Start izbornika ili Windows pretrage.",
"install_devices_windows_list_2": "Idite na kategoriju Mreža i Internet i odaberite Centar za mreže i zajedničko korištenje.",
"install_devices_windows_list_3": "Na lijevoj strani zaslona pronađite Promjeni postavke adaptera i pritisnite na to.",
@@ -356,8 +361,8 @@
"access_allowed_desc": "Popis CIDR-a ili IP adresa. Ukoliko je postavljeno, AdGuard Home će prihvatiti samo zahtjeve s ovih IP adresa.",
"access_disallowed_title": "Nedopušteni klijenti",
"access_disallowed_desc": "Popis CIDR-a ili IP adresa. Ukoliko je postavljeno, AdGuard Home će zaustaviti zahtjeve s ovih IP adresa.",
"access_blocked_title": "Blokirane domene",
"access_blocked_desc": "Ne miješajte ovo s filtrima. AdGuard Home će zaustaviti DNS upite s tim ovim domenama u podnesenim upitima.",
"access_blocked_title": "Nedopuštene domene",
"access_blocked_desc": "Ne miješajte ovo s filtrima. AdGuard Home će zaustaviti DNS upite s tim ovim domenama u podnesenim upitima. Ovdje možete definirati točne nazive domena, zamjenske znakove ili pravila URL filtriranja, npr. 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "Postavke pristupa su uspješno spremljene",
"updates_checked": "Uspješna provjera ažuriranja",
"updates_version_equal": "AdGuard Home je ažuriran",
@@ -384,7 +389,8 @@
"rewrite_not_found": "Nema DNS prijepisa",
"rewrite_confirm_delete": "Jeste li sigurni da želite ukloniti DNS prijepis za \"{{key}}\" klijenta?",
"rewrite_desc": "Omogućuje jednostavno postavljanje prilagođenog DNS odgovora za određenu domenu.",
"rewrite_applied": "Primijenjena pravila prijepisa",
"rewrite_applied": "Pravilo prijepisa je primjenjeno",
"rewrite_hosts_applied": "Prepisano od strane pravila hosts datoteke",
"dns_rewrites": "DNS prijepisi",
"form_domain": "Unesite naziv domene ili zamjenski znak",
"form_answer": "Unesite IP adresu ili naziv domene",
@@ -441,7 +447,7 @@
"netname": "Naziv mreže",
"descr": "Opis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Saznajte više</0> o stvaranju vlastitog hosts popisa neželjenih.",
"filtering_rules_learn_more": "<0>Saznajte više</0> o stvaranju vlastitog popisa poslužitelja.",
"blocked_by_response": "Blokirano od strane CNAME-a ili IP-a u odgovoru",
"try_again": "Pokušajte ponovno",
"domain_desc": "Unesite naziv domene ili zamjenski znak koji želite prepisati.",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "prepiši odgovore za sve <0>example.org</0> poddomene.",
"disable_ipv6": "Onemogući IPv6",
"disable_ipv6_desc": "Ukoliko je ova značajka omogućena, svi DNS upiti za IPv6 adrese (AAAA tip) će biti odbačeni.",
"fastest_addr": "Najbrža IP adresa",
"fastest_addr_desc": "Ispitajte sve DNS poslužitelje i vratite najbržu IP adresu među svim odgovorima",
"autofix_warning_text": "Ako pritisnete \"Popravi\", AdGuard Home će postaviti vaš sustav da koristi AdGuardHome DNS poslužitelj.",
"autofix_warning_list": "Izvodi sljedeće radnje: <0>Deaktiviraj DNSStubListener sustav</0> <0>Postavi adresu DNS poslužitelja na 127.0.0.1</0> <0>Zamijeni simbolički cilj veze iz /etc/resolv.conf u /run/systemd/resolve/resolv.conf</0> <0>Zaustavi DNSStubListener (ponovno pokreni systemd-resolved uslugu)</0>",
"autofix_warning_result": "Kao rezultat toga, sve DNS zahtjeve iz vašeg sustava će AdGuard Home obraditi prema zadanim postavkama.",
@@ -479,5 +487,7 @@
"install_static_configure": "Otkrili smo da se koristi dinamička IP adresa - <0>{{ip}}</0>. Želite li je koristiti kao svoju statičku adresu?",
"confirm_static_ip": "AdGuard Home će postaviti {{ip}} kao vašu statičku IP adresu. Želiš li nastaviti?",
"list_updated": "{{count}} popis ažuriran",
"list_updated_plural": "{{count}} popisa ažurirana"
"list_updated_plural": "{{count}} popisa ažurirana",
"dnssec_enable": "Omogući DNSSEC",
"dnssec_enable_desc": "Omogućite DNSSEC u izlaznim DNS upitima i provjerite rezultat (potreban je resolver s omogućenim DNSSEC-om)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Pengaturan klien",
"example_upstream_reserved": "Anda dapat menentukan DNS upstream <0>untuk domain spesifik</0>",
"example_upstream_reserved": "Anda dapat menetapkan DNS upstream <0>untuk domain spesifik</0>",
"upstream_parallel": "Gunakan kueri paralel untuk mempercepat resoluasi dengan menanyakan semua server upstream secara bersamaan",
"parallel_requests": "Permintaan paralel",
"bootstrap_dns": "Server DNS bootstrap",
"bootstrap_dns_desc": "Server Bootstrap DNS dapat digunakan untuk meresolve alamat IP pada DoH/DoT resolvers yang Anda tentukan sebagai upstreams.",
"check_dhcp_servers": "Cek untuk server DHCP",
@@ -71,7 +72,7 @@
"disabled_protection": "Perlindungan dimatikan",
"refresh_statics": "Segarkan statistik",
"dns_query": "Kueri DNS",
"blocked_by": "Diblokir oleh",
"blocked_by": "<0>Diblokir oleh</0>",
"stats_malware_phishing": "Malware/phishing diblokir",
"stats_adult": "Situs dewasa diblokir",
"stats_query_domain": "Kueri domain teratas",
@@ -105,6 +106,7 @@
"no_servers_specified": "Sever tidak disebutkan",
"general_settings": "Pengaturan umum",
"dns_settings": "Pengaturan DNS",
"dns_blocklists": "Daftar blokir DNS",
"encryption_settings": "Pengaturan enkripsi",
"dhcp_settings": "Pengaturan DHCP",
"upstream_dns": "Server DNS hulu",
@@ -129,8 +131,9 @@
"filters_and_hosts_hint": "AdGuard Home memahami aturan dasar adblock dan sintak file hosts.",
"cancel_btn": "Batal",
"enter_name_hint": "Masukkan nama",
"enter_url_hint": "Masukkan URL",
"enter_url_or_path_hint": "Masukan sebuah URL atau jalur absolut dari daftar",
"check_updates_btn": "Cek pembaruan",
"form_error_url_or_path_format": "URL atau jalur absolut dari daftar tidak valid",
"custom_filter_rules": "Aturan penyaringan khusus",
"custom_filter_rules_hint": "Masukkan satu aturan dalam sebuah baris. Anda dapat menggunakan baik aturan adblock maupun sintaks file hosts.",
"examples_title": "Contoh",
@@ -219,6 +222,7 @@
"install_devices_router_list_1": "Buka preferensi untuk router Anda. Biasanya, Anda dapat mengaksesnya dari browser Anda melalui URL (seperti http://192.168.0.1/ atau http://192.168.1.1/). Anda mungkin diminta memasukkan kata sandi. Jika Anda tidak mengingatnya, Anda dapat mengatur ulang kata sandi dengan menekan tombol atur ulang (reset) pada router. Beberapa router ada yang memerlukan aplikasi tertentu, dalam hal ini harus sudah diinstal pada komputer / telepon Anda.",
"install_devices_router_list_2": "Temukan pengaturan DHCP / DNS. Cari huruf DNS di sebelah bidang yang memungkinkan dua atau tiga set angka, masing-masing dipecah menjadi empat grup dengan satu hingga tiga digit.",
"install_devices_router_list_3": "Masukkan alamat server AdGuard Home disana",
"install_devices_router_list_4": "Anda tidak dapat menyetel server DNS kustom pada beberapa tipe router. Dalam hal ini mungkin membantu jika Anda mengatur AdGuard Home sebagai server DHCP. Jika tidak, Anda harus mencari petunjuk tentang cara mengkustomisasi server DNS untuk model router khusus Anda.",
"install_devices_windows_list_1": "Buka Panel Kontrol melalui menu Start atau pencarian Windows.",
"install_devices_windows_list_2": "Masuk ke kategori Jaringan dan Internet (Network and Internet) dan kemudian ke Pusat Jaringan dan Berbagi (Network and Sharing Center).",
"install_devices_windows_list_3": "Di sisi kiri layar temukan Ubah pengaturan adaptor dan klik.",
@@ -348,6 +352,7 @@
"rewrite_confirm_delete": "Apakah anda yakin ingin menghapus DNS rewrite untuk \"{{key}}\"?",
"rewrite_desc": "Memungkinkan untuk dengan mudah mengkonfigurasi respons DNS kustom untuk nama domain tertentu.",
"rewrite_applied": "Aturan Rewrite yang diterapkan",
"rewrite_hosts_applied": "Ditulis ulang oleh aturan file hosts",
"dns_rewrites": "DNS rewrite",
"form_domain": "Masukkan nama domain",
"form_answer": "Masaukan alamat IP atau nama domain",
@@ -408,6 +413,19 @@
"try_again": "Coba lagi",
"disable_ipv6": "Matikan IPv6",
"disable_ipv6_desc": "Apabila fitur ini dinyalakan, semua permintaan DNS untuk alamat-alamat IPv6 (tipe AAAA) akan diputus.",
"fastest_addr": "Alamat IP tercepat",
"fastest_addr_desc": "Permintaan semua server DNS dan kembalinya alamat IP tercepat di antara semua respons",
"autofix_warning_text": "Apabila anda menekan \"Perbaiki\", AdGuardHome akan mengatur sistem anda untuk menggunakan server DNS AdGuardHome.",
"autofix_warning_result": "Hasilnya, semua permintaan DNS dari sistem anda akan diproses oleh AdGuardHome secara standar."
"autofix_warning_result": "Hasilnya, semua permintaan DNS dari sistem anda akan diproses oleh AdGuardHome secara standar.",
"check_ip": "Alamat IP: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Alasan: {{reason}}",
"check_rule": "Aturan: {{rule}}",
"check_service": "Nama layanan: {{service}}",
"check_not_found": "Tidak di temukan di daftar penyaringan anda",
"client_confirm_block": "Apa anda yakin ingin mem-blokir klien ini \"{{ip}}\"?",
"client_confirm_unblock": "Apa anda yakin ingin meng-unblock klien ini \"{{ip}}\"?",
"client_blocked": "Klien \"{{ip}}\" sukses di blokir",
"client_unblocked": "Klien \"{{ip}}\" sukses di unblock",
"static_ip": "Alamat IP statis"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Impostazioni client",
"example_upstream_reserved": "puoi specificare un server DNS<0>per uno specifico dominio(i)</0>",
"example_upstream_reserved": "Puoi specificare un server DNS<0>per uno specifico dominio(i)</0>",
"upstream_parallel": "Usa le query parallele per accelerare la risoluzione interrogando simultaneamente tutti i server",
"parallel_requests": "Richieste parallele",
"bootstrap_dns": "Server DNS di avvio",
"bootstrap_dns_desc": "Server DNS usati per risolvere gli indirizzi IP dei risolutori DoH/DoT specificati come upstreams.",
"check_dhcp_servers": "Controlla la presenza di server DHCP",
@@ -71,7 +72,7 @@
"disabled_protection": "Protezione disabilitata",
"refresh_statics": "Aggiorna statistiche",
"dns_query": "Query DNS",
"blocked_by": "Bloccato dai Filtri",
"blocked_by": "<0>Bloccato dai Filtri</0>",
"stats_malware_phishing": "Malware/phishing bloccati",
"stats_adult": "Siti per adulti bloccati",
"stats_query_domain": "Domini maggiormente richiesti",
@@ -105,6 +106,11 @@
"no_servers_specified": "Nessun server specificato",
"general_settings": "Impostazioni generali",
"dns_settings": "Impostazioni DNS",
"dns_blocklists": "Lista di blocco DNS",
"dns_allowlists": "Lista DNS consentiti",
"dns_blocklists_desc": "AdGuard Home bloccherà i domini che corrispondenti alla lista di blocco.",
"dns_allowlists_desc": "I domini DNS consentiti saranno consentiti anche se sono nella lista di blocco.",
"custom_filtering_rules": "Regole filtri personalizzati",
"encryption_settings": "Impostazioni di criptazione",
"dhcp_settings": "Impostazioni DHCP",
"upstream_dns": "Server DNS upstream",
@@ -122,17 +128,29 @@
"enabled_save_search_toast": "Abilita Ricerca Sicura",
"enabled_table_header": "Attivo",
"name_table_header": "Nome",
"list_url_table_header": "Elenco URL",
"rules_count_table_header": "Numero regole",
"last_time_updated_table_header": "Ultimo aggiornamento",
"actions_table_header": "Azioni",
"edit_table_action": "Modifica",
"delete_table_action": "Elimina",
"filters_and_hosts_hint": "AdGuard Home è in grado di comprendere la sintassi delle regole di adblock o quelle dei file hosts",
"no_blocklist_added": "Non è stata aggiunta alcuna lista di blocco",
"no_whitelist_added": "Non è stata aggiunta alcuna lista dei consentiti",
"add_blocklist": "Aggiungi lista di blocco",
"add_allowlist": "Aggiungi lista dei consentiti",
"cancel_btn": "Annulla",
"enter_name_hint": "Inserisci nome",
"enter_url_hint": "Inserisci URL",
"enter_url_or_path_hint": "Inmetti un URL o il percorso assoluto della lista",
"check_updates_btn": "Controlla aggiornamenti",
"new_blocklist": "Nuova lista di blocco",
"new_allowlist": "Nuova lista dei consentiti",
"edit_blocklist": "Modifica lista di blocco",
"edit_allowlist": "Modifica lista dei consentiti",
"enter_valid_blocklist": "Inserisci un URL valido nella lista di blocco.",
"enter_valid_allowlist": "Inserisci un URL valido nella lista dei consentiti.",
"form_error_url_format": "Formato url non valido",
"form_error_url_or_path_format": "URL o percorso assoluto della lista non valido",
"custom_filter_rules": "Regole filtri personalizzate",
"custom_filter_rules_hint": "Inserisci una regola per riga. Puoi usare la sintassi delle regole di adblock o quelle dei file hosts.",
"examples_title": "Esempi",
@@ -148,6 +166,7 @@
"example_upstream_doh": "<a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-over-HTTPS</a> criptato",
"example_upstream_sdns": "puoi usare <a href='https://dnscrypt.info/stamps/' target='_blank'>DNS Stamps</a> per <a href='https://dnscrypt.info/' target='_blank'>DNSCrypt</a> oppure dei resolver con <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-over-HTTPS</a>",
"example_upstream_tcp": "DNS regolari (via TCP)",
"all_lists_up_to_date_toast": "Tutte le liste sono aggiornate",
"updated_upstream_dns_toast": "Server DNS upstream aggiornati",
"dns_test_ok_toast": "I server DNS specificati funzionano correttamente",
"dns_test_not_ok_toast": "Server \"{{key}}\": non può essere usato, assicurati di averlo digitato correttamente",
@@ -182,6 +201,8 @@
"query_log_disabled": "La query log è stata disabilitata e può essere configurata nel <0>impostazioni</0>",
"query_log_strict_search": "Utilizzare le virgolette doppie per la ricerca rigorosa",
"query_log_retention_confirm": "Sei sicuro di voler modificare il registro di query? Se si diminuisce il valore di intervallo, alcuni dati saranno persi",
"anonymize_client_ip": "Anonimizza client IP",
"anonymize_client_ip_desc": "Non salvare l'indirizzo IP completo del client nei log e nelle statistiche",
"dns_config": "Configurazione server DNS",
"blocking_mode": "Modalità di blocco",
"default": "Predefinito",
@@ -206,6 +227,7 @@
"found_in_known_domain_db": "Trovato nel database dei domini conosciuti.",
"category_label": "Categoria",
"rule_label": "Regola",
"list_label": "Lista",
"unknown_filter": "Filtro sconosciuto {{filterId}}",
"install_welcome_title": "Benvenuto nella Home di AdGuard!",
"install_welcome_desc": "AdGuard Home è un server DNS che blocca annunci e tracker in tutta la rete. Il suo scopo è quello di consentire di controllare l'intera rete e tutti i dispositivi, e non richiede l'utilizzo di un programma sul lato client.",
@@ -235,6 +257,7 @@
"install_devices_router_list_1": "Apri le preferenze per il tuo router. Di solito, puoi accedervi dal tuo browser tramite un URL (come http://192.168.0.1/ o http://192.168.1.1/). Potrebbe essere richiesto di inserire la password. Se non lo ricordi, puoi spesso reimpostare la password premendo un pulsante sul router stesso. Alcuni router richiedono un'applicazione specifica, che in quel caso dovrebbe essere già installata sul tuo computer / telefono.",
"install_devices_router_list_2": "Trova le impostazioni DHCP / DNS. Cerca le lettere DNS accanto a un campo che consente due o tre serie di numeri, ciascuno suddiviso in quattro gruppi di 1-3 cifre.",
"install_devices_router_list_3": "Inserisci qui gli indirizzi del tuo server AdGuard Home.",
"install_devices_router_list_4": "Non puoi impostare un server DNS personalizzato o alcun tipo di router. In questi casi potrebbe essere di aiuto impostare la pagina principale di AdGuard come server DHCP. In alternativa, dovresti cercare sul manuale il modo per personalizzare i server DNS per il tuo particolare modello di router.",
"install_devices_windows_list_1": "Aprire il Pannello di controllo tramite il menu Start o la ricerca di Windows.",
"install_devices_windows_list_2": "Vai a Rete e categoria Internet e poi a Centro connessioni di rete e condivisione.",
"install_devices_windows_list_3": "Sul lato sinistro dello schermo, trova le impostazioni della scheda Cambia e fai clic su di esso.",
@@ -329,6 +352,7 @@
"client_updated": "Client \"{{key}}\" aggiornato correttamente",
"clients_not_found": "Nessun client trovato",
"client_confirm_delete": "Sei sicuro di voler eliminare il client \"{{key}}\"?",
"list_confirm_delete": "Sei sicuro di voler eliminare questa lista?",
"auto_clients_title": "Clienti (tempo di esecuzione)",
"auto_clients_desc": "Dati dei clienti che utilizzano AdGuard Home, ma che non sono salvati nella configurazione",
"access_title": "Impostazioni di accesso",
@@ -366,6 +390,7 @@
"rewrite_confirm_delete": "Sei sicuro di voler cancellare la riscrittura DNS per \"{{key}}\"?",
"rewrite_desc": "Consente di configurare facilmente la risposta DNS personalizzata per un nome di dominio specifico.",
"rewrite_applied": "Regola di riscrittura applicata",
"rewrite_hosts_applied": "Riscritto dal file delle regole host",
"dns_rewrites": "Riscrittura DNS",
"form_domain": "Inserisci il dominio",
"form_answer": "Inserisci l'indirizzo IP o il nome del dominio",
@@ -422,7 +447,7 @@
"netname": "Nome Network",
"descr": "Descrizione",
"whois": "Chi è",
"filtering_rules_learn_more": "<0>Impara di più</0> come creare i tuoi elenchi di blocco per i hosts.",
"filtering_rules_learn_more": "<0>Leggi altro</0> su come creare i tuoi host blacklist.",
"blocked_by_response": "Bloccato per CNAME o IP in risposta",
"try_again": "Riprova",
"domain_desc": "Inserire il nome di dominio o carattere jolly che si vuole riscrivere.",
@@ -430,6 +455,8 @@
"example_rewrite_wildcard": "riscrivi risposte per tutti i sottodomini di <0>esempio.org</0>.",
"disable_ipv6": "Disabilita IPv6",
"disable_ipv6_desc": "Se questa funzione è abilitata, tutte le query DNS per gli indirizzi IPv6 (tipo AAAA) verranno eliminate.",
"fastest_addr": "Indirizzo IP più veloce",
"fastest_addr_desc": "Interroga tutti i server DNS ed ottieni l'indirizzo IP più veloce tra tutte le risposte",
"autofix_warning_text": "Se fai clic su \"Correggi\", AdGuardHome configurerà il tuo sistema per utilizzare il server DNS AdGuardHome.",
"autofix_warning_list": "Eseguirà queste attività: <0> Disattiva DNSStubListener di sistema </0> <0> Imposta l'indirizzo del server DNS su 127.0.0.1 </0> <0> Sostituisci la destinazione del collegamento simbolico di /etc/resolv.conf su / run / systemd /resolve/resolv.conf </0> <0> Arresta DNSStubListener (ricarica il servizio systemd-resolved) </0>",
"autofix_warning_result": "Di conseguenza, tutte le richieste DNS dal sistema verranno elaborate da AdGuardHome per impostazione predefinita.",
@@ -458,5 +485,9 @@
"install_static_ok": "Buone notizie! L'indirizzo IP statico è già configurato",
"install_static_error": "AdGuard Home non può configurarlo automaticamente per questa interfaccia di rete. Si prega di cercare un'istruzione su come farlo manualmente.",
"install_static_configure": "Abbiamo rilevato che viene utilizzato un indirizzo IP dinamico - <0> {{ip}} </0>. Vuoi usarlo come indirizzo statico?",
"confirm_static_ip": "AdGuard Home configurerà {{ip}} come indirizzo IP statico. Vuoi procedere?"
"confirm_static_ip": "AdGuard Home configurerà {{ip}} come indirizzo IP statico. Vuoi procedere?",
"list_updated": "{{count}} lista aggiornata",
"list_updated_plural": "{{count}} liste aggiornate",
"dnssec_enable": "Abilita DNSSEC",
"dnssec_enable_desc": "Imposta la spunta DNSSEC nelle interrogazioni DNS in uscita e verifica il risultato (è richiesta l'attivazione del risolutore DNSSEC)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "クライアント設定",
"example_upstream_reserved": "<0>特定のドメイン</0>に対して上流DNSを指定できます",
"upstream_parallel": "すべての上流サーバ同時に照会することで解決スピードアップするため、並列クエリを使用する",
"example_upstream_reserved": "<0>特定のドメイン</0>に対してDNSアップストリームを指定できます",
"upstream_parallel": "並列リクエストを使用する(すべてのアップストリームサーバーを同時に照会することで解決スピードが向上します)",
"parallel_requests": "並列リクエスト",
"bootstrap_dns": "ブートストラップDNSサーバ",
"bootstrap_dns_desc": "ブートストラップDNSサーバは、上流として指定したDoHDoTリゾルバのIPアドレスを解決するために使用されます。",
"check_dhcp_servers": "DHCPサーバをチェックする",
@@ -140,7 +141,7 @@
"add_allowlist": "許可リストに追加する",
"cancel_btn": "キャンセル",
"enter_name_hint": "名称を入力",
"enter_url_hint": "URLを入力",
"enter_url_or_path_hint": "リストのURLまたは絶対パスを入力してください",
"check_updates_btn": "アップデートを確認する",
"new_blocklist": "新しいブロックリスト",
"new_allowlist": "新しい許可リスト",
@@ -148,7 +149,8 @@
"edit_allowlist": "許可リストの編集",
"enter_valid_blocklist": "ブロックリストへ有効なURLを入力してください。",
"enter_valid_allowlist": "許可リストへ有効なURLを入力してください。",
"form_error_url_format": "URLフォーマットではありません",
"form_error_url_format": "URLフォーマットが間違っています",
"form_error_url_or_path_format": "リストのURLまたは絶対パスが無効です",
"custom_filter_rules": "カスタム・フィルタリングルール",
"custom_filter_rules_hint": "1つの行に1つのルールを入力してください。 広告ブロックルールやhostsファイル構文を使用できます。",
"examples_title": "例",
@@ -199,6 +201,8 @@
"query_log_disabled": "クエリ・ログは無効になっており、<0>設定</0>で構成できます",
"query_log_strict_search": "完全一致検索には二重引用符を使用します",
"query_log_retention_confirm": "クエリ・ログの保持を変更してもよろしいですか? 期間を短くすると、一部のデータが失われます",
"anonymize_client_ip": "クライアントIPを匿名化する",
"anonymize_client_ip_desc": "ログと統計にクライアントの完全なIPアドレスを保存しない",
"dns_config": "DNSサーバ設定",
"blocking_mode": "ブロックモード",
"default": "デフォルト",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "ルータの設定を開きます。通常は、URLhttp://192.168.0.1/ または http://192.168.1.1/ など)を介してブラウザからアクセスできます。パスワードの入力を求められることがあります。パスワードを覚えていない場合は、ルータにあるボタンを押してパスワードをリセットできます。一部のルータは特定のアプリケーションを必要とします。その場合、アプリケーションはあなたのコンピュータ/電話に既にインストールされているはずです。",
"install_devices_router_list_2": "DHCPDNSの設定を見つけます。DNSの文字のある入力欄を探します。それは、1〜3桁の数字で4つのグループに分けられた入力欄で、セットを許可されている欄です。",
"install_devices_router_list_3": "そこにAdGuard Homeサーバのアドレスを入力します。",
"install_devices_router_list_4": "一部のタイプのルータではカスタムDNSサーバを設定できません。この場合、AdGuard HomeをDHCPサーバとして設定することがおすすめです。それ以外の場合は、特定のルータモデルに合わせてDNSサーバをカスタマイズする方法に関するマニュアルを検索する必要があります。",
"install_devices_windows_list_1": "「スタート」メニューまたはWindowsの検索から「設定」を開きます。",
"install_devices_windows_list_2": "「ネットワークとインターネット」カテゴリに移動し、さらに「ネットワークと共有センター」へ移動します。",
"install_devices_windows_list_3": "画面の左側にある「アダプターの設定の変更」を見つけてクリックします。",
@@ -356,8 +361,6 @@
"access_allowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストのみを許可します。",
"access_disallowed_title": "拒否するクライアント",
"access_disallowed_desc": "CIDRまたはIPアドレスのリスト。設定されると、AdGuard HomeはこれらのIPアドレスからのリクエストを破棄します。",
"access_blocked_title": "ブロックするドメイン",
"access_blocked_desc": "これをフィルタと混同しないでください。AdGuard Homeは、これらのドメインを含むDNSクエリを破棄します。",
"access_settings_saved": "アクセス設定の保存に成功しました",
"updates_checked": "アップデートの確認に成功しました",
"updates_version_equal": "AdGuard Homeは既に最新です",
@@ -385,6 +388,7 @@
"rewrite_confirm_delete": "\"{{key}}\" のためのDNS書き換え情報を削除してもよろしいですか",
"rewrite_desc": "特定のドメイン名に対するDNS応答を簡単にカスタマイズすることを可能にします。",
"rewrite_applied": "書き換えルールを適用済み",
"rewrite_hosts_applied": "hostsファイルのルールによって書き換え済み",
"dns_rewrites": "DNS書き換え",
"form_domain": "ドメイン名を入力してください",
"form_answer": "IPアドレスかドメイン名を入力",
@@ -441,7 +445,7 @@
"netname": "ネットワーク名",
"descr": "説明",
"whois": "Whois",
"filtering_rules_learn_more": "独自のブラックリストの作成に関して<0>詳しく学習します</0>。",
"filtering_rules_learn_more": "独自ホストリストの作成についての<0>詳細はこちら</0>。",
"blocked_by_response": "応答されたCNAMEかIPアドレスによるブロック",
"try_again": "再試行する",
"domain_desc": "DNSリライトしたいドメイン名やワイルドカードを入力してください。",
@@ -449,6 +453,8 @@
"example_rewrite_wildcard": "<0>example.org</0>のすべてのサブドメインへのレスポンスをリライトする",
"disable_ipv6": "IPv6を無効にする",
"disable_ipv6_desc": "チェックすると、IPv6アドレスタイプAAAAのすべてのDNSクエリは破棄されます。",
"fastest_addr": "最速のIPアドレス",
"fastest_addr_desc": "すべてのDNSサーバーを照会し、全応答の中で最速のIPアドレスを返します",
"autofix_warning_text": "\"改善\"をクリックすると、AdGuardHomeはAdGuardHome DNSサーバを使用するようにシステムを構成します。",
"autofix_warning_list": "次のタスクを実行します:<0>システムDNSStubListenerを非アクティブ化します</0> <0>DNSサーバのアドレスを127.0.0.1に設定します</0> <0>/etc/resolv.confのシンボリックリンクの対象を/run/systemd/resolve/resolv.confに置換します</0> <0>DNSStubListenerを停止しますsystemd-resolvedサービスをリロードします</0>",
"autofix_warning_result": "その結果、システムからのすべてのDNS要求は、デフォルトでAdGuardHomeによって処理されます。",
@@ -479,5 +485,6 @@
"install_static_configure": "動的IPアドレスが使用されていることを検出しました— <0>{{ip}}</0>。静的アドレスとして使用しますか?",
"confirm_static_ip": "AdGuard Homeは、{{ip}}を静的IPアドレスとして設定します。よろしいですか",
"list_updated": "{{count}}個のリストが更新されました",
"list_updated_plural": "{{count}}個のリストが更新されました"
"list_updated_plural": "{{count}}個のリストが更新されました",
"dnssec_enable": "DNSSECを有効にする"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "클라이언트 설정",
"example_upstream_reserved": "<0>특정 도메인에 대한</0> DNS 업스트림을 지정할 수 있습니다.",
"upstream_parallel": "쿼리 처리 속도를 높이려면 모든업스트림 서버에서 병렬 쿼리를 사용해주세요.",
"upstream_parallel": "쿼리 처리 속도를 높이려면 모든 업스트림 서버에서 동시에 병렬 쿼리를 사용해주세요.",
"parallel_requests": "병렬 처리 요청",
"bootstrap_dns": "부트스트랩 DNS 서버",
"bootstrap_dns_desc": "부트스트랩 DNS 서버는 업스트림으로 지정한 DoH/DoT 서버의 IP 주소를 확인하는 데 사용합니다.",
"check_dhcp_servers": "DHCP 서버 체크",
@@ -64,14 +65,14 @@
"copyright": "Copyright",
"homepage": "홈페이지",
"report_an_issue": "문제를 보고합니다",
"privacy_policy": "개인 정보 처리 방침",
"privacy_policy": "개인정보취급방침",
"enable_protection": "보호 활성화",
"enabled_protection": "보호 활성화됨",
"disable_protection": "보호 비활성화",
"disabled_protection": "보호 비활성화됨",
"refresh_statics": "통계 새로 고침",
"dns_query": "DNS 쿼리",
"blocked_by": "필터에 의해 차단됨",
"blocked_by": "<0>필터에 의해 차단됨</0>",
"stats_malware_phishing": "차단된 멀웨어/피싱",
"stats_adult": "차단된 성인 웹사이트",
"stats_query_domain": "쿼리 도메인",
@@ -140,7 +141,7 @@
"add_allowlist": "허용 목록 추가",
"cancel_btn": "취소",
"enter_name_hint": "이름을 입력하세요",
"enter_url_hint": "주소를 입력하세요",
"enter_url_or_path_hint": "URL 또는 목록의 절대 경로를 입력하세요",
"check_updates_btn": "업데이트 확인",
"new_blocklist": "새 차단 목록",
"new_allowlist": "새 허용 목록",
@@ -149,6 +150,7 @@
"enter_valid_blocklist": "차단 목록에 유효한 URL을 입력해주세요.",
"enter_valid_allowlist": "허용 목록에 유효한 URL을 입력해주세요.",
"form_error_url_format": "잘못된 URL 형식",
"form_error_url_or_path_format": "올바른 URL 또는 목록의 절대 경로가 아닙니다",
"custom_filter_rules": "커스텀 필터링 규칙",
"custom_filter_rules_hint": "한 라인에 한 규칙만 입력하세요. 광고 차단 규칙과 호스트 파일 문법 중 하나를 사용할 수 있습니다",
"examples_title": "예시",
@@ -199,6 +201,8 @@
"query_log_disabled": "쿼리 로그가 비활성화되어 있으며 <0>설정</0>에서 설정할 수 있습니다",
"query_log_strict_search": "검색을 제한하려면 쌍따옴표를 사용해주세요",
"query_log_retention_confirm": "정말로 쿼리 로그 저장 기간을 변경하시겠습니까? 저장 주기를 낮출 경우, 일부 데이터가 손실됩니다",
"anonymize_client_ip": "클라이언트 IP 익명화",
"anonymize_client_ip_desc": "클라이언트의 전체 IP 주소를 로그와 통계에 저장하지 않습니다.",
"dns_config": "DNS 서버 설정",
"blocking_mode": "차단 모드",
"default": "기본",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "라우터의 환경 설정을 여세요. 환경 설정은 다음의 주소(http://192.168.0.1/ 혹은 http://192.168.1.1/)를 통해 브라우저로 접근 가능합니다. 비밀번호를 입력해야할 수 있습니다. 비밀번호를 잊었다면 대개 라우터 기기에 있는 버튼을 눌러 비밀번호를 초기화할 수 있습니다. 어떤 라우터들은 당신의 컴퓨터/핸드폰에 설치할 수 있는 특정 어플리케이션을 필요로합니다.",
"install_devices_router_list_2": "각각 1~3자리 숫자의 네 그룹으로 분할된 두 세트의 숫자를 허용하는 필드 옆에 있는 DNS 문자를 찾으세요.",
"install_devices_router_list_3": "AdGuard Home 서버 주소를 입력하세요",
"install_devices_router_list_4": "일부 라우터는 DNS서버의 커스텀 설정이 불가합니다. 간혹 AdGuard Home을 DHCP서버로 이용하여 문제를 해결하는 경우가 있지만 문제가 지속될 경우 사용하시는 라우터 모델의 매뉴얼을 참고하시어 DNS서버 커스텀 설정 방법을 직접 살펴보셔야 합니다.",
"install_devices_windows_list_1": "시작 메뉴 또는 윈도우 검색을 통해 제어판을 여세요",
"install_devices_windows_list_2": "네트워크 및 인터넷 카테고리로 이동한 다음 네트워크 및 공유 센터로 이동하세요.",
"install_devices_windows_list_3": "화면 왼쪽에서 어댑터 설정 변경을 찾아 클릭하세요.",
@@ -357,7 +362,7 @@
"access_disallowed_title": "차단된 클라이언트",
"access_disallowed_desc": "CIDR 또는 IP 주소 목록입니다. 구성된 경우 AdGuard Home은 이러한 IP 주소의 요청을 삭제합니다.",
"access_blocked_title": "차단된 도메인",
"access_blocked_desc": "필터와 혼동하지 마세요. AdGuard Home은 쿼리의 질문에서 이러한 도메인의 DNS 쿼리를 삭제합니다.",
"access_blocked_desc": "이 기능을 필터와 혼동하지 마세요. AdGuard Home은 지정된 도메인의 쿼리 요청에서 DNS 쿼리를 삭제합니다. 여기서 특정 도메인을 지정하거나, 와일드 카드 또는 URL 필터규칙을 설정해보세요. 예) 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "액세스 설정이 성공적으로 저장되었습니다.",
"updates_checked": "업데이트가 성공적으로 확인되었습니다",
"updates_version_equal": "AdGuard Home 최신 상태입니다.",
@@ -384,7 +389,8 @@
"rewrite_not_found": "DNS 변경 정보를 찾을 수 없습니다",
"rewrite_confirm_delete": "\"{{key}}\"에 대한 DNS 변경 정보를 삭제하시겠습니까?",
"rewrite_desc": "특정 도메인 이름에 대한 사용자 지정 DNS 응답을 쉽게 구성할 수 있습니다.",
"rewrite_applied": "적용된 변경 규칙",
"rewrite_applied": "리디렉션 규칙이 적용됩니다",
"rewrite_hosts_applied": "호스트 파일 규칙에 따라 재작성",
"dns_rewrites": "DNS 변경",
"form_domain": "도메인 이름 또는 와일드카드를 입력합니다",
"form_answer": "IP 주소 또는 도메인 이름을 입력하세요",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "모든 서브 도메인에 대한 <0>example.org</0> 응답을 변경합니다",
"disable_ipv6": "IPv6 비활성화",
"disable_ipv6_desc": "이 기능이 활성화되면 IPv6 (타입 AAAA) 의 모든 DNS 쿼리가 드랍됩니다.",
"fastest_addr": "가장 빠른 IP 주소",
"fastest_addr_desc": "반응이 가장 빠른 IP주소를 가진 DNS서버에 쿼리를 수행합니다.",
"autofix_warning_text": "\"Fix\"를 클릭한다면 AdGuard Home은 시스템이 AdGuard Home의 DNS 서버를 사용하도록 설정합니다.",
"autofix_warning_list": "다음 작업을 진행합니다: <0>DNSStubListener 시스템 비활성화</0> <0>DNS 서버 주소를 127.0.0.1로 설정</0> <0>/etc/resolv.conf의 심볼릭 링크 타겟을 /run/systemd/resolve/resolv.conf로 변경</0> <0>DNSStubListener 중지 (systemd-resolved 서비스 새로고침)</0>",
"autofix_warning_result": "결과적으로 시스템의 모든 DNS 요청은 기본적으로 AdGuard Home에 의해 처리됩니다.",
@@ -479,5 +487,7 @@
"install_static_configure": "동적 IP 주소를 사용하는 것을 감지했습니다 — <0>{{ip}}</0>. 정말로 이걸 고정 IP로 사용하시겠습니까?",
"confirm_static_ip": "AdGuard Home이 {{ip}}를 고정 IP 주소로 설정하려고 합니다. 계속하시겠습니까?",
"list_updated": "{{count}} 리스트 업데이트됨",
"list_updated_plural": "{{count}} 리스트 업데이트됨"
"list_updated_plural": "{{count}} 리스트 업데이트됨",
"dnssec_enable": "DNSSEC 활성화",
"dnssec_enable_desc": "발신 DNS 쿼리에서 DNSSEC 플래그를 설정하고 결과를 확인합니다 (DNSSEC-enabled resolver 필수)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "cliënt Instellingen",
"example_upstream_reserved": "specificeer een DNS upstream <0>voor een specifiek domein(en)</0>",
"upstream_parallel": "Gebruik parallelle query's om het oplossen te versnellen door gelijktijdig alle upstream-servers te queryen",
"example_upstream_reserved": "Je kan DNS upstream <0>specifiëren voor specifieke domein(en)</0>",
"upstream_parallel": "Gebruik parallelle verzoeken om te versnellen door gelijktijdig verzoeken te sturen naar alle upstream servers",
"parallel_requests": "Parallelle verzoeken",
"bootstrap_dns": "Bootstrap DNS servers",
"bootstrap_dns_desc": "Bootstrap DNS-servers worden gebruikt om IP-adressen op te lossen van de DoH / DoT-resolvers die u opgeeft als upstreams.",
"check_dhcp_servers": "Zoek achter DHCP servers",
@@ -139,7 +140,7 @@
"add_allowlist": "Toestemmingslijst toevoegen",
"cancel_btn": "Annuleren",
"enter_name_hint": "Voeg naam toe",
"enter_url_hint": "Voeg URL toe",
"enter_url_or_path_hint": "Voer een URL in of het pad van de lijst",
"check_updates_btn": "Controleer op updates",
"new_blocklist": "Nieuwe blokkeerlijst",
"new_allowlist": "Nieuwe toestemmingslijst",
@@ -148,6 +149,7 @@
"enter_valid_blocklist": "Voer een geldige URL in voor de blokkeerlijst.",
"enter_valid_allowlist": "Voer een geldige URL in voor de toestemmingslijst.",
"form_error_url_format": "Ongeldig URL formaat",
"form_error_url_or_path_format": "Ongeldig URL of pad van de lijst",
"custom_filter_rules": "Aangepaste filterregels",
"custom_filter_rules_hint": "Voer één regel op een regel in. U kunt adblock-regels gebruiken of de syntaxis van hosts-bestanden gebruiken.",
"examples_title": "Voorbeelden",
@@ -198,6 +200,8 @@
"query_log_disabled": "Het query logboek is uitgeschakeld en kan worden geconfigureerd in de <0>instellingen</0>",
"query_log_strict_search": "Gebruik dubbele aanhalingstekens voor strikt zoeken",
"query_log_retention_confirm": "Weet u zeker dat u de bewaartermijn van het query logboek wilt wijzigen? Als u de intervalwaarde verlaagt, gaan sommige gegevens verloren",
"anonymize_client_ip": "Cliënt IP anonimiseren",
"anonymize_client_ip_desc": "Het volledige IP-adres van de cliënt niet opnemen in log- en statistiekbestanden",
"custom_ip": "Aangepast IP",
"source_label": "Bron",
"found_in_known_domain_db": "Gevonden in de bekende domeingegevensbank.",
@@ -233,6 +237,7 @@
"install_devices_router_list_1": "Open de instellingen pagina voor uw router. Meestal kunt u deze vanuit uw browser openen via een URL (zoals http://192.168.0.1/ of http://192.168.1.1/). Mogelijk wordt u gevraagd om het wachtwoord in te voeren. Als u het niet meer weet, kunt u het wachtwoord vaak opnieuw instellen door op een knop op de router zelf te drukken. Voor sommige routers is een specifieke toepassing vereist, die in dat geval al op uw computer / telefoon moet zijn geïnstalleerd.",
"install_devices_router_list_2": "Zoek de DHCP/DNS-instellingen. Zoek naar de DNS-letters naast een veld dat twee of drie reeksen nummers toestaat, elk verdeeld in vier groepen van één tot drie cijfers.",
"install_devices_router_list_3": "Voer je AdGuard Home server adressen daar in.",
"install_devices_router_list_4": "Je kan de DNS server niet aanpassen op sommige routers. In dat geval kan het een oplossing zijn om AdGuard Home te definiëren als een DHCP server. Je kan ook in de handleiding van je router kijken hoe je een DNS server aanpast.",
"install_devices_windows_list_1": "Open het Configuratiescherm via het menu Start of Windows zoeken.",
"install_devices_windows_list_2": "Ga naar de categorie Netwerk en Internet en vervolgens naar Netwerkcentrum.",
"install_devices_windows_list_3": "Zoek aan de linkerkant van het scherm Adapter-instellingen wijzigen en klik erop.",
@@ -336,8 +341,8 @@
"access_allowed_desc": "Een lijst van CIDR of IP adressen. Indien ingesteld, zal AdGuard Home alleen van deze IP adressen aanvragen accepteren.",
"access_disallowed_title": "Verworpen gebruikers",
"access_disallowed_desc": "Een lijst van CIDR of IP adressen. Indien ingesteld, zal AdGuard Home aanvragen van deze IP adressen verwerpen.",
"access_blocked_title": "Geblokkeerde domeinen",
"access_blocked_desc": "Verwar dit niet met filters. AdGuard Home zal deze DNS-zoekopdrachten laten vallen.",
"access_blocked_title": "Niet toegelaten domeinen",
"access_blocked_desc": "Verwar dit niet met filters. AdGuard Home zal deze DNS-zoekopdrachten niet uitvoeren die deze domeinen in de zoekopdracht bevatten. Hier kan je de domeinnamen, wildcards en url-filter-regels specifiëren, bijv. 'example.org', '*.example.org' or '||example.org^'.",
"access_settings_saved": "Toegangsinstellingen met succes opgeslagen",
"updates_checked": "Met succes op updates gecontroleerd",
"updates_version_equal": "AdGuard Home is up-to-date",
@@ -364,7 +369,8 @@
"rewrite_not_found": "Geen DNS-herschrijving gevonden",
"rewrite_confirm_delete": "Bent u zeker dat u DNS-herschrijving \"{{key}}\" wilt verwijderen?",
"rewrite_desc": "Hiermee kunt u eenvoudig aangepaste DNS-antwoorden configureren voor een specifieke domeinnaam.",
"rewrite_applied": "Toegepaste herschrijf regel",
"rewrite_applied": "Herschrijf regel toegepast",
"rewrite_hosts_applied": "Geherdefinieerd door de filterregel van de host",
"dns_rewrites": "DNS herschrijvingen",
"form_domain": "Vul domein of wildcard in",
"form_answer": "Vul IP adres of domeinnaam in",
@@ -421,12 +427,14 @@
"netname": "Netwerk naam",
"descr": "Beschrijving",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Meer informatie</0> over het maken van uw eigen hosts-blocklists.",
"filtering_rules_learn_more": "<0>Meer informatie</0> over het maken van je eigen host lijsten.",
"blocked_by_response": "Geblokkeerd door CNAME of IP als antwoord",
"try_again": "Probeer opnieuw",
"domain_desc": "Voer de domeinnaam of wildcard in die herschreven moet worden.",
"example_rewrite_domain": "herschrijf reacties uitsluitend voor deze domeinnaam.",
"example_rewrite_wildcard": "herschrijf reacties voor alle subdomeinen van <0>example.org</0>.",
"fastest_addr": "Snelste IP adres",
"fastest_addr_desc": "Alle DNS servers bevragen en het snelste IP adres terugkoppelen",
"tags_title": "Labels",
"check": "Controleren",
"form_enter_host": "Voer een hostnaam in",
@@ -437,5 +445,6 @@
"check_rule": "Regel: {{rule}}",
"check_service": "Servicenaam: {{service}}",
"list_updated": "{{count}} lijst geüpdatet",
"list_updated_plural": "{{count}} lijsten geüpdatet"
"list_updated_plural": "{{count}} lijsten geüpdatet",
"dnssec_enable": "DNSSEC inschakelen"
}

View File

@@ -140,7 +140,6 @@
"add_allowlist": "Legg til hviteliste",
"cancel_btn": "Avbryt",
"enter_name_hint": "Skriv inn navn",
"enter_url_hint": "Skriv inn nettadresse",
"check_updates_btn": "Se etter oppdateringer",
"new_blocklist": "Ny blokkeringsliste",
"new_allowlist": "Ny hviteliste",

View File

@@ -1,9 +1,10 @@
{
"client_settings": "Ustawienia klienta",
"example_upstream_reserved": "możesz określić kierunek przesyłu danych DNS <0>dla konkretnej witryny (lub witryn)</0>",
"upstream_parallel": "Używaj równoległych zapytań, aby przyspieszyć rozwiązywanie problemów, jednocześnie wysyłając zapytania do wszystkich serwerów nadrzędnych",
"bootstrap_dns": "Serwery danych Bootstrap DNS",
"bootstrap_dns_desc": "Servery DNS Bootstrap'a są używane do analizowania aresu IP resolverów, które oznaczysz jako nadrzędne.",
"example_upstream_reserved": "możesz określić serwer DNS <0>dla konkretnych domen</0>",
"upstream_parallel": "Używaj równoległych żądań, aby przyspieszyć rozwiązywanie adresów domen, jednocześnie wysyłając zapytania do wszystkich głównych serwerów DNS",
"parallel_requests": "Równoległe żądania",
"bootstrap_dns": "Serwery DNS Bootstrap",
"bootstrap_dns_desc": "Serwery DNS Bootstrap są używane do ustalenia adresu IP serwerów DoH/DoT, które oznaczysz jako główne serwery DNS.",
"check_dhcp_servers": "Sprawdź serwery DHCP",
"save_config": "Zapisz konfigurację",
"enabled_dhcp": "Serwer DHCP włączony",
@@ -18,7 +19,7 @@
"dhcp_static_leases": "Dzierżawy statyczne DHCP",
"dhcp_leases_not_found": "Nie znaleziono dzierżaw DHCP",
"dhcp_config_saved": "Konfiguracja DHCP pomyślnie zapisana",
"form_error_required": "Pole wymagane",
"form_error_required": "Pole jest wymagane",
"form_error_ip4_format": "Nieprawidłowy format IPv4",
"form_error_ip6_format": "Nieprawidłowy format IPv6",
"form_error_ip_format": "Nieprawidłowy format IP",
@@ -59,8 +60,8 @@
"faq": "FAQ",
"version": "wersja",
"address": "adres",
"on": "WŁĄCZ",
"off": "WYŁĄCZ",
"on": "WŁĄCZONY",
"off": "WYŁĄCZONY",
"copyright": "Prawo autorskie",
"homepage": "Strona główna",
"report_an_issue": "Zgłoś problem",
@@ -76,7 +77,7 @@
"stats_adult": "Zablokowane witryny dla dorosłych",
"stats_query_domain": "Najczęściej wyszukiwane domeny",
"for_last_24_hours": "przez ostatnie 24 godziny",
"for_last_days": "z ostatnich {{count}} dni",
"for_last_days": "z ostatniego dnia",
"for_last_days_plural": "z ostatnich {{count}} dni",
"no_domains_found": "Nie znaleziono domen",
"requests_count": "Licznik żądań",
@@ -93,7 +94,7 @@
"enforced_save_search": "Wymuszone bezpieczne wyszukiwanie",
"number_of_dns_query_to_safe_search": "Liczba żądań DNS do wyszukiwarek, dla których zastosowano wymuszenie bezpiecznego wyszukiwania",
"average_processing_time": "Średni czas przetwarzania",
"average_processing_time_hint": "Średni czas w milisekundach przetwarzania żądania DNS",
"average_processing_time_hint": "Średni czas przetwarzania żądania DNS liczony w milisekundach",
"block_domain_use_filters_and_hosts": "Blokuj domeny za pomocą filtrów i plików host",
"filters_block_toggle_hint": "Możesz skonfigurować reguły blokowania w ustawieniach <a href='#filters'>Filtry</a> ",
"use_adguard_browsing_sec": "Użyj usługi sieciowej Bezpieczne Przeglądanie AdGuard",
@@ -112,10 +113,10 @@
"custom_filtering_rules": "Niestandardowe reguły filtrowania",
"encryption_settings": "Ustawienia szyfrowania",
"dhcp_settings": "Ustawienia DHCP",
"upstream_dns": "Serwery DNS z wyższego poziomu",
"upstream_dns_hint": "Jeśli to pole pozostanie puste, AdGuard Home użyje <a href='https://www.quad9.net/' target='_blank'>Quad9</a> jako upstream.",
"test_upstream_btn": "Test upstreamów",
"upstreams": "Upstreams",
"upstream_dns": "Główne serwery DNS",
"upstream_dns_hint": "Jeśli to pole pozostawisz puste, AdGuard Home wykorzysta usługę<a href='https://www.quad9.net/' target='_blank'>Quad9</a> jako główny serwer DNS.",
"test_upstream_btn": "Test głównych serwerów DNS",
"upstreams": "Główne serwery DNS",
"apply_btn": "Zastosuj",
"disabled_filtering_toast": "Wyłączone filtrowanie",
"enabled_filtering_toast": "Włączone filtrowanie",
@@ -128,8 +129,8 @@
"enabled_table_header": "Włączone",
"name_table_header": "Nazwa",
"list_url_table_header": "Adres URL listy",
"rules_count_table_header": "Licznik reguł",
"last_time_updated_table_header": "Ostatni raz zaktualizowany",
"rules_count_table_header": "Liczba reguł",
"last_time_updated_table_header": "Ostatnia aktualizacja",
"actions_table_header": "Akcje",
"edit_table_action": "Edytuj",
"delete_table_action": "Usuń",
@@ -139,33 +140,34 @@
"add_blocklist": "Dodaj listę zablokowanych",
"add_allowlist": "Dodaj listę dozwolonych",
"cancel_btn": "Anuluj",
"enter_name_hint": "Wprowadź nazwę",
"enter_url_hint": "Wprowadź adres URL ",
"enter_name_hint": "Wpisz nazwę",
"enter_url_or_path_hint": "Wpisz adres URL lub bezwzględną ścieżkę listy",
"check_updates_btn": "Sprawdź aktualizacje",
"new_blocklist": "Nowa lista zablokowanych",
"new_allowlist": "Nowa lista dozwolonych",
"edit_blocklist": "Edytuj listę zablokowanych",
"edit_allowlist": "Edytuj listę dozwolonych",
"enter_valid_blocklist": "Wprowadź prawidłowy adres URL do listy zablokowanych.",
"enter_valid_allowlist": "Wprowadź prawidłowy adres URL do listy dozwolonych.",
"form_error_url_format": "Nieprawidłowy format Url",
"enter_valid_blocklist": "Wpisz prawidłowy adres URL do listy zablokowanych.",
"enter_valid_allowlist": "Wpisz prawidłowy adres URL do listy dozwolonych.",
"form_error_url_format": "Format adresu URL jest nieprawidłowy",
"form_error_url_or_path_format": "Adres URL lub bezwzględna ścieżka listy jest nieprawidłowa",
"custom_filter_rules": "Niestandardowe reguły filtrowania",
"custom_filter_rules_hint": "Wprowadź jedną regułę w jednej linii. Możesz użyć reguł adblock lub składni plików hostów.",
"custom_filter_rules_hint": "Wpisz jedną regułę w jednej linii. Możesz użyć reguł adblock lub składni plików hostów.",
"examples_title": "Przykłady",
"example_meaning_filter_block": "zablokuj dostęp do domeny example.org i wszystkich jej poddomen",
"example_meaning_filter_block": "zablokuj dostęp do domeny example.org i wszystkich jej subdomen",
"example_meaning_filter_whitelist": "odblokuj dostęp do domeny example.org i wszystkich jej subdomen",
"example_meaning_host_block": "AdGuard Home zwróci teraz adres 127.0.0.1 dla domeny example.org (ale nie jego poddomen).",
"example_comment": "! Tutaj idzie komentarz",
"example_meaning_host_block": "AdGuard Home zwróci adres 127.0.0.1 dla domeny example.org (ale nie jej subdomen).",
"example_comment": "! Tutaj jest komentarz",
"example_comment_meaning": "komentarz",
"example_comment_hash": "# Również komentarz",
"example_regex_meaning": "blokuj dostęp do domen pasujących do określonego wyrażenia regularnego",
"example_upstream_regular": "normalny DNS (przez UDP)",
"example_upstream_dot": "zaszyfrowany <a href='https://en.wikipedia.org/wiki/DNS_over_TLS' target='_blank'>DNS-przez-TLS</a>",
"example_upstream_doh": "zaszyfrowany <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-przez-HTTPS</a>",
"example_upstream_sdns": "możesz użyć <a href='https://dnscrypt.info/stamps/' target='_blank'>DNS Stamps</a> dla <a href='https://dnscrypt.info/' target='_blank'>DNSCrypt</a> lub <a href='https://en.wikipedia.org/wiki/DNS_over_HTTPS' target='_blank'>DNS-over-HTTPS</a> resolvers",
"example_upstream_dot": "zaszyfrowany <0>DNS-over-TLS</0>",
"example_upstream_doh": "zaszyfrowany <0>DNS-over-HTTPS</0>",
"example_upstream_sdns": "możesz użyć adresu<0>DNS Stamps</0> dla protokołu <1>DNSCrypt</1> lub <2>DNS-over-HTTPS</2>",
"example_upstream_tcp": "zwykły DNS (przez TCP)",
"all_lists_up_to_date_toast": "Wszystkie listy są już aktualne",
"updated_upstream_dns_toast": "Zaktualizowano wyższe serwery DNS",
"updated_upstream_dns_toast": "Główne serwery DNS zostały zaktualizowane",
"dns_test_ok_toast": "Określone serwery DNS działają poprawnie",
"dns_test_not_ok_toast": "Serwer \"{{key}}\": nie można go użyć, sprawdź, czy napisałeś go poprawnie",
"unblock_btn": "Odblokuj",
@@ -184,7 +186,7 @@
"next_btn": "Następny",
"loading_table_status": "Wczytuję...",
"page_table_footer_text": "Strona",
"rows_table_footer_text": "rzędy",
"rows_table_footer_text": "wierszy",
"updated_custom_filtering_toast": "Zaktualizowano niestandardowe reguły filtrowania",
"rule_removed_from_custom_filtering_toast": "Reguła usunięta z niestandardowych reguł filtrowania",
"rule_added_to_custom_filtering_toast": "Reguła dodana do niestandardowych reguł filtrowania",
@@ -199,22 +201,24 @@
"query_log_disabled": "Dziennik zapytań jest wyłączony i można go skonfigurować w <0>ustawieniach</0>",
"query_log_strict_search": "Używaj podwójnych cudzysłowów do ścisłego wyszukiwania",
"query_log_retention_confirm": "Czy na pewno chcesz zmienić sposób przechowywania dziennika zapytań? Jeśli zmniejszysz wartość interwału, niektóre dane zostaną utracone",
"anonymize_client_ip": "Anonimizuj adres IP klienta",
"anonymize_client_ip_desc": "Nie zapisuj pełnego adresu IP w dziennikach i statystykach",
"dns_config": "Konfiguracja serwera DNS",
"blocking_mode": "Tryb blokowania",
"default": "Domyślny",
"nxdomain": "NXDOMAIN",
"null_ip": "Null IP",
"custom_ip": "Niestandardowe IP",
"custom_ip": "Niestandardowy adres IP",
"blocking_ipv4": "Blokowanie IPv4",
"blocking_ipv6": "Blokowanie IPv6",
"form_enter_rate_limit": "Wprowadź limit ilościowy",
"form_enter_rate_limit": "Wpisz limit ilościowy",
"rate_limit": "Limit ilościowy",
"edns_enable": "Włącz podsieć klienta EDNS",
"edns_cs_desc": "Po włączeniu AdGuard Home będzie wysyłał podsieci klientów na serwery DNS.",
"rate_limit_desc": "Liczba żądań na sekundę, które może wykonać pojedynczy klient (0: nieograniczona)",
"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ślny: odpowiedz z NXDOMAIN, gdy zostanie zablokowany przez regułę w stylu Adblock; odpowiedz na adres IP określony w regule, gdy zostanie zablokowany przez regułę w stylu /etc/hosts",
"blocking_mode_default": "Domyślny: Odpowiedz kodem NXDOMAIN, gdy zostanie zablokowany przez regułę w stylu Adblock; odpowiedz na adres IP określony w regule, gdy zostanie zablokowany przez regułę w stylu /etc/hosts",
"blocking_mode_nxdomain": "NXDOMAIN: Odpowiedz kodem NXDOMAIN",
"blocking_mode_null_ip": "Null IP: Odpowiedz z zerowym adresem IP (0.0.0.0 dla A; :: dla AAAA)",
"blocking_mode_custom_ip": "Niestandardowy adres IP: Odpowiedz ręcznie ustawionym adresem IP",
@@ -231,7 +235,7 @@
"install_settings_listen": "Interfejs sieciowy",
"install_settings_port": "Port",
"install_settings_interface_link": "Twój interfejs www AdGuard Home Admin będzie dostępny pod następującymi adresami:",
"form_error_port": "Wprowadź poprawną wartość portu",
"form_error_port": "Wpisz poprawną wartość portu",
"install_settings_dns": "Serwer DNS",
"install_settings_dns_desc": "Konieczne będzie skonfigurowanie urządzenia lub routera do korzystania z serwera DNS pod następującymi adresami:",
"install_settings_all_interfaces": "Wszystkie interfejsy",
@@ -250,15 +254,16 @@
"install_devices_router": "Router",
"install_devices_router_desc": "To ustawienie automatycznie obejmuje wszystkie urządzenia podłączone do routera domowego i nie trzeba ich konfigurować ręcznie.",
"install_devices_address": "Serwer DNS AdGuard Home używa następujących adresów",
"install_devices_router_list_1": "Otwórz preferencje routera. Zazwyczaj można się do niego dostz przeglądarki za pośrednictwem adresu URL (na przykład http://192.168.0.1/ lub http://192.168.1.1/). Może być konieczne wprowadzenie hasła. Jeśli nie pamiętasz, często możesz odzyskać hasło, naciskając przycisk na samym routerze. Niektóre routery wymagają określonej aplikacji, która powinna być już zainstalowana na komputerze lub telefonie.",
"install_devices_router_list_1": "Otwórz ustawienia routera. Zazwyczaj możesz uzyskać do niego dostęp przez przeglądarkę za pośrednictwem adresu URL (na przykład http://192.168.0.1/ lub http://192.168.1.1/). Możesz zostać poproszony o wpisanie hasła. Jeśli nie pamiętasz hasła, możesz je odzyskać, naciskając przycisk na samym routerze. Niektóre routery wymagają określonej aplikacji, która powinna być już zainstalowana na komputerze lub telefonie.",
"install_devices_router_list_2": "Znajdź ustawienia DHCP/DNS. Poszukaj skrótu DNS obok pola, które pozwala wstawić dwa lub trzy zestawy liczb, z których każdy jest podzielony na cztery grupy z jedną do trzech cyfr.",
"install_devices_router_list_3": "Wprowadź adresy swojego serwera AdGuard Home.",
"install_devices_router_list_3": "Wpisz adresy swojego serwera AdGuard Home.",
"install_devices_router_list_4": "Nie możesz ustawić niestandardowego serwera DNS na niektórych routerach. W takim przypadku może pomóc Ci skonfigurowanie AdGuard Home jako serwera DHCP. W przeciwnym razie musisz poszukać instrukcji ustawienia serwerów DNS dla konkretnego modelu routera.",
"install_devices_windows_list_1": "Otwórz panel Ustawienia w menu Start lub w Windows.",
"install_devices_windows_list_2": "Przejdź do kategorii Sieć i Internet, a następnie do Centrum sieci i udostępniania.",
"install_devices_windows_list_3": "Po lewej stronie ekranu znajdź Zmień ustawienia adaptera i kliknij na niego.",
"install_devices_windows_list_4": "Wybierz aktywne połączenie, kliknij je prawym przyciskiem myszy i wybierz Właściwości.",
"install_devices_windows_list_5": "Znajdź na liście protokół internetowy w wersji 4 (TCP/IP), zaznacz go, a następnie ponownie kliknij Właściwości.",
"install_devices_windows_list_6": "Wybierz Użyj następujących adresów serwerów DNS i wprowadź adresy serwerów AdGuard Home.",
"install_devices_windows_list_6": "Wybierz Użyj następujących adresów serwerów DNS i wpisz adresy serwerów AdGuard Home.",
"install_devices_macos_list_1": "Kliknij ikonę Apple i przejdź do Preferencje systemowe.",
"install_devices_macos_list_2": "Kliknij Sieć.",
"install_devices_macos_list_3": "Wybierz pierwsze połączenie z listy i kliknij Zaawansowane.",
@@ -286,8 +291,8 @@
"encryption_redirect_desc": "Jeśli zaznaczone, AdGuard Home automatycznie przekieruje Cię z adresów HTTP na HTTPS.",
"encryption_https": "Port HTTPS",
"encryption_https_desc": "Jeśli port HTTPS jest skonfigurowany, interfejs administratora AdGuard Home będzie dostępny za pośrednictwem protokołu HTTPS i zapewni DNS przez HTTPS w lokalizacji zapytania '/dns-query'.",
"encryption_dot": "DNS-przez-TLS port",
"encryption_dot_desc": "Jeśli ten port jest skonfigurowany, AdGuard Home uruchomi serwer DNS-przez-TLS na tym porcie.",
"encryption_dot": "Port DNS-over-TLS",
"encryption_dot_desc": "Jeśli ten port jest skonfigurowany, AdGuard Home uruchomi serwer DNS-over-TLS na tym porcie.",
"encryption_certificates": "Certyfikaty",
"encryption_certificates_desc": "Aby korzystać z szyfrowania, musisz podać prawidłowy łańcuch certyfikatów SSL dla swojej domeny. Możesz uzyskać bezpłatny certyfikat na <0>{{link}}</0> lub możesz go kupić od jednego z zaufanych urzędów certyfikacji.",
"encryption_certificates_input": "Kopiuj/wklej tutaj swoje zakodowane certyfikaty PEM.",
@@ -295,19 +300,19 @@
"encryption_expire": "Wygasa",
"encryption_key": "Klucz prywatny",
"encryption_key_input": "Tutaj kopiuj/wklej klucze prywatne zakodowane w PEM do swojego certyfikatu.",
"encryption_enable": "Włącz szyfrowanie (HTTPS, DNS-przez-HTTPS i DNS-przez-TLS)",
"encryption_enable_desc": "Jeśli szyfrowanie jest włączone, interfejs AdGuard Home admin będzie działał przez HTTPS, a serwer DNS będzie nasłuchiwał żądań przez DNS-przez-HTTPS i DNS-przez-TLS.",
"encryption_enable": "Włącz szyfrowanie (HTTPS, DNS-over-HTTPS i DNS-over-TLS)",
"encryption_enable_desc": "Jeśli szyfrowanie jest włączone, interfejs administracyjny AdGuard Home będzie działał przez HTTPS, a serwer DNS będzie nasłuchiwał żądań przez DNS-overHTTPS i DNS-over-TLS.",
"encryption_chain_valid": "Łańcuch certyfikatów jest prawidłowy",
"encryption_chain_invalid": "Łańcuch certyfikatów jest nieprawidłowy",
"encryption_chain_invalid": "Łańcuch certyfikatu jest nieprawidłowy",
"encryption_key_valid": "Poprawny {{type}} klucz prywatny.",
"encryption_key_invalid": "Nieprawidłowy {{type}} klucz prywatny",
"encryption_key_invalid": "Klucz prywatny {{type}} jest nieprawidłowy",
"encryption_subject": "Temat",
"encryption_issuer": "Zgłaszający",
"encryption_hostnames": "Nazwy hostów",
"encryption_reset": "Czy na pewno chcesz zresetować ustawienia szyfrowania?",
"topline_expiring_certificate": "Twój certyfikat SSL wkrótce wygaśnie. Zaktualizuj <0>Ustawienia szyfrowania</0>.",
"topline_expired_certificate": "Twój certyfikat SSL wygasł. Zaktualizuj <0>Ustawienia szyfrowania</0>.",
"form_error_port_range": "Wprowadź wartość portu w zakresie 80-65535",
"form_error_port_range": "Wpisz wartość portu z zakresu 80-65535",
"form_error_port_unsafe": "To jest niebezpieczny port",
"form_error_equal": "Nie powinien być równy",
"form_error_password": "Hasło nie pasuje",
@@ -338,7 +343,7 @@
"client_identifier_desc": "Klienci mogą być identyfikowani na podstawie adresu IP, CIDR, adresu MAC. Pamiętaj, że użycie MAC jako identyfikatora jest możliwe tylko wtedy, gdy AdGuard Home jest również <0>serwerem DHCP</0>",
"form_enter_ip": "Wpisz adres IP",
"form_enter_mac": "Wpisz adres MAC",
"form_enter_id": "Wprowadź identyfikator",
"form_enter_id": "Wpisz identyfikator",
"form_add_id": "Dodaj identyfikator",
"form_client_name": "Wpisz nazwę klienta",
"client_global_settings": "Użyj ustawień globalnych",
@@ -356,28 +361,28 @@
"access_allowed_desc": "Lista adresów CIDR lub IP. Jeśli jest skonfigurowany, AdGuard Home akceptuje tylko żądania z tych adresów IP.",
"access_disallowed_title": "Niedozwoleni klienci",
"access_disallowed_desc": "Lista adresów CIDR lub IP. Po skonfigurowaniu AdGuard Home usunie żądania z tych adresów IP.",
"access_blocked_title": "Zablokowane domeny",
"access_blocked_desc": "Nie myl go z filtrami. Strona główna AdGuard zignoruje zapytanie DNS dotyczące tych domen w ramach przetwarzania zapytań.",
"access_blocked_title": "Niedozwolone domeny",
"access_blocked_desc": "Nie myl go z filtrami. AdGuard Home zignoruje zapytanie DNS dotyczące tych domen w ramach przetwarzania zapytań. Tutaj możesz określić dokładne nazwy domen, subdomen i reguły adresów URL np. 'example.org', '*.example.org' lub '||example.org^'.",
"access_settings_saved": "Ustawienia dostępu zostały pomyślnie zapisane",
"updates_checked": "Aktualizacje pomyślnie sprawdzone",
"updates_version_equal": "AdGuard Home jest aktualny",
"check_updates_now": "Sprawdź aktualizacje teraz",
"dns_privacy": "Prywatność DNS",
"setup_dns_privacy_1": "<0>DNS-przez-TLS:</0> Użyj ciągu <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-przez-HTTPS:</0> Użyj ciągu <1>{{address}}</1>.",
"dns_privacy": "Prywatny DNS",
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Skorzystaj z adresu <1>{{address}}</1>.",
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Skorzystaj z adresu <1>{{address}}</1>.",
"setup_dns_privacy_3": "<0>Należy pamiętać, że szyfrowane protokoły DNS są obsługiwane tylko w systemie Android 9. Musisz zainstalować dodatkowe oprogramowanie dla innych systemów operacyjnych.</0><0>Oto lista oprogramowania, którego możesz użyć.</0>",
"setup_dns_privacy_android_1": "Android 9 obsługuje natywnie DNS-przez-TLS. Aby go skonfigurować, przejdź do Ustawienia → Sieć i Internet → Zaawansowane → Prywatny DNS i wprowadź tam swoją nazwę domeny.",
"setup_dns_privacy_android_2": "<0>AdGuard dla Android</0> obsługuje <1>DNS-przez-HTTPS</1> i <1>DNS-przez-TLS</1>.",
"setup_dns_privacy_android_3": "<0>Intra</0> dodaje obsługę <1>DNS-przez-HTTPS</1> do Androida.",
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> obsługuje <1>DNS-przez-HTTPS</1>, ale musisz wygenerować znacznik, aby skonfigurować go do używania własnego serwera <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "<0>AdGuard dla iOS</0> obsługuje konfigurację <1>DNS-przez-HTTPS</1> i <1>DNS-przez-TLS</1>.",
"setup_dns_privacy_android_1": "System Android 9 obsługuje natywnie DNS-over-TLS. Aby go skonfigurować, przejdź do Ustawienia → Sieć i Internet → Zaawansowane → Prywatny DNS i wpisz tam swoją nazwę domeny.",
"setup_dns_privacy_android_2": "Aplikacja <0>AdGuard dla Androida</0> obsługuje <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_android_3": "Aplikacja <0>Intra</0> dodaje obsługę <1>DNS-over-HTTPS</1> dla Androida.",
"setup_dns_privacy_ios_1": "Aplikacja <0>DNSCloak</0> obsługuje <1>DNS-over-HTTPS</1>, ale musisz wygenerować znacznik, aby skonfigurować go do używania własnego serwera <2>DNS Stamp</2>.",
"setup_dns_privacy_ios_2": "Aplikacja <0>AdGuard dla iOS</0> obsługuje <1>DNS-over-HTTPS</1> i <1>DNS-over-TLS</1>.",
"setup_dns_privacy_other_title": "Inne implementacje",
"setup_dns_privacy_other_1": "Sam AdGuard Home może być bezpiecznym klientem DNS na dowolnej platformie.",
"setup_dns_privacy_other_2": "<0>dnsproxy</0> obsługuje wszystkie znane bezpieczne protokoły DNS.\n\n",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> obsługuje <1>DNS-przez-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> obsługuje <1>DNS-przez-HTTPS</1>.",
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> obsługuje <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> obsługuje <1>DNS-over-HTTPS</1>.",
"setup_dns_privacy_other_5": "Znajdziesz więcej implementacji <0>tutaj</0> i <1>tutaj</1>.",
"setup_dns_notice": "Aby użyć <1>DNS-przez-HTTPS</1> lub <1>DNS-przez-TLS</1>, musisz <0>skonfigurować szyfrowanie</0> w ustawieniach AdGuard Home.",
"setup_dns_notice": "Aby skorzystać z <1>DNS-over-HTTPS</1> lub <1>DNS-over-TLS</1>, musisz w ustawieniach AdGuard Home <0>skonfigurować szyfrowanie</0>.",
"rewrite_added": "Pomyślnie dodano przepisanie DNS dla „{{key}}”",
"rewrite_deleted": "Przepisanie DNS dla „{{key}}” zostało pomyślnie usunięte",
"rewrite_add": "Dodaj przepisywanie DNS",
@@ -385,6 +390,7 @@
"rewrite_confirm_delete": "Czy na pewno chcesz usunąć przepisywanie DNS dla „{{key}}”?",
"rewrite_desc": "Pozwala łatwo skonfigurować niestandardową odpowiedź DNS dla określonej nazwy domeny.",
"rewrite_applied": "Przepisano regułę",
"rewrite_hosts_applied": "Przepisana reguła w pliku hosts",
"dns_rewrites": "Przepisywanie DNS",
"form_domain": "Wpisz nazwę domeny lub symbol wieloznaczny",
"form_answer": "Wpisz adres IP lub nazwę domeny",
@@ -394,7 +400,7 @@
"main_settings": "Ustawienia główne",
"block_services": "Blokuj określone usługi",
"blocked_services": "Zablokowane usługi",
"blocked_services_desc": "Pozwala szybko blokować popularne witryny i usługi.",
"blocked_services_desc": "Pozwala szybko zablokować popularne witryny i usługi.",
"blocked_services_saved": "Zablokowane usługi zostały pomyślnie zapisane",
"blocked_services_global": "Użyj globalnych zablokowanych usług",
"blocked_service": "Zablokowana usługa",
@@ -409,7 +415,7 @@
"stats_params": "Konfiguracja statystyk",
"config_successfully_saved": "Konfiguracja została pomyślnie zapisana",
"interval_24_hour": "24 godziny",
"interval_days": "{{count}} dni",
"interval_days": "{{count}} dzień",
"interval_days_plural": "{{count}} dni",
"domain": "Domena",
"answer": "Odpowiedź",
@@ -422,7 +428,7 @@
"statistics_clear_confirm": "Czy na pewno chcesz wyczyścić statystyki?",
"statistics_retention_confirm": "Czy chcesz zmienić sposób przechowania statystyk? Jeżeli obniżysz wartość interwału, niektóre dane będą utracone",
"statistics_cleared": "Statystyki zostały pomyślnie wyczyszczone",
"interval_hours": "{{count}} godzin",
"interval_hours": "{{count}} godzina",
"interval_hours_plural": "{{count}} godziny",
"filters_configuration": "Konfiguracja filtrów",
"filters_enable": "Włącz filtry",
@@ -431,17 +437,17 @@
"username_label": "Nazwa użytkownika",
"username_placeholder": "Wpisz nazwę użytkownika",
"password_label": "Hasło",
"password_placeholder": "Wprowadź hasło",
"password_placeholder": "Wpisz hasło",
"sign_in": "Zaloguj się",
"sign_out": "Wyloguj się",
"forgot_password": "Zapomniałeś hasła?",
"forgot_password_desc": "Wykonaj <0>te kroki</0> aby utworzyć nowe hasło do konta użytkownika.",
"forgot_password_desc": "Wykonaj <0>te kroki</0>, aby utworzyć nowe hasło do konta użytkownika.",
"location": "Lokalizacja",
"orgname": "Nazwa firmy",
"netname": "Nazwa sieci",
"descr": "Opis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Dowiedz się więcej</0> o tworzeniu własnych czarnych list hostów.",
"filtering_rules_learn_more": "<0>Dowiedz się więcej</0> o tworzeniu własnych list blokowania hostów.",
"blocked_by_response": "W odpowiedzi zablokowany przez CNAME lub IP",
"try_again": "Spróbuj ponownie",
"domain_desc": "Wpisz nazwę domeny lub symbol wieloznaczny, który chcesz przepisać.",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "przepisz odpowiedzi dla wszystkich subdomen <0>example.org</0>.",
"disable_ipv6": "Wyłącz IPv6",
"disable_ipv6_desc": "Jeśli ta funkcja jest włączona, wszystkie zapytania DNS dotyczące adresów IPv6 (typ AAAA) zostaną usunięte.",
"fastest_addr": "Szybszy adres IP",
"fastest_addr_desc": "Zapytaj wszystkie serwery DNS i zwróć najszybszy adres IP spośród wszystkich odpowiedzi",
"autofix_warning_text": "Jeśli klikniesz „Napraw”, AdGuardHome skonfiguruje system do korzystania z serwera DNS AdGuardHome.",
"autofix_warning_list": "Wykona następujące zadania: <0>Dezaktywuj system DNSStubListener</0> <0>Ustaw adres serwera DNS na 127.0.0.1</0> <0>Zamień symboliczny cel łącza z /etc/resolv.conf na /run/systemd/resolve/resolv.conf</0> <0>Zatrzymaj DNSStubListener (przeładuj usługę systemową)</0>",
"autofix_warning_result": "W rezultacie wszystkie żądania DNS z Twojego systemu będą domyślnie przetwarzane przez AdGuardHome.",
@@ -479,5 +487,7 @@
"install_static_configure": "Wykryliśmy, że używany jest dynamiczny adres IP — <0>{{ip}}</0>. Czy chcesz użyć go jako adresu statycznego?",
"confirm_static_ip": "AdGuard Home skonfiguruje {{ip}} aby był Twoim statycznym adresem IP. Czy chcesz kontynuować?",
"list_updated": "{{count}} lista zaktualizowana",
"list_updated_plural": "{{count}} list zaktualizowanych"
"list_updated_plural": "{{count}} list zaktualizowanych",
"dnssec_enable": "Włącz DNSSEC",
"dnssec_enable_desc": "Ustaw flagę DNSSEC w wychodzących zapytaniach DNS i sprawdź wynik (wymagany jest resolver z obsługą zabezpieczania DNSSEC)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Configurações do cliente",
"example_upstream_reserved": "Você pode especificar um DNS upstream <0>para um domínio(s) especifico</0>",
"example_upstream_reserved": "Você pode especificar o DNS upstream <0>para o domínio(s) especifico</0>",
"upstream_parallel": "Usar consultas paralelas para acelerar a resolução consultando simultaneamente todos os servidores upstream",
"parallel_requests": "Solicitações paralelas",
"bootstrap_dns": "Servidores DNS de inicialização",
"bootstrap_dns_desc": "Servidores DNS de inicialização são usados para resolver endereços IP dos resolvedores DoH/DoT que você especifica como upstreams.",
"check_dhcp_servers": "Verificar por servidores DHCP",
@@ -105,6 +106,11 @@
"no_servers_specified": "Nenhum servidor especificado",
"general_settings": "Configurações gerais",
"dns_settings": "Configurações de DNS",
"dns_blocklists": "Listas negra de DNS",
"dns_allowlists": "Listas branca de DNS",
"dns_blocklists_desc": "O AdGuard Home bloqueará domínios que correspondam às listas negras.",
"dns_allowlists_desc": "Os domínios das listas branca de DNS serão permitidos mesmo que estejam em qualquer uma das listas negra.",
"custom_filtering_rules": "Regras de filtragem personalizadas",
"encryption_settings": "Configurações de criptografia",
"dhcp_settings": "Configurações de DHCP",
"upstream_dns": "Servidores DNS upstream",
@@ -122,17 +128,29 @@
"enabled_save_search_toast": "Pesquisa segura ativada",
"enabled_table_header": "Ativado",
"name_table_header": "Nome",
"list_url_table_header": "URL da lista",
"rules_count_table_header": "Quantidade de regras",
"last_time_updated_table_header": "Última atualização",
"actions_table_header": "Ações",
"edit_table_action": "Editar",
"delete_table_action": "Excluir",
"filters_and_hosts_hint": "O AdGuard Home entende regras básicas de bloqueio de anúncios e a sintaxe de arquivos de hosts.",
"no_blocklist_added": "Nenhuma lista negra foi adicionada",
"no_whitelist_added": "Nenhuma lista branca foi adicionada",
"add_blocklist": "Adicionar lista negra",
"add_allowlist": "Adicionar lista branca",
"cancel_btn": "Cancelar",
"enter_name_hint": "Digite o nome",
"enter_url_hint": "Digite a URL",
"enter_url_or_path_hint": "Digite a URL ou o local da lista",
"check_updates_btn": "Verificar atualizações",
"form_error_url_format": "Formato da url inválida",
"new_blocklist": "Nova lista negra",
"new_allowlist": "Nova lista branca",
"edit_blocklist": "Editar lista negra",
"edit_allowlist": "Editar lista branca",
"enter_valid_blocklist": "Digite uma URL válida para a lista negra.",
"enter_valid_allowlist": "Digite uma URL válida para a lista branca.",
"form_error_url_format": "Formato da URL inválida",
"form_error_url_or_path_format": "URL ou local da lista inválida",
"custom_filter_rules": "Regras de filtragem personalizadas",
"custom_filter_rules_hint": "Digite uma regra por linha. Você pode usar regras de bloqueio de anúncios ou a sintaxe de arquivos de hosts.",
"examples_title": "Exemplos",
@@ -148,6 +166,7 @@
"example_upstream_doh": "<0>DNS-sobre-HTTPS</0> criptografado",
"example_upstream_sdns": "Você pode usar <0>DNS Stamps</0>para o <1>DNSCrypt</1>ou usar os resolvedores <2>DNS-sobre-HTTPS</2>",
"example_upstream_tcp": "DNS regular (através do TCP)",
"all_lists_up_to_date_toast": "Todas as listas já estão atualizadas",
"updated_upstream_dns_toast": "Atualizado os servidores DNS upstream",
"dns_test_ok_toast": "Os servidores DNS especificados estão funcionando corretamente",
"dns_test_not_ok_toast": "O servidor \"{{key}}\": não pôde ser utilizado. Por favor, verifique se você escreveu corretamente",
@@ -182,6 +201,8 @@
"query_log_disabled": "O registro de consulta está desativado e pode ser configurado em <0>configurações</0>",
"query_log_strict_search": "Use aspas duplas para uma pesquisa mais criteriosa",
"query_log_retention_confirm": "Você tem certeza de que deseja alterar o arquivamento do registro de consulta? Se diminuir o valor de intervalo, alguns dados serão perdidos",
"anonymize_client_ip": "Tornar anônimo o IP do cliente",
"anonymize_client_ip_desc": "Não salva o endereço de IP completo do cliente em registros e estatísticas",
"dns_config": "Configuração do servidor DNS",
"blocking_mode": "Modo de bloqueio",
"default": "Padrão",
@@ -206,6 +227,7 @@
"found_in_known_domain_db": "Encontrado no banco de dados de domínios conhecidos.",
"category_label": "Categoria",
"rule_label": "Regra",
"list_label": "Lista",
"unknown_filter": "Filtro desconhecido {{filterId}}",
"install_welcome_title": "Bem-vindo(a) ao AdGuard Home!",
"install_welcome_desc": "O AdGuard Home é um servidor de DNS para bloqueio de anúncios e rastreamento em toda a rede. Sua finalidade é permitir que você controle toda a sua rede e seus dispositivos sem precisar ter um programa instalado.",
@@ -235,6 +257,7 @@
"install_devices_router_list_1": "Abra as configurações do seu roteador\nNo navegador digite o IP do roteador, o padrão é (http://192.168.0.1/ ou http://192.168.1.1/), e o login e senha é admin/admin; Se você não se lembra da senha, você pode redefinir a senha rapidamente pressionando um botão no próprio roteador. Alguns roteadores têm um aplicativo específico que já deve estar instalado em seu computador/telefone.",
"install_devices_router_list_2": "Encontre as Configurações de DNS. Procure as letras DNS ao lado de um campo que permite dois ou três conjuntos de números, cada um dividido em quatro grupos de um a três números.",
"install_devices_router_list_3": "Digite aqui seu servidor do AdGuard Home.",
"install_devices_router_list_4": "Você não pode definir um servidor DNS personalizado em alguns tipos de roteadores. Nesse caso, pode ajudar se você configurar o AdGuard Home como um servidor DHCP. Caso contrário, você deve procurar o manual sobre como personalizar os servidores DNS para o seu modelo de roteador específico.",
"install_devices_windows_list_1": "Abra o Painel de Controle pelo Menu Iniciar ou pela Pesquisa do Windows.",
"install_devices_windows_list_2": "Entre na categoria Rede e Internet e depois clique em Central de Rede e Compartilhamento.",
"install_devices_windows_list_3": "No lado esquerdo da janela clique em Alterar as configurações do adaptador.",
@@ -329,6 +352,7 @@
"client_updated": "Cliente \"{{key}}\" atualizado com sucesso",
"clients_not_found": "Nenhum cliente foi encontrado",
"client_confirm_delete": "Você tem certeza de que deseja excluir o cliente \"{{key}}\"?",
"list_confirm_delete": "Você tem certeza de que deseja excluir essa lista?",
"auto_clients_title": "Clientes (tempo de execução)",
"auto_clients_desc": "Dados dos clientes que usam o AdGuard Home, que não são armazenados na configuração",
"access_title": "Configurações de acessos",
@@ -338,7 +362,7 @@
"access_disallowed_title": "Clientes não permitidos",
"access_disallowed_desc": "Uma lista de endereços IP ou CIDR. Ao configurar, o AdGuard Home irá descartar as solicitações desses endereços de IP.",
"access_blocked_title": "Domínios bloqueados",
"access_blocked_desc": "Não confunda isso com os filtros. O AdGuard Home irá descartar as consultas DNS com esses domínios.",
"access_blocked_desc": "Não confunda isso com filtros. O AdGuard Home deixará de fazer consultas de DNS com esses domínios na questão das consultas. Aqui você pode especificar os nomes exatos de domínio, wildcards e regras do filtro por url, por exemplo: 'exemplo.org', '*.exemplo.org' ou '||example.org^'.",
"access_settings_saved": "Configurações de acesso foram salvas com sucesso",
"updates_checked": "Atualizações verificadas com sucesso",
"updates_version_equal": "O AdGuard Home está atualizado.",
@@ -366,6 +390,7 @@
"rewrite_confirm_delete": "Você tem certeza de que deseja excluir a reescrita de DNS para \"{{key}}\"?",
"rewrite_desc": "Permite configurar uma resposta personalizada do DNS para um nome de domínio específico.",
"rewrite_applied": "Regra de reescrita aplicada",
"rewrite_hosts_applied": "Reescrito pela regra do arquivo de hosts",
"dns_rewrites": "Reescritas de DNS",
"form_domain": "Digite o nome do domínio ou wildcard",
"form_answer": "Digite o endereço de IP ou nome de domínio",
@@ -430,6 +455,8 @@
"example_rewrite_wildcard": "reescrever respostas para todos subdomínios <0>exemplo.org</0>.",
"disable_ipv6": "Desativar IPv6",
"disable_ipv6_desc": "Se este recurso estiver ativado, todas as consultas de DNS para endereços IPv6 (tipo AAAA) serão ignoradas.",
"fastest_addr": "Endereço de IP mais rápido",
"fastest_addr_desc": "Consulte todos os servidores de DNS e retorne o endereço de IP mais rápido entre todas as respostas",
"autofix_warning_text": "Se clicar em \"Corrigir\", o AdGuardHome irá configurar o seu sistema para utilizar o servidor DNS do AdGuardHome.",
"autofix_warning_list": "Ele irá realizar estas tarefas: <0>Desativar sistema DNSStubListener</0> <0>Definir endereço do servidor DNS para 127.0.0.1</0> <0>Substituir o alvo simbólico do link /etc/resolv.conf para /run/systemd/resolv.conf</0> <0>Parar DNSStubListener (recarregar serviço resolvido pelo sistema)</0>",
"autofix_warning_result": "Como resultado, todos as solicitações DNS do seu sistema serão processadas pelo AdGuardHome por padrão.",
@@ -458,5 +485,9 @@
"install_static_ok": "Boas notícias! O endereço de IP estático já está configurado",
"install_static_error": "O AdGuard Home não pode configurar automaticamente para esta interface de rede. Por favor, procure uma instrução sobre como fazer isso manualmente.",
"install_static_configure": "Detectamos que um endereço de IP dinâmico é sendo usado — <0>{{ip}}</0>. Deseja utilizar como seu endereço estático?",
"confirm_static_ip": "O AdGuard Home irá configurar {{ip}} para ser seu endereço IP estático. Deseja continuar?"
"confirm_static_ip": "O AdGuard Home irá configurar {{ip}} para ser seu endereço IP estático. Deseja continuar?",
"list_updated": "{{count}} lista atualizada",
"list_updated_plural": "{{count}} listas atualizadas",
"dnssec_enable": "Ativar DNSSEC",
"dnssec_enable_desc": "Definir a flag DNSSEC nas consultas de DNS em andamento e verificar o resultado (é necessário um resolvedor DNSSEC ativado)"
}

View File

@@ -130,7 +130,6 @@
"filters_and_hosts_hint": "O AdGuard Home entende regras básicas de bloqueio de anúncios e a sintaxe de arquivos de hosts.",
"cancel_btn": "Cancelar",
"enter_name_hint": "Insira o nome",
"enter_url_hint": "Insira URL",
"check_updates_btn": "Verificar actualizações",
"custom_filter_rules": "Regras de filtragem personalizadas",
"custom_filter_rules_hint": "Insira uma regra por linha. Pode usar regras de bloqueio de anúncios ou a sintaxe de arquivos de hosts.",

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Setări client",
"example_upstream_reserved": "puteți preciza un DNS upstream <0>de domeni/u(ii) specific(e)</0>",
"upstream_parallel": "Folosiți interogări paralele pentru a rezolva rapid prin interogarea simultană a tuturor serverelor upstream",
"example_upstream_reserved": "Puteți preciza un DNS upstream <0>de domeni/u(ii) specific(e)</0>",
"upstream_parallel": "Folosiți interogări paralele pentru rezolvări rapide interogând simultan toate serverele în amonte",
"parallel_requests": "Solicitări paralele",
"bootstrap_dns": "Serverele DNS Bootstrap",
"bootstrap_dns_desc": "Serverele DNS Bootstrap sunt folosite pentru a rezolva adresele IP ale resolverelor DoH/DoT indicate ca upstreams.",
"check_dhcp_servers": "Căutați servere DHCP",
@@ -140,7 +141,7 @@
"add_allowlist": "Adăugați autorizare",
"cancel_btn": "Anulare",
"enter_name_hint": "Intrați numele",
"enter_url_hint": "Intrați URL",
"enter_url_or_path_hint": "Intrați un URL sau o cale absolută a listei",
"check_updates_btn": "Caută actualizări",
"new_blocklist": "Nouă blocare",
"new_allowlist": "Nouă autorizare",
@@ -148,7 +149,8 @@
"edit_allowlist": "Editare autorizare",
"enter_valid_blocklist": "Intrați un URL valid pentru blocare.",
"enter_valid_allowlist": "Intrați un URL valid pentru autorizare.",
"form_error_url_format": "Format url nevalid",
"form_error_url_format": "Format URL invalid",
"form_error_url_or_path_format": "Invalid URL sau o cale absolută a listei",
"custom_filter_rules": "Reguli de filtrare personalizate",
"custom_filter_rules_hint": "Intrați o regulă pe linie. Puteți utiliza reguli de blocare sau sintaxa de fișiere hosts.",
"examples_title": "Exemple",
@@ -199,6 +201,8 @@
"query_log_disabled": "Jurnalul de interogare este dezactivat și poate fi configurat în <0>setări</0>",
"query_log_strict_search": "Utilizați ghilimele duble pentru căutare strictă",
"query_log_retention_confirm": "Sunteți sigur că doriți să schimbați retenția jurnalului de interogare? Reducând valoarea intervalului, unele date vor fi pierdute",
"anonymize_client_ip": "Anonimizare client IP",
"anonymize_client_ip_desc": "Nu salvați adresa IP completă a clientului în jurnale și statistici",
"dns_config": "Configurația serverului DNS",
"blocking_mode": "Modul de blocare",
"default": "Implicit",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Deschideți preferințele pentru routerul dvs. De obicei, îl puteți accesa din browserul dvs. printr-o adresă URL (cum ar fi http://192.168.0.1/ sau http://192.168.1.1/). Vi se poate cere să introduceți parola. Dacă nu v-o amintiți, puteți reseta adesea parola apăsând un buton de pe routerul propriu-zis. Unele routere necesită o aplicație specifică, care în acest caz ar trebui să fie deja instalată pe computerul/telefonul dvs.",
"install_devices_router_list_2": "Găsiți setările DHCP/DNS. Căutați literele DNS lângă un câmp care să permită două sau trei seturi de numere, fiecare împărțit în patru grupuri de una până la trei cifre.",
"install_devices_router_list_3": "Intrați adresele serverului dvs. AdGuard Home aici.",
"install_devices_router_list_4": "Unele routere nu permit setarea unui server DNS personalizat. În acest caz, vă poate ajuta dacă configurați AdGuard Home ca server DHCP. Dacă nu, trebuie căutat manualul modelului dvs. de router ca să aflați cum se pot personaliza serverele DNS.",
"install_devices_windows_list_1": "Deschideți panoul de control prin meniul Start sau căutare Windows.",
"install_devices_windows_list_2": "Accesați categoria \"Rețea și Internet\", apoi la \"Centrul de Rețea și Partajare\".",
"install_devices_windows_list_3": "În partea stângă a ecranului găsiți \"Schimbare setări adaptor\" și faceți clic pe el.",
@@ -357,7 +362,7 @@
"access_disallowed_title": "Clienți neautorizați",
"access_disallowed_desc": "O listă de adrese CIDR sau IP. Dacă este configurat, AdGuard Home va elimina cererile de la aceste adrese IP.",
"access_blocked_title": "Domenii blocate",
"access_blocked_desc": "Nu confundați acest lucru cu filtrele. AdGuard Home va bloca interogări DNS cu aceste domenii în întrebare.",
"access_blocked_desc": "Nu confundați acest lucru cu filtrele. AdGuard Home va bloca interogări DNS cu aceste domenii în întrebare. Aici puteți specifica exact numele de domeniu, wildcard și reguli-urlfilter, de ex. 'examplu.org', '*.examplu.org' sau '||exemplu.org^'.",
"access_settings_saved": "Setările de acces au fost salvate cu succes",
"updates_checked": "Actualizările au fost verificate cu succes",
"updates_version_equal": "AdGuard Home este la zi",
@@ -384,7 +389,8 @@
"rewrite_not_found": "Nu s-au găsit rescrieri DNS",
"rewrite_confirm_delete": "Sunteți sigur că doriți să ștergeți rescrierea DNS pentru \"{{key}}\"?",
"rewrite_desc": "Permite configurarea cu ușurință a răspunsului personalizat DNS pentru un nume de domeniu specific.",
"rewrite_applied": "Regula de rescriere aplicată",
"rewrite_applied": "Regula de rescriere s-a aplicat",
"rewrite_hosts_applied": "Rescrisă de regula fișierului hosts",
"dns_rewrites": "Rescrieri DNS",
"form_domain": "Intrați un nume de domeniu sau wildcard",
"form_answer": "Intrați adresa IP sau numele de domeniu",
@@ -441,7 +447,7 @@
"netname": "Numele rețelei",
"descr": "Descriere",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Aflați mai multe</0> despre crearea propriilor dvs. liste de blocaj de hosts.",
"filtering_rules_learn_more": "<0>Aflați mai multe</0> despre crearea propriilor liste hosts.",
"blocked_by_response": "Blocat de CNAME sau IP ca răspuns",
"try_again": "Încercați din nou",
"domain_desc": "Intrați un nume de domeniu sau wildcard care doriți să fie rescris.",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "rescrie răspunsuri pentru toate subdomeniile <0>exemplu.org</0>.",
"disable_ipv6": "Dezactivați IPv6",
"disable_ipv6_desc": "Dacă această opțiune este activată, toate interogările DNS pentru adrese IPv6 (tip AAAA) vor fi anulate.",
"fastest_addr": "Cea mai rapidă adresă IP",
"fastest_addr_desc": "Interogați toate serverele DNS și returnați cea mai rapidă adresă IP din răspunsuri",
"autofix_warning_text": "Dacă faceți clic pe \"Fix\", AdGuardHome va configura sistemul dvs. pentru a utiliza serverul DNS AdGuardHome.",
"autofix_warning_list": "Va efectua aceste sarcini: <0>Dezactivare sistem DNSStubListener</0> <0>Setare adresă server DNS la 127.0.0.1</0> <0>Înlocuire țintei legăturii simbolice a /etc/resolv.conf pentru /run/systemd/resolve/resolv.conf</0> <0>Oprire DNSStubListener (reîncărcare servici rezolvat prin sistem)</0>",
"autofix_warning_result": "Ca urmare, toate cererile DNS de la sistemul dvs. vor fi procesate în mod implicit de AdGuardHome.",
@@ -479,5 +487,7 @@
"install_static_configure": "Am detectat că se folosește o adresă IP dinamică - <0>{{ip}}</0>. Vreți să o folosiți pe aceasta ca adresă statică?",
"confirm_static_ip": "AdGuard Home va configura {{ip}} ca adresa dvs. IP statică. Doriți să continuați?",
"list_updated": "{{count}} listă actualizată",
"list_updated_plural": "{{count}} liste actualizate"
"list_updated_plural": "{{count}} liste actualizate",
"dnssec_enable": "Activați DNSSEC",
"dnssec_enable_desc": "Setați steagul DNSSEC pe interogările DNS de ieșire și verificați rezultatul (este necesar un resolver DNSSEC activat)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Настройки клиентов",
"example_upstream_reserved": "вы можете указать DNS-сервер <0>для конкретного домена(ов)</0>",
"upstream_parallel": "Использовать одновременные запросы ко всем серверам для ускорения обработки запроса",
"example_upstream_reserved": "Вы можете указать DNS-сервер <0>для конкретного домена(-ов)</0>",
"upstream_parallel": "Использовать параллельные запросы ко всем серверам одновременно для ускорения обработки запроса",
"parallel_requests": "Параллельные запросы",
"bootstrap_dns": "Bootstrap DNS-серверы",
"bootstrap_dns_desc": "Bootstrap DNS-серверы используются для поиска IP-адресов DoH/DoT серверов, которые вы указали.",
"check_dhcp_servers": "Проверить DHCP-серверы",
@@ -76,12 +77,16 @@
"stats_adult": "Заблокированные \"взрослые\" сайты",
"stats_query_domain": "Часто запрашиваемые домены",
"for_last_24_hours": "за 24 часа",
"for_last_days": "за последний {{count}} день",
"for_last_days_plural": "за последние {{count}} дней",
"no_domains_found": "Домены не найдены",
"requests_count": "Количество запросов",
"top_blocked_domains": "Часто блокируемые домены",
"top_clients": "Частые клиенты",
"no_clients_found": "Клиентов не найдено",
"general_statistics": "Общая статистика",
"number_of_dns_query_days": "Количество DNS-запросов за последний {{count}} день",
"number_of_dns_query_days_plural": "Количество DNS запросов, обработанных за последние {{count}} дней",
"number_of_dns_query_24_hours": "Количество DNS-запросов за 24 часа",
"number_of_dns_query_blocked_24_hours": "Количество DNS-запросов, заблокированных фильтрами и блок-списками",
"number_of_dns_query_blocked_24_hours_by_sec": "Количество DNS-запросов, заблокированных модулем Антифишинга AdGuard",
@@ -136,7 +141,7 @@
"add_allowlist": "Добавить белый список",
"cancel_btn": "Отмена",
"enter_name_hint": "Введите имя",
"enter_url_hint": "Введите URL",
"enter_url_or_path_hint": "Введите URL-адрес или абсолютный путь к списку",
"check_updates_btn": "Проверить обновления",
"new_blocklist": "Новый черный список",
"new_allowlist": "Новый белый список",
@@ -145,6 +150,7 @@
"enter_valid_blocklist": "Добавьте действующий URL-адрес в черный список.",
"enter_valid_allowlist": "Добавьте действующий URL-адрес в белый список.",
"form_error_url_format": "Неверный формат URL",
"form_error_url_or_path_format": "Неверный URL или абсолютный путь к списку",
"custom_filter_rules": "Пользовательское правило фильтрации",
"custom_filter_rules_hint": "Вводите по одному правилу на строчку. Вы можете использовать правила блокировки или синтаксис файлов hosts.",
"examples_title": "Примеры",
@@ -195,6 +201,8 @@
"query_log_disabled": "Журнал запросов выключен, его можно включить в <0>настройках</0>",
"query_log_strict_search": "Используйте двойные кавычки для строгого поиска",
"query_log_retention_confirm": "Вы уверены, что хотите изменить срок хранения запросов? При сокращении интервала данные могут быть утеряны",
"anonymize_client_ip": "Анонимизировать IP-адрес клиента",
"anonymize_client_ip_desc": "Не сохранять полный IP-адрес клиента в журналах и статистике",
"dns_config": "Настройки DNS-сервера",
"blocking_mode": "Режим блокировки",
"default": "Стандартный",
@@ -249,6 +257,7 @@
"install_devices_router_list_1": "Откройте настройки вашего роутера. Обычно вы можете открыть их в вашем браузере (например, http://192.168.0.1/ или http://192.168.1.1/). Вас могут попросить ввести пароль. Если вы не помните его, пароль часто можно сбросить, нажав на кнопку на самом роутере. Некоторые роутеры требуют специального приложения, которое в этом случае должно быть уже установлено на ваш компьютер или телефон.",
"install_devices_router_list_2": "Найдите настройки DHCP или DNS. Найдите буквы \"DNS\" рядом с текстовым полем, в которое можно ввести два или три ряда цифр, разделенных на 4 группы от одной до трёх цифр.",
"install_devices_router_list_3": "Введите туда адрес вашего AdGuard Home.",
"install_devices_router_list_4": "Вы не можете установить собственный DNS-сервер на некоторых типах маршрутизаторов. В этом случае может помочь настройка AdGuard Home в качестве DHCP-сервера. В противном случае вам следует обратиться к руководству по настройке DNS-серверов для вашей конкретной модели маршрутизатора.",
"install_devices_windows_list_1": "Откройте Панель управления через меню \"Пуск\" или через поиск Windows.",
"install_devices_windows_list_2": "Перейдите в \"Сеть и интернет\", а затем в \"Центр управления сетями и общим доступом\"",
"install_devices_windows_list_3": "В левой стороне экрана найдите \"Изменение параметров адаптера\" и кликните по нему.",
@@ -352,8 +361,8 @@
"access_allowed_desc": "Список CIDR- или IP-адресов. Если он настроен, AdGuard Home будет принимать запросы только с этих IP-адресов.",
"access_disallowed_title": "Запрещенные клиенты",
"access_disallowed_desc": "Список CIDR- или IP-адресов. Если он настроен, AdGuard Home будет игнорировать запросы с этих IP-адресов.",
"access_blocked_title": "Заблокированные домены",
"access_blocked_desc": "Не путайте это с фильтрами. AdGuard Home будет игнорировать DNS-запросы с этими доменами.",
"access_blocked_title": "Неразрешенные домены",
"access_blocked_desc": "Не путайте это с фильтрами. AdGuard Home будет игнорировать DNS-запросы с этими доменами. Здесь вы можете уточнить точные имена доменов, шаблоны, правила URL-фильтрации, например, \"пример.org\", \"*.пример.org\" или \"||пример.org\".",
"access_settings_saved": "Настройки доступа успешно сохранены",
"updates_checked": "Проверка обновлений прошла успешно",
"updates_version_equal": "Версия AdGuard Home актуальна",
@@ -381,6 +390,7 @@
"rewrite_confirm_delete": "Вы уверены, что хотите удалить правило перенаправления DNS для \"{{key}}\"?",
"rewrite_desc": "Позволяет легко настроить пользовательский DNS-ответ для определеннного домена.",
"rewrite_applied": "Применено правило перенаправления",
"rewrite_hosts_applied": "Переписано по правилу файла hosts",
"dns_rewrites": "Перенаправления DNS",
"form_domain": "Введите домен",
"form_answer": "Введите IP адрес или домен",
@@ -405,6 +415,8 @@
"stats_params": "Конфигурация статистики",
"config_successfully_saved": "Конфигурация успешно сохранена",
"interval_24_hour": "24 часа",
"interval_days": "{{count}} день",
"interval_days_plural": "{{count}} дней",
"domain": "Домен",
"answer": "Ответ",
"filter_added_successfully": "Список успешно добавлен",
@@ -416,6 +428,8 @@
"statistics_clear_confirm": "Вы уверены, что хотите очистить статистику?",
"statistics_retention_confirm": "Вы уверены, что хотите изменить срок хранения статистики? При сокращении интервала данные могут быть утеряны",
"statistics_cleared": "Статистика успешно очищена",
"interval_hours": "{{count}} час",
"interval_hours_plural": "{{count}} часов",
"filters_configuration": "Настройка фильтров",
"filters_enable": "Включить фильтры",
"filters_interval": "Интервал обновления фильтров",
@@ -439,20 +453,10 @@
"domain_desc": "Введите имя или маску домена, который вы хотите перенаправить.",
"example_rewrite_domain": "перенаправляет ответы только для этого домена.",
"example_rewrite_wildcard": "перенаправляет ответы для всех поддоменов <0>example.org</0>.",
"interval_hours_0": "{{count}} час",
"interval_hours_1": "{{count}} часа",
"interval_hours_2": "{{count}} часов",
"interval_days_0": "{{count}} день",
"interval_days_1": "{{count}} дня",
"interval_days_2": "{{count}} дней",
"for_last_days_0": "за последний {{count}} день",
"for_last_days_1": "за последние {{count}} дня",
"for_last_days_2": "за последние {{count}} дней",
"number_of_dns_query_days_0": "Количество DNS-запросов за {{count}} день",
"number_of_dns_query_days_1": "Количество DNS-запросов за {{count}} дня",
"number_of_dns_query_days_2": "Количество DNS-запросов за {{count}} дней",
"disable_ipv6": "Отключить IPv6",
"disable_ipv6_desc": "Если эта опция включена, все DNS-запросы адресов IPv6 (тип AAAA) будут игнорироваться.",
"fastest_addr": "Самый быстрый IP-адрес",
"fastest_addr_desc": "Опросить все DNS-серверы и вернуть самый быстрый IP-адрес из полученных ответов",
"autofix_warning_text": "При нажатии \"Исправить\" AdGuard Home настроит вашу систему на использование DNS-сервера AdGuard Home.",
"autofix_warning_list": "Будут выполняться следующие задачи: <0>Деактивировать системный DNSStubListener</0> <0>Установить адрес сервера DNS на 127.0.0.1</0> <0>Создать символическую ссылку /etc/resolv.conf на /run/systemd/resolve/resolv.conf</0> <0>Остановить DNSStubListener (перезагрузить системную службу)</0>.",
"autofix_warning_result": "В результате все DNS-запросы от вашей системы будут по умолчанию обрабатываться AdGuard Home.\n",
@@ -482,7 +486,8 @@
"install_static_error": "AdGuard Home не может автоматически настроить его для этого сетевого интерфейса. Пожалуйста, посмотрите инструкцию о том, как это сделать вручную.",
"install_static_configure": "Мы обнаружили использование динамического IP-адреса — <0>{{ip}}</0>. Хотите использовать его в качестве статического адреса?",
"confirm_static_ip": "AdGuard Home настроит {{ip}} в качестве вашего статического IP-адреса. Хотите продолжить?",
"list_updated_0": "Обновлен {{count}} список",
"list_updated_1": "Обновлено списка: {{count}}",
"list_updated_2": "Обновлено списков: {{count}}"
"list_updated": "Обновлен {{count}} список",
"list_updated_plural": "Обновлено списков: {{count}}",
"dnssec_enable": "Включить DNSSEC",
"dnssec_enable_desc": "Установите флаг DNSSEC в исходящих DNS-запросах и проверьте результат (требуется резолвер с поддержкой DNSSEC)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Nastavenie klienta",
"example_upstream_reserved": "môžete zadať DNS upstream <0>pre konkrétnu doménu (domény)</0>",
"upstream_parallel": "Používajte paralelné dotazy na zrýchlenie riešenia súčasným dopytovaním všetkých serverov",
"example_upstream_reserved": "Môžete zadať DNS upstream <0>pre konkrétnu doménu (domény)</0>",
"upstream_parallel": "Používať paralelné dopyty na zrýchlenie súčasným dopytovaním všetkých serverov",
"parallel_requests": "Paralelné dopyty",
"bootstrap_dns": "Bootstrap DNS servery",
"bootstrap_dns_desc": "Bootstrap DNS servery sa používajú na rozlíšenie IP adries DoH/DoT rezolverov, ktoré zadáte ako upstreams.",
"check_dhcp_servers": "Skontrolovať DHCP servery",
@@ -71,7 +72,7 @@
"disabled_protection": "Ochrana vypnutá",
"refresh_statics": "Obnoviť štatistiku",
"dns_query": "DNS dopyty",
"blocked_by": "<0>Blokované filtrami<0>",
"blocked_by": "<0>Blokované filtrami</0>",
"stats_malware_phishing": "Blokovaný škodlivý kód/pokus o podvod",
"stats_adult": "Blokovaná stránka pre dospelých",
"stats_query_domain": "Najčastejšie dopytované domény",
@@ -131,7 +132,7 @@
"rules_count_table_header": "Počet pravidiel",
"last_time_updated_table_header": "Posledná aktualizácia",
"actions_table_header": "Akcie",
"edit_table_action": "Úprava",
"edit_table_action": "Uprav",
"delete_table_action": "Vymazať",
"filters_and_hosts_hint": "AdGuard Home pozná základné pravidlá adblock a syntax hosts súborov.",
"no_blocklist_added": "Nebol pridaný žiaden zoznam blokovaných DNS",
@@ -140,7 +141,7 @@
"add_allowlist": "Pridať zoznam povolených DNS",
"cancel_btn": "Zrušiť",
"enter_name_hint": "Zadajte meno",
"enter_url_hint": "Zadajte URL adresu",
"enter_url_or_path_hint": "Zadajte URL adresu alebo absolútnu adresu zoznamu",
"check_updates_btn": "Skontrolovať aktualizácie",
"new_blocklist": "Nový zoznam blokovaných DNS",
"new_allowlist": "Nový zoznam povolených DNS",
@@ -149,6 +150,7 @@
"enter_valid_blocklist": "Zadajte platnú URL adresu do zoznamu blokovaných DNS.",
"enter_valid_allowlist": "Zadajte platnú URL adresu do zoznamu povolených DNS.",
"form_error_url_format": "Neplatný URL formát",
"form_error_url_or_path_format": "Neplatná URL adresa alebo absolútna adresa zoznamu",
"custom_filter_rules": "Vlastné filtračné pravidlá",
"custom_filter_rules_hint": "Zadajte na každý riadok jedno pravidlo. Môžete použiť buď adblock pravidlá alebo syntax host súborov.",
"examples_title": "Príklady",
@@ -199,6 +201,8 @@
"query_log_disabled": "Protokol dopytov je vypnutý a možno ho nakonfigurovať v <0>nastaveniach</0>",
"query_log_strict_search": "Na prísne vyhľadávanie použite dvojité úvodzovky",
"query_log_retention_confirm": "Naozaj chcete zmeniť uchovávanie denníku dopytov? Ak znížite hodnotu intervalu, niektoré údaje sa stratia",
"anonymize_client_ip": "Anonymizujte IP klienta",
"anonymize_client_ip_desc": "Neukladať úplnú IP adresu klienta do protokolov a štatistík",
"dns_config": "Konfigurácia DNS servera",
"blocking_mode": "Spôsob blokovania",
"default": "Predvolené",
@@ -210,7 +214,7 @@
"form_enter_rate_limit": "Zadajte rýchlostný limit",
"rate_limit": "Rýchlostný limit",
"edns_enable": "Povoliť klientsku podsiete EDNS",
"edns_cs_desc": "Ak je povolená, program AdGuard Home bude odosielať podsiete klientov na DNS servery.",
"edns_cs_desc": "Ak je zapnuté, program AdGuard Home bude odosielať podsiete klientov na DNS servery.",
"rate_limit_desc": "Počet požiadaviek za sekundu, ktoré môže jeden klient vykonať (0: neobmedzene)",
"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",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Otvorte predvoľby Vášho smerovača. Zvyčajne ho môžete získať z prehliadača prostredníctvom adresy URL (napríklad http://192.168.0.1/ alebo http://192.168.1.1/). Možno bude potrebné zadať heslo. Ak si to nepamätáte, heslo môžete často obnoviť stlačením tlačidla na samotnom smerovači. Niektoré smerovače vyžadujú konkrétnu aplikáciu, ktorá by v takom prípade mala byť už nainštalovaná na Vašom počítači alebo telefóne.",
"install_devices_router_list_2": "Nájdite nastavenia DHCP/DNS. Hľadajte skratku DNS vedľa poľa, ktoré umožňuje vložiť dve alebo tri sady čísel, každé rozdelené do štyroch skupín s jedným až tromi číslicami.",
"install_devices_router_list_3": "Zadajte tam adresy Vášho AdGuard Home servera.",
"install_devices_router_list_4": "Na niektorých typoch smerovačov nemôžete nastaviť vlastný DNS server. V takom prípade môže pomôcť, ak nastavíte AdGuard Home ako DHCP server. V opačnom prípade by ste mali vyhľadať príručku, ako prispôsobiť DNS servery konkrétnemu modelu smerovača.",
"install_devices_windows_list_1": "Otvorte panel Nastavenia cez menu Štart alebo vyhľadávanie Windows.",
"install_devices_windows_list_2": "Prejdite do kategórie Sieť a internet a potom do Centra sietí a zdieľania.",
"install_devices_windows_list_3": "Vyhľadajte položku Zmeniť možnosti adaptéra a kliknite na ňu",
@@ -356,8 +361,8 @@
"access_allowed_desc": "Zoznam CIDR alebo IP adries. Ak je nakonfigurovaný, AdGuard Home akceptuje len dopyty z týchto IP adries",
"access_disallowed_title": "Nepovolení klienti",
"access_disallowed_desc": "Zoznam CIDR alebo IP adries. Ak je nakonfigurovaný, AdGuard Home bude ignorovať dopyty z týchto IP adries",
"access_blocked_title": "Blokované domény",
"access_blocked_desc": "Nezamieňajte si to s filtrami. Domovská stránka služby AdGuard bude ignorovať dopyt DNS na tieto domény v rámci spracovania dopytu.",
"access_blocked_title": "Nepovolené domény",
"access_blocked_desc": "Nezamieňajte si to s filtrami. Domovská stránka AdGuard zruší DNS dopyty obsahujúce tieto domény. Tu môžete zadať presné názvy domén, zástupné znaky a pravidlá URL adries, napr. 'example.org', '*.example.org' alebo '|| example.org ^'.",
"access_settings_saved": "Nastavenia prístupu úspešne uložené",
"updates_checked": "Aktualizácie úspešne skontrolované",
"updates_version_equal": "AdGuard Home je aktuálny",
@@ -385,6 +390,7 @@
"rewrite_confirm_delete": "Naozaj chcete odstrániť prepísanie DNS pre \"{{key}}\"?",
"rewrite_desc": "Umožňuje ľahko nakonfigurovať vlastnú odpoveď DNS pre konkrétne meno domény.",
"rewrite_applied": "Použilo sa pravidlo prepisovania",
"rewrite_hosts_applied": "Prepísané pravidlom súboru hostiteľov",
"dns_rewrites": "DNS prepisovanie",
"form_domain": "Zadajte meno domény alebo zástupný znak",
"form_answer": "Zadajte IP adresu alebo meno domény",
@@ -441,7 +447,7 @@
"netname": "Meno siete",
"descr": "Popis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Viac informácií</0> o vytváraní vlastných zoznamov hostiteľov.",
"filtering_rules_learn_more": "<0>Dozvedieť sa viac</0> o tvorbe vlastných zoznamov hostiteľov.",
"blocked_by_response": "Blokované pomocou CNAME alebo IP v odpovedi",
"try_again": "Skúste znova",
"domain_desc": "Zadajte meno domény alebo zástupný znak, ktorý chcete prepísať.",
@@ -449,9 +455,11 @@
"example_rewrite_wildcard": "prepísať odpovede pre všetky subdomény <0>example.org</0>.",
"disable_ipv6": "Vypnúť IPv6",
"disable_ipv6_desc": "Ak je táto funkcia zapnutá, všetky dotazy DNS na adresy IPv6 (typ AAAA) budú zrušené.",
"fastest_addr": "Najrýchlejšia IP adresa",
"fastest_addr_desc": "Dopytovať všetky DNS servery a vrátiť najrýchlejšiu IP adresu zo všetkých odpovedí",
"autofix_warning_text": "Ak kliknete na „Opraviť“, AdGuardHome nakonfiguruje Váš systém tak, aby používal DNS server AdGuardHome.",
"autofix_warning_list": "Bude vykonávať tieto úlohy: <0>Deaktivovať systém DNSStubListener</0> <0>Nastaviť adresu servera DNS na 127.0.0.1</0> <0>Nahradiť cieľový symbolický odkaz /etc/resolv.conf na /run/systemd/resolve/resolv.conf</0> <0>Zastaviť službu DNSStubListener (znova načítať službu systemd-resolved)</0>",
"autofix_warning_result": "Výsledkom bude, že všetky požiadavky DNS z Vášho systému budú štandardne spracované službou AdGuardHome.",
"autofix_warning_result": "Výsledkom bude, že všetky DNS dopyty z Vášho systému budú štandardne spracované službou AdGuard Home.",
"tags_title": "Tagy",
"tags_desc": "Môžete vybrať tagy ktoré zodpovedajú klientovi. Tagy môžu byť súčasťou filtračných pravidiel a umožňujú Vám použiť ich presnejšie. <0>Viac informácií</0>",
"form_select_tags": "Zvoľte tagy klienta",
@@ -479,5 +487,7 @@
"install_static_configure": "Zistili sme, že sa používa dynamická IP adresa — <0>{{ip}}</0>. Chcete ju použiť ako svoju statickú adresu?",
"confirm_static_ip": "AdGuard Home nakonfiguruje {{ip}} ako statickú IP adresu. Chcete pokračovať?",
"list_updated": "{{count}} zoznam aktualizovaný",
"list_updated_plural": "{{count}} zoznamov aktualizovaných"
"list_updated_plural": "{{count}} zoznamov aktualizovaných",
"dnssec_enable": "Zapnúť DNSSEC",
"dnssec_enable_desc": "Nastavte príznak DNSSEC v nasledujúcich DNS dopytoch a skontrolujte výsledok (je potrebný prekladač so zapnutým DNSSEC)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "Nastavitve odjemalca",
"example_upstream_reserved": "lahko določite nazgornji DNS <0>za določene domene</0>",
"upstream_parallel": "Uporabite vzporedne poizvedbe za pospešitev razreševanja tako, da hkrati poizvedujete vse zagonske strežnike",
"upstream_parallel": "Uporabite vzporedne zahteve za pospešitev reševanja s hkratnim poizvedovanjem vseh gorvodnih strežnikov",
"parallel_requests": "Vzporedne zahteve",
"bootstrap_dns": "Zagonski DNS strežniki",
"bootstrap_dns_desc": "Zagonski DNS strežniki se uporabljajo za razreševanje IP naslovov DoH/DoT reševalcev, ki jih določite kot navzgornje.",
"check_dhcp_servers": "Preveri strežnike DHCP",
@@ -71,7 +72,7 @@
"disabled_protection": "Zaščita je onemogočena",
"refresh_statics": "Osveži statistiko",
"dns_query": "Poizvedbe DNS",
"blocked_by": "Onemogočeno s filtri",
"blocked_by": "<0>Onemogočeno s filtri</0>",
"stats_malware_phishing": "Onemogočeno zlonamernih programov/lažnih predstavljanj",
"stats_adult": "Onemogočeno spletnih strani za odrasle",
"stats_query_domain": "Najbolj poizvedovane domene",
@@ -140,7 +141,7 @@
"add_allowlist": "Dodaj seznam dovoljenih",
"cancel_btn": "Prekliči",
"enter_name_hint": "Vnesite ime",
"enter_url_hint": "Vnesite URL",
"enter_url_or_path_hint": "Vnesite URL ali absolutno pot seznama",
"check_updates_btn": "Preveri obstoj posodobitev",
"new_blocklist": "Nov seznam nedovoljenih",
"new_allowlist": "Nov seznam dovoljenih",
@@ -148,7 +149,8 @@
"edit_allowlist": "Uredi seznam dovoljenih",
"enter_valid_blocklist": "Vnesite veljaven URL naslov seznama nedovoljenih.",
"enter_valid_allowlist": "Vnesite veljaven URL naslov seznama dovoljenih.",
"form_error_url_format": "Neveljaven format Url",
"form_error_url_format": "Neveljaven format URL naslova",
"form_error_url_or_path_format": "Neveljaven URL ali absolutna pot seznama",
"custom_filter_rules": "Pravila filtriranja po meri",
"custom_filter_rules_hint": "V vrstico vnesite eno pravilo. Uporabite lahko pravila zaviranja oglasov ali sintakso gostiteljskih datotek.",
"examples_title": "Primeri",
@@ -199,6 +201,8 @@
"query_log_disabled": "Dnevnik poizvedb je onemogočen in ga je mogoče konfigurirati v <0>nastavitvah</0>",
"query_log_strict_search": "Za strogo iskanje uporabite dvojne narekovaje",
"query_log_retention_confirm": "Ali ste prepričani, da želite spremeniti zadrževanje dnevnika poizvedb? Če zmanjšate vrednost intervala, bodo nekateri podatki izgubljeni",
"anonymize_client_ip": "Anonimiziraj odjemalca IP",
"anonymize_client_ip_desc": "Ne shrani celotnega naslova IP odjemalca v dnevnikih in statistiki",
"dns_config": "Konfiguracija strežnika DNS",
"blocking_mode": "Način zaviranja",
"default": "Privzeto",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Odprite nastavitve usmerjevalnika. Ponavadi lahko do nje dostopate iz brskalnika prek URL-ja (npr. http://192.168.0.1/ ali http://192.168.1.1/). Morda boste morali vnesti geslo. Če se ne spomnite gesla, lahko pogosto ponastavite geslo s pritiskom na gumb na samem usmerjevalniku. Nekateri usmerjevalniki zahtevajo posebno aplikacijo, ki bi morala biti v tem primeru že nameščena na vašem računalniku/telefonu.",
"install_devices_router_list_2": "Poiščite nastavitve DHCP/DNS. Poiščite črke DNS poleg polja, ki dovoljuje dva ali tri naborov številk, pri čemer je vsaka razdeljena na štiri skupine z enim do tremi števili.",
"install_devices_router_list_3": "Tam vnesite svoje naslove strežnikov AdGuard Home.",
"install_devices_router_list_4": "Na nekaterih usmerjevalnikih ne morete nastaviti strežnika DNS po meri. V tem primeru bo morda pomagalo, če boste AdGuard Home postavili kot strežnik DHCP. V nasprotnem primeru poiščite priročnik, kako prilagoditi strežnike DNS za vaš določen model usmerjevalnika.",
"install_devices_windows_list_1": "Odprite 'Nadzorno ploščo' prek menija 'Začetek' ali 'Iskanja v sistemu Windows'.",
"install_devices_windows_list_2": "Pojdite v 'Omrežje' in 'Kategorija interneta' in nato v 'Omrežje' in 'Središče za skupno rabo'.",
"install_devices_windows_list_3": "Na levi strani zaslona poiščite 'Spremeni nastavitve kartice' in kliknite nanjo.",
@@ -356,8 +361,8 @@
"access_allowed_desc": "Seznam naslovov CIDR ali IP. Če je konfiguriran, bo AdGuard Home sprejel zahteve samo od teh teh IP naslovov.",
"access_disallowed_title": "Zavrnjeni odjemalci",
"access_disallowed_desc": "Seznam naslovov CIDR ali IP. Če je konfiguriran, bo AdGuard Home spustil zahteve iz teh IP naslovov.",
"access_blocked_title": "Zavirane domene",
"access_blocked_desc": "Tega ne zamenjujte s filtri. AdGuard Home bo v spustil poizvedbe DNS s temi domenamiv vprašanju poizvedbe.",
"access_blocked_title": "Nedovoljene domene",
"access_blocked_desc": "Tega ne zamenjujte s filtri. AdGuard Home bo v spustil poizvedbe DNS s temi domenami v vprašanju poizvedbe. Tu lahko določite natančna imena domen, nadomestne znake in pravila urlfilter, npr. 'primer.org', '*.primer.org' or '||primer.org^'.",
"access_settings_saved": "Nastavitve dostopa so uspešno shranjene",
"updates_checked": "Posodobitve so uspešno preverjene",
"updates_version_equal": "AdGuard Home je posodobljen",
@@ -385,6 +390,7 @@
"rewrite_confirm_delete": "Ali ste prepričani, da želite izbrisati prepisovanje DNS za \"{{key}}\"?",
"rewrite_desc": "Omogoča enostavno konfiguriranje odgovora DNS po meri za določeno ime domene.",
"rewrite_applied": "Uporabljeno Pravilo za prepisovanje",
"rewrite_hosts_applied": "Prepisano s pravilom gostiteljske datoteke",
"dns_rewrites": "Prepisovanja NDS",
"form_domain": "Vnesite domeno ali nadomestni znak",
"form_answer": "Vnesite IP naslov ali ime domene",
@@ -402,12 +408,12 @@
"unblock_all": "Omogoči vse",
"encryption_certificate_path": "Pot digitalnega potrdila",
"encryption_private_key_path": "Pot zasebnega ključa",
"encryption_certificates_source_path": "Nastavi pot datoteke digitalnega potrdila",
"encryption_certificates_source_content": "Prilepi vsebino digitalnega potrdila",
"encryption_certificates_source_path": "Nastavi pot datoteke digitalnih potrdil",
"encryption_certificates_source_content": "Prilepi vsebino digitalnih potrdil",
"encryption_key_source_path": "Nastavi datoteko zasebnega ključa",
"encryption_key_source_content": "Prilepi vsebino zasebnega ključa",
"stats_params": "Konfiguracija statistike",
"config_successfully_saved": "Konfiguracija je uspešno shranjena",
"stats_params": "Nastavitve statistike",
"config_successfully_saved": "Nastavitve so uspešno shranjene",
"interval_24_hour": "24 ur",
"interval_days": "{{count}} dan",
"interval_days_plural": "{{count}} dni",
@@ -415,7 +421,7 @@
"answer": "Odgovor",
"filter_added_successfully": "Seznam je bil uspešno dodan",
"filter_updated": "Filter je bil uspešno posodobljen",
"statistics_configuration": "Konfiguracija statistike",
"statistics_configuration": "Nastavitve statistike",
"statistics_retention": "Statistika zadrževanja",
"statistics_retention_desc": "Če zmanjšate vrednost intervala, bodo nekateri podatki izgubljeni",
"statistics_clear": " Počisti statistiko",
@@ -424,7 +430,7 @@
"statistics_cleared": "Statistika je bila uspešno počiščena",
"interval_hours": "{{count}} ur",
"interval_hours_plural": "{{count}} ur",
"filters_configuration": "Konfiguracija filtrov",
"filters_configuration": "Nastavitve filtrov",
"filters_enable": "Omogoči filtre",
"filters_interval": "Interval posodabljanja filtrov",
"disabled": "Onemogočeno",
@@ -432,8 +438,8 @@
"username_placeholder": "Vnesite uporabniško ime",
"password_label": "Geslo",
"password_placeholder": "Vnesite geslo",
"sign_in": "Prijava",
"sign_out": "Odjava",
"sign_in": "Vpis",
"sign_out": "Izpis",
"forgot_password": "Izgubljeno geslo?",
"forgot_password_desc": "Prosimo, sledite <0>tem korakom</0>, da ustvarite novogeslo za uporabniški računa.",
"location": "Lokacija",
@@ -441,7 +447,7 @@
"netname": "Ime omrežja",
"descr": "Opis",
"whois": "Whois",
"filtering_rules_learn_more": "<0>Več o tem</0>, o ustvarjanju lastnih Seznamov nedovoljenih gostiteljev.",
"filtering_rules_learn_more": "<0>Več o</0> ustvarjanju lastnih seznamov gostiteljev.",
"blocked_by_response": "Onemogočeno z CNAME ali IP v odgovoru",
"try_again": "Poskusi ponovno",
"domain_desc": "Vnesite ime domene ali nadomestni znak, ki ga želite prepisati.",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "prepiše odgovore za vse poddomene <0>example.org</0>.",
"disable_ipv6": "Onemogoči IPv6",
"disable_ipv6_desc": "Če je ta funkcija omogočena, bodo vse poizvedbe DNS za naslove IPv6 (vrste AAAA) izpadle.",
"fastest_addr": "Najhitrejši IP naslov",
"fastest_addr_desc": "Poišči vse strežnike DNS in vrni najhitrejši IP naslov med vsemi odgovori",
"autofix_warning_text": "Če kliknete 'Popravi', bo AdGuardHome konfiguriral vaš sistem za uporabo strežnika AdGuardHome DNS.",
"autofix_warning_list": "To bo izvedlo naslednja opravila: <0>Deaktiviraj sistemski DNSStubListener</0> <0>Nastavi naslov strežnika DNS na 127.0.0.1</0> <0>Zamenjaj cilj simbolične povezave /etc/resolv.conf with /run/systemd/resolve/resolv.conf</0> <0>Zaustavi DNSStubListener (znova naloži storitev systemd-resolved)",
"autofix_warning_result": "Kot rezultat, bo vse zahteve DNS iz vašega sistema privzeto obdelal AdGuard Home.",
@@ -479,5 +487,7 @@
"install_static_configure": "Zaznali smo, da je uporabljen dinamičen IP naslov — <0>{{ip}}</0>. Ali ga želite uporabiti kot svoj statičen naslov?",
"confirm_static_ip": "AdGuard Home bo konfiguriral {{ip}}, da bo postal vas statičen IP naslov. Ali želite nadaljevati?",
"list_updated": "{{count}} posodobljen seznam",
"list_updated_plural": "{{count}} posodobljenih seznamov"
"list_updated_plural": "{{count}} posodobljenih seznamov",
"dnssec_enable": "Omogoči DNSSEC",
"dnssec_enable_desc": "V odhodnih poizvedbah DNS nastavite zastavico DNSSEC in preverite rezultat (zahtevan je omogočen reševalnik DNSSEC)"
}

View File

@@ -140,7 +140,6 @@
"add_allowlist": "Dodaj listu dozvoljenih",
"cancel_btn": "Otkaži",
"enter_name_hint": "Unesite ime",
"enter_url_hint": "Unesite URL",
"check_updates_btn": "Proveri ažuriranja",
"new_blocklist": "Nova blok lista",
"new_allowlist": "Nova lista dozvoljenih",

View File

@@ -124,7 +124,6 @@
"filters_and_hosts_hint": "AdGuard tillämpar grundläggande annonsblockeringsregler och värdfiltersyntaxer",
"cancel_btn": "Avbryt",
"enter_name_hint": "Skriv in namn",
"enter_url_hint": "Skriv in URL",
"check_updates_btn": "Sök efter uppdateringar",
"custom_filter_rules": "Egna filterregler",
"custom_filter_rules_hint": "Skriv en regel per rad. Du kan använda antingen annonsblockeringsregler eller värdfilssyntax.",

View File

@@ -130,7 +130,6 @@
"filters_and_hosts_hint": "AdGuard Home เข้าใจกฎปิดกั้นโฆษณาพื้นฐานและโฮสต์ไฟล์ไวยากรณ์",
"cancel_btn": "ยกเลิก",
"enter_name_hint": "ป้อนชื่อ",
"enter_url_hint": "ป้อน URL",
"check_updates_btn": "ตรวจสอบการปรับปรุง",
"custom_filter_rules": "กฎการกรองที่กำหนดเอง",
"custom_filter_rules_hint": "ป้อนหนึ่งกฎในหนึ่งบรรทัด คุณสามารถใช้กฎปิดกั้นโฆษณาหรือโฮสต์ไฟล์ไวยากรณ์",

View File

@@ -2,6 +2,7 @@
"client_settings": "İstemci ayarları",
"example_upstream_reserved": "<0>Belirli alan adları için</0> DNS üst sunucusu tanımlayabilirsiniz.",
"upstream_parallel": "Tüm üst sunucuları eş zamanlı sorgulayarak çözümü hızlandırmak için paralel sorguları kullan",
"parallel_requests": "Paralel istekler",
"bootstrap_dns": "DNS Önyükleme sunucuları",
"bootstrap_dns_desc": "DNS Önyükleme sunucuları, seçtiğiniz üst sunucuların DoH/DoT çözücülerine ait ip adreslerinin çözülmesi için kullanılır.",
"check_dhcp_servers": "DHCP sunucularını yokla",
@@ -140,7 +141,7 @@
"add_allowlist": "İzin listesi ekle",
"cancel_btn": "İptal",
"enter_name_hint": "İsim girin",
"enter_url_hint": "URL'yi girin",
"enter_url_or_path_hint": "Bir URL ya da listenin tam yolunu girin",
"check_updates_btn": "Güncellemeleri denetle",
"new_blocklist": "Yeni engelleme listesi",
"new_allowlist": "Yeni izin listesi",
@@ -149,6 +150,7 @@
"enter_valid_blocklist": "Engelleme listesine geçerli bir URL girin.",
"enter_valid_allowlist": "İzin listesine geçerli bir URL girin.",
"form_error_url_format": "Geçersiz url biçim",
"form_error_url_or_path_format": "Geçersiz URL ya da listenin tam yolu",
"custom_filter_rules": "İsteğe bağlı filtreleme kuralları",
"custom_filter_rules_hint": "Her satıra bir kural girin. Reklama engelleme kuralı veya hosts dosyası söz dizimi kullanabilirsiniz.",
"examples_title": "Örnekler",
@@ -199,6 +201,8 @@
"query_log_disabled": "Sorgu günlüğü devre dışı bırakıldı ve <0>ayarlar</0>da yapılandırılabilir",
"query_log_strict_search": "Katı arama için çift tırnak işareti kullanın",
"query_log_retention_confirm": "Sorgu günlüğü saklama süresini değiştirmek istediğinize emin misiniz? Aralık değerini azaltırsanız, bazı veriler kaybolacaktır",
"anonymize_client_ip": "İstemci IP'sini anonimize et",
"anonymize_client_ip_desc": "Tam IP adresini günlüğe ve istatistiklere kaydetme",
"dns_config": "DNS sunucusu yapılandırması",
"blocking_mode": "Engelleme modu",
"default": "Varsayılan",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "Yönlendiricinizin ayarlarına girin. Genelde internet tarayıcınızdan bir URL vasıtasıyla erişebilirsiniz (http://192.168.0.1/ veya http://192.168.1.1/ gibi). Sizden şifre girmenizi isteyebilir. Hatırlamıyorsanız yönlendiricinizin arkasındaki 'reset' tuşuna basılı tutup fabrika ayarlarına sıfırlayabilirsiniz. Bazı yönlendiriciler belirli uygulamalarla çalışır, bu durumda bilgisayarınıza/telefonunuza kurulması gerekir.",
"install_devices_router_list_2": "DHCP/DNS ayarlarını bulun. DNS satırlarını arayın, genelde iki veya üç tanedir, üç rakam girilebilen dört ayrı grup içeren satırdır.",
"install_devices_router_list_3": "AdGuard Home sunucusunun adresini o kısma yazın.",
"install_devices_router_list_4": "Bazı yönlendirici tiplerinde özel bir DNS sunucusu ayarlayamazsınız. Bu durumda AdGuard Home'u bir DHCP sunucu olarak ayarlamanız yardımcı olabilir. Aksi halde, yönlendirici modeliniz için DNS sunucularını elle nasıl özelleştirebileceğinizi aramalısınız.",
"install_devices_windows_list_1": "Başlat menüsünden veya Windows aramasıyla Denetim Masası'na girin.",
"install_devices_windows_list_2": "Ağ ve Internet kategorisine girin, sonra Ağ ve Paylaşım Merkezi'ne girin.",
"install_devices_windows_list_3": "Sol taraftaki Bağdaştırıcı ayarlarını değiştir ayarını bulun ve ona tıklayın.",
@@ -385,6 +390,7 @@
"rewrite_confirm_delete": "\"{{key}}\" için DNS yeniden yazımını silmek istediğinize emin misiniz?",
"rewrite_desc": "Belirli bir alan adı için kolayca özel DNS yanıtı yapılandırmanıza olanak tanır.",
"rewrite_applied": "Uygulanan Yeniden Yazım kuralı",
"rewrite_hosts_applied": "Host dosyası kuralı tarafından yeniden yazıldı",
"dns_rewrites": "DNS yeniden yazımları",
"form_domain": "Alan adı girin",
"form_answer": "IP adresini veya alan adı girin",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "tüm <0>example.org</0> alt alanları için cevapları yeniden yaz.",
"disable_ipv6": "IPv6'yı Devre Dışı Bırak",
"disable_ipv6_desc": "Bu özelliği etkinleştirirseniz, IPv6 adresleri (AAAA tipi) için gönderilen tüm DNS istekleri cevapsız bırakılacaktır.",
"fastest_addr": "En hızlı IP adresi",
"fastest_addr_desc": "Tüm DNS sunucularını sorgulayın ve tüm yanıtlar arasından en hızlı IP adresini döndürün",
"autofix_warning_text": "\"Düzelt\" i tıklatırsanız, AdGuardHome sisteminizi AdGuardHome DNS sunucusunu kullanacak şekilde yapılandırır.",
"autofix_warning_list": "Bu görevleri gerçekleştirecektir: <0> sistemi DNSStubListener'ı devre dışı bırakma </0> <0> DNS sunucu adresini 127.0.0.1 olarak ayarlayın </0> <0> /etc/resolv.conf / / run / systemd sembolik bağlantı hedefini değiştirin /resolve/resolv.conf </0> <0> durdur DNSStubListener (sistemde yeniden çözülmüş hizmeti yeniden yükle) </0>",
"autofix_warning_result": "Sonuç olarak, sisteminizden gelen tüm DNS istekleri varsayılan olarak AdGuardHome tarafından işlenir.",
@@ -463,6 +471,7 @@
"host_whitelisted": "Ana makine beyaz listeye alındı",
"check_ip": "IP adresleri: {{ip}}",
"check_cname": "CNAME: {{cname}}",
"check_reason": "Sebep: {{reason}}",
"check_rule": "Kural: {{rule}}",
"check_service": "Hizmet adı: {{service}}",
"check_not_found": "Filtre listelerinizde bulunamadı",
@@ -478,5 +487,7 @@
"install_static_configure": "Dinamik bir IP adresi kullanıldığını tespit ettik - <0> {{ip}} </0>. Statik adresiniz olarak kullanmak ister misiniz?",
"confirm_static_ip": "AdGuard Home, {{ip}} adresini statik IP adresiniz olacak şekilde yapılandıracak. Devam etmek istiyor musunuz?",
"list_updated": "{{count}} liste güncellendi",
"list_updated_plural": "{{count}} liste güncellendi"
"list_updated_plural": "{{count}} liste güncellendi",
"dnssec_enable": "DNSSEC'i etkinleştir",
"dnssec_enable_desc": "DNSSEC'i giden DNS sorguları için etkinleştir ve sonucu kontrol et (DNSSEC-etkin sorgulama gerekli)"
}

View File

@@ -71,7 +71,7 @@
"disabled_protection": "Đã tắt bảo vệ",
"refresh_statics": "Làm mới thống kê",
"dns_query": "Truy vấn DNS",
"blocked_by": "Chặn bởi Bộ lọc",
"blocked_by": "<0>Chặn bởi Bộ lọc</0>",
"stats_malware_phishing": "Mã độc/lừa đảo đã chặn",
"stats_adult": "Website người lớn đã chặn",
"stats_query_domain": "Tên miền truy vấn nhiều",
@@ -129,7 +129,6 @@
"filters_and_hosts_hint": "AdGuard home hiểu các quy tắc chặn quảng cáo đơn giản và cú pháp file hosts",
"cancel_btn": "Huỷ",
"enter_name_hint": "Nhập tên",
"enter_url_hint": "Nhập URL",
"check_updates_btn": "Kiểm tra cập nhật",
"custom_filter_rules": "Quy tắc lọc tuỳ chỉnh",
"custom_filter_rules_hint": "Nhập mỗi quy tắc 1 dòng. Có thể sử dụng quy tắc chặn quảng cáo hoặc cú pháp file host",
@@ -180,6 +179,8 @@
"query_log_disabled": "Nhật ký truy vấn bị vô hiệu hóa và có thể được định cấu hình trong <0>cài đặt</ 0>",
"query_log_strict_search": "Sử dụng dấu ngoặc kép để tìm kiếm nghiêm ngặt",
"query_log_retention_confirm": "Bạn có chắc chắn muốn thay đổi lưu giữ nhật ký truy vấn? Nếu bạn giảm giá trị khoảng, một số dữ liệu sẽ bị mất",
"anonymize_client_ip": "Ẩn danh IP khách",
"anonymize_client_ip_desc": "Không lưu địa chỉ IP đầy đủ của khách hàng trong nhật ký và thống kê",
"dns_config": "Thiết lập máy chủ DNS",
"blocking_mode": "Chế độ chặn",
"nxdomain": "NXDOMAIN",
@@ -410,5 +411,7 @@
"whois": "Whois",
"filtering_rules_learn_more": "<0>Tìm hiểu thêm</0> về việc tạo danh sách chặn máy chủ của riêng bạn.",
"blocked_by_response": "Chặn bởi CNAME hoặc địa IP ở phản hồi",
"try_again": "Hãy thử lại"
"try_again": "Hãy thử lại",
"dnssec_enable": "Bật DNSSEC",
"dnssec_enable_desc": "Cắm mốc DNSSEC trong các truy vấn DNS sắp tới và kiểm tra kết quả (buộc phải có trình sửa lỗi hỗ trợ DNSSEC)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "客户端设置",
"example_upstream_reserved": "您可以<0>为特定域</0>指定上游 DNS",
"upstream_parallel": "通过同时查询所有上服务器使用并行查询加速解析",
"example_upstream_reserved": "您可以将上游DNS 服务器<0>指定为特定域</0>",
"upstream_parallel": "通过同时查询所有上服务器使用并行请求以加速解析",
"parallel_requests": "并行请求",
"bootstrap_dns": "Bootstrap DNS 服务器",
"bootstrap_dns_desc": "Bootstrap DNS 服务器用于解析您指定为上游的 DoH / DoT 解析器的 IP 地址。",
"check_dhcp_servers": "检查 DHCP 服务器",
@@ -16,7 +17,7 @@
"dhcp_found": "在当前网络中检测到 DHCP 服务器。如果启用内置的 DHCP 服务器可能不安全。",
"dhcp_leases": "DHCP 租约",
"dhcp_static_leases": "DHCP 静态租约",
"dhcp_leases_not_found": "未检测到 DHCP 租约",
"dhcp_leases_not_found": "未到 DHCP 租约",
"dhcp_config_saved": "已保存 DHCP 服务器配置",
"form_error_required": "必填字段",
"form_error_ip4_format": "无效的 IPv4 格式",
@@ -71,7 +72,7 @@
"disabled_protection": "保护已禁用",
"refresh_statics": "刷新状态",
"dns_query": "DNS查询",
"blocked_by": "已被过滤器拦截",
"blocked_by": "<0>已被过滤器拦截</0>",
"stats_malware_phishing": "被拦截的恶意/钓鱼网站",
"stats_adult": "被拦截的成人网站",
"stats_query_domain": "请求域名排行",
@@ -81,7 +82,7 @@
"no_domains_found": "未找到域名",
"requests_count": "请求数",
"top_blocked_domains": "被拦截域名排行",
"top_clients": "客户端排行",
"top_clients": "顶级客户端",
"no_clients_found": "未找到客户端",
"general_statistics": "概况统计",
"number_of_dns_query_days": "过去 {{count}} 天内 处理的DNS 查询总数",
@@ -140,7 +141,7 @@
"add_allowlist": "添加允许列表",
"cancel_btn": "取消",
"enter_name_hint": "输入名称",
"enter_url_hint": "输入 URL",
"enter_url_or_path_hint": "输入URL或列表的绝对路径",
"check_updates_btn": "检查更新",
"new_blocklist": "新封锁清单",
"new_allowlist": "新的允许清单",
@@ -148,7 +149,8 @@
"edit_allowlist": "编辑允许列表",
"enter_valid_blocklist": "输入有效的阻止列表URL",
"enter_valid_allowlist": "输入有效的允许列表URL",
"form_error_url_format": "无效的网址格式",
"form_error_url_format": "无效的URL格式",
"form_error_url_or_path_format": "无效的URL或列表的绝对路径",
"custom_filter_rules": "自定义过滤器规则",
"custom_filter_rules_hint": "请确保每行只输入一条规则。你可以输入符合 adblock 语法或 Hosts 语法的规则。",
"examples_title": "范例",
@@ -199,6 +201,8 @@
"query_log_disabled": "查询日志已禁用,在<0>这些设置</0>中能配置它们",
"query_log_strict_search": "使用双引号进行严谨搜索",
"query_log_retention_confirm": "您确定要更改查询记录保留时间吗? 如果您减少间隔时间的值, 某些数据可能会丢失。",
"anonymize_client_ip": "匿名化客户端IP",
"anonymize_client_ip_desc": "不要在日志和统计信息中保存客户端的完整IP地址",
"dns_config": "DNS服务设定",
"blocking_mode": "拦截模式",
"default": "默认",
@@ -216,7 +220,7 @@
"blocking_ipv6_desc": "拦截 AAAA 记录请求返回的 IP 地址",
"blocking_mode_default": "默认被Adblock规则拦截时以NXDOMAIN码响应被/etc/hosts规则拦截时返回规则中指定IP",
"blocking_mode_nxdomain": "NXDOMAIN以NXDOMAIN码响应",
"blocking_mode_null_ip": "无效IP以零IP地址地址响应(A记录 0.0.0.0AAAA记录 ::)",
"blocking_mode_null_ip": "IP以零IP地址响应(A记录 0.0.0.0AAAA记录 ::)",
"blocking_mode_custom_ip": "自定IP以手动设置的IP地址响应",
"upstream_dns_client_desc": "如果将此字段留空AdGuard Home 将使用在<0>DNS设置</0>中配置的服务器。",
"source_label": "源",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "打开您的路由器配置界面。通常情况下,您可以通过浏览器访问地址(如 http://192.168.0.1/ 或 http://192.168.1.1 )。打开后您可能需要输入密码以进入配置界面。如果您不记得密码,通常可以通过按下路由器上的重置按钮来重设密码。一些路由器可能需要通过特定的应用来进行这一操作,请确保您已经在计算机或手机上安装了相关应用。",
"install_devices_router_list_2": "找到路由器的 DHCP/DNS 设置页面。您会在 DNS 这一单词旁边找到两到三行允许输入的输入框,每一行输入框分为四组,每组允许输入一到三个数字。",
"install_devices_router_list_3": "请在此处输入您的 AdGuard Home 服务器地址。",
"install_devices_router_list_4": "在某些类型的路由器上无法设置自定义 DNS 服务器。在此情况下将 AdGuard Home 设置为 DHCP 服务器,可能会有所帮助。否则您应该查找如何根据特定路由器型号设置 DNS 服务器的使用手册。\n",
"install_devices_windows_list_1": "通过开始菜单或 Windows 搜索功能打开控制面板。",
"install_devices_windows_list_2": "点击进入 ”网络和 Internet“ 后,再次点击进入 “网络和共享中心”",
"install_devices_windows_list_3": "在窗口的左侧找到 ”更改适配器设置“ 并点击进入。",
@@ -356,8 +361,8 @@
"access_allowed_desc": "CIDR 或 IP 地址列表。如配置,则 AdGuard Home 仅会接受源自这些 IP 地址的请求。",
"access_disallowed_title": "不允许的客户端",
"access_disallowed_desc": "CIDR 或 IP 地址列表。如配置,则 AdGuard Home 会放弃源自这些 IP 地址的请求。",
"access_blocked_title": "拦截的域",
"access_blocked_desc": "不要与过滤器混淆。在查询问题时 AdGuard Home 会放弃源自这些域的 DNS 查询。",
"access_blocked_title": "拦截的域",
"access_blocked_desc": "不要将此功能与过滤器混淆。AdGuard Home 将在查询时删除具有这些域的 DNS 查询。在此可以明确指定域名、通配符wildcard和网址过滤器规则例如 'example.org'、'*.example.org' 或 '||example.org^'。",
"access_settings_saved": "访问设置保存成功",
"updates_checked": "检查更新成功",
"updates_version_equal": "AdGuard Home已经是最新版本",
@@ -384,7 +389,8 @@
"rewrite_not_found": "未找到 DNS 重写",
"rewrite_confirm_delete": "您确定要删除 \"{{key}}\" 的 DNS 重写?",
"rewrite_desc": "可以轻松地配置特定的域名的自定义 DNS 响应。",
"rewrite_applied": "已应用的重写规则",
"rewrite_applied": " 重定向规则已应用",
"rewrite_hosts_applied": "根据hosts文件规则已被重写",
"dns_rewrites": "DNS 重写",
"form_domain": "输入域",
"form_answer": "输入 IP 地址或域名",
@@ -441,7 +447,7 @@
"netname": "网络名称",
"descr": "描述",
"whois": "Whois",
"filtering_rules_learn_more": "<0>了解更多</0>关于如何创建自己的主机(hosts)拦截清单。",
"filtering_rules_learn_more": "<0>了解更多</0>关于创建自己的hosts清单。",
"blocked_by_response": "因响应的CNAME或IP被屏蔽",
"try_again": "重试",
"domain_desc": "输入您要重写的域名或通配符。",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "重写所有<0>example.org</0> 子域的响应。",
"disable_ipv6": "禁用 IPv6",
"disable_ipv6_desc": "启用后所有IPv6地址 (type AAAA) 的DNS查询都会被丢弃。",
"fastest_addr": "最快的 IP 地址",
"fastest_addr_desc": "查询所有DNS服务器并返回所有响应中最快的IP地址",
"autofix_warning_text": "若您单击“修复”AdGuardHome将会配置您的系统以使用AdGuardHome的DNS服务器",
"autofix_warning_list": "其将会进行如下工作:<0>停用系统DNSStubListener</0><0>设置DNS服务器地址为127.0.0.1</0><0>将/etc/resolv.conf的符号链接目标替换为/run/systemd/resolv/resolv.conf</0><0>停止DNSStubListener重新加载系统解析服务</0>",
"autofix_warning_result": "因此默认情况下所有来自系统的DNS请求都将由AdGuardHome处理。",
@@ -479,5 +487,7 @@
"install_static_configure": "我们检测到一个动态IP地址—<0>{{ip}}</0>被使用。您想把它作为您的静态地址吗?",
"confirm_static_ip": "AdGuard Home 将把{{ip}} 配置为您的静态IP地址。您想要继续吗",
"list_updated": "{{count}} 列表已更新",
"list_updated_plural": "{{count}} 条列表已更新"
"list_updated_plural": "{{count}} 条列表已更新",
"dnssec_enable": "启用DNSSEC",
"dnssec_enable_desc": "在发出DNS查询中设置DNSSEC标志并检查结果(需要启用DNSSEC的解析器)"
}

View File

@@ -1,7 +1,8 @@
{
"client_settings": "用戶端設定",
"example_upstream_reserved": "您可明確指定<0>用於特定的網域</0>之 DNS 上游",
"upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的查詢以加速解析",
"upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的請求以加速解析",
"parallel_requests": "並行的請求",
"bootstrap_dns": "自我啟動BootstrapDNS 伺服器",
"bootstrap_dns_desc": "自我啟動BootstrapDNS 伺服器被用於解析您明確指定作為上游的 DoH/DoT 解析器之 IP 位址。",
"check_dhcp_servers": "檢查動態主機設定協定DHCP伺服器",
@@ -108,7 +109,7 @@
"dns_blocklists": "DNS 封鎖清單",
"dns_allowlists": "DNS 允許清單",
"dns_blocklists_desc": "AdGuard Home 將封鎖與封鎖清單相符的網域。",
"dns_allowlists_desc": "來自 DNS 允許清單的網域將被允許,即使它們在任何的封鎖清單中。",
"dns_allowlists_desc": "即使來自 DNS 允許清單的網域在任何的封鎖清單中,它們將被允許。",
"custom_filtering_rules": "自訂的過濾規則",
"encryption_settings": "加密設定",
"dhcp_settings": "動態主機設定協定DHCP設定",
@@ -140,7 +141,7 @@
"add_allowlist": "增加允許清單",
"cancel_btn": "取消",
"enter_name_hint": "輸入名稱",
"enter_url_hint": "輸入網址",
"enter_url_or_path_hint": "輸入一個該清單之網址或絕對的路徑",
"check_updates_btn": "檢查更新",
"new_blocklist": "新的封鎖清單",
"new_allowlist": "新的允許清單",
@@ -149,12 +150,13 @@
"enter_valid_blocklist": "輸入一個到該封鎖清單之有效的網址。",
"enter_valid_allowlist": "輸入一個到該允許清單之有效的網址。",
"form_error_url_format": "無效的網址格式",
"form_error_url_or_path_format": "該清單之網址或絕對的路徑為無效的",
"custom_filter_rules": "自訂的過濾規則",
"custom_filter_rules_hint": "於一行上輸入一規則。您可使用廣告封鎖規則或主機檔案語法。",
"custom_filter_rules_hint": "於一行上輸入一規則。您可使用廣告封鎖規則或主機檔案語法。",
"examples_title": "範例",
"example_meaning_filter_block": "封鎖至 example.org 網域及其所有的子網域之存取",
"example_meaning_filter_whitelist": "解除封鎖至 example.org 網域及其所有的子網域之存取",
"example_meaning_host_block": "AdGuard Home 現在將對 example.org 網域返回 127.0.0.1 位址(但非其子網域)。",
"example_meaning_host_block": "AdGuard Home 現在將對 example.org 網域(但非其子網域)返回 127.0.0.1 位址。",
"example_comment": "! 看,一個註解",
"example_comment_meaning": "只是一個註解",
"example_comment_hash": "# 也是一個註解",
@@ -199,6 +201,8 @@
"query_log_disabled": "查詢記錄被禁用並可在<0>設定</0>中被配置",
"query_log_strict_search": "使用雙引號於嚴謹的搜尋",
"query_log_retention_confirm": "您確定您想要更改查詢記錄保留嗎?如果您減少該間隔值,某些資料將被丟失",
"anonymize_client_ip": "將用戶端 IP 匿名",
"anonymize_client_ip_desc": "不要在記錄和統計資料中儲存用戶端之完整的 IP 位址",
"dns_config": "DNS 伺服器配置",
"blocking_mode": "封鎖模式",
"default": "預設",
@@ -253,6 +257,7 @@
"install_devices_router_list_1": "開啟關於您的路由器之偏好設定。通常地,您可透過網址(如 http://192.168.0.1/ 或 http://192.168.1.1/)從您的瀏覽器中存取它。您可能被要求輸入該密碼。如果您不記得它,您經常可透過按壓於該路由器本身上的按鈕來重置密碼。某些路由器需要特定的應用程式,既然如此其應已被安裝於您的電腦/手機上。",
"install_devices_router_list_2": "找到 DHCP/DNS 設定。尋找緊鄰著允許兩組或三組數字集的欄位之 DNS 字母,每組被拆成四個含有一至三個數字的群集。",
"install_devices_router_list_3": "在那裡輸入您的 AdGuard Home 伺服器位址。",
"install_devices_router_list_4": "您無法於某些類型的路由器上設定自訂的 DNS 伺服器。在這種情況下,如果您設置 AdGuard Home 作為 DHCP 伺服器,其可能有所幫助。否則,您應搜尋有關如何為您的特定路由器型號自訂 DNS 伺服器之用法說明。",
"install_devices_windows_list_1": "通過開始功能表或 Windows 搜尋,開啟控制台。",
"install_devices_windows_list_2": "去網路和網際網路類別,然後去網路和共用中心。",
"install_devices_windows_list_3": "於畫面之左側上找到變更介面卡設定並於它上點擊。",
@@ -353,11 +358,11 @@
"access_title": "存取設定",
"access_desc": "於此您可配置用於 AdGuard Home DNS 伺服器之存取規則。",
"access_allowed_title": "已允許的用戶端",
"access_allowed_desc": "無類別網域間路由CIDR或 IP 位址之清單。如果被配置AdGuard Home 將僅從這些 IP 位址中接受請求。",
"access_allowed_desc": "無類別網域間路由CIDR或 IP 位址之清單。如果被配置AdGuard Home 將接受僅來自這些 IP 位址請求。",
"access_disallowed_title": "不允許的用戶端",
"access_disallowed_desc": "無類別網域間路由CIDR或 IP 位址之清單。如果被配置AdGuard Home 將這些 IP 位址中排除請求。",
"access_blocked_title": "已封鎖的網域",
"access_blocked_desc": "不要把這個和過濾器混淆。AdGuard Home 將從查詢的詢問中排除有這些網域的 DNS 查詢。",
"access_disallowed_desc": "無類別網域間路由CIDR或 IP 位址之清單。如果被配置AdGuard Home 將排除來自這些 IP 位址請求。",
"access_blocked_title": "不允許的網域",
"access_blocked_desc": "不要把這個和過濾器混淆。AdGuard Home 將從查詢的詢問中排除有這些網域的 DNS 查詢。您可於此明確指定確切的域名、萬用字元wildcard和網址過濾器的規則例如'example.org'、'*.example.org' 或 '||example.org^'。",
"access_settings_saved": "存取設定被成功地儲存",
"updates_checked": "更新被成功地檢查",
"updates_version_equal": "AdGuard Home 為最新的",
@@ -384,7 +389,8 @@
"rewrite_not_found": "無已發現之 DNS 改寫",
"rewrite_confirm_delete": "您確定您想要刪除對於 \"{{key}}\" 之 DNS 改寫嗎?",
"rewrite_desc": "允許輕易地配置自訂的 DNS 回應供特定的域名。",
"rewrite_applied": "已套用的改寫規則",
"rewrite_applied": "改寫規則被套用",
"rewrite_hosts_applied": "被該主機檔案規則改寫",
"dns_rewrites": "DNS 改寫",
"form_domain": "輸入域名或萬用字元wildcard",
"form_answer": "輸入 IP 位址或域名",
@@ -441,7 +447,7 @@
"netname": "網路名稱",
"descr": "說明",
"whois": "Whois",
"filtering_rules_learn_more": "<0>了解更多</0>有關創建您自己的主機hosts封鎖清單。",
"filtering_rules_learn_more": "<0>了解更多</0>有關創建您自己的主機hosts清單。",
"blocked_by_response": "被正規名稱CNAME或 IP 封鎖作為回應",
"try_again": "再次嘗試",
"domain_desc": "輸入您想要被改寫的域名或萬用字元wildcard。",
@@ -449,6 +455,8 @@
"example_rewrite_wildcard": "對於所有的 <0>example.org</0> 子網域改寫回應。",
"disable_ipv6": "禁用 IPv6",
"disable_ipv6_desc": "如果此功能被啟用,所有對於 IPv6 位址(類型 AAAA的 DNS 查詢將被丟棄。",
"fastest_addr": "最快的 IP 位址",
"fastest_addr_desc": "查詢所有的 DNS 伺服器並返回在所有的回應之中最快的 IP 位址",
"autofix_warning_text": "如果您點擊\"修復\"AdGuard Home 將配置您的系統使用 AdGuard Home DNS 伺服器。",
"autofix_warning_list": "它將執行這些任務:<0>撤銷系統 DNSStubListener</0> <0>設定 DNS 伺服器位址為 127.0.0.1</0> <0>用 /run/systemd/resolve/resolv.conf 取代 /etc/resolv.conf 的符號連結目標</0> <0>停止 DNSStubListener重新載入 systemd 已解析的服務)</0>",
"autofix_warning_result": "因此,預設下,來自您的系統之所有的 DNS 請求將被 AdGuard Home 處理。",
@@ -479,5 +487,7 @@
"install_static_configure": "我們已偵測到一組動態 IP 位址被使用 — <0>{{ip}}</0>。您想要使用它作為您的靜態位址嗎?",
"confirm_static_ip": "AdGuard Home 將配置 {{ip}} 為您的靜態 IP 位址。您想要繼續嗎?",
"list_updated": "{{count}} 清單被更新",
"list_updated_plural": "{{count}} 清單被更新"
"list_updated_plural": "{{count}} 清單被更新",
"dnssec_enable": "啟用網域名稱系統安全性擴充功能DNSSEC",
"dnssec_enable_desc": "在發出的 DNS 查詢中設定 DNSSEC 標記並檢查該結果(已啟用 DNSSEC 的解析器是必須的)"
}

View File

@@ -1,9 +0,0 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from '../components/App';
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});

View File

@@ -0,0 +1,131 @@
import { getIpMatchListStatus } from '../helpers/helpers';
import { IP_MATCH_LIST_STATUS } from '../helpers/constants';
describe('getIpMatchListStatus', () => {
describe('IPv4', () => {
test('should return EXACT on find the exact ip match', () => {
const list = `127.0.0.2
2001:db8:11a3:9d7:0:0:0:0
192.168.0.1/8
127.0.0.1
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
});
test('should return CIDR on find the cidr match', () => {
const list = `127.0.0.2
2001:db8:11a3:9d7:0:0:0:0
192.168.0.1/8
127.0.0.0/24
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
test('should return NOT_FOUND if the ip is not in the list', () => {
const list = `127.0.0.1
2001:db8:11a3:9d7:0:0:0:0
192.168.0.1/8
127.0.0.2
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.4', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
test('should return the first EXACT or CIDR match in the list', () => {
const list1 = `2001:db8:11a3:9d7:0:0:0:0
127.0.0.1
127.0.0.8/24
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list1))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
const list2 = `2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.0/24
127.0.0.1
127.0.0.8/24
127.0.0.3`;
expect(getIpMatchListStatus('127.0.0.1', list2))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
});
describe('IPv6', () => {
test('should return EXACT on find the exact ip match', () => {
const list = `127.0.0.0
2001:db8:11a3:9d7:0:0:0:0
2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
127.0.0.1`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
});
test('should return EXACT on find the exact ip match of short and long notation', () => {
const list = `127.0.0.0
192.168.0.1/8
2001:db8::
127.0.0.2`;
expect(getIpMatchListStatus('2001:db8:0:0:0:0:0:0', list))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
});
test('should return CIDR on find the cidr match', () => {
const list1 = `2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.1
127.0.0.2`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list1))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
const list2 = `2001:0db8::/16
127.0.0.0
2001:db8:11a3:9d7:0:0:0:0
2001:db8::
2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
127.0.0.1`;
expect(getIpMatchListStatus('2001:db1::', list2))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
test('should return NOT_FOUND if the ip is not in the list', () => {
const list = `2001:db8:11a3:9d7:0:0:0:0
2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.1
127.0.0.2`;
expect(getIpMatchListStatus('::', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
test('should return the first EXACT or CIDR match in the list', () => {
const list1 = `2001:db8:11a3:9d7:0:0:0:0
2001:0db8:11a3:09d7:0000:0000:0000:0000/64
127.0.0.3`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list1))
.toEqual(IP_MATCH_LIST_STATUS.EXACT);
const list2 = `2001:0db8:11a3:09d7:0000:0000:0000:0000/64
2001:db8:11a3:9d7:0:0:0:0
127.0.0.3`;
expect(getIpMatchListStatus('2001:db8:11a3:9d7:0:0:0:0', list2))
.toEqual(IP_MATCH_LIST_STATUS.CIDR);
});
});
describe('Empty list or IP', () => {
test('should return NOT_FOUND on empty ip', () => {
const list = `127.0.0.0
2001:db8:11a3:9d7:0:0:0:0
2001:db8:11a3:9d7:ffff:ffff:ffff:ffff
127.0.0.1`;
expect(getIpMatchListStatus('', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
test('should return NOT_FOUND on empty list', () => {
const list = '';
expect(getIpMatchListStatus('127.0.0.1', list))
.toEqual(IP_MATCH_LIST_STATUS.NOT_FOUND);
});
});
});

View File

@@ -1,10 +1,10 @@
import { createAction } from 'redux-actions';
import { t } from 'i18next';
import i18next from 'i18next';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { normalizeTextarea } from '../helpers/helpers';
import { ACTION } from '../helpers/constants';
import { addErrorToast, addSuccessToast } from './toasts';
export const getAccessListRequest = createAction('GET_ACCESS_LIST_REQUEST');
export const getAccessListFailure = createAction('GET_ACCESS_LIST_FAILURE');
@@ -25,7 +25,7 @@ export const setAccessListRequest = createAction('SET_ACCESS_LIST_REQUEST');
export const setAccessListFailure = createAction('SET_ACCESS_LIST_FAILURE');
export const setAccessListSuccess = createAction('SET_ACCESS_LIST_SUCCESS');
export const setAccessList = config => async (dispatch) => {
export const setAccessList = (config) => async (dispatch) => {
dispatch(setAccessListRequest());
try {
const { allowed_clients, disallowed_clients, blocked_hosts } = config;
@@ -58,7 +58,7 @@ export const toggleClientBlock = (type, ip) => async (dispatch) => {
let updatedDisallowedClients = disallowed_clients || [];
if (type === ACTION.unblock && updatedDisallowedClients.includes(ip)) {
updatedDisallowedClients = updatedDisallowedClients.filter(client => client !== ip);
updatedDisallowedClients = updatedDisallowedClients.filter((client) => client !== ip);
} else if (type === ACTION.block && !updatedDisallowedClients.includes(ip)) {
updatedDisallowedClients.push(ip);
}
@@ -73,9 +73,9 @@ export const toggleClientBlock = (type, ip) => async (dispatch) => {
dispatch(toggleClientBlockSuccess(values));
if (type === ACTION.unblock) {
dispatch(addSuccessToast(t('client_unblocked', { ip })));
dispatch(addSuccessToast(i18next.t('client_unblocked', { ip })));
} else if (type === ACTION.block) {
dispatch(addSuccessToast(t('client_blocked', { ip })));
dispatch(addSuccessToast(i18next.t('client_blocked', { ip })));
}
} catch (error) {
dispatch(addErrorToast({ error }));

View File

@@ -1,7 +1,8 @@
import { createAction } from 'redux-actions';
import { t } from 'i18next';
import i18next from 'i18next';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast, getClients } from './index';
import { getClients } from './index';
import { addErrorToast, addSuccessToast } from './toasts';
export const toggleClientModal = createAction('TOGGLE_CLIENT_MODAL');
@@ -9,13 +10,13 @@ export const addClientRequest = createAction('ADD_CLIENT_REQUEST');
export const addClientFailure = createAction('ADD_CLIENT_FAILURE');
export const addClientSuccess = createAction('ADD_CLIENT_SUCCESS');
export const addClient = config => async (dispatch) => {
export const addClient = (config) => async (dispatch) => {
dispatch(addClientRequest());
try {
await apiClient.addClient(config);
dispatch(addClientSuccess());
dispatch(toggleClientModal());
dispatch(addSuccessToast(t('client_added', { key: config.name })));
dispatch(addSuccessToast(i18next.t('client_added', { key: config.name })));
dispatch(getClients());
} catch (error) {
dispatch(addErrorToast({ error }));
@@ -27,12 +28,12 @@ export const deleteClientRequest = createAction('DELETE_CLIENT_REQUEST');
export const deleteClientFailure = createAction('DELETE_CLIENT_FAILURE');
export const deleteClientSuccess = createAction('DELETE_CLIENT_SUCCESS');
export const deleteClient = config => async (dispatch) => {
export const deleteClient = (config) => async (dispatch) => {
dispatch(deleteClientRequest());
try {
await apiClient.deleteClient(config);
dispatch(deleteClientSuccess());
dispatch(addSuccessToast(t('client_deleted', { key: config.name })));
dispatch(addSuccessToast(i18next.t('client_deleted', { key: config.name })));
dispatch(getClients());
} catch (error) {
dispatch(addErrorToast({ error }));
@@ -52,7 +53,7 @@ export const updateClient = (config, name) => async (dispatch) => {
await apiClient.updateClient(data);
dispatch(updateClientSuccess());
dispatch(toggleClientModal());
dispatch(addSuccessToast(t('client_updated', { key: name })));
dispatch(addSuccessToast(i18next.t('client_updated', { key: name })));
dispatch(getClients());
} catch (error) {
dispatch(addErrorToast({ error }));

View File

@@ -1,7 +1,8 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { normalizeTextarea } from '../helpers/helpers';
import { addErrorToast, addSuccessToast } from './toasts';
export const getDnsConfigRequest = createAction('GET_DNS_CONFIG_REQUEST');
export const getDnsConfigFailure = createAction('GET_DNS_CONFIG_FAILURE');
@@ -22,11 +23,29 @@ export const setDnsConfigRequest = createAction('SET_DNS_CONFIG_REQUEST');
export const setDnsConfigFailure = createAction('SET_DNS_CONFIG_FAILURE');
export const setDnsConfigSuccess = createAction('SET_DNS_CONFIG_SUCCESS');
export const setDnsConfig = config => async (dispatch) => {
export const setDnsConfig = (config) => async (dispatch) => {
dispatch(setDnsConfigRequest());
try {
await apiClient.setDnsConfig(config);
dispatch(addSuccessToast('config_successfully_saved'));
const data = { ...config };
let hasDnsSettings = false;
if (Object.prototype.hasOwnProperty.call(data, 'bootstrap_dns')) {
data.bootstrap_dns = normalizeTextarea(config.bootstrap_dns);
hasDnsSettings = true;
}
if (Object.prototype.hasOwnProperty.call(data, 'upstream_dns')) {
data.upstream_dns = normalizeTextarea(config.upstream_dns);
hasDnsSettings = true;
}
await apiClient.setDnsConfig(data);
if (hasDnsSettings) {
dispatch(addSuccessToast('updated_upstream_dns_toast'));
} else {
dispatch(addSuccessToast('config_successfully_saved'));
}
dispatch(setDnsConfigSuccess(config));
} catch (error) {
dispatch(addErrorToast({ error }));

View File

@@ -1,7 +1,7 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { redirectToCurrentProtocol } from '../helpers/helpers';
import { addErrorToast, addSuccessToast } from './toasts';
export const getTlsStatusRequest = createAction('GET_TLS_STATUS_REQUEST');
export const getTlsStatusFailure = createAction('GET_TLS_STATUS_FAILURE');
@@ -25,7 +25,7 @@ export const setTlsConfigRequest = createAction('SET_TLS_CONFIG_REQUEST');
export const setTlsConfigFailure = createAction('SET_TLS_CONFIG_FAILURE');
export const setTlsConfigSuccess = createAction('SET_TLS_CONFIG_SUCCESS');
export const setTlsConfig = config => async (dispatch, getState) => {
export const setTlsConfig = (config) => async (dispatch, getState) => {
dispatch(setTlsConfigRequest());
try {
const { httpPort } = getState().dashboard;
@@ -51,7 +51,7 @@ export const validateTlsConfigRequest = createAction('VALIDATE_TLS_CONFIG_REQUES
export const validateTlsConfigFailure = createAction('VALIDATE_TLS_CONFIG_FAILURE');
export const validateTlsConfigSuccess = createAction('VALIDATE_TLS_CONFIG_SUCCESS');
export const validateTlsConfig = config => async (dispatch) => {
export const validateTlsConfig = (config) => async (dispatch) => {
dispatch(validateTlsConfigRequest());
try {
const values = { ...config };

View File

@@ -1,10 +1,10 @@
import { createAction } from 'redux-actions';
import { showLoading, hideLoading } from 'react-redux-loading-bar';
import { t } from 'i18next';
import i18next from 'i18next';
import { normalizeFilteringStatus, normalizeRulesTextarea } from '../helpers/helpers';
import { addErrorToast, addSuccessToast } from './index';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './toasts';
export const toggleFilteringModal = createAction('FILTERING_MODAL_TOGGLE');
export const handleRulesChange = createAction('HANDLE_RULES_CHANGE');
@@ -28,7 +28,7 @@ export const setRulesRequest = createAction('SET_RULES_REQUEST');
export const setRulesFailure = createAction('SET_RULES_FAILURE');
export const setRulesSuccess = createAction('SET_RULES_SUCCESS');
export const setRules = rules => async (dispatch) => {
export const setRules = (rules) => async (dispatch) => {
dispatch(setRulesRequest());
try {
const normalizedRules = normalizeRulesTextarea(rules);
@@ -113,7 +113,7 @@ export const refreshFiltersRequest = createAction('FILTERING_REFRESH_REQUEST');
export const refreshFiltersFailure = createAction('FILTERING_REFRESH_FAILURE');
export const refreshFiltersSuccess = createAction('FILTERING_REFRESH_SUCCESS');
export const refreshFilters = config => async (dispatch) => {
export const refreshFilters = (config) => async (dispatch) => {
dispatch(refreshFiltersRequest());
dispatch(showLoading());
try {
@@ -122,7 +122,7 @@ export const refreshFilters = config => async (dispatch) => {
dispatch(refreshFiltersSuccess());
if (updated > 0) {
dispatch(addSuccessToast(t('list_updated', { count: updated })));
dispatch(addSuccessToast(i18next.t('list_updated', { count: updated })));
} else {
dispatch(addSuccessToast('all_lists_up_to_date_toast'));
}
@@ -140,7 +140,7 @@ export const setFiltersConfigRequest = createAction('SET_FILTERS_CONFIG_REQUEST'
export const setFiltersConfigFailure = createAction('SET_FILTERS_CONFIG_FAILURE');
export const setFiltersConfigSuccess = createAction('SET_FILTERS_CONFIG_SUCCESS');
export const setFiltersConfig = config => async (dispatch, getState) => {
export const setFiltersConfig = (config) => async (dispatch, getState) => {
dispatch(setFiltersConfigRequest());
try {
const { enabled } = config;
@@ -164,11 +164,17 @@ export const checkHostRequest = createAction('CHECK_HOST_REQUEST');
export const checkHostFailure = createAction('CHECK_HOST_FAILURE');
export const checkHostSuccess = createAction('CHECK_HOST_SUCCESS');
export const checkHost = host => async (dispatch) => {
/**
*
* @param {object} host
* @param {string} host.name
* @returns {undefined}
*/
export const checkHost = (host) => async (dispatch) => {
dispatch(checkHostRequest());
try {
const data = await apiClient.checkHost(host);
const [hostname] = Object.values(host);
const { name: hostname } = host;
dispatch(checkHostSuccess({
hostname,

View File

@@ -1,16 +1,12 @@
import { createAction } from 'redux-actions';
import { t } from 'i18next';
import i18next from 'i18next';
import axios from 'axios';
import { normalizeTextarea, sortClients, isVersionGreater } from '../helpers/helpers';
import { SETTINGS_NAMES, CHECK_TIMEOUT } from '../helpers/constants';
import { isVersionGreater, normalizeTextarea, sortClients } from '../helpers/helpers';
import { CHECK_TIMEOUT, SETTINGS_NAMES } from '../helpers/constants';
import { getTlsStatus } from './encryption';
import apiClient from '../api/Api';
export const addErrorToast = createAction('ADD_ERROR_TOAST');
export const addSuccessToast = createAction('ADD_SUCCESS_TOAST');
export const addNoticeToast = createAction('ADD_NOTICE_TOAST');
export const removeToast = createAction('REMOVE_TOAST');
import { addErrorToast, addNoticeToast, addSuccessToast } from './toasts';
export const toggleSettingStatus = createAction('SETTING_STATUS_TOGGLE');
export const showSettingsFailure = createAction('SETTINGS_FAILURE_SHOW');
@@ -62,7 +58,7 @@ export const initSettingsRequest = createAction('SETTINGS_INIT_REQUEST');
export const initSettingsFailure = createAction('SETTINGS_INIT_FAILURE');
export const initSettingsSuccess = createAction('SETTINGS_INIT_SUCCESS');
export const initSettings = settingsList => async (dispatch) => {
export const initSettings = (settingsList) => async (dispatch) => {
dispatch(initSettingsRequest());
try {
const safebrowsingStatus = await apiClient.getSafebrowsingStatus();
@@ -89,7 +85,7 @@ export const toggleProtectionRequest = createAction('TOGGLE_PROTECTION_REQUEST')
export const toggleProtectionFailure = createAction('TOGGLE_PROTECTION_FAILURE');
export const toggleProtectionSuccess = createAction('TOGGLE_PROTECTION_SUCCESS');
export const toggleProtection = status => async (dispatch) => {
export const toggleProtection = (status) => async (dispatch) => {
dispatch(toggleProtectionRequest());
try {
const successMessage = status ? 'disabled_protection' : 'enabled_protection';
@@ -139,7 +135,7 @@ const checkStatus = async (handleRequestSuccess, handleRequestError, attempts =
handleRequestError();
}
const rmTimeout = t => t && clearTimeout(t);
const rmTimeout = (t) => t && clearTimeout(t);
try {
const response = await axios.get('control/status');
@@ -244,6 +240,7 @@ export const getDnsStatus = () => async (dispatch) => {
dispatch(dnsStatusFailure());
window.location.reload(true);
};
const handleRequestSuccess = (response) => {
const dnsStatus = response.data;
const { running } = dnsStatus;
@@ -265,47 +262,11 @@ export const getDnsStatus = () => async (dispatch) => {
}
};
export const getDnsSettingsRequest = createAction('GET_DNS_SETTINGS_REQUEST');
export const getDnsSettingsFailure = createAction('GET_DNS_SETTINGS_FAILURE');
export const getDnsSettingsSuccess = createAction('GET_DNS_SETTINGS_SUCCESS');
export const getDnsSettings = () => async (dispatch) => {
dispatch(getDnsSettingsRequest());
try {
const dnsStatus = await apiClient.getGlobalStatus();
dispatch(getDnsSettingsSuccess(dnsStatus));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(getDnsSettingsFailure());
}
};
export const handleUpstreamChange = createAction('HANDLE_UPSTREAM_CHANGE');
export const setUpstreamRequest = createAction('SET_UPSTREAM_REQUEST');
export const setUpstreamFailure = createAction('SET_UPSTREAM_FAILURE');
export const setUpstreamSuccess = createAction('SET_UPSTREAM_SUCCESS');
export const setUpstream = config => async (dispatch) => {
dispatch(setUpstreamRequest());
try {
const values = { ...config };
values.bootstrap_dns = normalizeTextarea(values.bootstrap_dns);
values.upstream_dns = normalizeTextarea(values.upstream_dns);
await apiClient.setUpstream(values);
dispatch(addSuccessToast('updated_upstream_dns_toast'));
dispatch(setUpstreamSuccess(config));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(setUpstreamFailure());
}
};
export const testUpstreamRequest = createAction('TEST_UPSTREAM_REQUEST');
export const testUpstreamFailure = createAction('TEST_UPSTREAM_FAILURE');
export const testUpstreamSuccess = createAction('TEST_UPSTREAM_SUCCESS');
export const testUpstream = config => async (dispatch) => {
export const testUpstream = (config) => async (dispatch) => {
dispatch(testUpstreamRequest());
try {
const values = { ...config };
@@ -316,12 +277,12 @@ export const testUpstream = config => async (dispatch) => {
const testMessages = Object.keys(upstreamResponse).map((key) => {
const message = upstreamResponse[key];
if (message !== 'OK') {
dispatch(addErrorToast({ error: t('dns_test_not_ok_toast', { key }) }));
dispatch(addErrorToast({ error: i18next.t('dns_test_not_ok_toast', { key }) }));
}
return message;
});
if (testMessages.every(message => message === 'OK')) {
if (testMessages.every((message) => message === 'OK')) {
dispatch(addSuccessToast('dns_test_ok_toast'));
}
@@ -336,7 +297,7 @@ export const changeLanguageRequest = createAction('CHANGE_LANGUAGE_REQUEST');
export const changeLanguageFailure = createAction('CHANGE_LANGUAGE_FAILURE');
export const changeLanguageSuccess = createAction('CHANGE_LANGUAGE_SUCCESS');
export const changeLanguage = lang => async (dispatch) => {
export const changeLanguage = (lang) => async (dispatch) => {
dispatch(changeLanguageRequest());
try {
await apiClient.changeLanguage(lang);
@@ -396,7 +357,7 @@ export const findActiveDhcpRequest = createAction('FIND_ACTIVE_DHCP_REQUEST');
export const findActiveDhcpSuccess = createAction('FIND_ACTIVE_DHCP_SUCCESS');
export const findActiveDhcpFailure = createAction('FIND_ACTIVE_DHCP_FAILURE');
export const findActiveDhcp = name => async (dispatch) => {
export const findActiveDhcp = (name) => async (dispatch) => {
dispatch(findActiveDhcpRequest());
try {
const activeDhcp = await apiClient.findActiveDhcp(name);
@@ -411,7 +372,7 @@ export const setDhcpConfigRequest = createAction('SET_DHCP_CONFIG_REQUEST');
export const setDhcpConfigSuccess = createAction('SET_DHCP_CONFIG_SUCCESS');
export const setDhcpConfigFailure = createAction('SET_DHCP_CONFIG_FAILURE');
export const setDhcpConfig = values => async (dispatch, getState) => {
export const setDhcpConfig = (values) => async (dispatch, getState) => {
const { config } = getState().dhcp;
const updatedConfig = { ...config, ...values };
dispatch(setDhcpConfigRequest());
@@ -430,7 +391,7 @@ export const toggleDhcpRequest = createAction('TOGGLE_DHCP_REQUEST');
export const toggleDhcpFailure = createAction('TOGGLE_DHCP_FAILURE');
export const toggleDhcpSuccess = createAction('TOGGLE_DHCP_SUCCESS');
export const toggleDhcp = values => async (dispatch) => {
export const toggleDhcp = (values) => async (dispatch) => {
dispatch(toggleDhcpRequest());
let config = { ...values, enabled: false };
let successMessage = 'disabled_dhcp';
@@ -473,13 +434,13 @@ export const addStaticLeaseRequest = createAction('ADD_STATIC_LEASE_REQUEST');
export const addStaticLeaseFailure = createAction('ADD_STATIC_LEASE_FAILURE');
export const addStaticLeaseSuccess = createAction('ADD_STATIC_LEASE_SUCCESS');
export const addStaticLease = config => async (dispatch) => {
export const addStaticLease = (config) => async (dispatch) => {
dispatch(addStaticLeaseRequest());
try {
const name = config.hostname || config.ip;
await apiClient.addStaticLease(config);
dispatch(addStaticLeaseSuccess(config));
dispatch(addSuccessToast(t('dhcp_lease_added', { key: name })));
dispatch(addSuccessToast(i18next.t('dhcp_lease_added', { key: name })));
dispatch(toggleLeaseModal());
} catch (error) {
dispatch(addErrorToast({ error }));
@@ -491,15 +452,17 @@ export const removeStaticLeaseRequest = createAction('REMOVE_STATIC_LEASE_REQUES
export const removeStaticLeaseFailure = createAction('REMOVE_STATIC_LEASE_FAILURE');
export const removeStaticLeaseSuccess = createAction('REMOVE_STATIC_LEASE_SUCCESS');
export const removeStaticLease = config => async (dispatch) => {
export const removeStaticLease = (config) => async (dispatch) => {
dispatch(removeStaticLeaseRequest());
try {
const name = config.hostname || config.ip;
await apiClient.removeStaticLease(config);
dispatch(removeStaticLeaseSuccess(config));
dispatch(addSuccessToast(t('dhcp_lease_deleted', { key: name })));
dispatch(addSuccessToast(i18next.t('dhcp_lease_deleted', { key: name })));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(removeStaticLeaseFailure());
}
};
export const removeToast = createAction('REMOVE_TOAST');

View File

@@ -1,6 +1,6 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { addErrorToast, addSuccessToast } from './toasts';
export const nextStep = createAction('NEXT_STEP');
export const prevStep = createAction('PREV_STEP');
@@ -24,7 +24,7 @@ export const setAllSettingsRequest = createAction('SET_ALL_SETTINGS_REQUEST');
export const setAllSettingsFailure = createAction('SET_ALL_SETTINGS_FAILURE');
export const setAllSettingsSuccess = createAction('SET_ALL_SETTINGS_SUCCESS');
export const setAllSettings = values => async (dispatch) => {
export const setAllSettings = (values) => async (dispatch) => {
dispatch(setAllSettingsRequest());
try {
const {
@@ -47,7 +47,7 @@ export const checkConfigRequest = createAction('CHECK_CONFIG_REQUEST');
export const checkConfigFailure = createAction('CHECK_CONFIG_FAILURE');
export const checkConfigSuccess = createAction('CHECK_CONFIG_SUCCESS');
export const checkConfig = values => async (dispatch) => {
export const checkConfig = (values) => async (dispatch) => {
dispatch(checkConfigRequest());
try {
const check = await apiClient.checkConfig(values);

View File

@@ -1,13 +1,13 @@
import { createAction } from 'redux-actions';
import { addErrorToast } from './index';
import apiClient from '../api/Api';
import { addErrorToast } from './toasts';
export const processLoginRequest = createAction('PROCESS_LOGIN_REQUEST');
export const processLoginFailure = createAction('PROCESS_LOGIN_FAILURE');
export const processLoginSuccess = createAction('PROCESS_LOGIN_SUCCESS');
export const processLogin = values => async (dispatch) => {
export const processLogin = (values) => async (dispatch) => {
dispatch(processLoginRequest());
try {
await apiClient.login(values);

View File

@@ -1,9 +1,9 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { normalizeLogs, getParamsForClientsSearch, addClientInfo } from '../helpers/helpers';
import { TABLE_DEFAULT_PAGE_SIZE } from '../helpers/constants';
import { addErrorToast, addSuccessToast } from './toasts';
const getLogsWithParams = async (config) => {
const { older_than, filter, ...values } = config;
@@ -27,9 +27,9 @@ const checkFilteredLogs = async (data, filter, dispatch, total) => {
const { logs, oldest } = data;
const totalData = total || { logs };
const needToGetAdditionalLogs = (logs.length < TABLE_DEFAULT_PAGE_SIZE ||
totalData.logs.length < TABLE_DEFAULT_PAGE_SIZE) &&
oldest !== '';
const needToGetAdditionalLogs = (logs.length < TABLE_DEFAULT_PAGE_SIZE
|| totalData.logs.length < TABLE_DEFAULT_PAGE_SIZE)
&& oldest !== '';
if (needToGetAdditionalLogs) {
dispatch(getAdditionalLogsRequest());
@@ -61,7 +61,7 @@ export const getLogsRequest = createAction('GET_LOGS_REQUEST');
export const getLogsFailure = createAction('GET_LOGS_FAILURE');
export const getLogsSuccess = createAction('GET_LOGS_SUCCESS');
export const getLogs = config => async (dispatch, getState) => {
export const getLogs = (config) => async (dispatch, getState) => {
dispatch(getLogsRequest());
try {
const { isFiltered, filter, page } = getState().queryLogs;
@@ -85,7 +85,7 @@ export const setLogsFilterRequest = createAction('SET_LOGS_FILTER_REQUEST');
export const setLogsFilterFailure = createAction('SET_LOGS_FILTER_FAILURE');
export const setLogsFilterSuccess = createAction('SET_LOGS_FILTER_SUCCESS');
export const setLogsFilter = filter => async (dispatch) => {
export const setLogsFilter = (filter) => async (dispatch) => {
dispatch(setLogsFilterRequest());
try {
const data = await getLogsWithParams({ older_than: '', filter });
@@ -135,7 +135,7 @@ export const setLogsConfigRequest = createAction('SET_LOGS_CONFIG_REQUEST');
export const setLogsConfigFailure = createAction('SET_LOGS_CONFIG_FAILURE');
export const setLogsConfigSuccess = createAction('SET_LOGS_CONFIG_SUCCESS');
export const setLogsConfig = config => async (dispatch) => {
export const setLogsConfig = (config) => async (dispatch) => {
dispatch(setLogsConfigRequest());
try {
await apiClient.setQueryLogConfig(config);

View File

@@ -1,7 +1,7 @@
import { createAction } from 'redux-actions';
import { t } from 'i18next';
import i18next from 'i18next';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { addErrorToast, addSuccessToast } from './toasts';
export const toggleRewritesModal = createAction('TOGGLE_REWRITES_MODAL');
@@ -24,14 +24,14 @@ export const addRewriteRequest = createAction('ADD_REWRITE_REQUEST');
export const addRewriteFailure = createAction('ADD_REWRITE_FAILURE');
export const addRewriteSuccess = createAction('ADD_REWRITE_SUCCESS');
export const addRewrite = config => async (dispatch) => {
export const addRewrite = (config) => async (dispatch) => {
dispatch(addRewriteRequest());
try {
await apiClient.addRewrite(config);
dispatch(addRewriteSuccess(config));
dispatch(toggleRewritesModal());
dispatch(getRewritesList());
dispatch(addSuccessToast(t('rewrite_added', { key: config.domain })));
dispatch(addSuccessToast(i18next.t('rewrite_added', { key: config.domain })));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(addRewriteFailure());
@@ -42,13 +42,13 @@ export const deleteRewriteRequest = createAction('DELETE_REWRITE_REQUEST');
export const deleteRewriteFailure = createAction('DELETE_REWRITE_FAILURE');
export const deleteRewriteSuccess = createAction('DELETE_REWRITE_SUCCESS');
export const deleteRewrite = config => async (dispatch) => {
export const deleteRewrite = (config) => async (dispatch) => {
dispatch(deleteRewriteRequest());
try {
await apiClient.deleteRewrite(config);
dispatch(deleteRewriteSuccess());
dispatch(getRewritesList());
dispatch(addSuccessToast(t('rewrite_deleted', { key: config.domain })));
dispatch(addSuccessToast(i18next.t('rewrite_deleted', { key: config.domain })));
} catch (error) {
dispatch(addErrorToast({ error }));
dispatch(deleteRewriteFailure());

View File

@@ -1,6 +1,6 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { addErrorToast, addSuccessToast } from './toasts';
export const getBlockedServicesRequest = createAction('GET_BLOCKED_SERVICES_REQUEST');
export const getBlockedServicesFailure = createAction('GET_BLOCKED_SERVICES_FAILURE');
@@ -21,7 +21,7 @@ export const setBlockedServicesRequest = createAction('SET_BLOCKED_SERVICES_REQU
export const setBlockedServicesFailure = createAction('SET_BLOCKED_SERVICES_FAILURE');
export const setBlockedServicesSuccess = createAction('SET_BLOCKED_SERVICES_SUCCESS');
export const setBlockedServices = values => async (dispatch) => {
export const setBlockedServices = (values) => async (dispatch) => {
dispatch(setBlockedServicesRequest());
try {
await apiClient.setBlockedServices(values);

View File

@@ -1,8 +1,10 @@
import { createAction } from 'redux-actions';
import apiClient from '../api/Api';
import { addErrorToast, addSuccessToast } from './index';
import { normalizeTopStats, secondsToMilliseconds, getParamsForClientsSearch, addClientInfo } from '../helpers/helpers';
import {
normalizeTopStats, secondsToMilliseconds, getParamsForClientsSearch, addClientInfo,
} from '../helpers/helpers';
import { addErrorToast, addSuccessToast } from './toasts';
export const getStatsConfigRequest = createAction('GET_STATS_CONFIG_REQUEST');
export const getStatsConfigFailure = createAction('GET_STATS_CONFIG_FAILURE');
@@ -23,7 +25,7 @@ export const setStatsConfigRequest = createAction('SET_STATS_CONFIG_REQUEST');
export const setStatsConfigFailure = createAction('SET_STATS_CONFIG_FAILURE');
export const setStatsConfigSuccess = createAction('SET_STATS_CONFIG_SUCCESS');
export const setStatsConfig = config => async (dispatch) => {
export const setStatsConfig = (config) => async (dispatch) => {
dispatch(setStatsConfigRequest());
try {
await apiClient.setStatsConfig(config);

View File

@@ -0,0 +1,5 @@
import { createAction } from 'redux-actions';
export const addErrorToast = createAction('ADD_ERROR_TOAST');
export const addSuccessToast = createAction('ADD_SUCCESS_TOAST');
export const addNoticeToast = createAction('ADD_NOTICE_TOAST');

View File

@@ -32,9 +32,11 @@ class Api {
// Global methods
GLOBAL_STATUS = { path: 'status', method: 'GET' };
GLOBAL_SET_UPSTREAM_DNS = { path: 'set_upstreams_config', method: 'POST' };
GLOBAL_TEST_UPSTREAM_DNS = { path: 'test_upstream_dns', method: 'POST' };
GLOBAL_VERSION = { path: 'version.json', method: 'POST' };
GLOBAL_UPDATE = { path: 'update', method: 'POST' };
getGlobalStatus() {
@@ -42,15 +44,6 @@ class Api {
return this.makeRequest(path, method);
}
setUpstream(url) {
const { path, method } = this.GLOBAL_SET_UPSTREAM_DNS;
const config = {
data: url,
headers: { 'Content-Type': 'application/json' },
};
return this.makeRequest(path, method, config);
}
testUpstream(servers) {
const { path, method } = this.GLOBAL_TEST_UPSTREAM_DNS;
const config = {
@@ -76,12 +69,19 @@ class Api {
// Filtering
FILTERING_STATUS = { path: 'filtering/status', method: 'GET' };
FILTERING_ADD_FILTER = { path: 'filtering/add_url', method: 'POST' };
FILTERING_REMOVE_FILTER = { path: 'filtering/remove_url', method: 'POST' };
FILTERING_SET_RULES = { path: 'filtering/set_rules', method: 'POST' };
FILTERING_REFRESH = { path: 'filtering/refresh', method: 'POST' };
FILTERING_SET_URL = { path: 'filtering/set_url', method: 'POST' };
FILTERING_CONFIG = { path: 'filtering/config', method: 'POST' };
FILTERING_CHECK_HOST = { path: 'filtering/check_host', method: 'GET' };
getFilteringStatus() {
@@ -154,7 +154,9 @@ class Api {
// Parental
PARENTAL_STATUS = { path: 'parental/status', method: 'GET' };
PARENTAL_ENABLE = { path: 'parental/enable', method: 'POST' };
PARENTAL_DISABLE = { path: 'parental/disable', method: 'POST' };
getParentalStatus() {
@@ -179,7 +181,9 @@ class Api {
// Safebrowsing
SAFEBROWSING_STATUS = { path: 'safebrowsing/status', method: 'GET' };
SAFEBROWSING_ENABLE = { path: 'safebrowsing/enable', method: 'POST' };
SAFEBROWSING_DISABLE = { path: 'safebrowsing/disable', method: 'POST' };
getSafebrowsingStatus() {
@@ -199,7 +203,9 @@ class Api {
// Safesearch
SAFESEARCH_STATUS = { path: 'safesearch/status', method: 'GET' };
SAFESEARCH_ENABLE = { path: 'safesearch/enable', method: 'POST' };
SAFESEARCH_DISABLE = { path: 'safesearch/disable', method: 'POST' };
getSafesearchStatus() {
@@ -219,6 +225,7 @@ class Api {
// Language
CURRENT_LANGUAGE = { path: 'i18n/current_language', method: 'GET' };
CHANGE_LANGUAGE = { path: 'i18n/change_language', method: 'POST' };
getCurrentLanguage() {
@@ -237,11 +244,17 @@ class Api {
// DHCP
DHCP_STATUS = { path: 'dhcp/status', method: 'GET' };
DHCP_SET_CONFIG = { path: 'dhcp/set_config', method: 'POST' };
DHCP_FIND_ACTIVE = { path: 'dhcp/find_active_dhcp', method: 'POST' };
DHCP_INTERFACES = { path: 'dhcp/interfaces', method: 'GET' };
DHCP_ADD_STATIC_LEASE = { path: 'dhcp/add_static_lease', method: 'POST' };
DHCP_REMOVE_STATIC_LEASE = { path: 'dhcp/remove_static_lease', method: 'POST' };
DHCP_RESET = { path: 'dhcp/reset', method: 'POST' };
getDhcpStatus() {
@@ -297,7 +310,9 @@ class Api {
// Installation
INSTALL_GET_ADDRESSES = { path: 'install/get_addresses', method: 'GET' };
INSTALL_CONFIGURE = { path: 'install/configure', method: 'POST' };
INSTALL_CHECK_CONFIG = { path: 'install/check_config', method: 'POST' };
getDefaultAddresses() {
@@ -325,7 +340,9 @@ class Api {
// DNS-over-HTTPS and DNS-over-TLS
TLS_STATUS = { path: 'tls/status', method: 'GET' };
TLS_CONFIG = { path: 'tls/configure', method: 'POST' };
TLS_VALIDATE = { path: 'tls/validate', method: 'POST' };
getTlsStatus() {
@@ -353,9 +370,13 @@ class Api {
// Per-client settings
GET_CLIENTS = { path: 'clients', method: 'GET' };
FIND_CLIENTS = { path: 'clients/find', method: 'GET' };
ADD_CLIENT = { path: 'clients/add', method: 'POST' };
DELETE_CLIENT = { path: 'clients/delete', method: 'POST' };
UPDATE_CLIENT = { path: 'clients/update', method: 'POST' };
getClients() {
@@ -398,6 +419,7 @@ class Api {
// DNS access settings
ACCESS_LIST = { path: 'access/list', method: 'GET' };
ACCESS_SET = { path: 'access/set', method: 'POST' };
getAccessList() {
@@ -416,7 +438,9 @@ class Api {
// DNS rewrites
REWRITES_LIST = { path: 'rewrite/list', method: 'GET' };
REWRITE_ADD = { path: 'rewrite/add', method: 'POST' };
REWRITE_DELETE = { path: 'rewrite/delete', method: 'POST' };
getRewritesList() {
@@ -444,6 +468,7 @@ class Api {
// Blocked services
BLOCKED_SERVICES_LIST = { path: 'blocked_services/list', method: 'GET' };
BLOCKED_SERVICES_SET = { path: 'blocked_services/set', method: 'POST' };
getBlockedServices() {
@@ -462,8 +487,11 @@ class Api {
// Settings for statistics
GET_STATS = { path: 'stats', method: 'GET' };
STATS_INFO = { path: 'stats_info', method: 'GET' };
STATS_CONFIG = { path: 'stats_config', method: 'POST' };
STATS_RESET = { path: 'stats_reset', method: 'POST' };
getStats() {
@@ -492,8 +520,11 @@ class Api {
// Query log
GET_QUERY_LOG = { path: 'querylog', method: 'GET' };
QUERY_LOG_CONFIG = { path: 'querylog_config', method: 'POST' };
QUERY_LOG_INFO = { path: 'querylog_info', method: 'GET' };
QUERY_LOG_CLEAR = { path: 'querylog_clear', method: 'POST' };
getQueryLog(params) {
@@ -543,6 +574,7 @@ class Api {
// DNS config
GET_DNS_CONFIG = { path: 'dns_info', method: 'GET' };
SET_DNS_CONFIG = { path: 'dns_config', method: 'POST' };
getDnsConfig() {

View File

@@ -1,3 +1,7 @@
:root {
--font-family-monospace: Monaco, Menlo, "Ubuntu Mono", Consolas, source-code-pro, monospace;
}
body {
margin: 0;
padding: 0;
@@ -30,3 +34,7 @@ body {
.hidden {
display: none;
}
.font-monospace {
font-family: var(--font-family-monospace);
}

View File

@@ -1,7 +1,7 @@
import React, { Component, Fragment } from 'react';
import { HashRouter, Route } from 'react-router-dom';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import LoadingBar from 'react-redux-loading-bar';
import 'react-table/react-table.css';
@@ -126,6 +126,7 @@ class App extends Component {
dnsPort={dashboard.dnsPort}
processingVersion={dashboard.processingVersion}
getVersion={getVersion}
checkUpdateFlag={dashboard.checkUpdateFlag}
/>
<Toasts />
<Icons />
@@ -147,4 +148,4 @@ App.propTypes = {
getVersion: PropTypes.func,
};
export default withNamespaces()(App);
export default withTranslation()(App);

View File

@@ -1,7 +1,7 @@
import React from 'react';
import ReactTable from 'react-table';
import PropTypes from 'prop-types';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
import Card from '../ui/Card';
import Cell from '../ui/Cell';
@@ -10,13 +10,12 @@ import DomainCell from './DomainCell';
import { getPercent } from '../../helpers/helpers';
import { STATUS_COLORS } from '../../helpers/constants';
const CountCell = totalBlocked =>
function cell(row) {
const { value } = row;
const percent = getPercent(totalBlocked, value);
const CountCell = (totalBlocked) => function cell(row) {
const { value } = row;
const percent = getPercent(totalBlocked, value);
return <Cell value={value} percent={percent} color={STATUS_COLORS.red} />;
};
return <Cell value={value} percent={percent} color={STATUS_COLORS.red} />;
};
const BlockedDomains = ({
t,
@@ -58,7 +57,7 @@ const BlockedDomains = ({
noDataText={t('no_domains_found')}
minRows={6}
defaultPageSize={100}
className="-highlight card-table-overflow stats__table"
className="-highlight card-table-overflow--limited stats__table"
/>
</Card>
);
@@ -74,4 +73,4 @@ BlockedDomains.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(BlockedDomains);
export default withTranslation()(BlockedDomains);

View File

@@ -1,47 +1,45 @@
import React, { Fragment } from 'react';
import ReactTable from 'react-table';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import Card from '../ui/Card';
import Cell from '../ui/Cell';
import { getPercent } from '../../helpers/helpers';
import { STATUS_COLORS } from '../../helpers/constants';
import { getPercent, getIpMatchListStatus } from '../../helpers/helpers';
import { IP_MATCH_LIST_STATUS, STATUS_COLORS } from '../../helpers/constants';
import { formatClientCell } from '../../helpers/formatClientCell';
const getClientsPercentColor = (percent) => {
if (percent > 50) {
return STATUS_COLORS.green;
} else if (percent > 10) {
}
if (percent > 10) {
return STATUS_COLORS.yellow;
}
return STATUS_COLORS.red;
};
const countCell = dnsQueries =>
function cell(row) {
const { value } = row;
const percent = getPercent(dnsQueries, value);
const percentColor = getClientsPercentColor(percent);
const countCell = (dnsQueries) => function cell(row) {
const { value } = row;
const percent = getPercent(dnsQueries, value);
const percentColor = getClientsPercentColor(percent);
return <Cell value={value} percent={percent} color={percentColor} />;
};
return <Cell value={value} percent={percent} color={percentColor} />;
};
const renderBlockingButton = (blocked, ip, handleClick, processing) => {
let buttonProps = {
className: 'btn-outline-danger',
text: 'block_btn',
type: 'block',
};
if (blocked) {
buttonProps = {
const renderBlockingButton = (ipMatchListStatus, ip, handleClick, processing) => {
const buttonProps = ipMatchListStatus === IP_MATCH_LIST_STATUS.NOT_FOUND
? {
className: 'btn-outline-danger',
text: 'block_btn',
type: 'block',
}
: {
className: 'btn-outline-secondary',
text: 'unblock_btn',
type: 'unblock',
};
}
return (
<div className="table__action">
@@ -57,22 +55,20 @@ const renderBlockingButton = (blocked, ip, handleClick, processing) => {
);
};
const isBlockedClient = (clients, ip) => !!(clients && clients.includes(ip));
const clientCell = (t, toggleClientStatus, processing, disallowedClients) => function cell(row) {
const { value } = row;
const ipMatchListStatus = getIpMatchListStatus(value, disallowedClients);
const clientCell = (t, toggleClientStatus, processing, disallowedClients) =>
function cell(row) {
const { value } = row;
const blocked = isBlockedClient(disallowedClients, value);
return (
<Fragment>
<div className="logs__row logs__row--overflow logs__row--column">
{formatClientCell(row, t)}
</div>
{renderBlockingButton(blocked, value, toggleClientStatus, processing)}
</Fragment>
);
};
return (
<Fragment>
<div className="logs__row logs__row--overflow logs__row--column">
{formatClientCell(row, t)}
</div>
{ipMatchListStatus !== IP_MATCH_LIST_STATUS.CIDR
&& renderBlockingButton(ipMatchListStatus, value, toggleClientStatus, processing)}
</Fragment>
);
};
const Clients = ({
t,
@@ -103,8 +99,7 @@ const Clients = ({
{
Header: 'IP',
accessor: 'ip',
sortMethod: (a, b) =>
parseInt(a.replace(/\./g, ''), 10) - parseInt(b.replace(/\./g, ''), 10),
sortMethod: (a, b) => parseInt(a.replace(/\./g, ''), 10) - parseInt(b.replace(/\./g, ''), 10),
Cell: clientCell(t, toggleClientStatus, processingAccessSet, disallowedClients),
},
{
@@ -119,7 +114,7 @@ const Clients = ({
noDataText={t('no_clients_found')}
minRows={6}
defaultPageSize={100}
className="-highlight card-table-overflow clients__table"
className="-highlight card-table-overflow--limited clients__table"
getTrProps={(_state, rowInfo) => {
if (!rowInfo) {
return {};
@@ -127,15 +122,8 @@ const Clients = ({
const { ip } = rowInfo.original;
if (isBlockedClient(disallowedClients, ip)) {
return {
className: 'red',
};
}
return {
className: '',
};
return getIpMatchListStatus(ip, disallowedClients)
=== IP_MATCH_LIST_STATUS.NOT_FOUND ? {} : { className: 'red' };
}}
/>
</Card>
@@ -154,4 +142,4 @@ Clients.propTypes = {
disallowedClients: PropTypes.string.isRequired,
};
export default withNamespaces()(Clients);
export default withTranslation()(Clients);

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import round from 'lodash/round';
import Card from '../ui/Card';
@@ -23,10 +23,9 @@ const Counters = (props) => {
avgProcessingTime,
} = props;
const tooltipTitle =
interval === 1
? t('number_of_dns_query_24_hours')
: t('number_of_dns_query_days', { count: interval });
const tooltipTitle = interval === 1
? t('number_of_dns_query_24_hours')
: t('number_of_dns_query_days', { count: interval });
return (
<Card
@@ -136,4 +135,4 @@ Counters.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(Counters);
export default withTranslation()(Counters);

View File

@@ -1,7 +1,7 @@
import React from 'react';
import ReactTable from 'react-table';
import PropTypes from 'prop-types';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
import Card from '../ui/Card';
import Cell from '../ui/Cell';
@@ -13,20 +13,19 @@ import { getPercent } from '../../helpers/helpers';
const getQueriedPercentColor = (percent) => {
if (percent > 10) {
return STATUS_COLORS.red;
} else if (percent > 5) {
} if (percent > 5) {
return STATUS_COLORS.yellow;
}
return STATUS_COLORS.green;
};
const countCell = dnsQueries =>
function cell(row) {
const { value } = row;
const percent = getPercent(dnsQueries, value);
const percentColor = getQueriedPercentColor(percent);
const countCell = (dnsQueries) => function cell(row) {
const { value } = row;
const percent = getPercent(dnsQueries, value);
const percentColor = getQueriedPercentColor(percent);
return <Cell value={value} percent={percent} color={percentColor} />;
};
return <Cell value={value} percent={percent} color={percentColor} />;
};
const QueriedDomains = ({
t, refreshButton, topQueriedDomains, subtitle, dnsQueries,
@@ -59,7 +58,7 @@ const QueriedDomains = ({
noDataText={t('no_domains_found')}
minRows={6}
defaultPageSize={100}
className="-highlight card-table-overflow stats__table"
className="-highlight card-table-overflow--limited stats__table"
/>
</Card>
);
@@ -72,4 +71,4 @@ QueriedDomains.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(QueriedDomains);
export default withTranslation()(QueriedDomains);

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
import StatsCard from './StatsCard';
import { getPercent, normalizeHistory } from '../../helpers/helpers';
@@ -76,4 +76,4 @@ Statistics.propTypes = {
refreshButton: PropTypes.node.isRequired,
};
export default withNamespaces()(Statistics);
export default withTranslation()(Statistics);

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import Statistics from './Statistics';
import Counters from './Counters';
@@ -57,10 +57,9 @@ class Dashboard extends Component {
|| stats.processingGetConfig
|| access.processing;
const subtitle =
stats.interval === 1
? t('for_last_24_hours')
: t('for_last_days', { count: stats.interval });
const subtitle = stats.interval === 1
? t('for_last_24_hours')
: t('for_last_days', { count: stats.interval });
const refreshFullButton = (
<button
@@ -173,4 +172,4 @@ Dashboard.propTypes = {
getAccessList: PropTypes.func.isRequired,
};
export default withNamespaces()(Dashboard);
export default withTranslation()(Dashboard);

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
const Actions = ({
handleAdd, handleRefresh, processingRefreshFilters, whitelist,
@@ -35,5 +35,4 @@ Actions.propTypes = {
whitelist: PropTypes.bool,
};
export default withNamespaces()(Actions);
export default withTranslation()(Actions);

View File

@@ -1,10 +1,11 @@
import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import {
checkFiltered,
checkRewrite,
checkRewriteHosts,
checkBlackList,
checkNotFilteredNotFound,
checkWhiteList,
@@ -19,8 +20,8 @@ const getFilterName = (id, filters, whitelistFilters, t) => {
return t('filtered_custom_rules');
}
const filter = filters.find(filter => filter.id === id)
|| whitelistFilters.find(filter => filter.id === id);
const filter = filters.find((filter) => filter.id === id)
|| whitelistFilters.find((filter) => filter.id === id);
if (filter && filter.name) {
return t('query_log_filtered', { filter: filter.name });
@@ -38,6 +39,10 @@ const getTitle = (reason, filterName, t, onlyFiltered) => {
return t('rewrite_applied');
}
if (checkRewriteHosts(reason)) {
return t('rewrite_hosts_applied');
}
if (checkBlackList(reason)) {
return filterName;
}
@@ -75,9 +80,9 @@ const getTitle = (reason, filterName, t, onlyFiltered) => {
const getColor = (reason) => {
if (checkFiltered(reason)) {
return 'red';
} else if (checkRewrite(reason)) {
} if (checkRewrite(reason) || checkRewriteHosts(reason)) {
return 'blue';
} else if (checkWhiteList(reason)) {
} if (checkWhiteList(reason)) {
return 'green';
}
@@ -157,4 +162,4 @@ Info.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(Info);
export default withTranslation()(Info);

View File

@@ -1,6 +1,6 @@
import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import { Field, reduxForm } from 'redux-form';
import flow from 'lodash/flow';
import Card from '../../ui/Card';
@@ -51,7 +51,7 @@ const Check = (props) => {
<button
className="btn btn-success btn-standard btn-large"
type="submit"
onClick={this.handleSubmit}
onClick={handleSubmit}
disabled={pristine || invalid || processing}
>
<Trans>check</Trans>
@@ -93,6 +93,6 @@ Check.propTypes = {
};
export default flow([
withNamespaces(),
withTranslation(),
reduxForm({ form: 'domainCheckForm' }),
])(Check);

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import Card from '../ui/Card';
import PageTitle from '../ui/PageTitle';
@@ -32,7 +32,7 @@ class CustomRules extends Component {
handleCheck = (values) => {
this.props.checkHost(values);
}
};
render() {
const {
@@ -54,7 +54,7 @@ class CustomRules extends Component {
>
<form onSubmit={this.handleSubmit}>
<textarea
className="form-control form-control--textarea-large"
className="form-control form-control--textarea-large font-monospace"
value={userRules}
onChange={this.handleChange}
/>
@@ -92,4 +92,4 @@ CustomRules.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(CustomRules);
export default withTranslation()(CustomRules);

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import PageTitle from '../ui/PageTitle';
import Card from '../ui/Card';
@@ -64,7 +64,8 @@ class DnsAllowlist extends Component {
},
} = this.props;
const currentFilterData = getCurrentFilter(modalFilterUrl, whitelistFilters);
const loading = processingFilters
const loading = processingConfigFilter
|| processingFilters
|| processingAddFilter
|| processingRemoveFilter
|| processingRefreshFilters;
@@ -130,4 +131,4 @@ DnsAllowlist.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(DnsAllowlist);
export default withTranslation()(DnsAllowlist);

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import PageTitle from '../ui/PageTitle';
import Card from '../ui/Card';
@@ -60,7 +60,8 @@ class DnsBlocklist extends Component {
},
} = this.props;
const currentFilterData = getCurrentFilter(modalFilterUrl, filters);
const loading = processingFilters
const loading = processingConfigFilter
|| processingFilters
|| processingAddFilter
|| processingRemoveFilter
|| processingRefreshFilters;
@@ -121,4 +122,4 @@ DnsBlocklist.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(DnsBlocklist);
export default withTranslation()(DnsBlocklist);

View File

@@ -1,5 +1,5 @@
import React, { Fragment } from 'react';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
const Examples = () => (
<Fragment>
@@ -51,4 +51,4 @@ const Examples = () => (
</Fragment>
);
export default withNamespaces()(Examples);
export default withTranslation()(Examples);

View File

@@ -1,10 +1,10 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Field, reduxForm } from 'redux-form';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import flow from 'lodash/flow';
import { renderInputField, required, isValidUrl } from '../../helpers/form';
import { renderInputField, required, isValidPath } from '../../helpers/form';
const Form = (props) => {
const {
@@ -19,17 +19,18 @@ const Form = (props) => {
return (
<form onSubmit={handleSubmit}>
<div className="modal-body">
<div className="form__group">
<Field
id="name"
name="name"
type="text"
component={renderInputField}
className="form-control"
placeholder={t('enter_name_hint')}
validate={[required]}
/>
</div>
<div className="form__group">
<Field
id="name"
name="name"
type="text"
component={renderInputField}
className="form-control"
placeholder={t('enter_name_hint')}
validate={[required]}
normalizeOnBlur={(data) => data.trim()}
/>
</div>
<div className="form__group">
<Field
id="url"
@@ -37,16 +38,14 @@ const Form = (props) => {
type="text"
component={renderInputField}
className="form-control"
placeholder={t('enter_url_hint')}
validate={[required, isValidUrl]}
placeholder={t('enter_url_or_path_hint')}
validate={[required, isValidPath]}
normalizeOnBlur={(data) => data.trim()}
/>
</div>
<div className="form__description">
{whitelist ? (
<Trans>enter_valid_allowlist</Trans>
) : (
<Trans>enter_valid_blocklist</Trans>
)}
{whitelist ? <Trans>enter_valid_allowlist</Trans>
: <Trans>enter_valid_blocklist</Trans>}
</div>
</div>
<div className="modal-footer">
@@ -79,7 +78,7 @@ Form.propTypes = {
};
export default flow([
withNamespaces(),
withTranslation(),
reduxForm({
form: 'filterForm',
}),

View File

@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ReactModal from 'react-modal';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import { MODAL_TYPE } from '../../helpers/constants';
import Form from './Form';
@@ -85,4 +85,4 @@ Modal.propTypes = {
whitelist: PropTypes.bool,
};
export default withNamespaces()(Modal);
export default withTranslation()(Modal);

View File

@@ -1,10 +1,12 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Field, reduxForm } from 'redux-form';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import flow from 'lodash/flow';
import { renderInputField, required, domain, answer } from '../../../helpers/form';
import {
renderInputField, required, domain, answer,
} from '../../../helpers/form';
const Form = (props) => {
const {
@@ -100,7 +102,7 @@ Form.propTypes = {
};
export default flow([
withNamespaces(),
withTranslation(),
reduxForm({
form: 'rewritesForm',
enableReinitialize: true,

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import ReactModal from 'react-modal';
import Form from './Form';
@@ -49,4 +49,4 @@ Modal.propTypes = {
processingDelete: PropTypes.bool.isRequired,
};
export default withNamespaces()(Modal);
export default withTranslation()(Modal);

View File

@@ -1,7 +1,7 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ReactTable from 'react-table';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
class Table extends Component {
cellWrap = ({ value }) => (
@@ -27,16 +27,15 @@ class Table extends Component {
Header: this.props.t('actions_table_header'),
accessor: 'actions',
maxWidth: 100,
Cell: value => (
Cell: (value) => (
<div className="logs__row logs__row--center">
<button
type="button"
className="btn btn-icon btn-outline-secondary btn-sm"
onClick={() =>
this.props.handleDelete({
answer: value.row.answer,
domain: value.row.domain,
})
onClick={() => this.props.handleDelete({
answer: value.row.answer,
domain: value.row.domain,
})
}
title={this.props.t('delete_table_action')}
>
@@ -84,4 +83,4 @@ Table.propTypes = {
handleDelete: PropTypes.func.isRequired,
};
export default withNamespaces()(Table);
export default withTranslation()(Table);

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import Table from './Table';
import Modal from './Modal';
@@ -89,4 +89,4 @@ Rewrites.propTypes = {
rewrites: PropTypes.object.isRequired,
};
export default withNamespaces()(Rewrites);
export default withTranslation()(Rewrites);

View File

@@ -1,15 +1,14 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ReactTable from 'react-table';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation, Trans } from 'react-i18next';
import CellWrap from '../ui/CellWrap';
import { MODAL_TYPE } from '../../helpers/constants';
import { formatDetailedDateTime } from '../../helpers/helpers';
import { isValidAbsolutePath } from '../../helpers/form';
class Table extends Component {
getDateCell = row => CellWrap(row, formatDetailedDateTime);
getDateCell = (row) => CellWrap(row, formatDetailedDateTime);
renderCheckbox = ({ original }) => {
const { processingConfigFilter, toggleFilter } = this.props;
@@ -50,14 +49,15 @@ class Table extends Component {
minWidth: 200,
Cell: ({ value }) => (
<div className="logs__row logs__row--overflow">
<a
href={value}
target="_blank"
rel="noopener noreferrer"
className="link logs__text"
>
{value}
</a>
{isValidAbsolutePath(value) ? value
: <a
href={value}
target="_blank"
rel="noopener noreferrer"
className="link logs__text"
>
{value}
</a>}
</div>
),
},
@@ -66,7 +66,7 @@ class Table extends Component {
accessor: 'rulesCount',
className: 'text-center',
minWidth: 100,
Cell: props => props.value.toLocaleString(),
Cell: (props) => props.value.toLocaleString(),
},
{
Header: <Trans>last_time_updated_table_header</Trans>,
@@ -91,11 +91,10 @@ class Table extends Component {
type="button"
className="btn btn-icon btn-outline-primary btn-sm mr-2"
title={t('edit_table_action')}
onClick={() =>
toggleFilteringModal({
type: MODAL_TYPE.EDIT,
url: value,
})
onClick={() => toggleFilteringModal({
type: MODAL_TYPE.EDIT,
url: value,
})
}
>
<svg className="icons">
@@ -154,4 +153,4 @@ Table.propTypes = {
whitelist: PropTypes.bool,
};
export default withNamespaces()(Table);
export default withTranslation()(Table);

View File

@@ -3,7 +3,7 @@ import { NavLink } from 'react-router-dom';
import PropTypes from 'prop-types';
import enhanceWithClickOutside from 'react-click-outside';
import classnames from 'classnames';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import { SETTINGS_URLS, FILTERS_URLS, MENU_URLS } from '../../helpers/constants';
import Dropdown from '../ui/Dropdown';
@@ -51,7 +51,7 @@ class Menu extends Component {
getActiveClassForDropdown = (URLS) => {
const { pathname } = this.props.location;
const isActivePage = Object.values(URLS).some(item => item === pathname);
const isActivePage = Object.values(URLS).some((item) => item === pathname);
return isActivePage ? 'active' : '';
};
@@ -77,21 +77,20 @@ class Menu extends Component {
getDropdown = ({
label, order, URLS, icon, ITEMS,
}) =>
(
}) => (
<Dropdown
label={this.props.t(label)}
baseClassName={`dropdown nav-item order-${order}`}
controlClassName={`nav-link ${this.getActiveClassForDropdown(URLS)}`}
icon={icon}>
{ITEMS.map(item => (
{ITEMS.map((item) => (
this.getNavLink({
...item,
order,
className: 'dropdown-item',
})))}
</Dropdown>
);
);
render() {
const menuClass = classnames({
@@ -102,7 +101,7 @@ class Menu extends Component {
<Fragment>
<div className={menuClass}>
<ul className="nav nav-tabs border-0 flex-column flex-lg-row flex-nowrap">
{MENU_ITEMS.map(item => (
{MENU_ITEMS.map((item) => (
<li
className={`nav-item order-${item.order}`}
key={item.text}
@@ -139,4 +138,4 @@ Menu.propTypes = {
t: PropTypes.func,
};
export default withNamespaces()(enhanceWithClickOutside(Menu));
export default withTranslation()(enhanceWithClickOutside(Menu));

View File

@@ -2,7 +2,7 @@ import React, { Component } from 'react';
import { Link } from 'react-router-dom';
import PropTypes from 'prop-types';
import classnames from 'classnames';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import Menu from './Menu';
import logo from '../ui/svg/logo.svg';
@@ -14,7 +14,7 @@ class Header extends Component {
};
toggleMenuOpen = () => {
this.setState(prevState => ({ isMenuOpen: !prevState.isMenuOpen }));
this.setState((prevState) => ({ isMenuOpen: !prevState.isMenuOpen }));
};
closeMenu = () => {
@@ -59,8 +59,8 @@ class Header extends Component {
/>
<div className="header__column">
<div className="header__right">
{!dashboard.processingProfile && dashboard.name &&
<a href="control/logout" className="btn btn-sm btn-outline-secondary">
{!dashboard.processingProfile && dashboard.name
&& <a href="control/logout" className="btn btn-sm btn-outline-secondary">
<Trans>sign_out</Trans>
</a>
}
@@ -80,4 +80,4 @@ Header.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(Header);
export default withTranslation()(Header);

View File

@@ -1,7 +1,7 @@
import React, { Fragment } from 'react';
import PropTypes from 'prop-types';
import { Field, reduxForm } from 'redux-form';
import { withNamespaces, Trans } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import flow from 'lodash/flow';
import { renderInputField } from '../../../helpers/form';
@@ -18,27 +18,40 @@ const renderFilterField = ({
autoComplete,
tooltip,
meta: { touched, error },
}) => (
<Fragment>
<div className="logs__input-wrap">
<input
{...input}
id={id}
placeholder={placeholder}
type={type}
className={className}
disabled={disabled}
autoComplete={autoComplete}
/>
<span className="logs__notice">
}) => <Fragment>
<div className="logs__input-wrap">
<input
{...input}
id={id}
placeholder={placeholder}
type={type}
className={className}
disabled={disabled}
autoComplete={autoComplete}
/>
<span className="logs__notice">
<Tooltip text={tooltip} type='tooltip-custom--logs' />
</span>
{!disabled &&
touched &&
(error && <span className="form__message form__message--error">{error}</span>)}
</div>
</Fragment>
);
{!disabled
&& touched
&& (error && <span className="form__message form__message--error">{error}</span>)}
</div>
</Fragment>;
renderFilterField.propTypes = {
input: PropTypes.object.isRequired,
id: PropTypes.string.isRequired,
className: PropTypes.string,
placeholder: PropTypes.string,
type: PropTypes.string,
disabled: PropTypes.string,
autoComplete: PropTypes.string,
tooltip: PropTypes.string,
meta: PropTypes.shape({
touched: PropTypes.bool,
error: PropTypes.object,
}).isRequired,
};
const Form = (props) => {
const {
@@ -79,10 +92,10 @@ const Form = (props) => {
className="form-control custom-select"
>
<option value={RESPONSE_FILTER.ALL}>
<Trans>show_all_filter_type</Trans>
{t('show_all_filter_type')}
</option>
<option value={RESPONSE_FILTER.FILTERED}>
<Trans>show_filtered_type</Trans>
{t('show_filtered_type')}
</option>
</Field>
</div>
@@ -109,7 +122,7 @@ Form.propTypes = {
};
export default flow([
withNamespaces(),
withTranslation(),
reduxForm({
form: 'logsFilterForm',
}),

View File

@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
import ReactTable from 'react-table';
import escapeRegExp from 'lodash/escapeRegExp';
import endsWith from 'lodash/endsWith';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import { HashLink as Link } from 'react-router-hash-link';
import {
@@ -12,11 +12,14 @@ import {
isToday,
checkFiltered,
checkRewrite,
checkRewriteHosts,
checkWhiteList,
checkBlackList,
checkBlockedService,
} from '../../helpers/helpers';
import { SERVICES, TABLE_DEFAULT_PAGE_SIZE, CUSTOM_FILTERING_RULES_ID, FILTERED } from '../../helpers/constants';
import {
SERVICES, TABLE_DEFAULT_PAGE_SIZE, CUSTOM_FILTERING_RULES_ID, FILTERED,
} from '../../helpers/constants';
import { getTrackerData } from '../../helpers/trackers/trackers';
import { formatClientCell } from '../../helpers/formatClientCell';
@@ -53,8 +56,8 @@ class Logs extends Component {
window.location.reload();
};
renderTooltip = (isFiltered, rule, filter, service) =>
isFiltered && <PopoverFiltered rule={rule} filter={filter} service={service} />;
renderTooltip = (isFiltered, rule, filter, service) => isFiltered
&& <PopoverFiltered rule={rule} filter={filter} service={service} />;
renderResponseList = (response, status) => {
if (response.length > 0) {
@@ -115,7 +118,7 @@ class Logs extends Component {
);
}
getDateCell = row => CellWrap(
getDateCell = (row) => CellWrap(
row,
(isToday(row.value) ? formatTime : formatDateTime),
formatDateTime,
@@ -133,7 +136,7 @@ class Logs extends Component {
);
};
normalizeResponse = response => (
normalizeResponse = (response) => (
response.map((response) => {
const { value, type, ttl } = response;
return `${type}: ${value} (ttl=${ttl})`;
@@ -145,8 +148,8 @@ class Logs extends Component {
return t('custom_filter_rules');
}
const filter = filters.find(filter => filter.id === filterId)
|| whitelistFilters.find(filter => filter.id === filterId);
const filter = filters.find((filter) => filter.id === filterId)
|| whitelistFilters.find((filter) => filter.id === filterId);
let filterName = '';
if (filter) {
@@ -170,13 +173,14 @@ class Logs extends Component {
const isFiltered = checkFiltered(reason);
const isBlackList = checkBlackList(reason);
const isRewrite = checkRewrite(reason);
const isRewriteAuto = checkRewriteHosts(reason);
const isWhiteList = checkWhiteList(reason);
const isBlockedService = checkBlockedService(reason);
const isBlockedCnameIp = originalAnswer;
const filterKey = reason.replace(FILTERED, '');
const parsedFilteredReason = t('query_log_filtered', { filter: filterKey });
const currentService = SERVICES.find(service => service.id === original.serviceName);
const currentService = SERVICES.find((service) => service.id === original.serviceName);
const serviceName = currentService && currentService.name;
const filterName = this.getFilterName(filters, whitelistFilters, filterId, t);
@@ -221,6 +225,13 @@ class Logs extends Component {
<Trans>rewrite_applied</Trans>
</strong>
)}
{isRewriteAuto && (
<span className="logs__text">
<strong>
<Trans>rewrite_hosts_applied</Trans>
</strong>
</span>
)}
</div>
<div className="logs__list-wrap">
{this.renderResponseList(responses, status)}
@@ -236,6 +247,15 @@ class Logs extends Component {
const { reason, domain } = original;
const isFiltered = checkFiltered(reason);
const isRewrite = checkRewrite(reason);
const isAutoRewrite = checkRewriteHosts(reason);
if (isAutoRewrite) {
return (
<div className="logs__row logs__row--overflow logs__row--column">
{formatClientCell(row, t)}
</div>
);
}
return (
<Fragment>
@@ -360,11 +380,11 @@ class Logs extends Component {
return {
className: 'red',
};
} else if (checkWhiteList(reason)) {
} if (checkWhiteList(reason)) {
return {
className: 'green',
};
} else if (checkRewrite(reason)) {
} if (checkRewrite(reason) || checkRewriteHosts(reason)) {
return {
className: 'blue',
};
@@ -449,4 +469,4 @@ Logs.propTypes = {
t: PropTypes.func.isRequired,
};
export default withNamespaces()(Logs);
export default withTranslation()(Logs);

View File

@@ -1,6 +1,6 @@
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import ReactTable from 'react-table';
import Card from '../../ui/Card';
@@ -38,7 +38,7 @@ class AutoClients extends Component {
},
{
Header: this.props.t('requests_count'),
accessor: row => this.props.normalizedTopClients.auto[row.ip] || 0,
accessor: (row) => this.props.normalizedTopClients.auto[row.ip] || 0,
sortMethod: (a, b) => b - a,
id: 'statistics',
minWidth: COLUMN_MIN_WIDTH,
@@ -101,4 +101,4 @@ AutoClients.propTypes = {
normalizedTopClients: PropTypes.object.isRequired,
};
export default withNamespaces()(AutoClients);
export default withTranslation()(AutoClients);

View File

@@ -1,6 +1,6 @@
import React, { Component, Fragment } from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import ReactTable from 'react-table';
import { MODAL_TYPE } from '../../../helpers/constants';
@@ -25,7 +25,7 @@ class ClientsTable extends Component {
if (values.blocked_services) {
config.blocked_services = Object
.keys(values.blocked_services)
.filter(service => values.blocked_services[service]);
.filter((service) => values.blocked_services[service]);
}
if (values.upstreams && typeof values.upstreams === 'string') {
@@ -35,7 +35,7 @@ class ClientsTable extends Component {
}
if (values.tags) {
config.tags = values.tags.map(tag => tag.value);
config.tags = values.tags.map((tag) => tag.value);
} else {
config.tags = [];
}
@@ -48,12 +48,12 @@ class ClientsTable extends Component {
}
};
getOptionsWithLabels = options => (
options.map(option => ({ value: option, label: option }))
getOptionsWithLabels = (options) => (
options.map((option) => ({ value: option, label: option }))
);
getClient = (name, clients) => {
const client = clients.find(item => name === item.name);
const client = clients.find((item) => name === item.name);
if (client) {
const {
@@ -93,7 +93,7 @@ class ClientsTable extends Component {
return (
<div className="logs__row logs__row--overflow">
<span className="logs__text">
{value.map(address => (
{value.map((address) => (
<div key={address} title={address}>
{address}
</div>
@@ -141,7 +141,7 @@ class ClientsTable extends Component {
return (
<div className="logs__row logs__row--icons">
{value && value.length > 0
? value.map(service => (
? value.map((service) => (
<svg
className="service__icon service__icon--table"
title={service}
@@ -187,7 +187,7 @@ class ClientsTable extends Component {
return (
<div className="logs__row logs__row--overflow">
<span className="logs__text">
{value.map(tag => (
{value.map((tag) => (
<div key={tag} title={tag} className="small">
{tag}
</div>
@@ -200,7 +200,7 @@ class ClientsTable extends Component {
{
Header: this.props.t('requests_count'),
id: 'statistics',
accessor: row => this.props.normalizedTopClients.configured[row.name] || 0,
accessor: (row) => this.props.normalizedTopClients.configured[row.name] || 0,
sortMethod: (a, b) => b - a,
minWidth: 120,
Cell: CellWrap,
@@ -220,11 +220,10 @@ class ClientsTable extends Component {
<button
type="button"
className="btn btn-icon btn-outline-primary btn-sm mr-2"
onClick={() =>
toggleClientModal({
type: MODAL_TYPE.EDIT,
name: clientName,
})
onClick={() => toggleClientModal({
type: MODAL_TYPE.EDIT,
name: clientName,
})
}
disabled={processingUpdating}
title={t('edit_table_action')}
@@ -337,4 +336,4 @@ ClientsTable.propTypes = {
supportedTags: PropTypes.array.isRequired,
};
export default withNamespaces()(ClientsTable);
export default withTranslation()(ClientsTable);

View File

@@ -1,8 +1,10 @@
import React from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import { Field, FieldArray, reduxForm, formValueSelector } from 'redux-form';
import { Trans, withNamespaces } from 'react-i18next';
import {
Field, FieldArray, reduxForm, formValueSelector,
} from 'redux-form';
import { Trans, withTranslation } from 'react-i18next';
import flow from 'lodash/flow';
import Select from 'react-select';
@@ -62,40 +64,39 @@ const validate = (values) => {
};
const renderFieldsWrapper = (placeholder, buttonTitle) =>
function cell(row) {
const {
fields,
} = row;
return (
<div className="form__group">
{fields.map((ip, index) => (
<div key={index} className="mb-1">
<Field
name={ip}
component={renderGroupField}
type="text"
className="form-control"
placeholder={placeholder}
isActionAvailable={index !== 0}
removeField={() => fields.remove(index)}
normalizeOnBlur={data => data.trim()}
/>
</div>
))}
<button
type="button"
className="btn btn-link btn-block btn-sm"
onClick={() => fields.push()}
title={buttonTitle}
>
<svg className="icon icon--close">
<use xlinkHref="#plus" />
</svg>
</button>
</div>
);
};
const renderFieldsWrapper = (placeholder, buttonTitle) => function cell(row) {
const {
fields,
} = row;
return (
<div className="form__group">
{fields.map((ip, index) => (
<div key={index} className="mb-1">
<Field
name={ip}
component={renderGroupField}
type="text"
className="form-control"
placeholder={placeholder}
isActionAvailable={index !== 0}
removeField={() => fields.remove(index)}
normalizeOnBlur={(data) => data.trim()}
/>
</div>
))}
<button
type="button"
className="btn btn-link btn-block btn-sm"
onClick={() => fields.push()}
title={buttonTitle}
>
<svg className="icon icon--close">
<use xlinkHref="#plus" />
</svg>
</button>
</div>
);
};
// Should create function outside of component to prevent component re-renders
const renderFields = renderFieldsWrapper(i18n.t('form_enter_id'), i18n.t('form_add_id'));
@@ -109,7 +110,7 @@ const renderMultiselect = (props) => {
options={options}
className="basic-multi-select"
classNamePrefix="select"
onChange={value => input.onChange(value)}
onChange={(value) => input.onChange(value)}
onBlur={() => input.onBlur(input.value)}
placeholder={placeholder}
blurInputOnSelect={false}
@@ -118,6 +119,12 @@ const renderMultiselect = (props) => {
);
};
renderMultiselect.propTypes = {
input: PropTypes.object.isRequired,
placeholder: PropTypes.string,
options: PropTypes.object,
};
let Form = (props) => {
const {
t,
@@ -147,7 +154,7 @@ let Form = (props) => {
type="text"
className="form-control"
placeholder={t('form_client_name')}
normalizeOnBlur={data => data.trim()}
normalizeOnBlur={(data) => data.trim()}
/>
</div>
@@ -159,7 +166,8 @@ let Form = (props) => {
</div>
<div className="form__desc mt-0 mb-2">
<Trans components={[
<a href="https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists#ctag" key="0">link</a>,
<a href="https://github.com/AdguardTeam/AdGuardHome/wiki/Hosts-Blocklists#ctag"
key="0">link</a>,
]}>
tags_desc
</Trans>
@@ -201,7 +209,7 @@ let Form = (props) => {
<Tabs controlClass="form">
<div label="settings" title={props.t('main_settings')}>
{settingsCheckboxes.map(setting => (
{settingsCheckboxes.map((setting) => (
<div className="form__group" key={setting.name}>
<Field
name={setting.name}
@@ -249,7 +257,7 @@ let Form = (props) => {
</div>
</div>
<div className="services">
{SERVICES.map(service => (
{SERVICES.map((service) => (
<Field
key={service.id}
icon={`service_${service.id}`}
@@ -299,11 +307,11 @@ let Form = (props) => {
type="submit"
className="btn btn-success btn-standard"
disabled={
submitting ||
invalid ||
pristine ||
processingAdding ||
processingUpdating
submitting
|| invalid
|| pristine
|| processingAdding
|| processingUpdating
}
>
<Trans>save_btn</Trans>
@@ -342,7 +350,7 @@ Form = connect((state) => {
})(Form);
export default flow([
withNamespaces(),
withTranslation(),
reduxForm({
form: 'clientForm',
enableReinitialize: true,

View File

@@ -1,6 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
import { Trans, withNamespaces } from 'react-i18next';
import { Trans, withTranslation } from 'react-i18next';
import ReactModal from 'react-modal';
import { MODAL_TYPE } from '../../../helpers/constants';
@@ -81,4 +81,4 @@ Modal.propTypes = {
tagsOptions: PropTypes.array.isRequired,
};
export default withNamespaces()(Modal);
export default withTranslation()(Modal);

View File

@@ -1,5 +1,5 @@
import React, { Component, Fragment } from 'react';
import { withNamespaces } from 'react-i18next';
import { withTranslation } from 'react-i18next';
import PropTypes from 'prop-types';
import ClientsTable from './ClientsTable';
@@ -72,4 +72,4 @@ Clients.propTypes = {
getStats: PropTypes.func.isRequired,
};
export default withNamespaces()(Clients);
export default withTranslation()(Clients);

View File

@@ -29,15 +29,14 @@ const getFormattedWhois = (value, t) => {
return '';
};
const whoisCell = t =>
function cell(row) {
const { value } = row;
const whoisCell = (t) => function cell(row) {
const { value } = row;
return (
return (
<div className="logs__row logs__row--overflow">
<span className="logs__text logs__text--wrap">{getFormattedWhois(value, t)}</span>
</div>
);
};
);
};
export default whoisCell;

Some files were not shown because too many files have changed in this diff Show More