Compare commits
187 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
bab7b2dc65 | ||
|
|
332ef250b7 | ||
|
|
3b258e536b | ||
|
|
35a6708ccf | ||
|
|
c64fdf9442 | ||
|
|
502fe3cfc5 | ||
|
|
df1f7ebc8d | ||
|
|
fb79416ebe | ||
|
|
39420c8a00 | ||
|
|
b8567c5b56 | ||
|
|
5d7b3fb7d5 | ||
|
|
5b7871b6b8 | ||
|
|
11d65330a0 | ||
|
|
5f13d4ab4a | ||
|
|
ae51de9335 | ||
|
|
26ac9e4224 | ||
|
|
67a39045fc | ||
|
|
1f954ab673 | ||
|
|
4d66d25fda | ||
|
|
ead5a16b2a | ||
|
|
a09e59a59d | ||
|
|
8d66ede894 | ||
|
|
408a8dea44 | ||
|
|
5df42378d0 | ||
|
|
5ace7894f8 | ||
|
|
cd87169ee4 | ||
|
|
8909599739 | ||
|
|
0311e53ebb | ||
|
|
e95c4f799b | ||
|
|
6d136ee2cb | ||
|
|
b034e25b26 | ||
|
|
8aad02dbf2 | ||
|
|
f250fc16a2 | ||
|
|
89920bc518 | ||
|
|
a702eda9d9 | ||
|
|
efc69047a1 | ||
|
|
2837502a7b | ||
|
|
ab1ab30e6f | ||
|
|
b33653ec48 | ||
|
|
c0ebf9e793 | ||
|
|
14ffd1a3f5 | ||
|
|
26f78dcc65 | ||
|
|
08b033dd04 | ||
|
|
cd15bb5cce | ||
|
|
80c3112ab3 | ||
|
|
3b0914715e | ||
|
|
d01407c1a0 | ||
|
|
e24143a196 | ||
|
|
8ab6fa3300 | ||
|
|
8ad9422a48 | ||
|
|
95c5bd35c5 | ||
|
|
9ce2a66c0e | ||
|
|
44353821e6 | ||
|
|
2191c49161 | ||
|
|
c7a2cbe04e | ||
|
|
b5d437c92a | ||
|
|
490784c285 | ||
|
|
25361836bf | ||
|
|
314a0ca27b | ||
|
|
4d73a0148e | ||
|
|
4889f2d00a | ||
|
|
63d525c4d4 | ||
|
|
1041aa8aff | ||
|
|
e2ee2d48df | ||
|
|
4153d973ec | ||
|
|
0ffc0965dc | ||
|
|
e2ddc82d70 | ||
|
|
8170955a07 | ||
|
|
054980bc8b | ||
|
|
47160c16d9 | ||
|
|
daf9af9a22 | ||
|
|
9671050e5b | ||
|
|
093617e6bd | ||
|
|
3ae6043748 | ||
|
|
3fdd3f7cec | ||
|
|
0cb876a71c | ||
|
|
7f224658e0 | ||
|
|
9b7c118103 | ||
|
|
93a597fce4 | ||
|
|
e24e5741fe | ||
|
|
96bee3955c | ||
|
|
158f5e854d | ||
|
|
1a1c09135d | ||
|
|
215e3eeaf6 | ||
|
|
6503bab1aa | ||
|
|
af34500729 | ||
|
|
1a34b96d03 | ||
|
|
4bdf22eadc | ||
|
|
e96fd6e42d | ||
|
|
4b57776976 | ||
|
|
b9b42997af | ||
|
|
344a0336b0 | ||
|
|
814a1f6cb3 | ||
|
|
6cdc59db26 | ||
|
|
ca418de16f | ||
|
|
8d9f68b778 | ||
|
|
102da17f9c | ||
|
|
f59667cef0 | ||
|
|
6f1fe89bd7 | ||
|
|
1739d7975f | ||
|
|
81309c707a | ||
|
|
fcaed16638 | ||
|
|
f61bab5e59 | ||
|
|
321b1a7e9c | ||
|
|
af2adc5b33 | ||
|
|
8911a38f43 | ||
|
|
92376690a4 | ||
|
|
b8d868efe4 | ||
|
|
683121ef90 | ||
|
|
421ad744cb | ||
|
|
d2b58c81f3 | ||
|
|
f2ba8c6657 | ||
|
|
33195b9155 | ||
|
|
e215e92159 | ||
|
|
fc03ca4bb8 | ||
|
|
bcbffd90be | ||
|
|
c7f8f20aad | ||
|
|
2f9bc13ffd | ||
|
|
ea38612a1d | ||
|
|
6690441240 | ||
|
|
31b55028d5 | ||
|
|
e9c94a8c33 | ||
|
|
f0b6340e4f | ||
|
|
a4aa3426d3 | ||
|
|
d0d481dd0e | ||
|
|
39447649d6 | ||
|
|
fe056cfaf0 | ||
|
|
1376d66acb | ||
|
|
59b3a5bc6f | ||
|
|
2b1919137d | ||
|
|
105e2dd1ee | ||
|
|
4370490138 | ||
|
|
6ea93d0b8e | ||
|
|
8f00e1ca5e | ||
|
|
0d66451084 | ||
|
|
8c74f983d1 | ||
|
|
1fa6d74862 | ||
|
|
7b8588afa4 | ||
|
|
d5b826e12f | ||
|
|
e84c753357 | ||
|
|
ed0f457b7d | ||
|
|
c73dd5577f | ||
|
|
7c19221241 | ||
|
|
c16dc6cf62 | ||
|
|
06b3378fd7 | ||
|
|
69e88cf17d | ||
|
|
c8285c41d7 | ||
|
|
63923fa882 | ||
|
|
5fe984741e | ||
|
|
a0be7f5566 | ||
|
|
2e845e4f4d | ||
|
|
a5b9d1d74c | ||
|
|
c5a39b942f | ||
|
|
bebd43923b | ||
|
|
6eadca25d1 | ||
|
|
72c20acb86 | ||
|
|
79bfa6a72b | ||
|
|
a5c2cdaf38 | ||
|
|
7ff743ab32 | ||
|
|
3303d77dad | ||
|
|
58f1831032 | ||
|
|
4dba20941d | ||
|
|
360ee3e392 | ||
|
|
32baa907b6 | ||
|
|
dd7d9dc334 | ||
|
|
db30f27c8f | ||
|
|
8e4bc29103 | ||
|
|
0789e4b20d | ||
|
|
e8129f15c7 | ||
|
|
c77907694d | ||
|
|
fa2f793ac7 | ||
|
|
e5db33705d | ||
|
|
bc9bccc669 | ||
|
|
646725efb7 | ||
|
|
a93652b1c0 | ||
|
|
5f328d20ca | ||
|
|
0e030154ee | ||
|
|
1000aef1d2 | ||
|
|
b345595dbf | ||
|
|
88853b76d9 | ||
|
|
dfa278b845 | ||
|
|
480c6ac753 | ||
|
|
2e054b6732 | ||
|
|
229d040ee2 | ||
|
|
36ba8380de | ||
|
|
5dc7b848df | ||
|
|
01d9078107 |
9
.gitignore
vendored
9
.gitignore
vendored
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
65
.travis.yml
65
.travis.yml
@@ -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
|
||||
|
||||
@@ -15,8 +15,9 @@
|
||||
"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",
|
||||
"sr-cs": "Srpski",
|
||||
@@ -30,7 +31,8 @@
|
||||
"ja": "日本語",
|
||||
"zh-tw": "正體中文",
|
||||
"zh-cn": "简体中文",
|
||||
"ko": "한국어"
|
||||
"ko": "한국어",
|
||||
"th": "ภาษาไทย"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -71,7 +71,6 @@ Contents:
|
||||

|
||||
|
||||
|
||||
|
||||
## First startup
|
||||
|
||||
The first application startup is detected when there's no .yaml configuration file.
|
||||
@@ -883,13 +882,19 @@ 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",
|
||||
"blocking_ipv4": "1.2.3.4",
|
||||
"blocking_ipv6": "1:2:3::4",
|
||||
"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
|
||||
}
|
||||
|
||||
|
||||
@@ -900,13 +905,19 @@ 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",
|
||||
"blocking_ipv4": "1.2.3.4",
|
||||
"blocking_ipv6": "1:2:3::4",
|
||||
"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:
|
||||
@@ -945,7 +956,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
|
||||
}
|
||||
|
||||
|
||||
@@ -1255,6 +1266,7 @@ Response:
|
||||
}
|
||||
...
|
||||
],
|
||||
"answer_dnssec": true,
|
||||
"client":"127.0.0.1",
|
||||
"elapsedMs":"0.098403",
|
||||
"filterId":1,
|
||||
@@ -1285,12 +1297,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
|
||||
|
||||
@@ -1305,6 +1327,7 @@ Response:
|
||||
{
|
||||
"enabled": true | false
|
||||
"interval": 1 | 7 | 30 | 90
|
||||
"anonymize_client_ip": true | false
|
||||
}
|
||||
|
||||
|
||||
@@ -1316,7 +1339,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
|
||||
@@ -1426,7 +1452,7 @@ Request:
|
||||
|
||||
{
|
||||
"name": "..."
|
||||
"url": "..."
|
||||
"url": "..." // URL or an absolute file path
|
||||
"whitelist": true
|
||||
}
|
||||
|
||||
|
||||
8
Makefile
8
Makefile
@@ -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
|
||||
|
||||
30
README.md
30
README.md
@@ -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)
|
||||
|
||||
@@ -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
292
build_snap.sh
Executable 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
|
||||
1450
client/package-lock.json
generated
vendored
1450
client/package-lock.json
generated
vendored
File diff suppressed because it is too large
Load Diff
11
client/package.json
vendored
11
client/package.json
vendored
@@ -3,9 +3,9 @@
|
||||
"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",
|
||||
"build-dev": "cross-env NODE_ENV=development webpack --config webpack.dev.js",
|
||||
"watch": "cross-env NODE_ENV=development webpack --config webpack.dev.js --watch",
|
||||
"build-prod": "cross-env NODE_ENV=production webpack --config webpack.prod.js",
|
||||
"lint": "eslint client/"
|
||||
},
|
||||
"dependencies": {
|
||||
@@ -49,6 +49,7 @@
|
||||
"clean-webpack-plugin": "^0.1.19",
|
||||
"compression-webpack-plugin": "^1.1.11",
|
||||
"copy-webpack-plugin": "^4.6.0",
|
||||
"cross-env": "^7.0.2",
|
||||
"css-loader": "^2.1.1",
|
||||
"eslint": "^4.19.1",
|
||||
"eslint-config-airbnb-base": "^12.1.0",
|
||||
@@ -70,11 +71,11 @@
|
||||
"style-loader": "^0.21.0",
|
||||
"stylelint": "^9.10.1",
|
||||
"stylelint-webpack-plugin": "0.10.4",
|
||||
"svg-url-loader": "^2.3.2",
|
||||
"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"
|
||||
"webpack-merge": "^4.1.3"
|
||||
}
|
||||
}
|
||||
|
||||
BIN
client/public/assets/apple-touch-icon-180x180.png
Normal file
BIN
client/public/assets/apple-touch-icon-180x180.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
16
client/public/assets/safari-pinned-tab.svg
Normal file
16
client/public/assets/safari-pinned-tab.svg
Normal 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 |
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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": "Примери",
|
||||
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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 DHCP server. 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",
|
||||
"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.",
|
||||
@@ -479,5 +487,7 @@
|
||||
"install_static_configure": "We have detected that a dynamic IP address is used — <0>{{ip}}</0>. Do you want to use it as your static address?",
|
||||
"confirm_static_ip": "AdGuard Home will configure {{ip}} to be your static IP address. Do you want to proceed?",
|
||||
"list_updated": "{{count}} list updated",
|
||||
"list_updated_plural": "{{count}} lists updated"
|
||||
"list_updated_plural": "{{count}} lists updated",
|
||||
"dnssec_enable": "Enable DNSSEC",
|
||||
"dnssec_enable_desc": "Set DNSSEC flag in the outcoming DNS queries and check the result (DNSSEC-enabled resolver is required)"
|
||||
}
|
||||
@@ -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",
|
||||
@@ -69,7 +70,7 @@
|
||||
"enabled_protection": "Protección habilitada",
|
||||
"disable_protection": "Deshabilitar protección",
|
||||
"disabled_protection": "Protección deshabilitada",
|
||||
"refresh_statics": "Restablecer estadísticas",
|
||||
"refresh_statics": "Actualizar estadísticas",
|
||||
"dns_query": "Consultas DNS",
|
||||
"blocked_by": "<0>Bloqueado por filtros</0>",
|
||||
"stats_malware_phishing": "Malware/phishing bloqueado",
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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-فعال شده نیاز است)"
|
||||
}
|
||||
@@ -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 d’autorisation DNS",
|
||||
"dns_blocklists_desc": "AdGuard Home bloquera les domaines correspondant aux listes de blocage.",
|
||||
"dns_allowlists_desc": "Les domaines provenant de listes d’autorisation DNS seront autorisés même s’ils figurent dans l’une 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 d’autorisation",
|
||||
"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 d’autorisation",
|
||||
@@ -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 d’autorisation.",
|
||||
"form_error_url_format": "Format d’URL 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 l’IP du client",
|
||||
"anonymize_client_ip_desc": "Ne pas enregistrer l’adresse 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 d’hô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 l’adresse 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 l’adresse 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é qu’une adresse IP dynamique est utilisée — <0>{{ip}}</0>. Voulez-vous l’utiliser 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 l’indicateur DNSSEC dans les requêtes DNS sortantes et vérifier le résultat (résolveur compatible DNSSEC requis)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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サーバは、上流として指定したDoH/DoTリゾルバの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": "ルータの設定を開きます。通常は、URL(http://192.168.0.1/ または http://192.168.1.1/ など)を介してブラウザからアクセスできます。パスワードの入力を求められることがあります。パスワードを覚えていない場合は、ルータにあるボタンを押してパスワードをリセットできます。一部のルータは特定のアプリケーションを必要とします。その場合、アプリケーションはあなたのコンピュータ/電話に既にインストールされているはずです。",
|
||||
"install_devices_router_list_2": "DHCP/DNSの設定を見つけます。DNSの文字のある入力欄を探します。それは、1〜3桁の数字で4つのグループに分けられた入力欄で、2〜3セットを許可されている欄です。",
|
||||
"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を有効にする"
|
||||
}
|
||||
@@ -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 필수)"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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 dostać z 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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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.",
|
||||
|
||||
493
client/src/__locales/ro.json
Normal file
493
client/src/__locales/ro.json
Normal file
@@ -0,0 +1,493 @@
|
||||
{
|
||||
"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 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",
|
||||
"save_config": "Salvare configurare",
|
||||
"enabled_dhcp": "Server DHCP activat",
|
||||
"disabled_dhcp": "Server DHCP dezactivat",
|
||||
"dhcp_title": "Server DHCP (experimental!)",
|
||||
"dhcp_description": "Dacă routerul dvs. nu furnizează setări DHCP, puteți utiliza serverul DHCP încorporat AdGuard.",
|
||||
"dhcp_enable": "Activați serverul DHCP",
|
||||
"dhcp_disable": "Dezactivați serverul DHCP",
|
||||
"dhcp_not_found": "Este sigur să activați serverul DHCP încorporat - nu am găsit servere DHCP active în rețea. Cu toate acestea, vă recomandăm să-l verificați manual, deoarece testul nostru automat nu oferă în prezent 100% garanție.",
|
||||
"dhcp_found": "În rețea se găsește un server DHCP activ. Nu este sigur să activați serverul DHCP încorporat.",
|
||||
"dhcp_leases": "DHCP închiriate",
|
||||
"dhcp_static_leases": "DHCP statice închiriate",
|
||||
"dhcp_leases_not_found": "Nu s-au găsit DHCP închiriate",
|
||||
"dhcp_config_saved": "Configurare DHCP salvată cu succes",
|
||||
"form_error_required": "Câmp necesar",
|
||||
"form_error_ip4_format": "Format IPv4 nevalid",
|
||||
"form_error_ip6_format": "Format IPv6 nevalid",
|
||||
"form_error_ip_format": "Format IP nevalid",
|
||||
"form_error_mac_format": "Format MAC nevalid",
|
||||
"form_error_client_id_format": "Format ID de client nevalid",
|
||||
"form_error_positive": "Trebuie să fie mai mare de 0",
|
||||
"form_error_negative": "Trebuie să fie egală cu 0 sau mai mare",
|
||||
"dhcp_form_gateway_input": "IP Gateway",
|
||||
"dhcp_form_subnet_input": "Mască subnet",
|
||||
"dhcp_form_range_title": "Interval de adrese IP",
|
||||
"dhcp_form_range_start": "Start interval",
|
||||
"dhcp_form_range_end": "Sfârșit interval",
|
||||
"dhcp_form_lease_title": "Timp de închidere DHCP (în secunde)",
|
||||
"dhcp_form_lease_input": "Durata locației",
|
||||
"dhcp_interface_select": "Selectați interfața DHCP",
|
||||
"dhcp_hardware_address": "Adresa mașinii",
|
||||
"dhcp_ip_addresses": "Adrese IP",
|
||||
"dhcp_table_hostname": "Hostname",
|
||||
"dhcp_table_expires": "Expiră",
|
||||
"dhcp_warning": "Dacă doriți oricum să activați serverul DHCP, verificați că nu există un alt server DHCP activ în rețeaua dvs. Altfel, poate întrerupe Internetul pe toate aparatele conectate!",
|
||||
"dhcp_error": "Nu am putut determina dacă există un alt server DHCP în rețea.",
|
||||
"dhcp_static_ip_error": "Pentru a utiliza serverul DHCP trebuie setată o adresă IP statică. Nu am reușit să stabilim dacă această interfață de rețea este configurată folosind adresa IP statică. Vă rugăm să setați manual o adresă IP statică.",
|
||||
"dhcp_dynamic_ip_found": "Sistemul dvs. folosește configurația dinamică a adreselor IP pentru interfața <0>{{interfaceName}}</0>. Pentru a utiliza serverul DHCP trebuie setată o adresă IP statică. Adresa IP curentă este <0>{{ipAddress}}</0>. Vom seta automat această adresă IP ca statică dacă apăsați butonul Activați DHCP.",
|
||||
"dhcp_lease_added": "\"{{key}}\" statică închiriată adăugată cu succes",
|
||||
"dhcp_lease_deleted": "\"{{key}}\" statică închiriată eliminată cu succes",
|
||||
"dhcp_new_static_lease": "Închiriere statică nouă",
|
||||
"dhcp_static_leases_not_found": "Nu s-au găsit închirieri statice DHCP",
|
||||
"dhcp_add_static_lease": "Adăugați închiriere statică",
|
||||
"dhcp_reset": "Sunteți sigur că doriți să resetați configurația DHCP?",
|
||||
"delete_confirm": "Sunteți sigur că doriți să ștergeți \"{{key}}\"?",
|
||||
"form_enter_hostname": "Intrați hostname",
|
||||
"error_details": "Detalii eroare",
|
||||
"back": "Înapoi",
|
||||
"dashboard": "Tablou de bord",
|
||||
"settings": "Setări",
|
||||
"filters": "Filtre",
|
||||
"query_log": "Jurnal interogări",
|
||||
"faq": "FAQ",
|
||||
"version": "Versiune",
|
||||
"address": "adresă",
|
||||
"on": "ON",
|
||||
"off": "OFF",
|
||||
"copyright": "Copyright",
|
||||
"homepage": "Homepage",
|
||||
"report_an_issue": "Raportați o problemă",
|
||||
"privacy_policy": "Politică confidențialitate",
|
||||
"enable_protection": "Activați protecția",
|
||||
"enabled_protection": "Protecție activată",
|
||||
"disable_protection": "Dezactivați protecția",
|
||||
"disabled_protection": "Protecție dezactivată",
|
||||
"refresh_statics": "Actualizare statistici",
|
||||
"dns_query": "Interogări DNS",
|
||||
"blocked_by": "<0>Blocate de Filtre</0>",
|
||||
"stats_malware_phishing": "Malware/phishing blocate",
|
||||
"stats_adult": "Site-uri cu conținut adult blocate",
|
||||
"stats_query_domain": "Domeniile cele mai căutate",
|
||||
"for_last_24_hours": "în ultimele 24 ore",
|
||||
"for_last_days": "în ultimele {{count}} zile",
|
||||
"for_last_days_plural": "pentru ultimele {{count}} zile",
|
||||
"no_domains_found": "Nu s-au găsit domenii",
|
||||
"requests_count": "Cont interogări",
|
||||
"top_blocked_domains": "Domeniile blocate cel mai des",
|
||||
"top_clients": "Clienți de top",
|
||||
"no_clients_found": "Nu au fost găsiți clienți",
|
||||
"general_statistics": "Statistici generale",
|
||||
"number_of_dns_query_days": "Un număr de interogări DNS procesate în ultima {{count}} zi",
|
||||
"number_of_dns_query_days_plural": "Un număr de interogări DNS procesate în ultimele {{count}} zile",
|
||||
"number_of_dns_query_24_hours": "Un număr de interogări DNS procesate în ultimele 24 de ore",
|
||||
"number_of_dns_query_blocked_24_hours": "Un număr de solicitări DNS blocate de filtrele de blocare și listele de blocaj de hosts",
|
||||
"number_of_dns_query_blocked_24_hours_by_sec": "Un număr de solicitări DNS blocate de modulul de securitate de navigare AdGuard",
|
||||
"number_of_dns_query_blocked_24_hours_adult": "Un număr de site-uri web pentru adulți blocate",
|
||||
"enforced_save_search": "Căutare protejată întărită",
|
||||
"number_of_dns_query_to_safe_search": "O serie de solicitări DNS făcute pe motoare de căutare cu Căutarea protejată activată",
|
||||
"average_processing_time": "Timpul mediu de procesare",
|
||||
"average_processing_time_hint": "Timp mediu în milisecunde la procesarea unei cereri DNS",
|
||||
"block_domain_use_filters_and_hosts": "Blocați domenii folosind filtre și fișiere hosts",
|
||||
"filters_block_toggle_hint": "Puteți configura regulile de blocare în setările <a href='#filters'> Filtre </a>.",
|
||||
"use_adguard_browsing_sec": "Utilizați serviciul Navigarea în Securitate AdGuard",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home va verifica dacă domeniul este în lista negră a serviciul web de securitate de navigare. Pentru acesta va utiliza un lookup API discret: un prefix scurt al numelui de domeniu SHA256 hash este trimis serverului.",
|
||||
"use_adguard_parental": "Utilizați controlul parental AdGuard",
|
||||
"use_adguard_parental_hint": "AdGuard Home va verifica dacă este conținut adult pe domeniu. Utilizează aceeași API discret ca cel utilizat de serviciul de securitate de navigare.",
|
||||
"enforce_safe_search": "Căutare protejată întărită",
|
||||
"enforce_save_search_hint": "AdGuard Home poate impune căutarea protejată în următoarele motoare de căutare: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay.",
|
||||
"no_servers_specified": "Nu sunt specificate servere",
|
||||
"general_settings": "Setări Generale",
|
||||
"dns_settings": "Setări DNS",
|
||||
"dns_blocklists": "DNS liste blocări",
|
||||
"dns_allowlists": "DNS liste autorizări",
|
||||
"dns_blocklists_desc": "AdGuard Home blochează domenii incluse în liste de blocări.",
|
||||
"dns_allowlists_desc": "Domeniile DNS autorizate vor fi permise, chiar dacă se află pe orice listă de blocări.",
|
||||
"custom_filtering_rules": "Reguli filtrare personale",
|
||||
"encryption_settings": "Setări de criptare",
|
||||
"dhcp_settings": "Setări DHCP",
|
||||
"upstream_dns": "Servere upstream DNS",
|
||||
"upstream_dns_hint": "Dacă mențineți acest câmp gol, AdGuard Home va folosi <a href='https://www.quad9.net/' target='_blank'>Quad9</a> ca upstream.",
|
||||
"test_upstream_btn": "Testați upstreams",
|
||||
"upstreams": "Upstreams",
|
||||
"apply_btn": "Aplică",
|
||||
"disabled_filtering_toast": "Filtrare dezactivată",
|
||||
"enabled_filtering_toast": "Filtrare activată",
|
||||
"disabled_safe_browsing_toast": "Navigare protejată dezactivată",
|
||||
"enabled_safe_browsing_toast": "Navigare protejată activată",
|
||||
"disabled_parental_toast": "Control parental dezactivat",
|
||||
"enabled_parental_toast": "Control parental activat",
|
||||
"disabled_safe_search_toast": "Căutare protejată dezactivată",
|
||||
"enabled_save_search_toast": "Căutare protejată activată",
|
||||
"enabled_table_header": "Activat",
|
||||
"name_table_header": "Nume",
|
||||
"list_url_table_header": "Lista URL",
|
||||
"rules_count_table_header": "Număr de reguli",
|
||||
"last_time_updated_table_header": "Ultima aducere la zi",
|
||||
"actions_table_header": "Acțiuni",
|
||||
"edit_table_action": "Editare",
|
||||
"delete_table_action": "Sterge",
|
||||
"filters_and_hosts_hint": "AdGuard Home înțelege regulile de bază de blocare cât și sintaxa fișierelor hosts.",
|
||||
"no_blocklist_added": "Listă blocări goală",
|
||||
"no_whitelist_added": "Listă autorizări goală",
|
||||
"add_blocklist": "Adăugați blocaj",
|
||||
"add_allowlist": "Adăugați autorizare",
|
||||
"cancel_btn": "Anulare",
|
||||
"enter_name_hint": "Intrați numele",
|
||||
"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",
|
||||
"edit_blocklist": "Editare blocare",
|
||||
"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 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",
|
||||
"example_meaning_filter_block": "blochează accesul la domeniul exemplu.org și la toate subdomeniile sale",
|
||||
"example_meaning_filter_whitelist": "deblochează accesul la domeniul exemplu.org și la toate subdomeniile sale",
|
||||
"example_meaning_host_block": "AdGuard Home va returna acum adresa 127.0.0.1 pentru domeniul example.org (dar nu și subdomeniile sale).",
|
||||
"example_comment": "! Iată cum se adăugă o descriere",
|
||||
"example_comment_meaning": "comentariu",
|
||||
"example_comment_hash": "# Astfel putem lăsa comentarii",
|
||||
"example_regex_meaning": "blocare acces la domenii care corespund expresiei obișnuite specificate",
|
||||
"example_upstream_regular": "DNS clasic (peste UDP)",
|
||||
"example_upstream_dot": "<0>DNS-over-TLS</0> criptat",
|
||||
"example_upstream_doh": "<0>DNS-over-HTTPS</0> criptat",
|
||||
"example_upstream_sdns": "puteți utiliza <0>DNS Stamps</0> pentru rezolvere <1>DNSCrypt</1> sau <2>DNS-over-HTTPS</2>",
|
||||
"example_upstream_tcp": "DNS clasic (peste TCP)",
|
||||
"all_lists_up_to_date_toast": "Toate listele sunt deja la zi",
|
||||
"updated_upstream_dns_toast": "Serverele DNS upstream aduse la zi",
|
||||
"dns_test_ok_toast": "Serverele DNS specificate funcționează corect",
|
||||
"dns_test_not_ok_toast": "Serverul \"{{key}}\": nu a putut fi utilizat, verificați dacă l-ați scris corect",
|
||||
"unblock_btn": "Deblocați",
|
||||
"block_btn": "Blocați",
|
||||
"time_table_header": "Ora",
|
||||
"domain_name_table_header": "Nume domeniu",
|
||||
"type_table_header": "Tip",
|
||||
"response_table_header": "Răspuns",
|
||||
"client_table_header": "Client",
|
||||
"empty_response_status": "Gol",
|
||||
"show_all_filter_type": "Arată tot",
|
||||
"show_filtered_type": "Arată cele filtrate",
|
||||
"no_logs_found": "Nici un jurnal găsit",
|
||||
"refresh_btn": "Actualizare",
|
||||
"previous_btn": "Anterior",
|
||||
"next_btn": "Următor",
|
||||
"loading_table_status": "Se încarcă...",
|
||||
"page_table_footer_text": "Pagina",
|
||||
"rows_table_footer_text": "linii",
|
||||
"updated_custom_filtering_toast": "Reguli personalizate de filtrare aduse la zi",
|
||||
"rule_removed_from_custom_filtering_toast": "Regulă scoasă din regullei personalizate de filtrare",
|
||||
"rule_added_to_custom_filtering_toast": "Regula adăugată la regulile de filtrare personalizate",
|
||||
"query_log_response_status": "Statut: {{value}}",
|
||||
"query_log_filtered": "Filtrat de {{filter}}",
|
||||
"query_log_confirm_clear": "Sunteți sigur că doriți să ștergeți întregul jurnal de interogări?",
|
||||
"query_log_cleared": "Jurnalul de interogare a fost șters cu succes",
|
||||
"query_log_clear": "Curăță jurnalele",
|
||||
"query_log_retention": "Retenție jurnale interogare",
|
||||
"query_log_enable": "Activați jurnal",
|
||||
"query_log_configuration": "Configurația jurnalelor",
|
||||
"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",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"null_ip": "IP nul",
|
||||
"custom_ip": "IP personalizat",
|
||||
"blocking_ipv4": "Blocarea IPv4",
|
||||
"blocking_ipv6": "Blocarea IPv6",
|
||||
"form_enter_rate_limit": "Intrați limita ratei",
|
||||
"rate_limit": "Limita ratei",
|
||||
"edns_enable": "Activați clientul subnet EDNS",
|
||||
"edns_cs_desc": "Dacă este activat, AdGuard Home va trimite subnet-ele clienților către serverele DNS.",
|
||||
"rate_limit_desc": "Numărul de solicitări pe secundă pe care un singur client este permis să le facă (0: nelimitat)",
|
||||
"blocking_ipv4_desc": "Adresa IP de returnat pentru o cerere A de blocare",
|
||||
"blocking_ipv6_desc": "Adresa IP de returnat pentru o cerere AAAA de blocare",
|
||||
"blocking_mode_default": "Implicit: Răspunde cu NXDOMAIN cînd sunt blocate de regula Adblock-style; răspunde cu adresa IP specificată în regulă când sunt blocate de regula /etc/hosts-style",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN: Răspunde cu codul NXDOMAIN",
|
||||
"blocking_mode_null_ip": "IP nul: răspunde cu o adresă IP zero (0.0.0.0 pentru A; :: pentru AAAA)",
|
||||
"blocking_mode_custom_ip": "IP personalizat: răspunde cu o adresă IP setată manual",
|
||||
"upstream_dns_client_desc": "Dacă mențineți acest câmp gol, AdGuard Home va folosi serverele configurate în <0>setările DNS</0>.",
|
||||
"source_label": "Sursă",
|
||||
"found_in_known_domain_db": "Găsit în baza de date de domenii cunoscută.",
|
||||
"category_label": "Categorie",
|
||||
"rule_label": "Regulă",
|
||||
"list_label": "Listă",
|
||||
"unknown_filter": "Filtru necunoscut {{filterId}}",
|
||||
"install_welcome_title": "Bun venit la AdGuard Home!",
|
||||
"install_welcome_desc": "AdGuard Home este un server DNS care blochează anunțuri și trackere la nivel de rețea. Scopul său este de a vă da controlul pe întreaga rețea și toate aparatele dvs. și fără un program din partea clientului.",
|
||||
"install_settings_title": "Interfață administrator web",
|
||||
"install_settings_listen": "Interfață de ascultare",
|
||||
"install_settings_port": "Port",
|
||||
"install_settings_interface_link": "Interfața dvs. de administrare AdGuard Home va fi disponibilă pe următoarele adrese:",
|
||||
"form_error_port": "Intrați un port valid",
|
||||
"install_settings_dns": "Server DNS",
|
||||
"install_settings_dns_desc": "Va trebui să configurați aparatele sau routerul pentru a utiliza serverul DNS pe următoarele adrese:",
|
||||
"install_settings_all_interfaces": "Toate interfețele",
|
||||
"install_auth_title": "Autentificare",
|
||||
"install_auth_desc": "Este foarte recomandat să configurați o parolă pentru accesul la interfața web de administrare AdGuard Home. Chiar dacă este accesibil numai în rețeaua dvs. locală, este încă important să îl protejați de accesul fără restricții.",
|
||||
"install_auth_username": "Nume utilizator",
|
||||
"install_auth_password": "Parola",
|
||||
"install_auth_confirm": "Confirmați parola",
|
||||
"install_auth_username_enter": "Intrați numele de utilizator",
|
||||
"install_auth_password_enter": "Intrați parola",
|
||||
"install_step": "Etapa",
|
||||
"install_devices_title": "Configurați aparatele dvs",
|
||||
"install_devices_desc": "Pentru a începe să utilizați AdGuard Home, trebuie să configurați aparatele.",
|
||||
"install_submit_title": "Felicitări!",
|
||||
"install_submit_desc": "Etapa de instalare este terminată și sunteți gata să începeți utilizarea AdGuard Home.",
|
||||
"install_devices_router": "Router",
|
||||
"install_devices_router_desc": "Această configurație va acoperi automat toate aparatele conectate la routerul de acasă și nu va trebui să le configurați manual pe fiecare.",
|
||||
"install_devices_address": "Serverul DNS AdGuard Home ascultă pe următoarele adrese",
|
||||
"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.",
|
||||
"install_devices_windows_list_4": "Selectați conexiunea activă, faceți clic dreapta pe ea și alegeți \"Proprietăți\".",
|
||||
"install_devices_windows_list_5": "Găsiți Internet Protocol Versiunea 4 (TCP/IP) din listă, selectați-l și apoi faceți din nou clic pe Proprietăți.",
|
||||
"install_devices_windows_list_6": "Alegeți Utilizați următoarele adrese de server DNS și introduceți adresele de server AdGuard Home.",
|
||||
"install_devices_macos_list_1": "Faceți clic pe pictograma Apple și accesați Preferințele Sistemului.",
|
||||
"install_devices_macos_list_2": "Faceți clic pe Network.",
|
||||
"install_devices_macos_list_3": "Selectați prima conexiune din listă și faceți clic pe Avansat.",
|
||||
"install_devices_macos_list_4": "Selectați fila DNS și introduceți adresele serverului dvs. AdGuard Home.",
|
||||
"install_devices_android_list_1": "Din ecranul principal al Meniului Android, tapați Setări.",
|
||||
"install_devices_android_list_2": "Tapați Wi-Fi din meniu. Ecranul cu toate rețelele disponibile va fi afișat (este imposibil să setați DNS personalizat pentru conexiunea mobilă).",
|
||||
"install_devices_android_list_3": "Apăsați lung pe rețeaua la care sunteți conectat și tapați Modificare Rețea.",
|
||||
"install_devices_android_list_4": "Pe unele aparate, poate fi necesar să bifați caseta Advanced pentru a vedea setările ulterioare. Pentru a ajusta setările DNS Android, va trebui să comutați setările IP de la DHCP la Static.",
|
||||
"install_devices_android_list_5": "Schimbați valorile DNS 1 și DNS 2 la cele ale serverului dvs. AdGuard Home.",
|
||||
"install_devices_ios_list_1": "Din ecranul de start, tapați Setări.",
|
||||
"install_devices_ios_list_2": "Alegeți Wi-Fi în meniul din stânga (este imposibil să configurați DNS pentru rețelele mobile).",
|
||||
"install_devices_ios_list_3": "Tapați numele rețelei active curente.",
|
||||
"install_devices_ios_list_4": "În câmpul DNS, introduceți adresele serverului dvs. AdGuard Home.",
|
||||
"get_started": "Să începem",
|
||||
"next": "Următor",
|
||||
"open_dashboard": "Deschideți Tabloul de bord",
|
||||
"install_saved": "Salvat cu succes",
|
||||
"encryption_title": "Criptare",
|
||||
"encryption_desc": "Suport de Criptare (HTTPS/TLS) pentru DNS și interfața web administrator",
|
||||
"encryption_config_saved": "Configurația de criptare salvată",
|
||||
"encryption_server": "Nume de server",
|
||||
"encryption_server_enter": "Intrați numele domeniului",
|
||||
"encryption_server_desc": "Pentru a utiliza HTTPS, trebuie intrat numele serverului care corespunde certificatului SSL.",
|
||||
"encryption_redirect": "Redirecționați automat la HTTPS",
|
||||
"encryption_redirect_desc": "Dacă este bifat, AdGuard Home vă va redirecționa automat de la adrese HTTP la HTTPS.",
|
||||
"encryption_https": "Port HTTPS",
|
||||
"encryption_https_desc": "Dacă portul HTTPS este configurat, interfața administrator AdGuard Home va fi accesibilă prin HTTPS și va oferi de asemenea DNS-over-HTTPS în locația '/DNS-query'.",
|
||||
"encryption_dot": "Port DNS-over-TLS",
|
||||
"encryption_dot_desc": "Dacă acest port este configurat, AdGuard Home va rula un server DNS-over-TLS pe acest port.",
|
||||
"encryption_certificates": "Certificate",
|
||||
"encryption_certificates_desc": "Pentru a utiliza criptarea, trebuie furnizate o serie de certificate SSL valabile pentru domeniul dvs.. Puteți obține un certificat gratuit pe <0>{{link}}</0> sau îl puteți cumpăra de la una din Autoritățile Certificate de încredere.",
|
||||
"encryption_certificates_input": "Copiați/lipiți certificatele dvs. PEM-codate aici.",
|
||||
"encryption_status": "Statut",
|
||||
"encryption_expire": "Expiră",
|
||||
"encryption_key": "Cheie privată",
|
||||
"encryption_key_input": "Copiați/lipiți cheia dvs. privată PEM-codată pentru certificatul dvs. aici.",
|
||||
"encryption_enable": "Activați criptarea (HTTPS, DNS-over-HTTPS, și DNS-over-TLS)",
|
||||
"encryption_enable_desc": "Dacă este activată criptarea, interfața administrator AdGuard Home va lucra peste HTTPS, și serverul DNS va asculta pentru cereri peste DNS-over-HTTPS și DNS-over-TLS.",
|
||||
"encryption_chain_valid": "Lanțul de certificate valid",
|
||||
"encryption_chain_invalid": "Lanțul de certificate nevalid",
|
||||
"encryption_key_valid": "Aceasta este o cheie privată {{type}} validă",
|
||||
"encryption_key_invalid": "Aceasta este o cheie privată {{type}} nevalidă",
|
||||
"encryption_subject": "Obiect",
|
||||
"encryption_issuer": "Emitent",
|
||||
"encryption_hostnames": "Nume de host",
|
||||
"encryption_reset": "Sunteți sigur că doriți să resetați setările de criptare?",
|
||||
"topline_expiring_certificate": "Certificatul dvs. SSL este pe cale să expire. Actualizați <0>Setările de criptare</0>.",
|
||||
"topline_expired_certificate": "Certificatul dvs. SSL a expirat. Actualizați <0>Setările de criptare</0>.",
|
||||
"form_error_port_range": "Introduceți valoarea portului între 80-65535",
|
||||
"form_error_port_unsafe": "Acesta este un port nesigur",
|
||||
"form_error_equal": "Nu trebuie să fie egale",
|
||||
"form_error_password": "Parolele nu corespund",
|
||||
"reset_settings": "Resetare setări",
|
||||
"update_announcement": "AdGuard Home {{version}} este disponibil! <0>Faceți clic aici</0> pentru mai multe informații.",
|
||||
"setup_guide": "Ghid de instalare",
|
||||
"dns_addresses": "Adrese DNS",
|
||||
"dns_start": "Serverul DNS demarează",
|
||||
"dns_status_error": "Eroare la verificare statut server DNS",
|
||||
"down": "Down",
|
||||
"fix": "Fix",
|
||||
"dns_providers": "Iată o <0>listă de furnizori DNS cunoscuți</0> ce pot fi aleși.",
|
||||
"update_now": "Actualizați acum",
|
||||
"update_failed": "Auto-actualizarea a eșuat. Vă rugăm să <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'>urmați aceste etape</a> pentru a actualiza manual.",
|
||||
"processing_update": "Vă rugăm să așteptați, AdGuard Home se actualizează...",
|
||||
"clients_title": "Clienți",
|
||||
"clients_desc": "Configură aparatele conectate la AdGuard Home",
|
||||
"settings_global": "General",
|
||||
"settings_custom": "Personalizat",
|
||||
"table_client": "Client",
|
||||
"table_name": "Nume",
|
||||
"save_btn": "Salvați",
|
||||
"client_add": "Adăugați client",
|
||||
"client_new": "Client nou",
|
||||
"client_edit": "Editare client",
|
||||
"client_identifier": "Identificator",
|
||||
"ip_address": "Adresa IP",
|
||||
"client_identifier_desc": "Clienții pot fi identificați prin adresa IP, CIDR, adresa MAC. Vă rugăm să rețineți că utilizarea MAC ca identificator este posibilă numai dacă AdGuard Home este și un <0>server DHCP</0>",
|
||||
"form_enter_ip": "Intrați IP",
|
||||
"form_enter_mac": "Intrați MAC",
|
||||
"form_enter_id": "Intrați identificator",
|
||||
"form_add_id": "Adăugați identificator",
|
||||
"form_client_name": "Intrați nume client",
|
||||
"client_global_settings": "Folosiți setări globale",
|
||||
"client_deleted": "Clientul \"{{key}}\" a fost șters cu succes",
|
||||
"client_added": "Clientul \"{{key}}\" a fost adăugat cu succes",
|
||||
"client_updated": "Clientul \"{{key}}\" a fost adus la zi cu succes",
|
||||
"clients_not_found": "Nu au fost găsiți clienți",
|
||||
"client_confirm_delete": "Sunteți sigur că doriți să ștergeți clientul \"{{key}}\"?",
|
||||
"list_confirm_delete": "Sigur doriți să ștergeți această listă?",
|
||||
"auto_clients_title": "Clienți (runtime)",
|
||||
"auto_clients_desc": "Date despre clienții folosite de AdGuard Home, dar care nu sunt stocate în configurație",
|
||||
"access_title": "Setări de acces",
|
||||
"access_desc": "Aici puteți configura regulile de acces pentru serverul DNS AdGuard Home.",
|
||||
"access_allowed_title": "Clienți autorizați",
|
||||
"access_allowed_desc": "O listă de adrese CIDR sau IP. Dacă este configurat, AdGuard Home va accepta doar cereri de la aceste adrese IP.",
|
||||
"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. 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",
|
||||
"check_updates_now": "Verificați actualizările acum",
|
||||
"dns_privacy": "Confidențialitate DNS",
|
||||
"setup_dns_privacy_1": "<0>DNS-over-TLS:</0> Folosiți stringul <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_2": "<0>DNS-over-HTTPS:</0> Utilizați stringul <1>{{address}}</1>.",
|
||||
"setup_dns_privacy_3": "<0>Rețineți că protocoalele DNS criptate sunt acceptate numai pe Android 9. Așadar, trebuie să instalați software suplimentar pentru alte sisteme de operare.</0><0>Iată o listă de software pe care o puteți utiliza.</0>",
|
||||
"setup_dns_privacy_android_1": "Android 9 acceptă nativ DNS-over-TLS. Pentru a o configura, accesați Setări → Rețea și internet → Advanced → Private DNS și introduceți numele de domeniu acolo.",
|
||||
"setup_dns_privacy_android_2": "<0>AdGuard pentru Android</0> acceptă <1>DNS-over-HTTPS</1> și <1>DNS-over-TLS</1>.",
|
||||
"setup_dns_privacy_android_3": "<0>Intra</0> adaugă <1>DNS-over-HTTPS</1> suport pentru Android.",
|
||||
"setup_dns_privacy_ios_1": "<0>DNSCloak</0> acceptă <1>DNS-over-HTTPS</1>, dar pentru a-l configura pentru a utiliza propriul server, va trebui să generezi un <2>DNS Stamp</2> pentru aceasta.",
|
||||
"setup_dns_privacy_ios_2": "<0>AdGuard pentru iOS</0> acceptă instalarea<1>DNS-over-HTTPS</1> și <1>DNS-over-TLS</1>.",
|
||||
"setup_dns_privacy_other_title": "Alte implementări",
|
||||
"setup_dns_privacy_other_1": "AdGuard Home poate fi un client DNS sigur pe orice platformă.",
|
||||
"setup_dns_privacy_other_2": "<0>dnsproxy</0> acceptă toate protocoalele DNS securizate cunoscute.",
|
||||
"setup_dns_privacy_other_3": "<0>dnscrypt-proxy</0> acceptă <1>DNS-over-HTTPS</1>.",
|
||||
"setup_dns_privacy_other_4": "<0>Mozilla Firefox</0> acceptă <1>DNS-over-HTTPS</1>.",
|
||||
"setup_dns_privacy_other_5": "Veți găsi mai multe implementări <0>aici</0> și <1>aici</1>.",
|
||||
"setup_dns_notice": "Pentru a utiliza <1>DNS-over-HTTPS</1> sau <1>DNS-over-TLS</1>, trebuie să <0>configurați Criptarea</0> în setările AdGuard Home.",
|
||||
"rewrite_added": "Rescriere DNS pentru \"{{key}}\" adăugat cu succes",
|
||||
"rewrite_deleted": "Rescriere DNS pentru \"{{key}}\" ștearsă cu succes",
|
||||
"rewrite_add": "Adăugați rescriere DNS",
|
||||
"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 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",
|
||||
"form_error_domain_format": "Format de răspuns nevalid",
|
||||
"form_error_answer_format": "Format de răspuns nevalid",
|
||||
"configure": "Configurați",
|
||||
"main_settings": "Setări principale",
|
||||
"block_services": "Blocare anumite servicii",
|
||||
"blocked_services": "Servicii blocate",
|
||||
"blocked_services_desc": "Permite blocarea rapidă a site-urilor și serviciilor populare.",
|
||||
"blocked_services_saved": "Serviciile blocate au fost salvate cu succes",
|
||||
"blocked_services_global": "Folosiți servicii blocate globale",
|
||||
"blocked_service": "Serviciu blocat",
|
||||
"block_all": "Blocați tot",
|
||||
"unblock_all": "Deblocați tot",
|
||||
"encryption_certificate_path": "Locația certificatului",
|
||||
"encryption_private_key_path": "Locația cheii private",
|
||||
"encryption_certificates_source_path": "Precizați locația certificatelor",
|
||||
"encryption_certificates_source_content": "Lipiți conținutul certificatelor",
|
||||
"encryption_key_source_path": "Precizați un fișier cu cheie privată",
|
||||
"encryption_key_source_content": "Lipiți conținutul cheii private",
|
||||
"stats_params": "Configurația statisticilor",
|
||||
"config_successfully_saved": "Configurarea a fost salvată cu succes",
|
||||
"interval_24_hour": "24 ore",
|
||||
"interval_days": "{{count}} zi",
|
||||
"interval_days_plural": "{{count}} zile",
|
||||
"domain": "Domeniu",
|
||||
"answer": "Răspuns",
|
||||
"filter_added_successfully": "Filtrul a fost adăugat cu succes",
|
||||
"filter_updated": "Filtrul a fost actualizat cu succes",
|
||||
"statistics_configuration": "Configurația statisticilor",
|
||||
"statistics_retention": "Statistică retenții",
|
||||
"statistics_retention_desc": "Dacă reduceți valoarea intervalului, unele date vor fi pierdute",
|
||||
"statistics_clear": " Șterge statisticile",
|
||||
"statistics_clear_confirm": "Sunteți sigur că doriți să ștergeți statisticile?",
|
||||
"statistics_retention_confirm": "Sunteți sigur că doriți să schimbați retenția statisticilor? Dacă reduceți valoarea intervalului, unele date vor fi pierdute",
|
||||
"statistics_cleared": "Statisticile au fost șterse cu succes",
|
||||
"interval_hours": "{{count}} oră",
|
||||
"interval_hours_plural": "{{count}} ore",
|
||||
"filters_configuration": "Configurația filtrelor",
|
||||
"filters_enable": "Activați filtrele",
|
||||
"filters_interval": "Interval de actualizare filtre",
|
||||
"disabled": "Dezactivat",
|
||||
"username_label": "Nume utilizator",
|
||||
"username_placeholder": "Intrați numele de utilizator",
|
||||
"password_label": "Parola",
|
||||
"password_placeholder": "Intrați parola",
|
||||
"sign_in": "Conectare",
|
||||
"sign_out": "Deconectare",
|
||||
"forgot_password": "Ați uitat parola?",
|
||||
"forgot_password_desc": "Vă rugăm să urmați <0>aceste etape</0> pentru a crea o nouă parolă pentru contul de utilizator.",
|
||||
"location": "Locația",
|
||||
"orgname": "Numele organizației",
|
||||
"netname": "Numele rețelei",
|
||||
"descr": "Descriere",
|
||||
"whois": "Whois",
|
||||
"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.",
|
||||
"example_rewrite_domain": "rescrie răspunsuri numai pentru acest nume de domeniu.",
|
||||
"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.",
|
||||
"tags_title": "Etichete",
|
||||
"tags_desc": "Puteți selecta etichetele care corespund clientului. Etichetele pot fi incluse în regulile de filtrare și vă permit să le aplicați mai exact. <0>Aflați mai multe</0>",
|
||||
"form_select_tags": "Selectați etichete client",
|
||||
"check_title": "Verificați filtrarea",
|
||||
"check_desc": "Verificați dacă numele de host este filtrat",
|
||||
"check": "Verificați",
|
||||
"form_enter_host": "Intrați un nume de host",
|
||||
"filtered_custom_rules": "Filtrat prin reguli de filtrare personalizate",
|
||||
"host_whitelisted": "Numele de host este în lista albă",
|
||||
"check_ip": "Adrese IP: {{ip}}",
|
||||
"check_cname": "CNAME: {{cname}}",
|
||||
"check_reason": "Cauza: {{reason}}",
|
||||
"check_rule": "Regula: {{rule}}",
|
||||
"check_service": "Nume servici: {{service}}",
|
||||
"check_not_found": "Nu se găsește în listele de filtre",
|
||||
"client_confirm_block": "Sunteți sigur că doriți să blocați clientul \"{{ip}}\"?",
|
||||
"client_confirm_unblock": "Sunteți sigur că doriți să deblocați clientul \"{{ip}}\"?",
|
||||
"client_blocked": "Clientul \"{{ip}}\" blocat cu succes",
|
||||
"client_unblocked": "Clientul \"{{ip}}\" deblocat cu succes",
|
||||
"static_ip": "Adresa IP Statică",
|
||||
"static_ip_desc": "AdGuard Home este un server, deci are nevoie de o adresă IP statică pentru a funcționa corect. Altfel, routerul dvs. poate eventual să atribuie o adresă IP diferită acestui dispozitiv.",
|
||||
"set_static_ip": "Setați o adresă IP statică",
|
||||
"install_static_ok": "Vești bune! Adresa IP statică este deja configurată",
|
||||
"install_static_error": "AdGuard Home nu o poate configura automat pentru această interfață de rețea. Vă rugăm să căutați instrucțiuni despre cum să faceți acest lucru manual.",
|
||||
"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",
|
||||
"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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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": "Upraviť",
|
||||
"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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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",
|
||||
|
||||
@@ -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.",
|
||||
|
||||
415
client/src/__locales/th.json
Normal file
415
client/src/__locales/th.json
Normal file
@@ -0,0 +1,415 @@
|
||||
{
|
||||
"client_settings": "การตั้งค่าไคลเอนต์",
|
||||
"example_upstream_reserved": "คุณสามารถระบุ DNS อัปสตรีม <0>สำหรับโดเมนเฉพาะ</0>",
|
||||
"upstream_parallel": "ใช้การสืบค้นแบบขนานเพื่อเพิ่มความเร็วในการแก้ไขโดยการสอบถามเซิร์ฟเวอร์ upstream ทั้งหมดพร้อมกัน",
|
||||
"bootstrap_dns": "Bootstrap เซิร์ฟเวอร์ DNS",
|
||||
"bootstrap_dns_desc": "เซิร์ฟเวอร์ Bootstrap DNS ใช้เพื่อแก้ไขที่อยู่ IP ของตัวแก้ไข DoH / DoT ที่คุณระบุว่าเป็น upstreams",
|
||||
"check_dhcp_servers": "ตรวจสอบ DHCP servers",
|
||||
"save_config": "บันทึกการตั้งค่า",
|
||||
"enabled_dhcp": "เปิดการใช้งาน DHCP server แล้ว",
|
||||
"disabled_dhcp": "ปิดการใช้งาน DHCP server แล้ว",
|
||||
"dhcp_title": "DHCP server (ยังไม่สมบูรณ์)",
|
||||
"dhcp_description": "ถ้าหากเราเตอร์ของคุณไม่รองรับการตั้งค่า DHCP คุณสามารถใช้ ADGuard's ทำ DHCP server ได้",
|
||||
"dhcp_enable": "เปิด DHCP server",
|
||||
"dhcp_disable": "ปิด DHCP server",
|
||||
"dhcp_not_found": "มีความปลอดภัยในการเปิดใช้งานเซิร์ฟเวอร์ DHCP ในตัว - เราไม่พบเซิร์ฟเวอร์ DHCP ที่ใช้งานอยู่ในเครือข่าย อย่างไรก็ตามเราขอแนะนำให้คุณตรวจสอบด้วยตนเองอีกครั้งเนื่องจากการทดสอบอัตโนมัติของเราไม่ได้รับประกัน 100%",
|
||||
"dhcp_found": "พบเซิร์ฟเวอร์ DHCP ที่ใช้งานอยู่ในเครือข่าย ไม่ปลอดภัยที่จะเปิดใช้งานเซิร์ฟเวอร์ DHCP ในตัว",
|
||||
"dhcp_leases": "สัญญาเช่า DHCP",
|
||||
"dhcp_static_leases": "DHCP แบบกำหนด",
|
||||
"dhcp_leases_not_found": "ไม่พบสัญญาเช่า DHCP",
|
||||
"dhcp_config_saved": "บันทึกการกำหนดค่า DHCP สำเร็จแล้ว",
|
||||
"form_error_required": "ช่องที่ต้องกรอก",
|
||||
"form_error_ip4_format": "รูปแบบ IPv4 ไม่ถูกต้อง",
|
||||
"form_error_ip6_format": "รูปแบบ IPv6 ไม่ถูกต้อง",
|
||||
"form_error_ip_format": "รูปแบบ IP ไม่ถูกต้อง",
|
||||
"form_error_mac_format": "รูปแบบ MAC ไม่ถูกต้อง",
|
||||
"form_error_client_id_format": "รูปแบบ ID ลูกค้าไม่ถูกต้อง",
|
||||
"form_error_positive": "ต้องมากกว่า 0",
|
||||
"form_error_negative": "ต้องเท่ากับ 0 หรือมากกว่า",
|
||||
"dhcp_form_gateway_input": "IP ของเกตเวย์",
|
||||
"dhcp_form_subnet_input": "ซับเน็ตมาสก์",
|
||||
"dhcp_form_range_title": "ช่วงของที่อยู่ IP",
|
||||
"dhcp_form_range_start": "ช่วงเริ่มต้น",
|
||||
"dhcp_form_range_end": "ช่วงสิ้นสุด",
|
||||
"dhcp_form_lease_title": "เวลาเช่า DHCP (เป็นวินาที)",
|
||||
"dhcp_form_lease_input": "ระยะเวลาการเช่า",
|
||||
"dhcp_interface_select": "เลือกอินเตอร์เฟส DHCP",
|
||||
"dhcp_hardware_address": "ที่อยู่ฮาร์ดแวร์",
|
||||
"dhcp_ip_addresses": "ที่อยู่ IP",
|
||||
"dhcp_table_hostname": "ชื่อโฮสต์",
|
||||
"dhcp_table_expires": "วันที่หมดอายุ",
|
||||
"dhcp_warning": "หากคุณต้องการเปิดใช้งานเซิร์ฟเวอร์ DHCP ตรวจสอบให้แน่ใจว่าไม่มีเซิร์ฟเวอร์ DHCP ที่ใช้งานอยู่ในเครือข่ายของคุณ มิฉะนั้นจะทำให้อินเทอร์เน็ตสำหรับอุปกรณ์ที่เชื่อมต่อมีปัญหาได้!",
|
||||
"dhcp_error": "เราไม่สามารถระบุได้ว่ามีเซิร์ฟเวอร์ DHCP อื่นในเครือข่ายหรือไม่",
|
||||
"dhcp_static_ip_error": "ในการใช้เซิร์ฟเวอร์ DHCP จะต้องตั้งค่าที่อยู่ IP แบบคงที่ เราไม่สามารถระบุได้ว่ามีการกำหนดค่าอินเทอร์เฟซเครือข่ายนี้โดยใช้ที่อยู่ IP แบบคงที่หรือไม่ โปรดตั้งค่าที่อยู่ IP แบบคงที่ด้วยตนเอง",
|
||||
"dhcp_dynamic_ip_found": "ระบบของคุณใช้การกำหนดค่าที่อยู่ IP แบบไดนามิกสำหรับอินเทอร์เฟซ <0>{{interfaceName}}</0> ในการใช้เซิร์ฟเวอร์ DHCP จะต้องตั้งค่าที่อยู่ IP แบบคงที่ ที่อยู่ IP ปัจจุบันของคุณคือ <0>{{ipAddress}}</0> เราจะตั้งค่าที่อยู่ IP นี้เป็นแบบคงที่โดยอัตโนมัติหากคุณกดปุ่มเปิดใช้งาน DHCP",
|
||||
"dhcp_lease_added": "เพิ่มสัญญาเช่าคงที่ \"{{key}}\" สำเร็จแล้ว",
|
||||
"dhcp_lease_deleted": "ลบสัญญาเช่าคงที่ \"{{key}}\" สำเร็จแล้ว",
|
||||
"dhcp_new_static_lease": "เช่าใหม่คงที่",
|
||||
"dhcp_static_leases_not_found": "ไม่พบสัญญาเช่า DHCP แบบคงที่",
|
||||
"dhcp_add_static_lease": "เพิ่มสัญญาเช่าคงที่",
|
||||
"dhcp_reset": "คุณแน่ใจหรือว่าต้องการรีเซ็ตการกำหนดค่า DHCP?",
|
||||
"delete_confirm": "คุณแน่ใจหรือว่าต้องการลบ \"{{key}}\"?",
|
||||
"form_enter_hostname": "ป้อนชื่อโฮสต์",
|
||||
"error_details": "รายละเอียดข้อผิดพลาด",
|
||||
"back": "กลับ",
|
||||
"dashboard": "แผงควบคุม",
|
||||
"settings": "การตั้งค่า",
|
||||
"filters": "ตัวกรอง",
|
||||
"query_log": "บันทึกการสืบค้น",
|
||||
"faq": "คำถามที่พบบ่อย",
|
||||
"version": "รุ่น",
|
||||
"address": "ที่อยู่",
|
||||
"on": "เปิด",
|
||||
"off": "ปิด",
|
||||
"copyright": "ลิขสิทธิ์",
|
||||
"homepage": "หน้าหลัก",
|
||||
"report_an_issue": "รายงานปัญหา",
|
||||
"privacy_policy": "นโยบายความเป็นส่วนตัว",
|
||||
"enable_protection": "เปิดใช้งานการป้องกัน",
|
||||
"enabled_protection": "เปิดใช้งานการป้องกันแล้ว",
|
||||
"disable_protection": "ปิดใช้งานการป้องกัน",
|
||||
"disabled_protection": "ปิดใช้งานการป้องกันแล้ว",
|
||||
"refresh_statics": "รีเฟรชสถิติ",
|
||||
"dns_query": "การค้นหา DNS",
|
||||
"blocked_by": "<0>ถูกปิดกั้นโดยตัวกรอง</0>",
|
||||
"stats_malware_phishing": "ปิดกั้นมัลแวร์/ฟิชชิ่ง แล้ว",
|
||||
"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",
|
||||
"number_of_dns_query_blocked_24_hours_adult": "มีการปิดกั้นเว็บไซต์สำหรับผู้ใหญ่จำนวนหนึ่ง",
|
||||
"enforced_save_search": "บังคับใช้การค้นหาที่ปลอดภัย",
|
||||
"number_of_dns_query_to_safe_search": "จำนวนคำขอ DNS ไปยังเครื่องมือค้นหาที่บังคับใช้การค้นหาปลอดภัย",
|
||||
"average_processing_time": "เวลาประมวลผลโดยเฉลี่ย",
|
||||
"average_processing_time_hint": "เวลาเฉลี่ยเป็นมิลลิวินาทีในการประมวลผลคำขอ DNS",
|
||||
"block_domain_use_filters_and_hosts": "ปิดกั้นโดเมนโดยใช้ตัวกรองและไฟล์โฮสต์",
|
||||
"filters_block_toggle_hint": "คุณสามารถตั้งค่ากฎการปิดกั้นในการตั้งค่า<a href='#filters'>ตัวกรอง</a>",
|
||||
"use_adguard_browsing_sec": "ใช้บริการเว็บการรักษาความปลอดภัยการเรียกดู AdGuard",
|
||||
"use_adguard_browsing_sec_hint": "AdGuard Home จะตรวจสอบว่าโดเมนอยู่ในรายการที่ไม่อนุญาตโดยเว็บเซอร์วิสความปลอดภัยการสืบค้นหรือไม่ จะใช้ API การค้นหาที่เป็นมิตรกับข้อมูลส่วนบุคคลเพื่อทำการตรวจสอบ: มีการส่งคำนำหน้าสั้น ๆ ของชื่อโดเมน SHA256 แฮชไปยังเซิร์ฟเวอร์",
|
||||
"use_adguard_parental": "ใช้บริการเว็บการควบคุมโดยผู้ปกครองของ AdGuard",
|
||||
"use_adguard_parental_hint": "AdGuard Home จะตรวจสอบว่าโดเมนมีเนื้อหาสำหรับผู้ใหญ่หรือไม่ มันใช้ API ความเป็นส่วนตัวเช่นเดียวกับบริการเว็บการรักษาความปลอดภัยการท่องเว็บ",
|
||||
"enforce_safe_search": "บังคับใช้การค้นหาที่ปลอดภัย",
|
||||
"enforce_save_search_hint": "AdGuard Home สามารถบังคับใช้การค้นหาที่ปลอดภัยในเครื่องมือค้นหาต่อไปนี้: Google, Youtube, Bing, DuckDuckGo, Yandex, Pixabay",
|
||||
"no_servers_specified": "ไม่ได้ระบุเซิร์ฟเวอร์",
|
||||
"general_settings": "การตั้งค่าทั่วไป",
|
||||
"dns_settings": "การตั้งค่า DNS",
|
||||
"encryption_settings": "การตั้งค่าการเข้ารหัส",
|
||||
"dhcp_settings": "การตั้งค่า DHCP",
|
||||
"upstream_dns": "เซิร์ฟเวอร์ DNS ต้นทาง",
|
||||
"upstream_dns_hint": "The current approved translation is not correct, please review my translation:\n\"หากคุณเว้นช่องนี้ว่างไว้ AdGuard Home จะใช้ <a href='https://www.quad9.net/' target='_blank'>Quad9</a> เป็นต้นทาง\"",
|
||||
"test_upstream_btn": "ทดสอบต้นทาง",
|
||||
"upstreams": "ต้นทาง",
|
||||
"apply_btn": "นำไปใช้",
|
||||
"disabled_filtering_toast": "ปิดใช้งานการกรอง",
|
||||
"enabled_filtering_toast": "เปิดใช้งานการกรอง",
|
||||
"disabled_safe_browsing_toast": "ปิดใช้งานการเรียกดูอย่างปลอดภัย",
|
||||
"enabled_safe_browsing_toast": "เปิดการใช้งาน safebrowsing",
|
||||
"disabled_parental_toast": "ปิดใช้งานการควบคุมโดยผู้ปกครอง",
|
||||
"enabled_parental_toast": "เปิดการใช้งานเข้าเว็บไม่พึงประสงค์",
|
||||
"disabled_safe_search_toast": "ปิดใช้งานการค้นหาที่ปลอดภัย",
|
||||
"enabled_save_search_toast": "เปิดใช้งานการค้นหาที่ปลอดภัย",
|
||||
"enabled_table_header": "เปิดใช้งาน",
|
||||
"name_table_header": "ชื่อ",
|
||||
"rules_count_table_header": "กฎการนับ",
|
||||
"last_time_updated_table_header": "ปรับปรุงครั้งล่าสุด",
|
||||
"actions_table_header": "การกระทำ",
|
||||
"edit_table_action": "แก้ไข",
|
||||
"delete_table_action": "ลบ",
|
||||
"filters_and_hosts_hint": "AdGuard Home เข้าใจกฎปิดกั้นโฆษณาพื้นฐานและโฮสต์ไฟล์ไวยากรณ์",
|
||||
"cancel_btn": "ยกเลิก",
|
||||
"enter_name_hint": "ป้อนชื่อ",
|
||||
"check_updates_btn": "ตรวจสอบการปรับปรุง",
|
||||
"custom_filter_rules": "กฎการกรองที่กำหนดเอง",
|
||||
"custom_filter_rules_hint": "ป้อนหนึ่งกฎในหนึ่งบรรทัด คุณสามารถใช้กฎปิดกั้นโฆษณาหรือโฮสต์ไฟล์ไวยากรณ์",
|
||||
"examples_title": "ตัวอย่าง",
|
||||
"example_meaning_filter_block": "ปิดกั้นการเข้าถึงโดเมน example.org และโดเมนย่อยทั้งหมด",
|
||||
"example_meaning_filter_whitelist": "เลิกปิดกั้นการเข้าถึงโดเมน example.org และโดเมนย่อยทั้งหมด",
|
||||
"example_meaning_host_block": "ตอนนี้ AdGuard Home จะส่งคืนที่อยู่ 127.0.0.1 สำหรับโดเมน example.org (แต่ไม่ใช่โดเมนย่อย)",
|
||||
"example_comment": "! นี่ความคิดเห็น",
|
||||
"example_comment_meaning": "เพียงความคิดเห็น",
|
||||
"example_comment_hash": "# นอกจากนี้ยังมีความคิดเห็น",
|
||||
"example_regex_meaning": "ปิดกั้นการเข้าถึงโดเมนที่ตรงกับนิพจน์ทั่วไปที่ระบุ",
|
||||
"example_upstream_regular": "DNS ปกติ (มากกว่า UDP)",
|
||||
"example_upstream_dot": "encrypted <0>DNS-over-TLS</0> แล้ว",
|
||||
"example_upstream_doh": "เข้ารหัส <0>DNS-over-HTTPS</0> แล้ว",
|
||||
"example_upstream_sdns": "คุณสามรถใช้ <0>DNS Stamps</0> กับ <1>DNSCrypt</1> หรือ <2>DNS-over-HTTPS</2> ตัวแก้ปัญหา",
|
||||
"example_upstream_tcp": "dNS ปกติ (ผ่าน TCP)",
|
||||
"updated_upstream_dns_toast": "อัปเดตเซิร์ฟเวอร์ DNS ต้นทาง",
|
||||
"dns_test_ok_toast": "เซิร์ฟเวอร์ DNS ที่ระบุทำงานอย่างถูกต้อง",
|
||||
"dns_test_not_ok_toast": "เซิร์ฟเวอร์ \"{{key}}\": ไม่สามารถใช้งานได้ โปรดตรวจสอบว่าคุณเขียนถูกต้อง",
|
||||
"unblock_btn": "เลิกปิดกั้น",
|
||||
"block_btn": "ปิดกั้น",
|
||||
"time_table_header": "เวลา",
|
||||
"domain_name_table_header": "ชื่อโดเมน",
|
||||
"type_table_header": "ประเภท",
|
||||
"response_table_header": "การตอบสนอง",
|
||||
"client_table_header": "เครื่องลูกข่าย",
|
||||
"empty_response_status": "ว่างเปล่า",
|
||||
"show_all_filter_type": "แสดงทั้งหมด",
|
||||
"show_filtered_type": "แสดงเฉพาะที่กรองแล้ว",
|
||||
"no_logs_found": "ไม่มีประวัติ",
|
||||
"refresh_btn": "รีเฟรช",
|
||||
"previous_btn": "ก่อนหน้า",
|
||||
"next_btn": "ถัดไป",
|
||||
"loading_table_status": "กำลังโหลด...",
|
||||
"page_table_footer_text": "หน้า",
|
||||
"rows_table_footer_text": "ตาราง",
|
||||
"updated_custom_filtering_toast": "อัปเดตกฎการกรองที่กำหนดเอง",
|
||||
"rule_removed_from_custom_filtering_toast": "ลบกฎออกจากกฎการกรองที่กำหนดเองแล้ว",
|
||||
"rule_added_to_custom_filtering_toast": "เพิ่มกฎในกฎการกรองที่กำหนดเองแล้ว",
|
||||
"query_log_response_status": "สถานะ: {{value}}",
|
||||
"query_log_filtered": "กรองโดย {{filter}}",
|
||||
"query_log_confirm_clear": "คุณแน่ใจหรือไม่ว่าต้องการลบบันทึกการใช้งานทั้งหมด?",
|
||||
"query_log_cleared": "บันทึกการใช้งานได้รับการล้างเรียบร้อยแล้ว",
|
||||
"query_log_clear": "ล้างบันทึกการสืบค้น",
|
||||
"query_log_retention": "แบบสอบถามบันทึกการเก็บรักษา",
|
||||
"query_log_enable": "เปิดใช้งานบันทึก",
|
||||
"query_log_configuration": "บันทึกการกำหนดค่า",
|
||||
"query_log_disabled": "บันทึกแบบสอบถามถูกปิดใช้งานและสามารถกำหนดค่าใน <0>การตั้งค่า</0>",
|
||||
"query_log_strict_search": "ใช้เครื่องหมายคำพูดคู่เพื่อการค้นหาที่จำกัด",
|
||||
"query_log_retention_confirm": "คุณแน่ใจหรือไม่ว่าต้องการเปลี่ยนการเก็บข้อมูลบันทึกแบบสอบถาม? หากคุณลดค่าช่วงเวลา ข้อมูลบางอย่างจะหายไป",
|
||||
"dns_config": "การกำหนดค่าเซิร์ฟเวอร์ DNS",
|
||||
"blocking_mode": "โหมดการปิดกั้น",
|
||||
"default": "ค่าเริ่มต้น",
|
||||
"nxdomain": "NXDOMAIN",
|
||||
"null_ip": "IP ว่าง",
|
||||
"custom_ip": "IP กำหนดเอง",
|
||||
"blocking_ipv4": "ปิดกั้น IPv4",
|
||||
"blocking_ipv6": "ปิดกั้น IPv6",
|
||||
"form_enter_rate_limit": "ป้อนขีดจำกัดอัตรา",
|
||||
"rate_limit": "จำกัดอัตรา",
|
||||
"edns_enable": "เปิดใช้งานซับเน็ตไคลเอ็นต์ EDNS",
|
||||
"edns_cs_desc": "หากเปิดใช้งาน AdGuard Home จะส่งซับเน็ตของไคลเอนต์ไปยังเซิร์ฟเวอร์ DNS",
|
||||
"rate_limit_desc": "จำนวนการร้องขอต่อวินาทีที่อนุญาตให้ไคลเอนต์เดียวทำ (0: ไม่จำกัดจำนวน)",
|
||||
"blocking_ipv4_desc": "ที่อยู่ IP ที่จะส่งคืนสำหรับคำขอที่ถูกปิดกั้น",
|
||||
"blocking_ipv6_desc": "ที่อยู่ IP ที่จะส่งคืนสำหรับคำขอ AAAA ที่ถูกปิดกั้น",
|
||||
"blocking_mode_default": "เริ่มต้น: ตอบสนองด้วย NXDOMAIN เมื่อถูกปิดกั้นโดยกฎสไตล์ปิดกั้นโฆษณา; ตอบกลับด้วยที่อยู่ IP ที่ระบุในกฎเมื่อถูกปิดกั้นโดยกฎ /etc/hosts-hosts",
|
||||
"blocking_mode_nxdomain": "NXDOMAIN: ตอบสนองด้วยรหัส NXDOMAIN",
|
||||
"blocking_mode_null_ip": "Null IP: ตอบกลับด้วยที่อยู่เลขศูนย์ IP (0.0.0.0 สำหรับ A; :: สำหรับ AAAA)",
|
||||
"blocking_mode_custom_ip": "IP ที่กำหนดเอง: ตอบกลับด้วยที่อยู่ IP ที่ตั้งค่าด้วยตนเอง",
|
||||
"upstream_dns_client_desc": "หากคุณเว้นช่องนี้ว่างไว้ AdGuard Home จะใช้เซิร์ฟเวอร์ที่กำหนดค่าใน <0>การตั้งค่า DNS</0>",
|
||||
"source_label": "ที่มา",
|
||||
"found_in_known_domain_db": "พบในฐานข้อมูลโดเมนที่รู้จัก",
|
||||
"category_label": "ประเภท",
|
||||
"rule_label": "กฎ",
|
||||
"unknown_filter": "ตัวกรองที่ไม่รู้จัก {{filterId}}",
|
||||
"install_welcome_title": "ยินดีต้อนรับสู่ AdGuard Home",
|
||||
"install_welcome_desc": "AdGuard Home เป็นเซิร์ฟเวอร์ DNS ปิดกั้นโฆษณาและติดตามทั่วทั้งเครือข่าย วัตถุประสงค์คือเพื่อให้คุณควบคุมเครือข่ายทั้งหมดและอุปกรณ์ทั้งหมดของคุณและไม่จำเป็นต้องใช้โปรแกรมฝั่งไคลเอ็นต์",
|
||||
"install_settings_title": "รูปแบบเว็บสำหรับผู้ดูแล",
|
||||
"install_settings_listen": "รูปแบบการดักจับ",
|
||||
"install_settings_port": "พอร์ต",
|
||||
"install_settings_interface_link": "เว็บอินเตอร์เฟสผู้ดูแลระบบ AdGuard Home ของคุณจะพร้อมใช้งานตามที่อยู่ต่อไปนี้:",
|
||||
"form_error_port": "ป้อนค่าพอร์ตที่ถูกต้อง",
|
||||
"install_settings_dns": "เซิรฟ์เวอร์ DNS",
|
||||
"install_settings_dns_desc": "คุณจะต้องกำหนดค่าอุปกรณ์หรือเราเตอร์ของคุณเพื่อใช้เซิร์ฟเวอร์ DNS ตามที่อยู่ต่อไปนี้:",
|
||||
"install_settings_all_interfaces": "อินเทอร์เฟซทั้งหมด",
|
||||
"install_auth_title": "การตรวจสอบสิทธิ์",
|
||||
"install_auth_desc": "ขอแนะนำอย่างยิ่งให้กำหนดค่าการตรวจสอบรหัสผ่านให้กับส่วนต่อประสานเว็บผู้ดูแลระบบ AdGuard Home ของคุณ แม้ว่ามันจะสามารถเข้าถึงได้เฉพาะในเครือข่ายท้องถิ่นของคุณก็ยังคงเป็นสิ่งสำคัญที่จะปกป้องมันจากการเข้าถึงที่ไม่จำกัด",
|
||||
"install_auth_username": "ชื่อผู้ใช้",
|
||||
"install_auth_password": "รหัสผ่าน",
|
||||
"install_auth_confirm": "ยืนยันรหัสผ่าน",
|
||||
"install_auth_username_enter": "กรอกชื่อผู้ใช้",
|
||||
"install_auth_password_enter": "กรอกรหัสผ่าน",
|
||||
"install_step": "ขั้นตอน",
|
||||
"install_devices_title": "กำหนดค่าอุปกรณ์ของคุณ",
|
||||
"install_devices_desc": "ในการเริ่มใช้งาน AdGuard Home คุณต้องกำหนดค่าอุปกรณ์ของคุณเพื่อใช้งาน",
|
||||
"install_submit_title": "ยินดีด้วย!",
|
||||
"install_submit_desc": "ขั้นตอนการตั้งค่าเสร็จสิ้นและคุณพร้อมที่จะเริ่มใช้งาน AdGuard Home",
|
||||
"install_devices_router": "เราเตอร์",
|
||||
"install_devices_router_desc": "การตั้งค่านี้จะครอบคลุมอุปกรณ์ทั้งหมดที่เชื่อมต่อกับเราเตอร์ที่บ้านของคุณโดยอัตโนมัติและคุณไม่จำเป็นต้องกำหนดค่าแต่ละอุปกรณ์ด้วยตนเอง",
|
||||
"install_devices_address": "เซิร์ฟเวอร์ DNS ของ AdGuard Home กำลังรับฟังตามที่อยู่ต่อไปนี้",
|
||||
"install_devices_router_list_1": "เปิดการตั้งค่าสำหรับเราเตอร์ของคุณ โดยปกติแล้วคุณสามารถเข้าถึงได้จากเบราว์เซอร์ของคุณผ่าน URL (เช่น 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_windows_list_1": "เปิด Control Panel โดยใช้ Start menu หรือ Windows search",
|
||||
"install_devices_windows_list_2": "ไปที่หมวด Network and Internet แล้วเลือก Network and Sharing Center",
|
||||
"install_devices_windows_list_3": "ทางด้านซ้ายจะมีคำว่า Change adapter settings ให้กดเข้าไป",
|
||||
"install_devices_windows_list_4": "เลือกการเชื่อมต่อที่ใช้งานอยู่ คลิกขวาแล้วเลือก Properties",
|
||||
"install_devices_windows_list_5": "ค้นหา Internet Protocol Version 4 (TCP/IP) แล้วคลิก Properties อีกครั้ง",
|
||||
"install_devices_windows_list_6": "ค้นหา DNS server addresses ให้ทำการกรอกหมายเลข AdGuard Home ลงไปในช่อง",
|
||||
"install_devices_macos_list_1": "คลิกโลโก้แอปเปิ้ลแล้วกด System Preferences",
|
||||
"install_devices_macos_list_2": "คลิก Network",
|
||||
"install_devices_macos_list_3": "เลือกการเชื่อมต่อแล้วคลิก Advanced",
|
||||
"install_devices_macos_list_4": "ค้นหาแท็บ DNS แล้วกรอกหมาเลย AdGuard Home",
|
||||
"install_devices_android_list_1": "เข้าหน้าเมนู(บางรุ่นจะมีตรงแท็บการแจ้งเตือน) เลือกการตั้งค่า",
|
||||
"install_devices_android_list_2": "เลือกเมนู Wi-Fi แล้วค้นหา Wi-Fi ที่จะเชื่อมต่อ (ไม่สารถตั้งค่ากับเน็ตมือถือได้)",
|
||||
"install_devices_android_list_3": "แตะชื่อWi-Fi ที่จะเชื่อมต่อค้างไว้(บางรุ่นให้เลื่อนจอลงไปล่างสุด) เลือกการตั้งค่าเพิ่มเติม",
|
||||
"install_devices_android_list_4": "ในอุปกรณ์บางอย่างคุณอาจต้องทำเครื่องหมายในช่องสำหรับขั้นสูงเพื่อดูการตั้งค่าเพิ่มเติม หากต้องการปรับการตั้งค่า Android DNS ของคุณคุณจะต้องเปลี่ยนการตั้งค่า IP จาก DHCP เป็นแบบคงที่",
|
||||
"install_devices_android_list_5": "เปลี่ยนการตั้งค่า DNS ที่ 1 และค่า DNS 2 ถึงที่อยู่เซิร์ฟเวอร์ AdGuard Home ของคุณ",
|
||||
"install_devices_ios_list_1": "เลือกการตั้งค่า",
|
||||
"install_devices_ios_list_2": "เลือก Wi-Fi ด้านซ้าย (ไม่สามรถใช้งานได้กับดาต้ามือถือ)",
|
||||
"install_devices_ios_list_3": "เลือกชื่อที่จะเชื่อมต่อ",
|
||||
"install_devices_ios_list_4": "กรอก DNS AdGuard Home Server ลงไปในช่อง",
|
||||
"get_started": "เริ่มต้นการใช้งาน",
|
||||
"next": "ถัดไป",
|
||||
"open_dashboard": "เปิดหน้าควบคุม",
|
||||
"install_saved": "บันทึกเรียบร้อยแล้ว",
|
||||
"encryption_title": "การเข้ารหัส",
|
||||
"encryption_desc": "การดข้ารหัส (HTTPS/TLS) รองรับทั้ง DNS และหน้าเว็บแอดมิน",
|
||||
"encryption_config_saved": "บันทึกการตั้งค่าเข้ารหัสเรียบร้อยแล้ว",
|
||||
"encryption_server": "ชื่อเซิร์ฟเวอร์",
|
||||
"encryption_server_enter": "ป้อนชื่อโดเมน",
|
||||
"encryption_server_desc": "ในการใช้ HTTPS คุณต้องป้อนชื่อเซิร์ฟเวอร์ที่ตรงกับใบรับรอง SSL ของคุณ",
|
||||
"encryption_redirect": "ไปเส้นทาง HTTPS อัตโนมัติ",
|
||||
"encryption_redirect_desc": "หากเลือกตัวเลือกนี้ AdGuard Home จะเปลี่ยนเส้นทางคุณจากที่อยู่ HTTP ไปยัง HTTPS โดยอัตโนมัติ",
|
||||
"encryption_https": "พอร์ท HTTPS",
|
||||
"encryption_https_desc": "หากมีการกำหนดค่าพอร์ต HTTPS ส่วนติดต่อผู้ดูแลระบบของ AdGuard Home จะสามารถเข้าถึงได้ผ่าน HTTPS และจะให้ DNS-over-HTTPS ในตำแหน่ง '/dns-query'",
|
||||
"encryption_dot": "พอร์ต DNS-over-TLS",
|
||||
"encryption_dot_desc": "หากมีการกำหนดค่าพอร์ตนี้ AdGuard Home จะเรียกใช้เซิร์ฟเวอร์ DNS-over-TLS ในพอร์ตนี้",
|
||||
"encryption_certificates": "ใบรับรอง",
|
||||
"encryption_certificates_desc": "ในการใช้การเข้ารหัสคุณต้องระบุเชนใบรับรอง SSL ที่ถูกต้องสำหรับโดเมนของคุณ คุณสามารถรับใบรับรองฟรีได้ที่ <0>{{link}}</0> หรือคุณสามารถซื้อได้จากหนึ่งในผู้ออกใบรับรองที่เชื่อถือได้",
|
||||
"encryption_certificates_input": "คัดลอก/วางใบรับรองที่เข้ารหัส PEM ของคุณที่นี่",
|
||||
"encryption_status": "สถานะ",
|
||||
"encryption_expire": "หมดอายุ",
|
||||
"encryption_key": "รหัสส่วนตัว (Private key)",
|
||||
"encryption_key_input": "คัดลอก/วาง PEM-encoded private key ของคุณตรงนี้",
|
||||
"encryption_enable": "เปิดการเข้ารหัส (HTTPS, DNS-over-HTTPS, และ DNS-over-TLS)",
|
||||
"encryption_enable_desc": "หากเปิดใช้งานการเข้ารหัสอินเทอร์เฟซผู้ดูแลระบบของ AdGuard Home จะทำงานผ่าน HTTPS และเซิร์ฟเวอร์ DNS จะรับฟังคำร้องขอผ่านทาง DNS-over-HTTPS และ DNS-over-TLS",
|
||||
"encryption_chain_valid": "ใบรับรองมีความน่าเชื่อถือ",
|
||||
"encryption_chain_invalid": "ใบรับรองไม่มีความน่าเชื่อถือแต่สามรถใช้ได้",
|
||||
"encryption_key_valid": "นี่เป็นคีย์ส่วนตัว {{type}} ที่ถูกต้อง",
|
||||
"encryption_key_invalid": "นี่เป็นคีย์ส่วนตัว {{type}} ที่ไม่ถูกต้อง",
|
||||
"encryption_subject": "เรื่อง:",
|
||||
"encryption_issuer": "ผู้ออกใบรับรอง:",
|
||||
"encryption_hostnames": "ชื่อโฮส",
|
||||
"encryption_reset": "คุณแน่ใจนะว่าจะล้างค่าการเข้ารหัส?",
|
||||
"topline_expiring_certificate": "ใบรับรอง SSL ของคุณกำลังจะหมดอายุ กรุณาอัปเดท <0>การตั้งค่าเข้ารหัส</0>.",
|
||||
"topline_expired_certificate": "ใบรับรอง SSL ของคุณหมดอายุแล้ว กรุณาอัปเดท <0>การตั้งค่าเข้ารหัส</0>.",
|
||||
"form_error_port_range": "ป้อนค่าพอร์ตในช่วง 80-65535",
|
||||
"form_error_port_unsafe": "เป็นพอร์ทที่ไม่ปลอดภัย",
|
||||
"form_error_equal": "ไม่ควรตรงกัน",
|
||||
"form_error_password": "รหัสผ่านไม่ตรงกัน",
|
||||
"reset_settings": "รีเซ็ตการตั้งค่า",
|
||||
"update_announcement": "AdGuard Home {{version}} พร้อมแล้ว <0>กดตรงนี้</0> สำหรับข้อมูลเพิ่มเติม",
|
||||
"setup_guide": "วิธีการตั้งค่า",
|
||||
"dns_addresses": "ที่อยู่ DNS",
|
||||
"dns_start": "เซิร์ฟเวอร์ DNS เริ่มทำงาน",
|
||||
"dns_status_error": "เกิดข้อผิดพลาดในการตรวจสอบสถานะเซิร์ฟเวอร์ DNS",
|
||||
"down": "ดับ",
|
||||
"fix": "ซ่อม",
|
||||
"dns_providers": "นี่คือรายการ <0>ของผู้ให้บริการ DNS ที่เป็นที่รู้จัก</0> ให้เลือก",
|
||||
"update_now": "อัปเดตตอนนี้",
|
||||
"update_failed": "อัปเดทล้มเหลว กรุณา <a href='https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#update'> ทำตามขั้นตอน </a> เพื่ออัพเดทด้วยตนเอง",
|
||||
"processing_update": "รอซักครู่ AdGuard Home กำลังอัปเดท",
|
||||
"clients_title": "เครื่องลูกข่าย",
|
||||
"clients_desc": "ตั้งค่าอุปกรณ์เพื่อเชื่อมต่อ AdGuard Home",
|
||||
"settings_global": "ทั่วโลก",
|
||||
"settings_custom": "กำหนดเอง",
|
||||
"table_client": "เครื่องลูกข่าย",
|
||||
"table_name": "ชื่อ",
|
||||
"save_btn": "บันทึก",
|
||||
"client_add": "เพิ่มเครื่องลูกข่าย",
|
||||
"client_new": "สร้างเครื่องลูกข่าย",
|
||||
"client_edit": "แก้ไขเครื่องลูกข่าย",
|
||||
"client_identifier": "ตรวจสอบโดย",
|
||||
"ip_address": "IP addresses",
|
||||
"client_identifier_desc": "ลูกค้าสามารถระบุได้โดยที่อยู่ IP, CIDR, ที่อยู่ MAC โปรดทราบว่าการใช้ MAC เป็นตัวระบุเป็นไปได้ก็ต่อเมื่อ AdGuard Home เป็น <0>เซิร์ฟเวอร์ DHCP</0> ด้วย",
|
||||
"form_enter_ip": "กรอก IP",
|
||||
"form_enter_mac": "กรอก MAC",
|
||||
"form_enter_id": "ป้อนตัวระบุ",
|
||||
"form_add_id": "เพิ่มตัวระบุ",
|
||||
"form_client_name": "กรอกชื่อเครื่องลูกข่าย",
|
||||
"client_global_settings": "ใช้การตั้งค่าทั่วโลก",
|
||||
"client_deleted": "เครื่อง \"{{key}}\" ลบเรียบร้อยแล้ว",
|
||||
"client_added": "เครื่อง \"{{key}}\" เพิ่มเรียบร้อยแล้ว",
|
||||
"client_updated": "อัปเดตเครื่อง \"{{key}}\" สำเร็จแล้ว",
|
||||
"clients_not_found": "ไม่มีเครื่องลูกข่าย",
|
||||
"client_confirm_delete": "คุณแน่ใจนะว่าจะลบเครื่อง \"{{key}}\"?",
|
||||
"auto_clients_title": "เครื่อง (runtime)",
|
||||
"auto_clients_desc": "ข้อมูลเกี่ยวกับไคลเอนต์ที่ใช้ AdGuard Home แต่ไม่ได้เก็บไว้ในการกำหนดค่า",
|
||||
"access_title": "เข้าถึงการตั้งค่า",
|
||||
"access_desc": "ที่นี่คุณสามารถกำหนดค่ากฎการเข้าถึงสำหรับเซิร์ฟเวอร์ AdGuard Home DNS",
|
||||
"access_allowed_title": "ลูกค้าที่ได้รับอนุญาต",
|
||||
"access_allowed_desc": "รายการ CIDR หรือที่อยู่ IP หากกำหนดค่า AdGuard Home จะยอมรับคำขอจากที่อยู่ IP เหล่านี้เท่านั้น",
|
||||
"access_disallowed_title": "ลูกค้าไม่ได้รับอนุญาต",
|
||||
"access_disallowed_desc": "รายการ CIDR หรือที่อยู่ IP หากกำหนดค่าไว้ AdGuard Home จะส่งคำขอจากที่อยู่ IP เหล่านี้",
|
||||
"access_blocked_title": "โดเมนที่ถูกปิดกั้น",
|
||||
"check_updates_now": "ตรวจสอบการปรับปรุง",
|
||||
"setup_dns_privacy_other_title": "การใช้งานอื่น ๆ",
|
||||
"setup_dns_privacy_other_1": "AdGuard Home จะส่ง DNS ที่ปลอดภัยทุกเครื่อทุกระบบ\n",
|
||||
"setup_dns_privacy_other_2": "<0>dnsproxy</0> รองรับโปรโตคอล DNS ที่ปลอดภัยที่รู้จักทั้งหมด",
|
||||
"rewrite_add": "เพิ่ม DNS rewrite",
|
||||
"form_domain": "ป้อนชื่อโดเมน",
|
||||
"form_answer": "ป้อนชื่อโดเมนหรือ IP",
|
||||
"form_error_domain_format": "รูปแบบ Domain ไม่ถูกต้อง",
|
||||
"form_error_answer_format": "รูปแบบคำตอบไม่ถูกต้อง",
|
||||
"configure": "กำหนดค่า",
|
||||
"main_settings": "ตั้งค่าหลัก",
|
||||
"block_services": "ปิดกั้นบริการเฉพาะ",
|
||||
"blocked_services": "ปิดกั้นบริการ",
|
||||
"blocked_services_desc": "อนุญาตให้บล็อกเว็บไซต์และบริการยอดนิยมได้อย่างรวดเร็ว",
|
||||
"blocked_services_saved": "บันทึกบริการที่ถูกปิดกั้นเรียบร้อยแล้ว",
|
||||
"blocked_services_global": "ใช้บริการที่ถูกบล็อกทั่วโลก",
|
||||
"blocked_service": "ปิดกั้นบริการ",
|
||||
"block_all": "ปิดกั้นทั้งหมด",
|
||||
"unblock_all": "ปลดล็อคทั้งหมด",
|
||||
"encryption_certificate_path": "เส้นทางใบรับรอง",
|
||||
"encryption_private_key_path": "เส้นทางกุญแจส่วนตัว",
|
||||
"encryption_certificates_source_path": "ตั้งค่าเส้นทาง certificates ",
|
||||
"encryption_certificates_source_content": "วางเนื้อหา certificates ",
|
||||
"encryption_key_source_path": "ตั้งค่าไฟล์กุญแจส่วนตัว",
|
||||
"encryption_key_source_content": "วางเนื้อหาคีย์ส่วนตัว",
|
||||
"stats_params": "การกำหนดค่าสถิติ",
|
||||
"config_successfully_saved": "บันทึกการตั้งค่าเรีบยร้อยแล้ว",
|
||||
"interval_24_hour": "24 ชั่วโมง",
|
||||
"interval_days": "{{count}} วัน",
|
||||
"interval_days_plural": "{{count}} วัน",
|
||||
"domain": "โดเมน",
|
||||
"answer": "คำตอบ",
|
||||
"filter_added_successfully": "ตัวกรองเพิ่มเรียบร้อยแล้ว",
|
||||
"filter_updated": "อัปเดตตัวกรองสำเร็จแล้ว",
|
||||
"statistics_configuration": "การกำหนดค่าสถิติ",
|
||||
"statistics_retention": "การเก็บรักษาสถิติ",
|
||||
"statistics_retention_desc": "หากคุณลดค่าช่วงเวลาข้อมูลบางอย่างจะหายไป",
|
||||
"statistics_clear": " ล้างค่าสถิติ",
|
||||
"statistics_clear_confirm": "คุณแน่ใจหรือไม่ว่าต้องการล้างสถิติ?",
|
||||
"statistics_retention_confirm": "คุณแน่ใจหรือไม่ว่าต้องการเปลี่ยนการเก็บรักษาสถิติ? หากคุณลดค่าช่วงเวลา ข้อมูลบางอย่างจะหายไป",
|
||||
"statistics_cleared": "สถิติได้ถูกล้างเรียบร้อยแล้ว",
|
||||
"interval_hours": "{{count}} ชั่วโมง",
|
||||
"interval_hours_plural": "{{count}} ชั่วโมง",
|
||||
"filters_configuration": "การกำหนดค่าตัวกรอง",
|
||||
"filters_enable": "เปิดใช้งานตัวกรอง",
|
||||
"filters_interval": "ตัวกรองช่วงเวลาการอัปเดต",
|
||||
"disabled": "ปิดใช้งาน",
|
||||
"username_label": "ชื่อผู้ใช้",
|
||||
"username_placeholder": "ป้อนชื่อผู้ใช้",
|
||||
"password_label": "รหัสผ่าน",
|
||||
"password_placeholder": "ใส่รหัสผ่าน",
|
||||
"sign_in": "ลงชื่อเข้าใช้",
|
||||
"sign_out": "ออกจากระบบ",
|
||||
"forgot_password": "ลืมรหัสผ่าน?",
|
||||
"forgot_password_desc": "โปรดปฏิบัติตาม <0>ขั้นตอนเหล่านี้</0> เพื่อสร้างรหัสผ่านใหม่สำหรับบัญชีผู้ใช้ของคุณ",
|
||||
"location": "ตำแหน่ง",
|
||||
"orgname": "ชื่อองค์กร",
|
||||
"netname": "ชื่อเครือข่าย",
|
||||
"descr": "คำอธิบาย",
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "<0>เรียนรู้เพิ่มเติม</0> เกี่ยวกับการสร้างรายการปิดกั้นโฮสต์ของคุณเอง",
|
||||
"blocked_by_response": "ปิดกั้นโดย CNAME หรือ IP ในการตอบกลับ",
|
||||
"try_again": "ลองอีกครั้ง",
|
||||
"domain_desc": "ป้อนชื่อโดเมนหรือไวด์การ์ดที่คุณต้องการเขียนใหม่",
|
||||
"example_rewrite_domain": "เขียนคำตอบซ้ำสำหรับชื่อโดเมนนี้เท่านั้น",
|
||||
"example_rewrite_wildcard": "เขียนคำตอบใหม่ทั้งหมดสำหรับ <0>example.org</0> โดเมนย่อย",
|
||||
"disable_ipv6": "ปิดใช้งาน IPv6",
|
||||
"disable_ipv6_desc": "หากเปิดใช้งานคุณสมบัตินี้การสืบค้น DNS ทั้งหมดสำหรับที่อยู่ IPv6 (ประเภท AAAA) จะถูกทิ้ง",
|
||||
"autofix_warning_text": "หากคุณคลิก \"แก้ไข\" AdGuardHome จะกำหนดค่าระบบของคุณเพื่อใช้เซิร์ฟเวอร์ 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 (โหลดบริการแก้ไขระบบซ้ำ)</0>",
|
||||
"autofix_warning_result": "ดังนั้น AdGuardHome จะประมวลผลคำขอ DNS ทั้งหมดจากระบบของคุณตามค่าเริ่มต้น",
|
||||
"tags_title": "แท็ก",
|
||||
"tags_desc": "คุณสามารถเลือกแท็กที่สอดคล้องกับลูกค้า แท็กสามารถรวมอยู่ในกฎการกรองและอนุญาตให้คุณใช้งานได้อย่างถูกต้องมากขึ้น <0>เรียนรู้เพิ่มเติม</0>",
|
||||
"form_select_tags": "เลือกแท็กเครื่อง",
|
||||
"check_title": "ตรวจสอบการกรอง",
|
||||
"check_desc": "ตรวจสอบว่าชื่อโฮสต์ถูกกรอง"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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)"
|
||||
}
|
||||
@@ -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.0;AAAA记录 ::)",
|
||||
"blocking_mode_null_ip": "空IP:以零IP地址响应(A记录 0.0.0.0;AAAA记录 ::)",
|
||||
"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的解析器)"
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"client_settings": "用戶端設定",
|
||||
"example_upstream_reserved": "您可明確指定<0>用於特定的網域</0>之 DNS 上游",
|
||||
"upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的查詢以加速解析",
|
||||
"upstream_parallel": "透過同時地查詢所有上游的伺服器,使用並行的請求以加速解析",
|
||||
"parallel_requests": "並行的請求",
|
||||
"bootstrap_dns": "自我啟動(Bootstrap)DNS 伺服器",
|
||||
"bootstrap_dns_desc": "自我啟動(Bootstrap)DNS 伺服器被用於解析您明確指定作為上游的 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 的解析器是必須的)"
|
||||
}
|
||||
@@ -2,6 +2,7 @@ import { createAction } from 'redux-actions';
|
||||
|
||||
import apiClient from '../api/Api';
|
||||
import { addErrorToast, addSuccessToast } from './index';
|
||||
import { normalizeTextarea } from '../helpers/helpers';
|
||||
|
||||
export const getDnsConfigRequest = createAction('GET_DNS_CONFIG_REQUEST');
|
||||
export const getDnsConfigFailure = createAction('GET_DNS_CONFIG_FAILURE');
|
||||
@@ -25,8 +26,26 @@ export const setDnsConfigSuccess = createAction('SET_DNS_CONFIG_SUCCESS');
|
||||
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 }));
|
||||
|
||||
@@ -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');
|
||||
|
||||
/**
|
||||
*
|
||||
* @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,
|
||||
|
||||
@@ -244,6 +244,7 @@ export const getDnsStatus = () => async (dispatch) => {
|
||||
dispatch(dnsStatusFailure());
|
||||
window.location.reload(true);
|
||||
};
|
||||
|
||||
const handleRequestSuccess = (response) => {
|
||||
const dnsStatus = response.data;
|
||||
const { running } = dnsStatus;
|
||||
@@ -265,42 +266,6 @@ 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');
|
||||
|
||||
@@ -32,7 +32,6 @@ 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' };
|
||||
@@ -42,15 +41,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 = {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -58,7 +58,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>
|
||||
);
|
||||
|
||||
@@ -119,7 +119,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 {};
|
||||
|
||||
@@ -5,6 +5,7 @@ import round from 'lodash/round';
|
||||
|
||||
import Card from '../ui/Card';
|
||||
import Tooltip from '../ui/Tooltip';
|
||||
import { formatNumber } from '../../helpers/helpers';
|
||||
|
||||
const tooltipType = 'tooltip-custom--narrow';
|
||||
|
||||
@@ -42,7 +43,9 @@ const Counters = (props) => {
|
||||
<Tooltip text={tooltipTitle} type={tooltipType} />
|
||||
</td>
|
||||
<td className="text-right">
|
||||
<span className="text-muted">{dnsQueries}</span>
|
||||
<span className="text-muted">
|
||||
{formatNumber(dnsQueries)}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -56,7 +59,9 @@ const Counters = (props) => {
|
||||
/>
|
||||
</td>
|
||||
<td className="text-right">
|
||||
<span className="text-muted">{blockedFiltering}</span>
|
||||
<span className="text-muted">
|
||||
{formatNumber(blockedFiltering)}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -68,7 +73,9 @@ const Counters = (props) => {
|
||||
/>
|
||||
</td>
|
||||
<td className="text-right">
|
||||
<span className="text-muted">{replacedSafebrowsing}</span>
|
||||
<span className="text-muted">
|
||||
{formatNumber(replacedSafebrowsing)}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -80,7 +87,9 @@ const Counters = (props) => {
|
||||
/>
|
||||
</td>
|
||||
<td className="text-right">
|
||||
<span className="text-muted">{replacedParental}</span>
|
||||
<span className="text-muted">
|
||||
{formatNumber(replacedParental)}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -92,7 +101,9 @@ const Counters = (props) => {
|
||||
/>
|
||||
</td>
|
||||
<td className="text-right">
|
||||
<span className="text-muted">{replacedSafesearch}</span>
|
||||
<span className="text-muted">
|
||||
{formatNumber(replacedSafesearch)}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
||||
@@ -59,7 +59,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>
|
||||
);
|
||||
|
||||
@@ -2,6 +2,7 @@ import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
import { STATUS_COLORS } from '../../helpers/constants';
|
||||
import { formatNumber } from '../../helpers/helpers';
|
||||
import Card from '../ui/Card';
|
||||
import Line from '../ui/Line';
|
||||
|
||||
@@ -10,10 +11,16 @@ const StatsCard = ({
|
||||
}) => (
|
||||
<Card type="card--full" bodyType="card-wrap">
|
||||
<div className="card-body-stats">
|
||||
<div className={`card-value card-value-stats text-${color}`}>{total}</div>
|
||||
<div className={`card-value card-value-stats text-${color}`}>
|
||||
{formatNumber(total)}
|
||||
</div>
|
||||
<div className="card-title-stats">{title}</div>
|
||||
</div>
|
||||
{percent >= 0 && (<div className={`card-value card-value-percent text-${color}`}>{percent}</div>)}
|
||||
{percent >= 0 && (
|
||||
<div className={`card-value card-value-percent text-${color}`}>
|
||||
{percent}
|
||||
</div>
|
||||
)}
|
||||
<div className="card-chart-bg">
|
||||
<Line data={lineData} color={STATUS_COLORS[color]} />
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,7 @@ import { withNamespaces } from 'react-i18next';
|
||||
import {
|
||||
checkFiltered,
|
||||
checkRewrite,
|
||||
checkRewriteHosts,
|
||||
checkBlackList,
|
||||
checkNotFilteredNotFound,
|
||||
checkWhiteList,
|
||||
@@ -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,7 +80,7 @@ const getTitle = (reason, filterName, t, onlyFiltered) => {
|
||||
const getColor = (reason) => {
|
||||
if (checkFiltered(reason)) {
|
||||
return 'red';
|
||||
} else if (checkRewrite(reason)) {
|
||||
} else if (checkRewrite(reason) || checkRewriteHosts(reason)) {
|
||||
return 'blue';
|
||||
} else if (checkWhiteList(reason)) {
|
||||
return 'green';
|
||||
|
||||
@@ -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}
|
||||
/>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -4,7 +4,7 @@ import { Field, reduxForm } from 'redux-form';
|
||||
import { Trans, withNamespaces } 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 {
|
||||
@@ -28,6 +28,7 @@ const Form = (props) => {
|
||||
className="form-control"
|
||||
placeholder={t('enter_name_hint')}
|
||||
validate={[required]}
|
||||
normalizeOnBlur={data => data.trim()}
|
||||
/>
|
||||
</div>
|
||||
<div className="form__group">
|
||||
@@ -37,8 +38,9 @@ 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">
|
||||
|
||||
@@ -2,11 +2,10 @@ import React, { Component } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import ReactTable from 'react-table';
|
||||
import { withNamespaces, 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);
|
||||
@@ -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>
|
||||
),
|
||||
},
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
isToday,
|
||||
checkFiltered,
|
||||
checkRewrite,
|
||||
checkRewriteHosts,
|
||||
checkWhiteList,
|
||||
checkBlackList,
|
||||
checkBlockedService,
|
||||
@@ -170,6 +171,7 @@ 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;
|
||||
@@ -221,6 +223,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 +245,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>
|
||||
@@ -364,7 +382,7 @@ class Logs extends Component {
|
||||
return {
|
||||
className: 'green',
|
||||
};
|
||||
} else if (checkRewrite(reason)) {
|
||||
} else if (checkRewrite(reason) || checkRewriteHosts(reason)) {
|
||||
return {
|
||||
className: 'blue',
|
||||
};
|
||||
|
||||
@@ -112,6 +112,7 @@ const renderMultiselect = (props) => {
|
||||
onChange={value => input.onChange(value)}
|
||||
onBlur={() => input.onBlur(input.value)}
|
||||
placeholder={placeholder}
|
||||
blurInputOnSelect={false}
|
||||
isMulti
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -5,61 +5,58 @@ import { Trans, withNamespaces } from 'react-i18next';
|
||||
import flow from 'lodash/flow';
|
||||
import { renderTextareaField } from '../../../../helpers/form';
|
||||
|
||||
const fields = [
|
||||
{
|
||||
id: 'allowed_clients',
|
||||
title: 'access_allowed_title',
|
||||
subtitle: 'access_allowed_desc',
|
||||
},
|
||||
{
|
||||
id: 'disallowed_clients',
|
||||
title: 'access_disallowed_title',
|
||||
subtitle: 'access_disallowed_desc',
|
||||
},
|
||||
{
|
||||
id: 'blocked_hosts',
|
||||
title: 'access_blocked_title',
|
||||
subtitle: 'access_blocked_desc',
|
||||
},
|
||||
];
|
||||
|
||||
const Form = (props) => {
|
||||
const {
|
||||
handleSubmit, submitting, invalid, processingSet,
|
||||
} = props;
|
||||
|
||||
const renderField = ({
|
||||
id, title, subtitle, disabled = processingSet,
|
||||
}) => <div key={id} className="form__group mb-5">
|
||||
<label className="form__label form__label--with-desc" htmlFor={id}>
|
||||
<Trans>{title}</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>{subtitle}</Trans>
|
||||
</div>
|
||||
<Field
|
||||
id={id}
|
||||
name={id}
|
||||
component={renderTextareaField}
|
||||
type="text"
|
||||
className="form-control form-control--textarea font-monospace"
|
||||
disabled={disabled}
|
||||
/>
|
||||
</div>;
|
||||
|
||||
renderField.propTypes = {
|
||||
id: PropTypes.string,
|
||||
title: PropTypes.string,
|
||||
subtitle: PropTypes.string,
|
||||
disabled: PropTypes.bool,
|
||||
};
|
||||
|
||||
return (
|
||||
<form onSubmit={handleSubmit}>
|
||||
<div className="form__group mb-5">
|
||||
<label className="form__label form__label--with-desc" htmlFor="allowed_clients">
|
||||
<Trans>access_allowed_title</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>access_allowed_desc</Trans>
|
||||
</div>
|
||||
<Field
|
||||
id="allowed_clients"
|
||||
name="allowed_clients"
|
||||
component={renderTextareaField}
|
||||
type="text"
|
||||
className="form-control form-control--textarea"
|
||||
disabled={processingSet}
|
||||
/>
|
||||
</div>
|
||||
<div className="form__group mb-5">
|
||||
<label className="form__label form__label--with-desc" htmlFor="disallowed_clients">
|
||||
<Trans>access_disallowed_title</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>access_disallowed_desc</Trans>
|
||||
</div>
|
||||
<Field
|
||||
id="disallowed_clients"
|
||||
name="disallowed_clients"
|
||||
component={renderTextareaField}
|
||||
type="text"
|
||||
className="form-control form-control--textarea"
|
||||
disabled={processingSet}
|
||||
/>
|
||||
</div>
|
||||
<div className="form__group mb-5">
|
||||
<label className="form__label form__label--with-desc" htmlFor="blocked_hosts">
|
||||
<Trans>access_blocked_title</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>access_blocked_desc</Trans>
|
||||
</div>
|
||||
<Field
|
||||
id="blocked_hosts"
|
||||
name="blocked_hosts"
|
||||
component={renderTextareaField}
|
||||
type="text"
|
||||
className="form-control form-control--textarea"
|
||||
disabled={processingSet}
|
||||
/>
|
||||
</div>
|
||||
{fields.map(renderField)}
|
||||
<div className="card-actions">
|
||||
<div className="btn-list">
|
||||
<button
|
||||
|
||||
@@ -17,26 +17,55 @@ import {
|
||||
} from '../../../../helpers/form';
|
||||
import { BLOCKING_MODES } from '../../../../helpers/constants';
|
||||
|
||||
const getFields = (processing, t) => Object.values(BLOCKING_MODES).map(mode => (
|
||||
<Field
|
||||
key={mode}
|
||||
name="blocking_mode"
|
||||
type="radio"
|
||||
component={renderRadioField}
|
||||
value={mode}
|
||||
placeholder={t(mode)}
|
||||
disabled={processing}
|
||||
/>
|
||||
));
|
||||
const checkboxes = [{
|
||||
name: 'edns_cs_enabled',
|
||||
placeholder: 'edns_enable',
|
||||
subtitle: 'edns_cs_desc',
|
||||
},
|
||||
{
|
||||
name: 'dnssec_enabled',
|
||||
placeholder: 'dnssec_enable',
|
||||
subtitle: 'dnssec_enable_desc',
|
||||
},
|
||||
{
|
||||
name: 'disable_ipv6',
|
||||
placeholder: 'disable_ipv6',
|
||||
subtitle: 'disable_ipv6_desc',
|
||||
}];
|
||||
|
||||
const customIps = [{
|
||||
description: 'blocking_ipv4_desc',
|
||||
name: 'blocking_ipv4',
|
||||
validateIp: ipv4,
|
||||
},
|
||||
{
|
||||
description: 'blocking_ipv6_desc',
|
||||
name: 'blocking_ipv6',
|
||||
validateIp: ipv6,
|
||||
}];
|
||||
|
||||
const getFields = (processing, t) => Object.values(BLOCKING_MODES)
|
||||
.map(mode => (
|
||||
<Field
|
||||
key={mode}
|
||||
name="blocking_mode"
|
||||
type="radio"
|
||||
component={renderRadioField}
|
||||
value={mode}
|
||||
placeholder={t(mode)}
|
||||
disabled={processing}
|
||||
/>
|
||||
));
|
||||
|
||||
let Form = ({
|
||||
handleSubmit, submitting, invalid, processing, blockingMode, t,
|
||||
}) => (
|
||||
}) =>
|
||||
<form onSubmit={handleSubmit}>
|
||||
<div className="row">
|
||||
<div className="col-12 col-sm-6">
|
||||
<div className="form__group form__group--settings">
|
||||
<label htmlFor="ratelimit" className="form__label form__label--with-desc">
|
||||
<label htmlFor="ratelimit"
|
||||
className="form__label form__label--with-desc">
|
||||
<Trans>rate_limit</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
@@ -53,41 +82,31 @@ let Form = ({
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-12">
|
||||
<div className="form__group form__group--settings">
|
||||
<Field
|
||||
name="edns_cs_enabled"
|
||||
type="checkbox"
|
||||
component={renderSelectField}
|
||||
placeholder={t('edns_enable')}
|
||||
disabled={processing}
|
||||
subtitle={t('edns_cs_desc')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-12">
|
||||
<div className="form__group form__group--settings">
|
||||
<Field
|
||||
name="disable_ipv6"
|
||||
type="checkbox"
|
||||
component={renderSelectField}
|
||||
placeholder={t('disable_ipv6')}
|
||||
disabled={processing}
|
||||
subtitle={t('disable_ipv6_desc')}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{checkboxes.map(({ name, placeholder, subtitle }) =>
|
||||
<div className="col-12" key={name}>
|
||||
<div className="form__group form__group--settings">
|
||||
<Field
|
||||
name={name}
|
||||
type="checkbox"
|
||||
component={renderSelectField}
|
||||
placeholder={t(placeholder)}
|
||||
disabled={processing}
|
||||
subtitle={t(subtitle)}
|
||||
/>
|
||||
</div>
|
||||
</div>)}
|
||||
<div className="col-12">
|
||||
<div className="form__group form__group--settings mb-4">
|
||||
<label className="form__label form__label--with-desc">
|
||||
<Trans>blocking_mode</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
{Object.values(BLOCKING_MODES).map(mode => (
|
||||
<li key={mode}>
|
||||
<Trans >{`blocking_mode_${mode}`}</Trans>
|
||||
</li>
|
||||
))}
|
||||
{Object.values(BLOCKING_MODES)
|
||||
.map(mode => (
|
||||
<li key={mode}>
|
||||
<Trans>{`blocking_mode_${mode}`}</Trans>
|
||||
</li>
|
||||
))}
|
||||
</div>
|
||||
<div className="custom-controls-stacked">
|
||||
{getFields(processing, t)}
|
||||
@@ -96,40 +115,27 @@ let Form = ({
|
||||
</div>
|
||||
{blockingMode === BLOCKING_MODES.custom_ip && (
|
||||
<Fragment>
|
||||
<div className="col-12 col-sm-6">
|
||||
{customIps.map(({
|
||||
description,
|
||||
name,
|
||||
validateIp,
|
||||
}) => <div className="col-12 col-sm-6" key={name}>
|
||||
<div className="form__group form__group--settings">
|
||||
<label htmlFor="blocking_ipv4" className="form__label form__label--with-desc">
|
||||
<Trans>blocking_ipv4</Trans>
|
||||
<label className="form__label form__label--with-desc"
|
||||
htmlFor={name}><Trans>{name}</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>blocking_ipv4_desc</Trans>
|
||||
<Trans>{description}</Trans>
|
||||
</div>
|
||||
<Field
|
||||
name="blocking_ipv4"
|
||||
name={name}
|
||||
component={renderInputField}
|
||||
className="form-control"
|
||||
placeholder={t('form_enter_ip')}
|
||||
validate={[ipv4, required]}
|
||||
validate={[validateIp, required]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-12 col-sm-6">
|
||||
<div className="form__group form__group--settings">
|
||||
<label htmlFor="ip_address" className="form__label form__label--with-desc">
|
||||
<Trans>blocking_ipv6</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>blocking_ipv6_desc</Trans>
|
||||
</div>
|
||||
<Field
|
||||
name="blocking_ipv6"
|
||||
component={renderInputField}
|
||||
className="form-control"
|
||||
placeholder={t('form_enter_ip')}
|
||||
validate={[ipv6, required]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>)}
|
||||
</Fragment>
|
||||
)}
|
||||
</div>
|
||||
@@ -140,8 +146,7 @@ let Form = ({
|
||||
>
|
||||
<Trans>save_btn</Trans>
|
||||
</button>
|
||||
</form>
|
||||
);
|
||||
</form>;
|
||||
|
||||
Form.propTypes = {
|
||||
blockingMode: PropTypes.string.isRequired,
|
||||
|
||||
@@ -16,6 +16,7 @@ const Config = ({ t, dnsConfig, setDnsConfig }) => {
|
||||
blocking_ipv4,
|
||||
blocking_ipv6,
|
||||
edns_cs_enabled,
|
||||
dnssec_enabled,
|
||||
disable_ipv6,
|
||||
processingSetConfig,
|
||||
} = dnsConfig;
|
||||
@@ -35,6 +36,7 @@ const Config = ({ t, dnsConfig, setDnsConfig }) => {
|
||||
blocking_ipv6,
|
||||
edns_cs_enabled,
|
||||
disable_ipv6,
|
||||
dnssec_enabled,
|
||||
}}
|
||||
onSubmit={handleFormSubmit}
|
||||
processing={processingSetConfig}
|
||||
|
||||
@@ -6,21 +6,50 @@ import { Trans, withNamespaces } from 'react-i18next';
|
||||
import flow from 'lodash/flow';
|
||||
import classnames from 'classnames';
|
||||
|
||||
import { renderSelectField } from '../../../../helpers/form';
|
||||
import Examples from './Examples';
|
||||
import { renderSelectField } from '../../../../helpers/form';
|
||||
|
||||
const getInputFields = (parallel_requests_selected, fastest_addr_selected) => [{
|
||||
// eslint-disable-next-line react/display-name
|
||||
getTitle: () => <label className="form__label" htmlFor="upstream_dns">
|
||||
<Trans>upstream_dns</Trans>
|
||||
</label>,
|
||||
name: 'upstream_dns',
|
||||
type: 'text',
|
||||
component: 'textarea',
|
||||
className: 'form-control form-control--textarea font-monospace',
|
||||
placeholder: 'upstream_dns',
|
||||
},
|
||||
{
|
||||
name: 'parallel_requests',
|
||||
placeholder: 'parallel_requests',
|
||||
component: renderSelectField,
|
||||
type: 'checkbox',
|
||||
subtitle: 'upstream_parallel',
|
||||
disabled: fastest_addr_selected,
|
||||
},
|
||||
{
|
||||
name: 'fastest_addr',
|
||||
placeholder: 'fastest_addr',
|
||||
component: renderSelectField,
|
||||
type: 'checkbox',
|
||||
subtitle: 'fastest_addr_desc',
|
||||
disabled: parallel_requests_selected,
|
||||
}];
|
||||
|
||||
let Form = (props) => {
|
||||
const {
|
||||
t,
|
||||
handleSubmit,
|
||||
testUpstream,
|
||||
upstreamDns,
|
||||
bootstrapDns,
|
||||
allServers,
|
||||
submitting,
|
||||
invalid,
|
||||
processingSetUpstream,
|
||||
processingSetConfig,
|
||||
processingTestUpstream,
|
||||
fastest_addr,
|
||||
parallel_requests,
|
||||
upstream_dns,
|
||||
bootstrap_dns,
|
||||
} = props;
|
||||
|
||||
const testButtonClass = classnames({
|
||||
@@ -28,61 +57,49 @@ let Form = (props) => {
|
||||
'btn btn-primary btn-standard mr-2 btn-loading': processingTestUpstream,
|
||||
});
|
||||
|
||||
const INPUT_FIELDS = getInputFields(parallel_requests, fastest_addr);
|
||||
|
||||
return (
|
||||
<form onSubmit={handleSubmit}>
|
||||
<div className="row">
|
||||
<div className="col-12">
|
||||
<div className="form__group form__group--settings">
|
||||
<label className="form__label" htmlFor="upstream_dns">
|
||||
<Trans>upstream_dns</Trans>
|
||||
</label>
|
||||
<Field
|
||||
id="upstream_dns"
|
||||
name="upstream_dns"
|
||||
component="textarea"
|
||||
type="text"
|
||||
className="form-control form-control--textarea"
|
||||
placeholder={t('upstream_dns')}
|
||||
disabled={processingSetUpstream || processingTestUpstream}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-12">
|
||||
<div className="form__group form__group--settings">
|
||||
<Field
|
||||
name="all_servers"
|
||||
type="checkbox"
|
||||
component={renderSelectField}
|
||||
placeholder={t('upstream_parallel')}
|
||||
disabled={processingSetUpstream}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{INPUT_FIELDS.map(({
|
||||
name, component, type, className, placeholder, getTitle, subtitle, disabled,
|
||||
}) => <div className="col-12 mb-4" key={name}>
|
||||
{typeof getTitle === 'function' && getTitle()}
|
||||
<Field
|
||||
id={name}
|
||||
name={name}
|
||||
component={component}
|
||||
type={type}
|
||||
className={className}
|
||||
placeholder={t(placeholder)}
|
||||
subtitle={t(subtitle)}
|
||||
disabled={processingSetConfig || processingTestUpstream || disabled}
|
||||
/>
|
||||
</div>)}
|
||||
<div className="col-12">
|
||||
<Examples />
|
||||
<hr />
|
||||
</div>
|
||||
<div className="col-12">
|
||||
<div className="form__group">
|
||||
<label
|
||||
className="form__label form__label--with-desc"
|
||||
htmlFor="bootstrap_dns"
|
||||
>
|
||||
<Trans>bootstrap_dns</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>bootstrap_dns_desc</Trans>
|
||||
</div>
|
||||
<Field
|
||||
id="bootstrap_dns"
|
||||
name="bootstrap_dns"
|
||||
component="textarea"
|
||||
type="text"
|
||||
className="form-control form-control--textarea form-control--textarea-small"
|
||||
placeholder={t('bootstrap_dns')}
|
||||
disabled={processingSetUpstream}
|
||||
/>
|
||||
<div className="col-12 mb-4">
|
||||
<label
|
||||
className="form__label form__label--with-desc"
|
||||
htmlFor="bootstrap_dns"
|
||||
>
|
||||
<Trans>bootstrap_dns</Trans>
|
||||
</label>
|
||||
<div className="form__desc form__desc--top">
|
||||
<Trans>bootstrap_dns_desc</Trans>
|
||||
</div>
|
||||
<Field
|
||||
id="bootstrap_dns"
|
||||
name="bootstrap_dns"
|
||||
component="textarea"
|
||||
type="text"
|
||||
className="form-control form-control--textarea form-control--textarea-small font-monospace"
|
||||
placeholder={t('bootstrap_dns')}
|
||||
disabled={processingSetConfig}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="card-actions">
|
||||
@@ -92,12 +109,11 @@ let Form = (props) => {
|
||||
className={testButtonClass}
|
||||
onClick={() =>
|
||||
testUpstream({
|
||||
upstream_dns: upstreamDns,
|
||||
bootstrap_dns: bootstrapDns,
|
||||
all_servers: allServers,
|
||||
upstream_dns,
|
||||
bootstrap_dns,
|
||||
})
|
||||
}
|
||||
disabled={!upstreamDns || processingTestUpstream}
|
||||
disabled={!upstream_dns || processingTestUpstream}
|
||||
>
|
||||
<Trans>test_upstream_btn</Trans>
|
||||
</button>
|
||||
@@ -105,7 +121,7 @@ let Form = (props) => {
|
||||
type="submit"
|
||||
className="btn btn-success btn-standard"
|
||||
disabled={
|
||||
submitting || invalid || processingSetUpstream || processingTestUpstream
|
||||
submitting || invalid || processingSetConfig || processingTestUpstream
|
||||
}
|
||||
>
|
||||
<Trans>apply_btn</Trans>
|
||||
@@ -122,24 +138,28 @@ Form.propTypes = {
|
||||
submitting: PropTypes.bool,
|
||||
invalid: PropTypes.bool,
|
||||
initialValues: PropTypes.object,
|
||||
upstreamDns: PropTypes.string,
|
||||
bootstrapDns: PropTypes.string,
|
||||
allServers: PropTypes.bool,
|
||||
upstream_dns: PropTypes.string,
|
||||
bootstrap_dns: PropTypes.string,
|
||||
fastest_addr: PropTypes.bool,
|
||||
parallel_requests: PropTypes.bool,
|
||||
processingTestUpstream: PropTypes.bool,
|
||||
processingSetUpstream: PropTypes.bool,
|
||||
processingSetConfig: PropTypes.bool,
|
||||
t: PropTypes.func,
|
||||
};
|
||||
|
||||
const selector = formValueSelector('upstreamForm');
|
||||
|
||||
Form = connect((state) => {
|
||||
const upstreamDns = selector(state, 'upstream_dns');
|
||||
const bootstrapDns = selector(state, 'bootstrap_dns');
|
||||
const allServers = selector(state, 'all_servers');
|
||||
const upstream_dns = selector(state, 'upstream_dns');
|
||||
const bootstrap_dns = selector(state, 'bootstrap_dns');
|
||||
const fastest_addr = selector(state, 'fastest_addr');
|
||||
const parallel_requests = selector(state, 'parallel_requests');
|
||||
|
||||
return {
|
||||
upstreamDns,
|
||||
bootstrapDns,
|
||||
allServers,
|
||||
upstream_dns,
|
||||
bootstrap_dns,
|
||||
fastest_addr,
|
||||
parallel_requests,
|
||||
};
|
||||
})(Form);
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ import Card from '../../../ui/Card';
|
||||
|
||||
class Upstream extends Component {
|
||||
handleSubmit = (values) => {
|
||||
this.props.setUpstream(values);
|
||||
this.props.setDnsConfig(values);
|
||||
};
|
||||
|
||||
handleTest = (values) => {
|
||||
@@ -17,11 +17,14 @@ class Upstream extends Component {
|
||||
render() {
|
||||
const {
|
||||
t,
|
||||
upstreamDns: upstream_dns,
|
||||
bootstrapDns: bootstrap_dns,
|
||||
allServers: all_servers,
|
||||
processingSetUpstream,
|
||||
processingTestUpstream,
|
||||
dnsConfig: {
|
||||
upstream_dns,
|
||||
bootstrap_dns,
|
||||
fastest_addr,
|
||||
parallel_requests,
|
||||
processingSetConfig,
|
||||
},
|
||||
} = this.props;
|
||||
|
||||
return (
|
||||
@@ -36,12 +39,13 @@ class Upstream extends Component {
|
||||
initialValues={{
|
||||
upstream_dns,
|
||||
bootstrap_dns,
|
||||
all_servers,
|
||||
fastest_addr,
|
||||
parallel_requests,
|
||||
}}
|
||||
testUpstream={this.handleTest}
|
||||
onSubmit={this.handleSubmit}
|
||||
processingTestUpstream={processingTestUpstream}
|
||||
processingSetUpstream={processingSetUpstream}
|
||||
processingSetConfig={processingSetConfig}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -51,14 +55,11 @@ class Upstream extends Component {
|
||||
}
|
||||
|
||||
Upstream.propTypes = {
|
||||
upstreamDns: PropTypes.string,
|
||||
bootstrapDns: PropTypes.string,
|
||||
allServers: PropTypes.bool,
|
||||
setUpstream: PropTypes.func.isRequired,
|
||||
testUpstream: PropTypes.func.isRequired,
|
||||
processingSetUpstream: PropTypes.bool.isRequired,
|
||||
processingTestUpstream: PropTypes.bool.isRequired,
|
||||
t: PropTypes.func.isRequired,
|
||||
dnsConfig: PropTypes.object.isRequired,
|
||||
setDnsConfig: PropTypes.func.isRequired,
|
||||
};
|
||||
|
||||
export default withNamespaces()(Upstream);
|
||||
|
||||
@@ -10,7 +10,6 @@ import Loading from '../../ui/Loading';
|
||||
|
||||
class Dns extends Component {
|
||||
componentDidMount() {
|
||||
this.props.getDnsSettings();
|
||||
this.props.getAccessList();
|
||||
this.props.getDnsConfig();
|
||||
}
|
||||
@@ -18,59 +17,45 @@ class Dns extends Component {
|
||||
render() {
|
||||
const {
|
||||
t,
|
||||
dashboard,
|
||||
settings,
|
||||
access,
|
||||
setAccessList,
|
||||
testUpstream,
|
||||
setUpstream,
|
||||
dnsConfig,
|
||||
setDnsConfig,
|
||||
} = this.props;
|
||||
|
||||
const isDataLoading = dashboard.processingDnsSettings
|
||||
|| access.processing
|
||||
|| dnsConfig.processingGetConfig;
|
||||
const isDataReady = !dashboard.processingDnsSettings
|
||||
&& !access.processing
|
||||
&& !dnsConfig.processingGetConfig;
|
||||
const isDataLoading = access.processing || dnsConfig.processingGetConfig;
|
||||
|
||||
return (
|
||||
<Fragment>
|
||||
<PageTitle title={t('dns_settings')} />
|
||||
{isDataLoading && <Loading />}
|
||||
{isDataReady && (
|
||||
{isDataLoading ?
|
||||
<Loading /> :
|
||||
<Fragment>
|
||||
<Upstream
|
||||
processingTestUpstream={settings.processingTestUpstream}
|
||||
testUpstream={testUpstream}
|
||||
dnsConfig={dnsConfig}
|
||||
setDnsConfig={setDnsConfig}
|
||||
/>
|
||||
<Config
|
||||
dnsConfig={dnsConfig}
|
||||
setDnsConfig={setDnsConfig}
|
||||
/>
|
||||
<Upstream
|
||||
upstreamDns={dashboard.upstreamDns}
|
||||
bootstrapDns={dashboard.bootstrapDns}
|
||||
allServers={dashboard.allServers}
|
||||
processingTestUpstream={settings.processingTestUpstream}
|
||||
processingSetUpstream={settings.processingSetUpstream}
|
||||
setUpstream={setUpstream}
|
||||
testUpstream={testUpstream}
|
||||
/>
|
||||
<Access access={access} setAccessList={setAccessList} />
|
||||
</Fragment>
|
||||
)}
|
||||
</Fragment>}
|
||||
</Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Dns.propTypes = {
|
||||
dashboard: PropTypes.object.isRequired,
|
||||
settings: PropTypes.object.isRequired,
|
||||
setUpstream: PropTypes.func.isRequired,
|
||||
testUpstream: PropTypes.func.isRequired,
|
||||
getAccessList: PropTypes.func.isRequired,
|
||||
setAccessList: PropTypes.func.isRequired,
|
||||
access: PropTypes.object.isRequired,
|
||||
getDnsSettings: PropTypes.func.isRequired,
|
||||
dnsConfig: PropTypes.object.isRequired,
|
||||
setDnsConfig: PropTypes.func.isRequired,
|
||||
getDnsConfig: PropTypes.func.isRequired,
|
||||
|
||||
@@ -42,6 +42,16 @@ const Form = (props) => {
|
||||
disabled={processing}
|
||||
/>
|
||||
</div>
|
||||
<div className="form__group form__group--settings">
|
||||
<Field
|
||||
name="anonymize_client_ip"
|
||||
type="checkbox"
|
||||
component={renderSelectField}
|
||||
placeholder={t('anonymize_client_ip')}
|
||||
subtitle={t('anonymize_client_ip_desc')}
|
||||
disabled={processing}
|
||||
/>
|
||||
</div>
|
||||
<label className="form__label">
|
||||
<Trans>query_log_retention</Trans>
|
||||
</label>
|
||||
|
||||
@@ -30,7 +30,7 @@ class LogsConfig extends Component {
|
||||
|
||||
render() {
|
||||
const {
|
||||
t, enabled, interval, processing, processingClear,
|
||||
t, enabled, interval, processing, processingClear, anonymize_client_ip,
|
||||
} = this.props;
|
||||
|
||||
return (
|
||||
@@ -44,6 +44,7 @@ class LogsConfig extends Component {
|
||||
initialValues={{
|
||||
enabled,
|
||||
interval,
|
||||
anonymize_client_ip,
|
||||
}}
|
||||
onSubmit={this.handleFormSubmit}
|
||||
processing={processing}
|
||||
@@ -59,6 +60,7 @@ class LogsConfig extends Component {
|
||||
LogsConfig.propTypes = {
|
||||
interval: PropTypes.number.isRequired,
|
||||
enabled: PropTypes.bool.isRequired,
|
||||
anonymize_client_ip: PropTypes.bool.isRequired,
|
||||
processing: PropTypes.bool.isRequired,
|
||||
processingClear: PropTypes.bool.isRequired,
|
||||
setLogsConfig: PropTypes.func.isRequired,
|
||||
|
||||
@@ -106,6 +106,7 @@ class Settings extends Component {
|
||||
<LogsConfig
|
||||
enabled={queryLogs.enabled}
|
||||
interval={queryLogs.interval}
|
||||
anonymize_client_ip={queryLogs.anonymize_client_ip}
|
||||
processing={queryLogs.processingSetConfig}
|
||||
processingClear={queryLogs.processingClear}
|
||||
setLogsConfig={setLogsConfig}
|
||||
|
||||
@@ -10,6 +10,11 @@
|
||||
}
|
||||
|
||||
.card-table-overflow {
|
||||
overflow-y: auto;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.card-table-overflow--limited {
|
||||
overflow-y: auto;
|
||||
max-height: 280px;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,20 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
|
||||
const Cell = props => (
|
||||
import { formatNumber } from '../../helpers/helpers';
|
||||
|
||||
const Cell = ({ value, percent, color }) => (
|
||||
<div className="stats__row">
|
||||
<div className="stats__row-value mb-1">
|
||||
<strong>{props.value}</strong>
|
||||
<small className="ml-3 text-muted">{props.percent}%</small>
|
||||
<strong>{formatNumber(value)}</strong>
|
||||
<small className="ml-3 text-muted">{percent}%</small>
|
||||
</div>
|
||||
<div className="progress progress-xs">
|
||||
<div
|
||||
className="progress-bar"
|
||||
style={{
|
||||
width: `${props.percent}%`,
|
||||
backgroundColor: props.color,
|
||||
width: `${percent}%`,
|
||||
backgroundColor: color,
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
|
||||
.checkbox__input:disabled + .checkbox__label {
|
||||
cursor: default;
|
||||
color: var(--gray);
|
||||
}
|
||||
|
||||
.checkbox__input:disabled + .checkbox__label:before {
|
||||
|
||||
@@ -34,6 +34,9 @@ const Guide = (props) => {
|
||||
<li>
|
||||
<Trans>install_devices_router_list_3</Trans>
|
||||
</li>
|
||||
<li>
|
||||
<Trans>install_devices_router_list_4</Trans>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -84,10 +84,6 @@ const Icons = () => (
|
||||
<path d="M4.8 3.2L3.2 6.397V19.2h4v2.403h3.198l2.403-2.403H16l4.8-4.8v-11.2zm14.4 10.402L16.8 16H12l-2.398 2.398V16H6.398V4.8H19.2zm0 0" /><path d="M15.2 12.8h-1.598V7.2h1.597zm-3.2 0h-1.602V7.2H12zm0 0" />
|
||||
</symbol>
|
||||
|
||||
<symbol id="service_messenger" viewBox="0 0 24 24" fill="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2">
|
||||
<path d="M5.602 22.398L10.398 20l-4.796-2.398zm0 0" /><path d="M12 2.398c-5.3 0-9.602 4.122-9.602 9.204C2.398 16.68 6.7 20.8 12 20.8c5.3 0 9.602-4.121 9.602-9.2 0-5.081-4.301-9.203-9.602-9.203zm.91 11.844l-2.305-2.48-4.328 2.422 4.813-5.098 2.36 2.363 4.218-2.363zm0 0" />
|
||||
</symbol>
|
||||
|
||||
<symbol id="service_snapchat" viewBox="0 0 24 24" fill="currentColor" strokeLinecap="round" strokeLinejoin="round" strokeWidth="2">
|
||||
<path d="M12.176 4c.715 0 3.136.191 4.277 2.668.383.828.285 2.273.211 3.437l-.004.051c-.008.164-.02.32-.027.469.015.02.164.156.492.168.25-.012.54-.086.855-.23a.784.784 0 0 1 .57.008h.005c.254.09.422.261.425.44.004.173-.128.43-.789.68a2.694 2.694 0 0 1-.25.082c-.375.118-.945.293-1.117.692-.097.215-.066.48.09.785 0 .004.004.008.004.012.047.105 1.187 2.62 3.73 3.027.094.016.16.094.153.188a.24.24 0 0 1-.024.101c-.105.238-.578.574-2.234.824-.133.02-.188.188-.266.547-.03.13-.058.258-.101.39-.035.118-.11.173-.235.173h-.02a2.34 2.34 0 0 1-.37-.043 4.986 4.986 0 0 0-.996-.102c-.23 0-.473.02-.715.059-.496.078-.918.367-1.363.672-.653.445-1.32.902-2.364.902-.047 0-.09 0-.136-.004-.028.004-.055.004-.086.004-1.043 0-1.711-.457-2.36-.902-.445-.305-.867-.594-1.363-.672a4.533 4.533 0 0 0-.719-.059c-.418 0-.75.063-.992.106a2.02 2.02 0 0 1-.371.054c-.102 0-.211-.023-.258-.18-.039-.136-.07-.269-.101-.394-.075-.328-.125-.531-.266-.55-1.656-.247-2.129-.587-2.234-.825-.012-.035-.024-.066-.024-.101a.182.182 0 0 1 .156-.188c2.54-.406 3.68-2.922 3.727-3.031.004 0 .004-.004.004-.008.156-.305.187-.57.094-.79-.176-.398-.747-.57-1.122-.687a3.147 3.147 0 0 1-.25-.082c-.75-.289-.812-.582-.785-.734.051-.254.407-.434.692-.434a.49.49 0 0 1 .207.04c.336.152.64.23.906.23.363 0 .52-.148.54-.168-.009-.164-.02-.34-.032-.52-.074-1.164-.168-2.609.21-3.433 1.138-2.477 3.555-2.668 4.27-2.668L12.133 4h.043m0-1.602h-.043l-.313.008v-.004c-.953 0-4.187.262-5.722 3.598-.387.844-.45 1.887-.422 2.922-.922.02-2 .625-2.215 1.726-.082.407-.184 1.786 1.781 2.54.012.003.02.007.031.011-.39.559-1.113 1.34-2.168 1.508-.902.14-1.55.941-1.5 1.86.016.226.067.44.153.64.41.938 1.406 1.363 2.543 1.613a1.83 1.83 0 0 0 1.785 1.305c.246 0 .465-.043.66-.078a3.44 3.44 0 0 1 .703-.082c.149 0 .305.012.465.039.14.023.457.238.711.41.73.5 1.727 1.184 3.266 1.184h.101c.04 0 .078.004.121.004 1.532 0 2.528-.68 3.258-1.176.281-.192.582-.399.723-.422.156-.024.312-.04.46-.04.259 0 .458.032.696.075.266.05.477.074.668.074.852 0 1.543-.508 1.785-1.293 1.137-.25 2.129-.672 2.535-1.593.094-.22.149-.43.16-.649a1.783 1.783 0 0 0-1.496-1.871c-1.054-.168-1.78-.95-2.172-1.508l.036-.011c1.601-.618 1.824-1.645 1.816-2.204-.02-.855-.594-1.601-1.477-1.918a2.37 2.37 0 0 0-.777-.156c.027-1.015-.039-2.078-.422-2.914-1.539-3.336-4.773-3.598-5.73-3.598zm0 0" />
|
||||
</symbol>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { connect } from 'react-redux';
|
||||
import { handleUpstreamChange, setUpstream, testUpstream, getDnsSettings } from '../actions';
|
||||
import { testUpstream } from '../actions';
|
||||
import { getAccessList, setAccessList } from '../actions/access';
|
||||
import {
|
||||
getRewritesList,
|
||||
@@ -25,8 +25,6 @@ const mapStateToProps = (state) => {
|
||||
};
|
||||
|
||||
const mapDispatchToProps = {
|
||||
handleUpstreamChange,
|
||||
setUpstream,
|
||||
testUpstream,
|
||||
getAccessList,
|
||||
setAccessList,
|
||||
@@ -34,7 +32,6 @@ const mapDispatchToProps = {
|
||||
addRewrite,
|
||||
deleteRewrite,
|
||||
toggleRewritesModal,
|
||||
getDnsSettings,
|
||||
getDnsConfig,
|
||||
setDnsConfig,
|
||||
};
|
||||
|
||||
@@ -4,7 +4,12 @@ export const R_IPV4 = /^(?:(?:^|\.)(?:2(?:5[0-5]|[0-4]\d)|1?\d?\d)){4}$/;
|
||||
export const R_IPV6 = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;
|
||||
export const R_CIDR = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$/;
|
||||
export const R_MAC = /^((([a-fA-F0-9][a-fA-F0-9]+[-]){5}|([a-fA-F0-9][a-fA-F0-9]+[:]){5})([a-fA-F0-9][a-fA-F0-9])$)|(^([a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]+[.]){2}([a-fA-F0-9][a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]))$/;
|
||||
export const R_CIDR_IPV6 = /^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))$/;
|
||||
export const R_PATH_LAST_PART = /\/[^/]*$/;
|
||||
// eslint-disable-next-line no-control-regex
|
||||
export const R_UNIX_ABSOLUTE_PATH = /^(\/[^/\x00]+)+$/;
|
||||
// eslint-disable-next-line no-control-regex
|
||||
export const R_WIN_ABSOLUTE_PATH = /^([a-zA-Z]:)?(\\|\/)(?:[^\\/:*?"<>|\x00]+\\)*[^\\/:*?"<>|\x00]*$/;
|
||||
|
||||
export const STATS_NAMES = {
|
||||
avg_processing_time: 'average_processing_time',
|
||||
@@ -187,10 +192,6 @@ export const SERVICES = [
|
||||
id: 'snapchat',
|
||||
name: 'Snapchat',
|
||||
},
|
||||
{
|
||||
id: 'messenger',
|
||||
name: 'Messenger',
|
||||
},
|
||||
{
|
||||
id: 'twitch',
|
||||
name: 'Twitch',
|
||||
@@ -260,6 +261,7 @@ export const FILTERED_STATUS = {
|
||||
NOT_FILTERED_NOT_FOUND: 'NotFilteredNotFound',
|
||||
FILTERED_BLOCKED_SERVICE: 'FilteredBlockedService',
|
||||
REWRITE: 'Rewrite',
|
||||
REWRITE_HOSTS: 'RewriteEtcHosts',
|
||||
FILTERED_SAFE_SEARCH: 'FilteredSafeSearch',
|
||||
FILTERED_SAFE_BROWSING: 'FilteredSafeBrowsing',
|
||||
FILTERED_PARENTAL: 'FilteredParental',
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import React, { Fragment } from 'react';
|
||||
import { Trans } from 'react-i18next';
|
||||
import PropTypes from 'prop-types';
|
||||
import { R_IPV4, R_MAC, R_HOST, R_IPV6, R_CIDR, UNSAFE_PORTS, R_URL_REQUIRES_PROTOCOL } from '../helpers/constants';
|
||||
import {
|
||||
R_IPV4, R_MAC, R_HOST, R_IPV6, R_CIDR, R_CIDR_IPV6,
|
||||
UNSAFE_PORTS, R_URL_REQUIRES_PROTOCOL, R_WIN_ABSOLUTE_PATH, R_UNIX_ABSOLUTE_PATH,
|
||||
} from '../helpers/constants';
|
||||
import { createOnBlurHandler } from './helpers';
|
||||
|
||||
export const renderField = (props, elementType) => {
|
||||
@@ -114,29 +117,30 @@ export const renderSelectField = ({
|
||||
placeholder,
|
||||
subtitle,
|
||||
disabled,
|
||||
onClick,
|
||||
modifier = 'checkbox--form',
|
||||
meta: { touched, error },
|
||||
}) => (
|
||||
<Fragment>
|
||||
<label className={`checkbox ${modifier}`}>
|
||||
<span className="checkbox__marker" />
|
||||
<input {...input} type="checkbox" className="checkbox__input" disabled={disabled} />
|
||||
<span className="checkbox__label">
|
||||
<span className="checkbox__label-text checkbox__label-text--long">
|
||||
<span className="checkbox__label-title">{placeholder}</span>
|
||||
{subtitle && (
|
||||
<span
|
||||
className="checkbox__label-subtitle"
|
||||
dangerouslySetInnerHTML={{ __html: subtitle }}
|
||||
/>
|
||||
)}
|
||||
<Fragment>
|
||||
<label className={`checkbox ${modifier}`} onClick={onClick}>
|
||||
<span className="checkbox__marker" />
|
||||
<input {...input} type="checkbox" className="checkbox__input" disabled={disabled} />
|
||||
<span className="checkbox__label">
|
||||
<span className="checkbox__label-text checkbox__label-text--long">
|
||||
<span className="checkbox__label-title">{placeholder}</span>
|
||||
{subtitle && (
|
||||
<span
|
||||
className="checkbox__label-subtitle"
|
||||
dangerouslySetInnerHTML={{ __html: subtitle }}
|
||||
/>
|
||||
)}
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</label>
|
||||
{!disabled &&
|
||||
touched &&
|
||||
(error && <span className="form__message form__message--error">{error}</span>)}
|
||||
</Fragment>
|
||||
</label>
|
||||
{!disabled &&
|
||||
touched &&
|
||||
(error && <span className="form__message form__message--error">{error}</span>)}
|
||||
</Fragment>
|
||||
);
|
||||
|
||||
export const renderServiceField = ({
|
||||
@@ -191,8 +195,13 @@ export const clientId = (value) => {
|
||||
return undefined;
|
||||
}
|
||||
const formattedValue = value ? value.trim() : value;
|
||||
if (formattedValue && !(R_IPV4.test(formattedValue) || R_IPV6.test(formattedValue)
|
||||
|| R_MAC.test(formattedValue) || R_CIDR.test(formattedValue))) {
|
||||
if (formattedValue && !(
|
||||
R_IPV4.test(formattedValue)
|
||||
|| R_IPV6.test(formattedValue)
|
||||
|| R_MAC.test(formattedValue)
|
||||
|| R_CIDR.test(formattedValue)
|
||||
|| R_CIDR_IPV6.test(formattedValue)
|
||||
)) {
|
||||
return <Trans>form_error_client_id_format</Trans>;
|
||||
}
|
||||
return undefined;
|
||||
@@ -284,4 +293,14 @@ export const isValidUrl = (value) => {
|
||||
return undefined;
|
||||
};
|
||||
|
||||
export const isValidAbsolutePath = value => R_WIN_ABSOLUTE_PATH.test(value)
|
||||
|| R_UNIX_ABSOLUTE_PATH.test(value);
|
||||
|
||||
export const isValidPath = (value) => {
|
||||
if (value && !isValidAbsolutePath(value) && !R_URL_REQUIRES_PROTOCOL.test(value)) {
|
||||
return <Trans>form_error_url_or_path_format</Trans>;
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
export const toNumber = value => value && parseInt(value, 10);
|
||||
|
||||
@@ -431,6 +431,7 @@ export const createOnBlurHandler = (event, input, normalizeOnBlur) => (
|
||||
|
||||
export const checkFiltered = reason => reason.indexOf(FILTERED) === 0;
|
||||
export const checkRewrite = reason => reason === FILTERED_STATUS.REWRITE;
|
||||
export const checkRewriteHosts = reason => reason === FILTERED_STATUS.REWRITE_HOSTS;
|
||||
export const checkBlackList = reason => reason === FILTERED_STATUS.FILTERED_BLACK_LIST;
|
||||
export const checkWhiteList = reason => reason === FILTERED_STATUS.NOT_FILTERED_WHITE_LIST;
|
||||
export const checkNotFilteredNotFound = reason => reason === FILTERED_STATUS.NOT_FILTERED_NOT_FOUND;
|
||||
@@ -449,3 +450,12 @@ export const getCurrentFilter = (url, filters) => {
|
||||
|
||||
return { name: '', url: '' };
|
||||
};
|
||||
|
||||
/**
|
||||
* @param number Number to format
|
||||
* @returns string Returns a string with a language-sensitive representation of this number
|
||||
*/
|
||||
export const formatNumber = (num) => {
|
||||
const currentLanguage = i18n.languages[0] || DEFAULT_LANGUAGE;
|
||||
return num.toLocaleString(currentLanguage);
|
||||
};
|
||||
|
||||
@@ -32,6 +32,8 @@ import tr from './__locales/tr.json';
|
||||
import srCS from './__locales/sr-cs.json';
|
||||
import hr from './__locales/hr.json';
|
||||
import fa from './__locales/fa.json';
|
||||
import th from './__locales/th.json';
|
||||
import ro from './__locales/ro.json';
|
||||
|
||||
const resources = {
|
||||
en: {
|
||||
@@ -115,6 +117,12 @@ const resources = {
|
||||
fa: {
|
||||
translation: fa,
|
||||
},
|
||||
th: {
|
||||
translation: th,
|
||||
},
|
||||
ro: {
|
||||
translation: ro,
|
||||
},
|
||||
};
|
||||
|
||||
const availableLanguages = Object.keys(LANGUAGES);
|
||||
|
||||
@@ -217,19 +217,19 @@ class Settings extends Component {
|
||||
</div>
|
||||
<div className="col-12">
|
||||
{webStatus &&
|
||||
<div className="setup__error text-danger">
|
||||
{webStatus}
|
||||
{isWebFixAvailable &&
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-secondary btn-sm ml-2"
|
||||
onClick={() => this.handleAutofix('web')}
|
||||
>
|
||||
<Trans>fix</Trans>
|
||||
</button>
|
||||
}
|
||||
<hr className="divider--small" />
|
||||
</div>
|
||||
<div className="setup__error text-danger">
|
||||
{webStatus}
|
||||
{isWebFixAvailable &&
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-secondary btn-sm ml-2"
|
||||
onClick={() => this.handleAutofix('web')}
|
||||
>
|
||||
<Trans>fix</Trans>
|
||||
</button>
|
||||
}
|
||||
<hr className="divider--small" />
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@@ -287,32 +287,33 @@ class Settings extends Component {
|
||||
</div>
|
||||
<div className="col-12">
|
||||
{dnsStatus &&
|
||||
<Fragment>
|
||||
<div className="setup__error text-danger">
|
||||
{dnsStatus}
|
||||
{isDnsFixAvailable &&
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-secondary btn-sm ml-2"
|
||||
onClick={() => this.handleAutofix('dns')}
|
||||
>
|
||||
<Trans>fix</Trans>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
<div className="text-muted mb-2">
|
||||
<p className="mb-1">
|
||||
<Trans>autofix_warning_text</Trans>
|
||||
</p>
|
||||
<Trans components={[<li key="0">text</li>]}>
|
||||
autofix_warning_list
|
||||
</Trans>
|
||||
<p className="mb-1">
|
||||
<Trans>autofix_warning_result</Trans>
|
||||
</p>
|
||||
</div>
|
||||
<hr className="divider--small" />
|
||||
</Fragment>
|
||||
<Fragment>
|
||||
<div className="setup__error text-danger">
|
||||
{dnsStatus}
|
||||
{isDnsFixAvailable &&
|
||||
<button
|
||||
type="button"
|
||||
className="btn btn-secondary btn-sm ml-2"
|
||||
onClick={() => this.handleAutofix('dns')}
|
||||
>
|
||||
<Trans>fix</Trans>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
{isDnsFixAvailable &&
|
||||
<div className="text-muted mb-2">
|
||||
<p className="mb-1">
|
||||
<Trans>autofix_warning_text</Trans>
|
||||
</p>
|
||||
<Trans components={[<li key="0">text</li>]}>
|
||||
autofix_warning_list
|
||||
</Trans>
|
||||
<p className="mb-1">
|
||||
<Trans>autofix_warning_result</Trans>
|
||||
</p>
|
||||
</div>}
|
||||
<hr className="divider--small" />
|
||||
</Fragment>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -15,6 +15,8 @@ const dnsConfig = handleActions(
|
||||
const {
|
||||
blocking_ipv4,
|
||||
blocking_ipv6,
|
||||
upstream_dns,
|
||||
bootstrap_dns,
|
||||
...values
|
||||
} = payload;
|
||||
|
||||
@@ -23,6 +25,8 @@ const dnsConfig = handleActions(
|
||||
...values,
|
||||
blocking_ipv4: blocking_ipv4 || DEFAULT_BLOCKING_IPV4,
|
||||
blocking_ipv6: blocking_ipv6 || DEFAULT_BLOCKING_IPV6,
|
||||
upstream_dns: (upstream_dns && upstream_dns.join('\n')) || '',
|
||||
bootstrap_dns: (bootstrap_dns && bootstrap_dns.join('\n')) || '',
|
||||
processingGetConfig: false,
|
||||
};
|
||||
},
|
||||
@@ -45,6 +49,7 @@ const dnsConfig = handleActions(
|
||||
blocking_ipv6: DEFAULT_BLOCKING_IPV6,
|
||||
edns_cs_enabled: false,
|
||||
disable_ipv6: false,
|
||||
dnssec_enabled: false,
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -13,7 +13,11 @@ const filtering = handleActions(
|
||||
return { ...state, userRules };
|
||||
},
|
||||
|
||||
[actions.getFilteringStatusRequest]: state => ({ ...state, processingFilters: true }),
|
||||
[actions.getFilteringStatusRequest]: state => ({
|
||||
...state,
|
||||
processingFilters: true,
|
||||
check: {},
|
||||
}),
|
||||
[actions.getFilteringStatusFailure]: state => ({ ...state, processingFilters: false }),
|
||||
[actions.getFilteringStatusSuccess]: (state, { payload }) => ({
|
||||
...state,
|
||||
|
||||
@@ -35,14 +35,6 @@ const settings = handleActions(
|
||||
const newSettingsList = { ...settingsList, [settingKey]: newSetting };
|
||||
return { ...state, settingsList: newSettingsList };
|
||||
},
|
||||
[actions.setUpstreamRequest]: state => ({ ...state, processingSetUpstream: true }),
|
||||
[actions.setUpstreamFailure]: state => ({ ...state, processingSetUpstream: false }),
|
||||
[actions.setUpstreamSuccess]: (state, { payload }) => ({
|
||||
...state,
|
||||
...payload,
|
||||
processingSetUpstream: false,
|
||||
}),
|
||||
|
||||
[actions.testUpstreamRequest]: state => ({ ...state, processingTestUpstream: true }),
|
||||
[actions.testUpstreamFailure]: state => ({ ...state, processingTestUpstream: false }),
|
||||
[actions.testUpstreamSuccess]: state => ({ ...state, processingTestUpstream: false }),
|
||||
@@ -50,7 +42,6 @@ const settings = handleActions(
|
||||
{
|
||||
processing: true,
|
||||
processingTestUpstream: false,
|
||||
processingSetUpstream: false,
|
||||
processingDhcpStatus: false,
|
||||
settingsList: {},
|
||||
},
|
||||
@@ -67,12 +58,9 @@ const dashboard = handleActions(
|
||||
version,
|
||||
dns_port: dnsPort,
|
||||
dns_addresses: dnsAddresses,
|
||||
upstream_dns: upstreamDns,
|
||||
bootstrap_dns: bootstrapDns,
|
||||
all_servers: allServers,
|
||||
protection_enabled: protectionEnabled,
|
||||
language,
|
||||
http_port: httpPort,
|
||||
language,
|
||||
} = payload;
|
||||
const newState = {
|
||||
...state,
|
||||
@@ -81,9 +69,6 @@ const dashboard = handleActions(
|
||||
dnsVersion: version,
|
||||
dnsPort,
|
||||
dnsAddresses,
|
||||
upstreamDns: (upstreamDns && upstreamDns.join('\n')) || '',
|
||||
bootstrapDns: (bootstrapDns && bootstrapDns.join('\n')) || '',
|
||||
allServers,
|
||||
protectionEnabled,
|
||||
language,
|
||||
httpPort,
|
||||
@@ -138,11 +123,6 @@ const dashboard = handleActions(
|
||||
return newState;
|
||||
},
|
||||
|
||||
[actions.handleUpstreamChange]: (state, { payload }) => {
|
||||
const { upstreamDns } = payload;
|
||||
return { ...state, upstreamDns };
|
||||
},
|
||||
|
||||
[actions.getLanguageSuccess]: (state, { payload }) => {
|
||||
const newState = { ...state, language: payload };
|
||||
return newState;
|
||||
@@ -159,24 +139,6 @@ const dashboard = handleActions(
|
||||
return newState;
|
||||
},
|
||||
|
||||
[actions.getDnsSettingsRequest]: state => ({ ...state, processingDnsSettings: true }),
|
||||
[actions.getDnsSettingsFailure]: state => ({ ...state, processingDnsSettings: false }),
|
||||
[actions.getDnsSettingsSuccess]: (state, { payload }) => {
|
||||
const {
|
||||
upstream_dns: upstreamDns,
|
||||
bootstrap_dns: bootstrapDns,
|
||||
all_servers: allServers,
|
||||
} = payload;
|
||||
|
||||
return {
|
||||
...state,
|
||||
allServers,
|
||||
upstreamDns: (upstreamDns && upstreamDns.join('\n')) || '',
|
||||
bootstrapDns: (bootstrapDns && bootstrapDns.join('\n')) || '',
|
||||
processingDnsSettings: false,
|
||||
};
|
||||
},
|
||||
|
||||
[actions.getProfileRequest]: state => ({ ...state, processingProfile: true }),
|
||||
[actions.getProfileFailure]: state => ({ ...state, processingProfile: false }),
|
||||
[actions.getProfileSuccess]: (state, { payload }) => ({
|
||||
@@ -191,11 +153,7 @@ const dashboard = handleActions(
|
||||
processingVersion: true,
|
||||
processingClients: true,
|
||||
processingUpdate: false,
|
||||
processingDnsSettings: true,
|
||||
processingProfile: true,
|
||||
upstreamDns: '',
|
||||
bootstrapDns: '',
|
||||
allServers: false,
|
||||
protectionEnabled: false,
|
||||
processingProtection: false,
|
||||
httpPort: 80,
|
||||
|
||||
@@ -134,6 +134,7 @@ const queryLogs = handleActions(
|
||||
oldest: '',
|
||||
filter: DEFAULT_LOGS_FILTER,
|
||||
isFiltered: false,
|
||||
anonymize_client_ip: false,
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
5
client/webpack.common.js
vendored
5
client/webpack.common.js
vendored
@@ -14,9 +14,10 @@ const ENTRY_LOGIN = path.resolve(RESOURCES_PATH, 'src/login/index.js');
|
||||
const HTML_PATH = path.resolve(RESOURCES_PATH, 'public/index.html');
|
||||
const HTML_INSTALL_PATH = path.resolve(RESOURCES_PATH, 'public/install.html');
|
||||
const HTML_LOGIN_PATH = path.resolve(RESOURCES_PATH, 'public/login.html');
|
||||
const FAVICON_PATH = path.resolve(RESOURCES_PATH, 'public/favicon.png');
|
||||
const ASSETS_PATH = path.resolve(RESOURCES_PATH, 'public/assets');
|
||||
|
||||
const PUBLIC_PATH = path.resolve(__dirname, '../build/static');
|
||||
const PUBLIC_ASSETS_PATH = path.resolve(PUBLIC_PATH, 'assets');
|
||||
|
||||
const config = {
|
||||
target: 'web',
|
||||
@@ -134,7 +135,7 @@ const config = {
|
||||
filename: '[name].[contenthash].css',
|
||||
}),
|
||||
new CopyPlugin([
|
||||
{ from: FAVICON_PATH, to: PUBLIC_PATH },
|
||||
{ from: ASSETS_PATH, to: PUBLIC_ASSETS_PATH },
|
||||
]),
|
||||
],
|
||||
};
|
||||
|
||||
@@ -18,6 +18,8 @@ import (
|
||||
const defaultDiscoverTime = time.Second * 3
|
||||
const leaseExpireStatic = 1
|
||||
|
||||
var webHandlersRegistered = false
|
||||
|
||||
// Lease contains the necessary information about a DHCP lease
|
||||
// field ordering is important -- yaml fields will mirror ordering from here
|
||||
type Lease struct {
|
||||
@@ -121,7 +123,9 @@ func Create(config ServerConfig) *Server {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
if s.conf.HTTPRegister != nil {
|
||||
|
||||
if !webHandlersRegistered && s.conf.HTTPRegister != nil {
|
||||
webHandlersRegistered = true
|
||||
s.registerHandlers()
|
||||
}
|
||||
|
||||
@@ -220,10 +224,9 @@ func (s *Server) setConfig(config ServerConfig) error {
|
||||
|
||||
// Start will listen on port 67 and serve DHCP requests.
|
||||
func (s *Server) Start() error {
|
||||
|
||||
// TODO: don't close if interface and addresses are the same
|
||||
if s.conn != nil {
|
||||
s.closeConn()
|
||||
_ = s.closeConn()
|
||||
}
|
||||
|
||||
iface, err := net.InterfaceByName(s.conf.InterfaceName)
|
||||
@@ -247,7 +250,7 @@ func (s *Server) Start() error {
|
||||
if err != nil && !s.stopping {
|
||||
log.Printf("dhcp4.Serve() returned with error: %s", err)
|
||||
}
|
||||
c.Close() // in case Serve() exits for other reason than listening socket closure
|
||||
_ = c.Close() // in case Serve() exits for other reason than listening socket closure
|
||||
s.running = false
|
||||
s.cond.Signal()
|
||||
}()
|
||||
@@ -605,10 +608,10 @@ func (s *Server) handleDecline(p dhcp4.Packet, options dhcp4.Options) dhcp4.Pack
|
||||
// AddStaticLease adds a static lease (thread-safe)
|
||||
func (s *Server) AddStaticLease(l Lease) error {
|
||||
if len(l.IP) != 4 {
|
||||
return fmt.Errorf("Invalid IP")
|
||||
return fmt.Errorf("invalid IP")
|
||||
}
|
||||
if len(l.HWAddr) != 6 {
|
||||
return fmt.Errorf("Invalid MAC")
|
||||
return fmt.Errorf("invalid MAC")
|
||||
}
|
||||
l.Expiry = time.Unix(leaseExpireStatic, 0)
|
||||
|
||||
@@ -620,6 +623,12 @@ func (s *Server) AddStaticLease(l Lease) error {
|
||||
s.leasesLock.Unlock()
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
err := s.rmDynamicLeaseWithMAC(l.HWAddr)
|
||||
if err != nil {
|
||||
s.leasesLock.Unlock()
|
||||
return err
|
||||
}
|
||||
}
|
||||
s.leases = append(s.leases, &l)
|
||||
s.reserveIP(l.IP, l.HWAddr)
|
||||
@@ -633,9 +642,9 @@ func (s *Server) AddStaticLease(l Lease) error {
|
||||
func (s *Server) rmDynamicLeaseWithIP(ip net.IP) error {
|
||||
var newLeases []*Lease
|
||||
for _, lease := range s.leases {
|
||||
if bytes.Equal(lease.IP.To4(), ip) {
|
||||
if net.IP.Equal(lease.IP.To4(), ip) {
|
||||
if lease.Expiry.Unix() == leaseExpireStatic {
|
||||
return fmt.Errorf("Static lease with the same IP already exists")
|
||||
return fmt.Errorf("static lease with the same IP already exists")
|
||||
}
|
||||
continue
|
||||
}
|
||||
@@ -646,11 +655,28 @@ func (s *Server) rmDynamicLeaseWithIP(ip net.IP) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Remove a dynamic lease by IP address
|
||||
func (s *Server) rmDynamicLeaseWithMAC(mac net.HardwareAddr) error {
|
||||
var newLeases []*Lease
|
||||
for _, lease := range s.leases {
|
||||
if bytes.Equal(lease.HWAddr, mac) {
|
||||
if lease.Expiry.Unix() == leaseExpireStatic {
|
||||
return fmt.Errorf("static lease with the same IP already exists")
|
||||
}
|
||||
s.unreserveIP(lease.IP)
|
||||
continue
|
||||
}
|
||||
newLeases = append(newLeases, lease)
|
||||
}
|
||||
s.leases = newLeases
|
||||
return nil
|
||||
}
|
||||
|
||||
// Remove a lease
|
||||
func (s *Server) rmLease(l Lease) error {
|
||||
var newLeases []*Lease
|
||||
for _, lease := range s.leases {
|
||||
if bytes.Equal(lease.IP.To4(), l.IP) {
|
||||
if net.IP.Equal(lease.IP.To4(), l.IP) {
|
||||
if !bytes.Equal(lease.HWAddr, l.HWAddr) ||
|
||||
lease.Hostname != l.Hostname {
|
||||
return fmt.Errorf("Lease not found")
|
||||
@@ -667,17 +693,17 @@ func (s *Server) rmLease(l Lease) error {
|
||||
// RemoveStaticLease removes a static lease (thread-safe)
|
||||
func (s *Server) RemoveStaticLease(l Lease) error {
|
||||
if len(l.IP) != 4 {
|
||||
return fmt.Errorf("Invalid IP")
|
||||
return fmt.Errorf("invalid IP")
|
||||
}
|
||||
if len(l.HWAddr) != 6 {
|
||||
return fmt.Errorf("Invalid MAC")
|
||||
return fmt.Errorf("invalid MAC")
|
||||
}
|
||||
|
||||
s.leasesLock.Lock()
|
||||
|
||||
if s.findReservedHWaddr(l.IP) == nil {
|
||||
s.leasesLock.Unlock()
|
||||
return fmt.Errorf("Lease not found")
|
||||
return fmt.Errorf("lease not found")
|
||||
}
|
||||
|
||||
err := s.rmLease(l)
|
||||
|
||||
@@ -20,6 +20,7 @@ func check(t *testing.T, result bool, msg string) {
|
||||
// Tests performed:
|
||||
// . Handle Discover message (lease reserve)
|
||||
// . Handle Request message (lease commit)
|
||||
// . Static leases
|
||||
func TestDHCP(t *testing.T) {
|
||||
var s = Server{}
|
||||
s.conf.DBFilePath = dbFilename
|
||||
@@ -117,6 +118,7 @@ func TestDHCP(t *testing.T) {
|
||||
|
||||
s.reset()
|
||||
testStaticLeases(t, &s)
|
||||
testStaticLeaseReplaceByMAC(t, &s)
|
||||
|
||||
s.reset()
|
||||
misc(t, &s)
|
||||
@@ -126,15 +128,46 @@ func testStaticLeases(t *testing.T, s *Server) {
|
||||
var err error
|
||||
var l Lease
|
||||
l.IP = []byte{1, 1, 1, 1}
|
||||
|
||||
l.HWAddr = []byte{1, 2, 3, 4, 5, 6}
|
||||
s.leases = append(s.leases, &l)
|
||||
|
||||
// replace dynamic lease with a static (same IP)
|
||||
l.HWAddr = []byte{2, 2, 3, 4, 5, 6}
|
||||
err = s.AddStaticLease(l)
|
||||
check(t, err == nil, "AddStaticLease")
|
||||
|
||||
ll := s.Leases(LeasesStatic)
|
||||
check(t, len(ll) != 0 && bytes.Equal(ll[0].IP, []byte{1, 1, 1, 1}), "StaticLeases")
|
||||
ll := s.Leases(LeasesAll)
|
||||
assert.True(t, len(ll) == 1)
|
||||
assert.True(t, bytes.Equal(ll[0].IP, []byte{1, 1, 1, 1}))
|
||||
assert.True(t, bytes.Equal(ll[0].HWAddr, []byte{2, 2, 3, 4, 5, 6}))
|
||||
assert.True(t, ll[0].Expiry.Unix() == leaseExpireStatic)
|
||||
|
||||
err = s.RemoveStaticLease(l)
|
||||
check(t, err == nil, "RemoveStaticLease")
|
||||
assert.True(t, err == nil)
|
||||
|
||||
ll = s.Leases(LeasesAll)
|
||||
assert.True(t, len(ll) == 0)
|
||||
}
|
||||
|
||||
func testStaticLeaseReplaceByMAC(t *testing.T, s *Server) {
|
||||
var err error
|
||||
var l Lease
|
||||
l.HWAddr = []byte{1, 2, 3, 4, 5, 6}
|
||||
|
||||
l.IP = []byte{1, 1, 1, 1}
|
||||
l.Expiry = time.Now().Add(time.Hour)
|
||||
s.leases = append(s.leases, &l)
|
||||
|
||||
// replace dynamic lease with a static (same MAC)
|
||||
l.IP = []byte{2, 1, 1, 1}
|
||||
err = s.AddStaticLease(l)
|
||||
assert.True(t, err == nil)
|
||||
|
||||
ll := s.Leases(LeasesAll)
|
||||
assert.True(t, len(ll) == 1)
|
||||
assert.True(t, bytes.Equal(ll[0].IP, []byte{2, 1, 1, 1}))
|
||||
assert.True(t, bytes.Equal(ll[0].HWAddr, []byte{1, 2, 3, 4, 5, 6}))
|
||||
}
|
||||
|
||||
// Small tests that don't require a static server's state
|
||||
|
||||
@@ -33,7 +33,7 @@ func HasStaticIP(ifaceName string) (bool, error) {
|
||||
return hasStaticIPDarwin(ifaceName)
|
||||
}
|
||||
|
||||
return false, fmt.Errorf("Cannot check if IP is static: not supported on %s", runtime.GOOS)
|
||||
return false, fmt.Errorf("cannot check if IP is static: not supported on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
// Set a static IP for the specified network interface
|
||||
@@ -46,7 +46,7 @@ func SetStaticIP(ifaceName string) error {
|
||||
return setStaticIPDarwin(ifaceName)
|
||||
}
|
||||
|
||||
return fmt.Errorf("Cannot set static IP on %s", runtime.GOOS)
|
||||
return fmt.Errorf("cannot set static IP on %s", runtime.GOOS)
|
||||
}
|
||||
|
||||
// for dhcpcd.conf
|
||||
@@ -114,7 +114,7 @@ func getGatewayIP(ifaceName string) string {
|
||||
func setStaticIPDhcpdConf(ifaceName string) error {
|
||||
ip := util.GetSubnet(ifaceName)
|
||||
if len(ip) == 0 {
|
||||
return errors.New("Can't get IP address")
|
||||
return errors.New("can't get IP address")
|
||||
}
|
||||
|
||||
ip4, _, err := net.ParseCIDR(ip)
|
||||
@@ -198,7 +198,7 @@ func setStaticIPDarwin(ifaceName string) error {
|
||||
return err
|
||||
}
|
||||
if code != 0 {
|
||||
return fmt.Errorf("Failed to set DNS servers, code=%d", code)
|
||||
return fmt.Errorf("failed to set DNS servers, code=%d", code)
|
||||
}
|
||||
|
||||
// Actually configures hardware port to have static IP
|
||||
@@ -208,7 +208,7 @@ func setStaticIPDarwin(ifaceName string) error {
|
||||
return err
|
||||
}
|
||||
if code != 0 {
|
||||
return fmt.Errorf("Failed to set DNS servers, code=%d", code)
|
||||
return fmt.Errorf("failed to set DNS servers, code=%d", code)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -220,7 +220,7 @@ func getCurrentHardwarePortInfo(ifaceName string) (hardwarePortInfo, error) {
|
||||
m := getNetworkSetupHardwareReports()
|
||||
hardwarePort, ok := m[ifaceName]
|
||||
if !ok {
|
||||
return hardwarePortInfo{}, fmt.Errorf("Could not find hardware port for %s", ifaceName)
|
||||
return hardwarePortInfo{}, fmt.Errorf("could not find hardware port for %s", ifaceName)
|
||||
}
|
||||
|
||||
return getHardwarePortInfo(hardwarePort)
|
||||
@@ -274,7 +274,7 @@ func getHardwarePortInfo(hardwarePort string) (hardwarePortInfo, error) {
|
||||
|
||||
match := re.FindStringSubmatch(out)
|
||||
if len(match) == 0 {
|
||||
return h, errors.New("Could not find hardware port info")
|
||||
return h, errors.New("could not find hardware port info")
|
||||
}
|
||||
|
||||
h.name = hardwarePort
|
||||
@@ -300,7 +300,7 @@ func getEtcResolvConfServers() ([]string, error) {
|
||||
|
||||
matches := re.FindAllStringSubmatch(string(body), -1)
|
||||
if len(matches) == 0 {
|
||||
return nil, errors.New("Found no DNS servers in /etc/resolv.conf")
|
||||
return nil, errors.New("found no DNS servers in /etc/resolv.conf")
|
||||
}
|
||||
|
||||
addrs := make([]string, 0)
|
||||
|
||||
@@ -80,7 +80,7 @@ func main() {
|
||||
panic(err)
|
||||
}
|
||||
log.Printf("Now serving DHCP")
|
||||
signalChannel := make(chan os.Signal)
|
||||
signalChannel := make(chan os.Signal, 1)
|
||||
signal.Notify(signalChannel, syscall.SIGINT, syscall.SIGTERM)
|
||||
<-signalChannel
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package home
|
||||
package dnsfilter
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsfilter"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/AdguardTeam/urlfilter/rules"
|
||||
)
|
||||
@@ -21,21 +20,52 @@ type svc struct {
|
||||
// client/src/components/ui/Icons.js
|
||||
var serviceRulesArray = []svc{
|
||||
{"whatsapp", []string{"||whatsapp.net^", "||whatsapp.com^"}},
|
||||
{"facebook", []string{"||facebook.com^", "||facebook.net^", "||fbcdn.net^", "||fb.me^", "||fb.com^", "||fbsbx.com^"}},
|
||||
{"twitter", []string{"||twitter.com^", "||t.co^", "||twimg.com^"}},
|
||||
{"youtube", []string{"||youtube.com^", "||ytimg.com^", "||youtu.be^", "||googlevideo.com^", "||youtubei.googleapis.com^"}},
|
||||
{"messenger", []string{"||fb.com^", "||facebook.com^", "||messenger.com^"}},
|
||||
{"twitch", []string{"||twitch.tv^", "||ttvnw.net^"}},
|
||||
{"netflix", []string{"||nflxext.com^", "||netflix.com^"}},
|
||||
{"facebook", []string{
|
||||
"||facebook.com^",
|
||||
"||facebook.net^",
|
||||
"||fbcdn.net^",
|
||||
"||accountkit.com^",
|
||||
"||fb.me^",
|
||||
"||fb.com^",
|
||||
"||fbsbx.com^",
|
||||
"||messenger.com^",
|
||||
"||facebookcorewwwi.onion^",
|
||||
"||fbcdn.com^",
|
||||
}},
|
||||
{"twitter", []string{"||twitter.com^", "||twttr.com^", "||t.co^", "||twimg.com^"}},
|
||||
{"youtube", []string{
|
||||
"||youtube.com^",
|
||||
"||ytimg.com^",
|
||||
"||youtu.be^",
|
||||
"||googlevideo.com^",
|
||||
"||youtubei.googleapis.com^",
|
||||
"||youtube-nocookie.com^",
|
||||
}},
|
||||
{"twitch", []string{"||twitch.tv^", "||ttvnw.net^", "||jtvnw.net^", "||twitchcdn.net^"}},
|
||||
{"netflix", []string{"||nflxext.com^", "||netflix.com^", "||nflximg.net^", "||nflxvideo.net^"}},
|
||||
{"instagram", []string{"||instagram.com^", "||cdninstagram.com^"}},
|
||||
{"snapchat", []string{"||snapchat.com^", "||sc-cdn.net^", "||impala-media-production.s3.amazonaws.com^"}},
|
||||
{"discord", []string{"||discord.gg^", "||discordapp.net^", "||discordapp.com^"}},
|
||||
{"snapchat", []string{
|
||||
"||snapchat.com^",
|
||||
"||sc-cdn.net^",
|
||||
"||snap-dev.net^",
|
||||
"||snapkit.co",
|
||||
"||snapads.com^",
|
||||
"||impala-media-production.s3.amazonaws.com^",
|
||||
}},
|
||||
{"discord", []string{"||discord.gg^", "||discordapp.net^", "||discordapp.com^", "||discord.com^", "||discord.media^"}},
|
||||
{"ok", []string{"||ok.ru^"}},
|
||||
{"skype", []string{"||skype.com^"}},
|
||||
{"vk", []string{"||vk.com^"}},
|
||||
{"skype", []string{"||skype.com^", "||skypeassets.com^"}},
|
||||
{"vk", []string{"||vk.com^", "||userapi.com^", "||vk-cdn.net^", "||vkuservideo.net^"}},
|
||||
{"origin", []string{"||origin.com^", "||signin.ea.com^", "||accounts.ea.com^"}},
|
||||
{"steam", []string{"||steam.com^"}},
|
||||
{"epic_games", []string{"||epicgames.com^"}},
|
||||
{"steam", []string{
|
||||
"||steam.com^",
|
||||
"||steampowered.com^",
|
||||
"||steamcommunity.com^",
|
||||
"||steamstatic.com^",
|
||||
"||steamstore-a.akamaihd.net^",
|
||||
"||steamcdn-a.akamaihd.net^",
|
||||
}},
|
||||
{"epic_games", []string{"||epicgames.com^", "||easyanticheat.net^", "||easy.ac^", "||eac-cdn.com^"}},
|
||||
{"reddit", []string{"||reddit.com^", "||redditstatic.com^", "||redditmedia.com^", "||redd.it^"}},
|
||||
{"mail_ru", []string{"||mail.ru^"}},
|
||||
{"cloudflare", []string{
|
||||
@@ -51,11 +81,19 @@ var serviceRulesArray = []svc{
|
||||
"||cloudflare.cn^",
|
||||
"||one.one^",
|
||||
"||warp.plus^",
|
||||
"||1.1.1.1^",
|
||||
"||dns4torpnlfs2ifuz2s2yf3fc7rdmsbhm6rw75euj35pac6ap25zgqad.onion^",
|
||||
}},
|
||||
{"amazon", []string{
|
||||
"||amazon.com^",
|
||||
"||media-amazon.com^",
|
||||
"||primevideo.com^",
|
||||
"||amazontrust.com^",
|
||||
"||images-amazon.com^",
|
||||
"||ssl-images-amazon.com^",
|
||||
"||amazonpay.com^",
|
||||
"||amazonpay.in^",
|
||||
"||amazon-adsystem.com^",
|
||||
"||a2z.com^",
|
||||
"||amazon.ae^",
|
||||
"||amazon.ca^",
|
||||
@@ -71,6 +109,7 @@ var serviceRulesArray = []svc{
|
||||
"||amazon.co.jp^",
|
||||
"||amazon.com.mx^",
|
||||
"||amazon.co.uk^",
|
||||
"||createspace.com^",
|
||||
}},
|
||||
{"ebay", []string{
|
||||
"||ebay.com^",
|
||||
@@ -102,6 +141,7 @@ var serviceRulesArray = []svc{
|
||||
{"tiktok", []string{
|
||||
"||tiktok.com^",
|
||||
"||tiktokcdn.com^",
|
||||
"||musical.ly^",
|
||||
"||snssdk.com^",
|
||||
"||amemv.com^",
|
||||
"||toutiao.com^",
|
||||
@@ -116,11 +156,12 @@ var serviceRulesArray = []svc{
|
||||
"||ixigua.com^",
|
||||
"||muscdn.com^",
|
||||
"||bytedance.map.fastly.net^",
|
||||
"||douyin.com^",
|
||||
}},
|
||||
}
|
||||
|
||||
// convert array to map
|
||||
func initServices() {
|
||||
func initBlockedServices() {
|
||||
serviceRules = make(map[string][]*rules.NetworkRule)
|
||||
for _, s := range serviceRulesArray {
|
||||
netRules := []*rules.NetworkRule{}
|
||||
@@ -136,9 +177,20 @@ func initServices() {
|
||||
}
|
||||
}
|
||||
|
||||
// BlockedSvcKnown - return TRUE if a blocked service name is known
|
||||
func BlockedSvcKnown(s string) bool {
|
||||
_, ok := serviceRules[s]
|
||||
return ok
|
||||
}
|
||||
|
||||
// ApplyBlockedServices - set blocked services settings for this DNS request
|
||||
func ApplyBlockedServices(setts *dnsfilter.RequestFilteringSettings, list []string) {
|
||||
setts.ServicesRules = []dnsfilter.ServiceEntry{}
|
||||
func (d *Dnsfilter) ApplyBlockedServices(setts *RequestFilteringSettings, list []string, global bool) {
|
||||
setts.ServicesRules = []ServiceEntry{}
|
||||
if global {
|
||||
d.confLock.RLock()
|
||||
defer d.confLock.RUnlock()
|
||||
list = d.Config.BlockedServices
|
||||
}
|
||||
for _, name := range list {
|
||||
rules, ok := serviceRules[name]
|
||||
|
||||
@@ -147,51 +199,45 @@ func ApplyBlockedServices(setts *dnsfilter.RequestFilteringSettings, list []stri
|
||||
continue
|
||||
}
|
||||
|
||||
s := dnsfilter.ServiceEntry{}
|
||||
s := ServiceEntry{}
|
||||
s.Name = name
|
||||
s.Rules = rules
|
||||
setts.ServicesRules = append(setts.ServicesRules, s)
|
||||
}
|
||||
}
|
||||
|
||||
func handleBlockedServicesList(w http.ResponseWriter, r *http.Request) {
|
||||
config.RLock()
|
||||
list := config.DNS.BlockedServices
|
||||
config.RUnlock()
|
||||
func (d *Dnsfilter) handleBlockedServicesList(w http.ResponseWriter, r *http.Request) {
|
||||
d.confLock.RLock()
|
||||
list := d.Config.BlockedServices
|
||||
d.confLock.RUnlock()
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
err := json.NewEncoder(w).Encode(list)
|
||||
if err != nil {
|
||||
httpError(w, http.StatusInternalServerError, "json.Encode: %s", err)
|
||||
httpError(r, w, http.StatusInternalServerError, "json.Encode: %s", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func handleBlockedServicesSet(w http.ResponseWriter, r *http.Request) {
|
||||
func (d *Dnsfilter) handleBlockedServicesSet(w http.ResponseWriter, r *http.Request) {
|
||||
list := []string{}
|
||||
err := json.NewDecoder(r.Body).Decode(&list)
|
||||
if err != nil {
|
||||
httpError(w, http.StatusBadRequest, "json.Decode: %s", err)
|
||||
httpError(r, w, http.StatusBadRequest, "json.Decode: %s", err)
|
||||
return
|
||||
}
|
||||
|
||||
config.Lock()
|
||||
config.DNS.BlockedServices = list
|
||||
config.Unlock()
|
||||
d.confLock.Lock()
|
||||
d.Config.BlockedServices = list
|
||||
d.confLock.Unlock()
|
||||
|
||||
log.Debug("Updated blocked services list: %d", len(list))
|
||||
|
||||
err = writeAllConfigsAndReloadDNS()
|
||||
if err != nil {
|
||||
httpError(w, http.StatusBadRequest, "%s", err)
|
||||
return
|
||||
}
|
||||
|
||||
httpOK(r, w)
|
||||
d.ConfigModified()
|
||||
}
|
||||
|
||||
// RegisterBlockedServicesHandlers - register HTTP handlers
|
||||
func RegisterBlockedServicesHandlers() {
|
||||
httpRegister(http.MethodGet, "/control/blocked_services/list", handleBlockedServicesList)
|
||||
httpRegister(http.MethodPost, "/control/blocked_services/set", handleBlockedServicesSet)
|
||||
// registerBlockedServicesHandlers - register HTTP handlers
|
||||
func (d *Dnsfilter) registerBlockedServicesHandlers() {
|
||||
d.Config.HTTPRegister("GET", "/control/blocked_services/list", d.handleBlockedServicesList)
|
||||
d.Config.HTTPRegister("POST", "/control/blocked_services/set", d.handleBlockedServicesSet)
|
||||
}
|
||||
@@ -7,9 +7,11 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/util"
|
||||
"github.com/AdguardTeam/dnsproxy/upstream"
|
||||
"github.com/AdguardTeam/golibs/cache"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
@@ -49,6 +51,13 @@ type Config struct {
|
||||
|
||||
Rewrites []RewriteEntry `yaml:"rewrites"`
|
||||
|
||||
// Names of services to block (globally).
|
||||
// Per-client settings can override this configuration.
|
||||
BlockedServices []string `yaml:"blocked_services"`
|
||||
|
||||
// IP-hostname pairs taken from system configuration (e.g. /etc/hosts) files
|
||||
AutoHosts *util.AutoHosts `yaml:"-"`
|
||||
|
||||
// Called when the configuration is changed by HTTP request
|
||||
ConfigModified func() `yaml:"-"`
|
||||
|
||||
@@ -135,6 +144,9 @@ const (
|
||||
|
||||
// ReasonRewrite - rewrite rule was applied
|
||||
ReasonRewrite
|
||||
|
||||
// RewriteEtcHosts - rewrite by /etc/hosts rule
|
||||
RewriteEtcHosts
|
||||
)
|
||||
|
||||
var reasonNames = []string{
|
||||
@@ -150,6 +162,7 @@ var reasonNames = []string{
|
||||
"FilteredBlockedService",
|
||||
|
||||
"Rewrite",
|
||||
"RewriteEtcHosts",
|
||||
}
|
||||
|
||||
func (r Reason) String() string {
|
||||
@@ -175,6 +188,7 @@ func (d *Dnsfilter) WriteDiskConfig(c *Config) {
|
||||
d.confLock.Lock()
|
||||
*c = d.Config
|
||||
c.Rewrites = rewriteArrayDup(d.Config.Rewrites)
|
||||
// BlockedServices
|
||||
d.confLock.Unlock()
|
||||
}
|
||||
|
||||
@@ -260,8 +274,13 @@ type Result struct {
|
||||
FilterID int64 `json:",omitempty"` // Filter ID the rule belongs to
|
||||
|
||||
// for ReasonRewrite:
|
||||
CanonName string `json:",omitempty"` // CNAME value
|
||||
IPList []net.IP `json:",omitempty"` // list of IP addresses
|
||||
CanonName string `json:",omitempty"` // CNAME value
|
||||
|
||||
// for RewriteEtcHosts:
|
||||
ReverseHost string `json:",omitempty"`
|
||||
|
||||
// for ReasonRewrite & RewriteEtcHosts:
|
||||
IPList []net.IP `json:",omitempty"` // list of IP addresses
|
||||
|
||||
// for FilteredBlockedService:
|
||||
ServiceName string `json:",omitempty"` // Name of the blocked service
|
||||
@@ -298,6 +317,22 @@ func (d *Dnsfilter) CheckHost(host string, qtype uint16, setts *RequestFiltering
|
||||
return result, nil
|
||||
}
|
||||
|
||||
if d.Config.AutoHosts != nil {
|
||||
ips := d.Config.AutoHosts.Process(host, qtype)
|
||||
if ips != nil {
|
||||
result.Reason = RewriteEtcHosts
|
||||
result.IPList = ips
|
||||
return result, nil
|
||||
}
|
||||
|
||||
revHost := d.Config.AutoHosts.ProcessReverse(host, qtype)
|
||||
if len(revHost) != 0 {
|
||||
result.Reason = RewriteEtcHosts
|
||||
result.ReverseHost = revHost + "."
|
||||
return result, nil
|
||||
}
|
||||
}
|
||||
|
||||
// try filter lists first
|
||||
if setts.FilteringEnabled {
|
||||
result, err = d.matchHost(host, qtype, setts.ClientTags)
|
||||
@@ -494,6 +529,9 @@ func (d *Dnsfilter) initFiltering(allowFilters, blockFilters []Filter) error {
|
||||
d.filteringEngine = filteringEngine
|
||||
d.rulesStorageWhite = rulesStorageWhite
|
||||
d.filteringEngineWhite = filteringEngineWhite
|
||||
|
||||
// Make sure that the OS reclaims memory as soon as possible
|
||||
debug.FreeOSMemory()
|
||||
log.Debug("initialized filtering engine")
|
||||
|
||||
return nil
|
||||
@@ -594,6 +632,11 @@ func makeResult(rule rules.Rule, reason Reason) Result {
|
||||
return res
|
||||
}
|
||||
|
||||
// InitModule() - manually initialize blocked services map
|
||||
func InitModule() {
|
||||
initBlockedServices()
|
||||
}
|
||||
|
||||
// New creates properly initialized DNS Filter that is ready to be used
|
||||
func New(c *Config, blockFilters []Filter) *Dnsfilter {
|
||||
|
||||
@@ -633,6 +676,16 @@ func New(c *Config, blockFilters []Filter) *Dnsfilter {
|
||||
d.prepareRewrites()
|
||||
}
|
||||
|
||||
bsvcs := []string{}
|
||||
for _, s := range d.BlockedServices {
|
||||
if !BlockedSvcKnown(s) {
|
||||
log.Debug("skipping unknown blocked-service '%s'", s)
|
||||
continue
|
||||
}
|
||||
bsvcs = append(bsvcs, s)
|
||||
}
|
||||
d.BlockedServices = bsvcs
|
||||
|
||||
if blockFilters != nil {
|
||||
err := d.initFiltering(nil, blockFilters)
|
||||
if err != nil {
|
||||
@@ -655,6 +708,7 @@ func (d *Dnsfilter) Start() {
|
||||
if d.Config.HTTPRegister != nil { // for tests
|
||||
d.registerSecurityHandlers()
|
||||
d.registerRewritesHandlers()
|
||||
d.registerBlockedServicesHandlers()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package dnsfilter
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"path"
|
||||
"runtime"
|
||||
"testing"
|
||||
@@ -531,94 +532,11 @@ func TestClientSettings(t *testing.T) {
|
||||
assert.True(t, r.IsFiltered && r.Reason == FilteredBlockedService)
|
||||
}
|
||||
|
||||
func TestRewrites(t *testing.T) {
|
||||
d := Dnsfilter{}
|
||||
// CNAME, A, AAAA
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"somecname", "somehost.com", 0, nil},
|
||||
RewriteEntry{"somehost.com", "0.0.0.0", 0, nil},
|
||||
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"host.com", "1.2.3.5", 0, nil},
|
||||
RewriteEntry{"host.com", "1:2:3::4", 0, nil},
|
||||
RewriteEntry{"www.host.com", "host.com", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r := d.processRewrites("host2.com")
|
||||
assert.Equal(t, NotFilteredNotFound, r.Reason)
|
||||
|
||||
r = d.processRewrites("www.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 3)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.True(t, r.IPList[1].Equal(net.ParseIP("1.2.3.5")))
|
||||
assert.True(t, r.IPList[2].Equal(net.ParseIP("1:2:3::4")))
|
||||
|
||||
// wildcard
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"*.host.com", "1.2.3.5", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
r = d.processRewrites("www.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.5")))
|
||||
|
||||
r = d.processRewrites("www.host2.com")
|
||||
assert.Equal(t, NotFilteredNotFound, r.Reason)
|
||||
|
||||
// override a wildcard
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"a.host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"*.host.com", "1.2.3.5", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("a.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
// wildcard + CNAME
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"*.host.com", "host.com", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("www.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
// 2 CNAMEs
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"b.host.com", "a.host.com", 0, nil},
|
||||
RewriteEntry{"a.host.com", "host.com", 0, nil},
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("b.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
// 2 CNAMEs + wildcard
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"b.host.com", "a.host.com", 0, nil},
|
||||
RewriteEntry{"a.host.com", "x.somehost.com", 0, nil},
|
||||
RewriteEntry{"*.somehost.com", "1.2.3.4", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("b.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "x.somehost.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
func prepareTestDir() string {
|
||||
const dir = "./agh-test"
|
||||
_ = os.RemoveAll(dir)
|
||||
_ = os.MkdirAll(dir, 0755)
|
||||
return dir
|
||||
}
|
||||
|
||||
// BENCHMARKS
|
||||
|
||||
@@ -42,7 +42,10 @@ func (a rewritesArray) Len() int { return len(a) }
|
||||
|
||||
func (a rewritesArray) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
|
||||
|
||||
// Priority: CNAME, A/AAAA; exact, wildcard.
|
||||
// Priority:
|
||||
// . CNAME > A/AAAA;
|
||||
// . exact > wildcard;
|
||||
// . higher level wildcard > lower level wildcard
|
||||
func (a rewritesArray) Less(i, j int) bool {
|
||||
if a[i].Type == dns.TypeCNAME && a[j].Type != dns.TypeCNAME {
|
||||
return false
|
||||
@@ -50,13 +53,18 @@ func (a rewritesArray) Less(i, j int) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
if isWildcard(a[i].Domain) && !isWildcard(a[j].Domain) {
|
||||
return false
|
||||
} else if !isWildcard(a[i].Domain) && isWildcard(a[j].Domain) {
|
||||
return true
|
||||
if isWildcard(a[i].Domain) {
|
||||
if !isWildcard(a[j].Domain) {
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
if isWildcard(a[j].Domain) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return i < j
|
||||
// both are wildcards
|
||||
return len(a[i].Domain) > len(a[j].Domain)
|
||||
}
|
||||
|
||||
// Prepare entry for use
|
||||
@@ -86,6 +94,7 @@ func (d *Dnsfilter) prepareRewrites() {
|
||||
// Get the list of matched rewrite entries.
|
||||
// Priority: CNAME, A/AAAA; exact, wildcard.
|
||||
// If matched exactly, don't return wildcard entries.
|
||||
// If matched by several wildcards, select the more specific one
|
||||
func findRewrites(a []RewriteEntry, host string) []RewriteEntry {
|
||||
rr := rewritesArray{}
|
||||
for _, r := range a {
|
||||
@@ -111,7 +120,10 @@ func findRewrites(a []RewriteEntry, host string) []RewriteEntry {
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
rr = rr[:1]
|
||||
}
|
||||
|
||||
return rr
|
||||
}
|
||||
|
||||
|
||||
127
dnsfilter/rewrites_test.go
Normal file
127
dnsfilter/rewrites_test.go
Normal file
@@ -0,0 +1,127 @@
|
||||
package dnsfilter
|
||||
|
||||
import (
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestRewrites(t *testing.T) {
|
||||
d := Dnsfilter{}
|
||||
// CNAME, A, AAAA
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"somecname", "somehost.com", 0, nil},
|
||||
RewriteEntry{"somehost.com", "0.0.0.0", 0, nil},
|
||||
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"host.com", "1.2.3.5", 0, nil},
|
||||
RewriteEntry{"host.com", "1:2:3::4", 0, nil},
|
||||
RewriteEntry{"www.host.com", "host.com", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r := d.processRewrites("host2.com")
|
||||
assert.Equal(t, NotFilteredNotFound, r.Reason)
|
||||
|
||||
r = d.processRewrites("www.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 3)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
assert.True(t, r.IPList[1].Equal(net.ParseIP("1.2.3.5")))
|
||||
assert.True(t, r.IPList[2].Equal(net.ParseIP("1:2:3::4")))
|
||||
|
||||
// wildcard
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"*.host.com", "1.2.3.5", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
r = d.processRewrites("www.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.5")))
|
||||
|
||||
r = d.processRewrites("www.host2.com")
|
||||
assert.Equal(t, NotFilteredNotFound, r.Reason)
|
||||
|
||||
// override a wildcard
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"a.host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"*.host.com", "1.2.3.5", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("a.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
// wildcard + CNAME
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
RewriteEntry{"*.host.com", "host.com", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("www.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
// 2 CNAMEs
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"b.host.com", "a.host.com", 0, nil},
|
||||
RewriteEntry{"a.host.com", "host.com", 0, nil},
|
||||
RewriteEntry{"host.com", "1.2.3.4", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("b.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "host.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
|
||||
// 2 CNAMEs + wildcard
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"b.host.com", "a.host.com", 0, nil},
|
||||
RewriteEntry{"a.host.com", "x.somehost.com", 0, nil},
|
||||
RewriteEntry{"*.somehost.com", "1.2.3.4", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
r = d.processRewrites("b.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, "x.somehost.com", r.CanonName)
|
||||
assert.True(t, len(r.IPList) == 1)
|
||||
assert.True(t, r.IPList[0].Equal(net.ParseIP("1.2.3.4")))
|
||||
}
|
||||
|
||||
func TestRewritesLevels(t *testing.T) {
|
||||
d := Dnsfilter{}
|
||||
// exact host, wildcard L2, wildcard L3
|
||||
d.Rewrites = []RewriteEntry{
|
||||
RewriteEntry{"host.com", "1.1.1.1", 0, nil},
|
||||
RewriteEntry{"*.host.com", "2.2.2.2", 0, nil},
|
||||
RewriteEntry{"*.sub.host.com", "3.3.3.3", 0, nil},
|
||||
}
|
||||
d.prepareRewrites()
|
||||
|
||||
// match exact
|
||||
r := d.processRewrites("host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Equal(t, "1.1.1.1", r.IPList[0].String())
|
||||
|
||||
// match L2
|
||||
r = d.processRewrites("sub.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Equal(t, "2.2.2.2", r.IPList[0].String())
|
||||
|
||||
// match L3
|
||||
r = d.processRewrites("my.sub.host.com")
|
||||
assert.Equal(t, ReasonRewrite, r.Reason)
|
||||
assert.Equal(t, 1, len(r.IPList))
|
||||
assert.Equal(t, "3.3.3.3", r.IPList[0].String())
|
||||
}
|
||||
@@ -2,11 +2,15 @@ package dnsforward
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/AdguardTeam/urlfilter"
|
||||
"github.com/AdguardTeam/urlfilter/filterlist"
|
||||
)
|
||||
|
||||
type accessCtx struct {
|
||||
@@ -18,7 +22,7 @@ type accessCtx struct {
|
||||
allowedClientsIPNet []net.IPNet // CIDRs of whitelist clients
|
||||
disallowedClientsIPNet []net.IPNet // CIDRs of clients that should be blocked
|
||||
|
||||
blockedHosts map[string]bool // hosts that should be blocked
|
||||
blockedHostsEngine *urlfilter.DNSEngine // finds hosts that should be blocked
|
||||
}
|
||||
|
||||
func (a *accessCtx) Init(allowedClients, disallowedClients, blockedHosts []string) error {
|
||||
@@ -32,15 +36,26 @@ func (a *accessCtx) Init(allowedClients, disallowedClients, blockedHosts []strin
|
||||
return err
|
||||
}
|
||||
|
||||
convertArrayToMap(&a.blockedHosts, blockedHosts)
|
||||
return nil
|
||||
}
|
||||
|
||||
func convertArrayToMap(dst *map[string]bool, src []string) {
|
||||
*dst = make(map[string]bool)
|
||||
for _, s := range src {
|
||||
(*dst)[s] = true
|
||||
buf := strings.Builder{}
|
||||
for _, s := range blockedHosts {
|
||||
buf.WriteString(s)
|
||||
buf.WriteString("\n")
|
||||
}
|
||||
|
||||
listArray := []filterlist.RuleList{}
|
||||
list := &filterlist.StringRuleList{
|
||||
ID: int(0),
|
||||
RulesText: buf.String(),
|
||||
IgnoreCosmetic: true,
|
||||
}
|
||||
listArray = append(listArray, list)
|
||||
rulesStorage, err := filterlist.NewRuleStorage(listArray)
|
||||
if err != nil {
|
||||
return fmt.Errorf("filterlist.NewRuleStorage(): %s", err)
|
||||
}
|
||||
a.blockedHostsEngine = urlfilter.NewDNSEngine(rulesStorage)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Split array of IP or CIDR into 2 containers for fast search
|
||||
@@ -107,7 +122,7 @@ func (a *accessCtx) IsBlockedIP(ip string) bool {
|
||||
// IsBlockedDomain - return TRUE if this domain should be blocked
|
||||
func (a *accessCtx) IsBlockedDomain(host string) bool {
|
||||
a.lock.Lock()
|
||||
_, ok := a.blockedHosts[host]
|
||||
_, ok := a.blockedHostsEngine.Match(host, nil)
|
||||
a.lock.Unlock()
|
||||
return ok
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user