Merge branch 'master' into feature/1574
This commit is contained in:
commit
df1f7ebc8d
5
.gitignore
vendored
5
.gitignore
vendored
@ -22,4 +22,7 @@ dnsfilter/tests/dnsfilter.TestLotsOfRules*.pprof
|
||||
*.snap
|
||||
launchpad_credentials
|
||||
snapcraft_login
|
||||
snapcraft.yaml.bak
|
||||
snapcraft.yaml.bak
|
||||
|
||||
# IntelliJ IDEA project files
|
||||
*.iml
|
||||
|
@ -70,3 +70,7 @@ issues:
|
||||
- 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
|
||||
|
@ -15,8 +15,8 @@
|
||||
"it": "Italiano",
|
||||
"no": "Norsk",
|
||||
"pl": "Polski",
|
||||
"pt-br": "Portuguese (BR)",
|
||||
"pt-pt": "Portuguese (PT)",
|
||||
"pt-br": "Português (BR)",
|
||||
"pt-pt": "Português (PT)",
|
||||
"ro": "Română",
|
||||
"sk": "Slovenčina",
|
||||
"sl": "Slovenščina",
|
||||
|
2
Makefile
2
Makefile
@ -32,7 +32,7 @@ $(TARGET): $(STATIC) *.go home/*.go dhcpd/*.go dnsfilter/*.go dnsforward/*.go
|
||||
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 3000:3000/tcp $(DOCKER_IMAGE_DEV_NAME)
|
||||
@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
|
||||
|
570
client/package-lock.json
generated
vendored
570
client/package-lock.json
generated
vendored
@ -2289,6 +2289,16 @@
|
||||
"integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
|
||||
"dev": true
|
||||
},
|
||||
"bindings": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
|
||||
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"file-uri-to-path": "1.0.0"
|
||||
}
|
||||
},
|
||||
"bluebird": {
|
||||
"version": "3.5.1",
|
||||
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
|
||||
@ -5463,6 +5473,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"file-uri-to-path": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
|
||||
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"fill-range": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
|
||||
@ -5636,551 +5653,14 @@
|
||||
"dev": true
|
||||
},
|
||||
"fsevents": {
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz",
|
||||
"integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==",
|
||||
"version": "1.2.13",
|
||||
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
|
||||
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"nan": "^2.12.1",
|
||||
"node-pre-gyp": "^0.12.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"abbrev": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ansi-regex": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"are-we-there-yet": {
|
||||
"version": "1.1.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"delegates": "^1.0.0",
|
||||
"readable-stream": "^2.0.6"
|
||||
}
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"balanced-match": "^1.0.0",
|
||||
"concat-map": "0.0.1"
|
||||
}
|
||||
},
|
||||
"chownr": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"code-point-at": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"console-control-strings": {
|
||||
"version": "1.1.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"core-util-is": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
},
|
||||
"deep-extend": {
|
||||
"version": "0.6.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"delegates": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"detect-libc": {
|
||||
"version": "1.0.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"fs-minipass": {
|
||||
"version": "1.2.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"fs.realpath": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"gauge": {
|
||||
"version": "2.7.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"aproba": "^1.0.3",
|
||||
"console-control-strings": "^1.0.0",
|
||||
"has-unicode": "^2.0.0",
|
||||
"object-assign": "^4.1.0",
|
||||
"signal-exit": "^3.0.0",
|
||||
"string-width": "^1.0.1",
|
||||
"strip-ansi": "^3.0.1",
|
||||
"wide-align": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"glob": {
|
||||
"version": "7.1.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"has-unicode": {
|
||||
"version": "2.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"iconv-lite": {
|
||||
"version": "0.4.24",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3"
|
||||
}
|
||||
},
|
||||
"ignore-walk": {
|
||||
"version": "3.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimatch": "^3.0.4"
|
||||
}
|
||||
},
|
||||
"inflight": {
|
||||
"version": "1.0.6",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"once": "^1.3.0",
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"inherits": {
|
||||
"version": "2.0.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ini": {
|
||||
"version": "1.3.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"is-fullwidth-code-point": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"number-is-nan": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"isarray": {
|
||||
"version": "1.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"minimatch": {
|
||||
"version": "3.0.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"brace-expansion": "^1.1.7"
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "0.0.8",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"minipass": {
|
||||
"version": "2.3.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"minizlib": {
|
||||
"version": "1.2.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minipass": "^2.2.1"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "0.5.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"minimist": "0.0.8"
|
||||
}
|
||||
},
|
||||
"ms": {
|
||||
"version": "2.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"needle": {
|
||||
"version": "2.3.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"debug": "^4.1.0",
|
||||
"iconv-lite": "^0.4.4",
|
||||
"sax": "^1.2.4"
|
||||
}
|
||||
},
|
||||
"node-pre-gyp": {
|
||||
"version": "0.12.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"detect-libc": "^1.0.2",
|
||||
"mkdirp": "^0.5.1",
|
||||
"needle": "^2.2.1",
|
||||
"nopt": "^4.0.1",
|
||||
"npm-packlist": "^1.1.6",
|
||||
"npmlog": "^4.0.2",
|
||||
"rc": "^1.2.7",
|
||||
"rimraf": "^2.6.1",
|
||||
"semver": "^5.3.0",
|
||||
"tar": "^4"
|
||||
}
|
||||
},
|
||||
"nopt": {
|
||||
"version": "4.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"abbrev": "1",
|
||||
"osenv": "^0.1.4"
|
||||
}
|
||||
},
|
||||
"npm-bundled": {
|
||||
"version": "1.0.6",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"npm-packlist": {
|
||||
"version": "1.4.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ignore-walk": "^3.0.1",
|
||||
"npm-bundled": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"npmlog": {
|
||||
"version": "4.1.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"are-we-there-yet": "~1.1.2",
|
||||
"console-control-strings": "~1.1.0",
|
||||
"gauge": "~2.7.3",
|
||||
"set-blocking": "~2.0.0"
|
||||
}
|
||||
},
|
||||
"number-is-nan": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"object-assign": {
|
||||
"version": "4.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"once": {
|
||||
"version": "1.4.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"wrappy": "1"
|
||||
}
|
||||
},
|
||||
"os-homedir": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"os-tmpdir": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"osenv": {
|
||||
"version": "0.1.5",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"os-homedir": "^1.0.0",
|
||||
"os-tmpdir": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"path-is-absolute": {
|
||||
"version": "1.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"process-nextick-args": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"rc": {
|
||||
"version": "1.2.8",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"deep-extend": "^0.6.0",
|
||||
"ini": "~1.3.0",
|
||||
"minimist": "^1.2.0",
|
||||
"strip-json-comments": "~2.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"minimist": {
|
||||
"version": "1.2.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.3.6",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"core-util-is": "~1.0.0",
|
||||
"inherits": "~2.0.3",
|
||||
"isarray": "~1.0.0",
|
||||
"process-nextick-args": "~2.0.0",
|
||||
"safe-buffer": "~5.1.1",
|
||||
"string_decoder": "~1.1.1",
|
||||
"util-deprecate": "~1.0.1"
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.6.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
"version": "5.1.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"safer-buffer": {
|
||||
"version": "2.1.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"sax": {
|
||||
"version": "1.2.4",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"semver": {
|
||||
"version": "5.7.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"signal-exit": {
|
||||
"version": "3.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"string-width": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"code-point-at": "^1.0.0",
|
||||
"is-fullwidth-code-point": "^1.0.0",
|
||||
"strip-ansi": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "1.1.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"safe-buffer": "~5.1.0"
|
||||
}
|
||||
},
|
||||
"strip-ansi": {
|
||||
"version": "3.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"ansi-regex": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"strip-json-comments": {
|
||||
"version": "2.0.1",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"tar": {
|
||||
"version": "4.4.8",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"chownr": "^1.1.1",
|
||||
"fs-minipass": "^1.2.5",
|
||||
"minipass": "^2.3.4",
|
||||
"minizlib": "^1.1.1",
|
||||
"mkdirp": "^0.5.0",
|
||||
"safe-buffer": "^5.1.2",
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"wide-align": {
|
||||
"version": "1.1.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"requires": {
|
||||
"string-width": "^1.0.2 || 2"
|
||||
}
|
||||
},
|
||||
"wrappy": {
|
||||
"version": "1.0.2",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.0.3",
|
||||
"bundled": true,
|
||||
"dev": true,
|
||||
"optional": true
|
||||
}
|
||||
"bindings": "^1.5.0",
|
||||
"nan": "^2.12.1"
|
||||
}
|
||||
},
|
||||
"function-bind": {
|
||||
@ -8309,9 +7789,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.13.2",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz",
|
||||
"integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==",
|
||||
"version": "2.14.1",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz",
|
||||
"integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
|
@ -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",
|
||||
@ -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,6 +201,8 @@
|
||||
"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",
|
||||
"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í",
|
||||
@ -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.",
|
||||
@ -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,7 +447,7 @@
|
||||
"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ů.",
|
||||
"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 zástupný znak nebo název domény, kterou chcete přepsat.",
|
||||
@ -449,6 +455,8 @@
|
||||
"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)"
|
||||
}
|
@ -490,4 +490,4 @@
|
||||
"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": "puedes 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",
|
||||
"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",
|
||||
@ -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",
|
||||
@ -209,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.",
|
||||
@ -232,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/). Es posible que se le pida 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",
|
||||
@ -282,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",
|
||||
@ -291,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",
|
||||
@ -307,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",
|
||||
@ -338,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",
|
||||
@ -358,8 +361,8 @@
|
||||
"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",
|
||||
@ -368,10 +371,10 @@
|
||||
"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.",
|
||||
@ -387,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",
|
||||
@ -431,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}}",
|
||||
@ -484,4 +490,4 @@
|
||||
"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",
|
||||
@ -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",
|
||||
@ -255,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.",
|
||||
@ -358,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",
|
||||
@ -386,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",
|
||||
@ -443,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.",
|
||||
@ -451,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.",
|
||||
@ -484,4 +490,4 @@
|
||||
"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",
|
||||
@ -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",
|
||||
@ -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は既に最新です",
|
||||
@ -384,7 +387,6 @@
|
||||
"rewrite_not_found": "DNS書き換え情報はありません",
|
||||
"rewrite_confirm_delete": "\"{{key}}\" のためのDNS書き換え情報を削除してもよろしいですか?",
|
||||
"rewrite_desc": "特定のドメイン名に対するDNS応答を簡単にカスタマイズすることを可能にします。",
|
||||
"rewrite_applied": "書き換えルールを適用済み",
|
||||
"dns_rewrites": "DNS書き換え",
|
||||
"form_domain": "ドメイン名を入力してください",
|
||||
"form_answer": "IPアドレスかドメイン名を入力",
|
||||
@ -441,7 +443,6 @@
|
||||
"netname": "ネットワーク名",
|
||||
"descr": "説明",
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "独自のブラックリストの作成に関して<0>詳しく学習します</0>。",
|
||||
"blocked_by_response": "応答されたCNAMEかIPアドレスによるブロック",
|
||||
"try_again": "再試行する",
|
||||
"domain_desc": "DNSリライトしたいドメイン名やワイルドカードを入力してください。",
|
||||
@ -480,4 +481,4 @@
|
||||
"confirm_static_ip": "AdGuard Homeは、{{ip}}を静的IPアドレスとして設定します。よろしいですか?",
|
||||
"list_updated": "{{count}}個のリストが更新されました",
|
||||
"list_updated_plural": "{{count}}個のリストが更新されました"
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
{
|
||||
"client_settings": "클라이언트 설정",
|
||||
"example_upstream_reserved": "<0>특정 도메인에 대한</0> DNS 업스트림을 지정할 수 있습니다.",
|
||||
"upstream_parallel": "쿼리 처리 속도를 높이려면 모든업스트림 서버에서 병렬 쿼리를 사용해주세요.",
|
||||
"parallel_requests": "병렬 처리 요청",
|
||||
"bootstrap_dns": "부트스트랩 DNS 서버",
|
||||
"bootstrap_dns_desc": "부트스트랩 DNS 서버는 업스트림으로 지정한 DoH/DoT 서버의 IP 주소를 확인하는 데 사용합니다.",
|
||||
"check_dhcp_servers": "DHCP 서버 체크",
|
||||
@ -64,7 +63,7 @@
|
||||
"copyright": "Copyright",
|
||||
"homepage": "홈페이지",
|
||||
"report_an_issue": "문제를 보고합니다",
|
||||
"privacy_policy": "개인 정보 처리 방침",
|
||||
"privacy_policy": "개인정보취급방침",
|
||||
"enable_protection": "보호 활성화",
|
||||
"enabled_protection": "보호 활성화됨",
|
||||
"disable_protection": "보호 비활성화",
|
||||
@ -140,7 +139,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 +148,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 +199,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": "기본",
|
||||
@ -357,7 +359,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 +386,6 @@
|
||||
"rewrite_not_found": "DNS 변경 정보를 찾을 수 없습니다",
|
||||
"rewrite_confirm_delete": "\"{{key}}\"에 대한 DNS 변경 정보를 삭제하시겠습니까?",
|
||||
"rewrite_desc": "특정 도메인 이름에 대한 사용자 지정 DNS 응답을 쉽게 구성할 수 있습니다.",
|
||||
"rewrite_applied": "적용된 변경 규칙",
|
||||
"dns_rewrites": "DNS 변경",
|
||||
"form_domain": "도메인 이름 또는 와일드카드를 입력합니다",
|
||||
"form_answer": "IP 주소 또는 도메인 이름을 입력하세요",
|
||||
@ -449,6 +450,7 @@
|
||||
"example_rewrite_wildcard": "모든 서브 도메인에 대한 <0>example.org</0> 응답을 변경합니다",
|
||||
"disable_ipv6": "IPv6 비활성화",
|
||||
"disable_ipv6_desc": "이 기능이 활성화되면 IPv6 (타입 AAAA) 의 모든 DNS 쿼리가 드랍됩니다.",
|
||||
"fastest_addr": "가장 빠른 IP 주소",
|
||||
"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 +481,6 @@
|
||||
"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 활성화"
|
||||
}
|
@ -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",
|
||||
@ -480,4 +479,4 @@
|
||||
"confirm_static_ip": "AdGuard Home vil sette opp {{ip}} til å bli din statiske IP-adresse. Vil du fortsette?",
|
||||
"list_updated": "{{count}} liste oppdatert",
|
||||
"list_updated_plural": "{{count}} lister oppdatert"
|
||||
}
|
||||
}
|
@ -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",
|
||||
@ -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",
|
||||
@ -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",
|
||||
@ -140,7 +141,7 @@
|
||||
"add_allowlist": "Dodaj listę dozwolonych",
|
||||
"cancel_btn": "Anuluj",
|
||||
"enter_name_hint": "Wpisz nazwę",
|
||||
"enter_url_hint": "Wpisz adres URL",
|
||||
"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",
|
||||
@ -148,7 +149,8 @@
|
||||
"edit_allowlist": "Edytuj listę dozwolonych",
|
||||
"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": "Nieprawidłowy format Url",
|
||||
"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": "Wpisz jedną regułę w jednej linii. Możesz użyć reguł adblock lub składni plików hostów.",
|
||||
"examples_title": "Przykłady",
|
||||
@ -160,12 +162,12 @@
|
||||
"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",
|
||||
@ -252,9 +254,10 @@
|
||||
"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": "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.",
|
||||
@ -288,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.",
|
||||
@ -297,12 +300,12 @@
|
||||
"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",
|
||||
@ -358,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": "Prywatny 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>.",
|
||||
"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 wpisz 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",
|
||||
@ -387,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",
|
||||
@ -443,7 +447,7 @@
|
||||
"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ć.",
|
||||
@ -451,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.",
|
||||
@ -484,4 +490,4 @@
|
||||
"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",
|
||||
@ -140,7 +141,7 @@
|
||||
"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",
|
||||
"new_blocklist": "Nova lista negra",
|
||||
"new_allowlist": "Nova lista branca",
|
||||
@ -148,7 +149,8 @@
|
||||
"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_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",
|
||||
@ -199,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",
|
||||
@ -253,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.",
|
||||
@ -357,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.",
|
||||
@ -385,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",
|
||||
@ -449,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.",
|
||||
@ -479,5 +487,7 @@
|
||||
"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?",
|
||||
"list_updated": "{{count}} lista atualizada",
|
||||
"list_updated_plural": "{{count}} listas atualizadas"
|
||||
}
|
||||
"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.",
|
||||
@ -421,4 +420,4 @@
|
||||
"domain_desc": "Insere o nome do domínio para ser reescrito.",
|
||||
"example_rewrite_domain": "reescrever resposta apenas para este domínio.",
|
||||
"example_rewrite_wildcard": "reescrever resposta para todos <0>example.org</0> sub-domínios."
|
||||
}
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
{
|
||||
"client_settings": "Setări client",
|
||||
"example_upstream_reserved": "puteți preciza un DNS upstream <0>de domeni/u(ii) specific(e)</0>",
|
||||
"upstream_parallel": "Folosiți interogări paralele pentru a rezolva rapid prin interogarea simultană a tuturor serverelor upstream",
|
||||
"example_upstream_reserved": "Puteți preciza un DNS upstream <0>de domeni/u(ii) specific(e)</0>",
|
||||
"upstream_parallel": "Folosiți interogări paralele pentru rezolvări rapide interogând simultan toate serverele în amonte",
|
||||
"parallel_requests": "Solicitări paralele",
|
||||
"bootstrap_dns": "Serverele DNS Bootstrap",
|
||||
"bootstrap_dns_desc": "Serverele DNS Bootstrap sunt folosite pentru a rezolva adresele IP ale resolverelor DoH/DoT indicate ca upstreams.",
|
||||
"check_dhcp_servers": "Căutați servere DHCP",
|
||||
@ -140,7 +141,7 @@
|
||||
"add_allowlist": "Adăugați autorizare",
|
||||
"cancel_btn": "Anulare",
|
||||
"enter_name_hint": "Intrați numele",
|
||||
"enter_url_hint": "Intrați URL",
|
||||
"enter_url_or_path_hint": "Intrați un URL sau o cale absolută a listei",
|
||||
"check_updates_btn": "Caută actualizări",
|
||||
"new_blocklist": "Nouă blocare",
|
||||
"new_allowlist": "Nouă autorizare",
|
||||
@ -148,7 +149,8 @@
|
||||
"edit_allowlist": "Editare autorizare",
|
||||
"enter_valid_blocklist": "Intrați un URL valid pentru blocare.",
|
||||
"enter_valid_allowlist": "Intrați un URL valid pentru autorizare.",
|
||||
"form_error_url_format": "Format url nevalid",
|
||||
"form_error_url_format": "Format URL invalid",
|
||||
"form_error_url_or_path_format": "Invalid URL sau o cale absolută a listei",
|
||||
"custom_filter_rules": "Reguli de filtrare personalizate",
|
||||
"custom_filter_rules_hint": "Intrați o regulă pe linie. Puteți utiliza reguli de blocare sau sintaxa de fișiere hosts.",
|
||||
"examples_title": "Exemple",
|
||||
@ -199,6 +201,8 @@
|
||||
"query_log_disabled": "Jurnalul de interogare este dezactivat și poate fi configurat în <0>setări</0>",
|
||||
"query_log_strict_search": "Utilizați ghilimele duble pentru căutare strictă",
|
||||
"query_log_retention_confirm": "Sunteți sigur că doriți să schimbați retenția jurnalului de interogare? Reducând valoarea intervalului, unele date vor fi pierdute",
|
||||
"anonymize_client_ip": "Anonimizare client IP",
|
||||
"anonymize_client_ip_desc": "Nu salvați adresa IP completă a clientului în jurnale și statistici",
|
||||
"dns_config": "Configurația serverului DNS",
|
||||
"blocking_mode": "Modul de blocare",
|
||||
"default": "Implicit",
|
||||
@ -253,6 +257,7 @@
|
||||
"install_devices_router_list_1": "Deschideți preferințele pentru routerul dvs. De obicei, îl puteți accesa din browserul dvs. printr-o adresă URL (cum ar fi http://192.168.0.1/ sau http://192.168.1.1/). Vi se poate cere să introduceți parola. Dacă nu v-o amintiți, puteți reseta adesea parola apăsând un buton de pe routerul propriu-zis. Unele routere necesită o aplicație specifică, care în acest caz ar trebui să fie deja instalată pe computerul/telefonul dvs.",
|
||||
"install_devices_router_list_2": "Găsiți setările DHCP/DNS. Căutați literele DNS lângă un câmp care să permită două sau trei seturi de numere, fiecare împărțit în patru grupuri de una până la trei cifre.",
|
||||
"install_devices_router_list_3": "Intrați adresele serverului dvs. AdGuard Home aici.",
|
||||
"install_devices_router_list_4": "Unele routere nu permit setarea unui server DNS personalizat. În acest caz, vă poate ajuta dacă configurați AdGuard Home ca server DHCP. Dacă nu, trebuie căutat manualul modelului dvs. de router ca să aflați cum se pot personaliza serverele DNS.",
|
||||
"install_devices_windows_list_1": "Deschideți panoul de control prin meniul Start sau căutare Windows.",
|
||||
"install_devices_windows_list_2": "Accesați categoria \"Rețea și Internet\", apoi la \"Centrul de Rețea și Partajare\".",
|
||||
"install_devices_windows_list_3": "În partea stângă a ecranului găsiți \"Schimbare setări adaptor\" și faceți clic pe el.",
|
||||
@ -357,7 +362,7 @@
|
||||
"access_disallowed_title": "Clienți neautorizați",
|
||||
"access_disallowed_desc": "O listă de adrese CIDR sau IP. Dacă este configurat, AdGuard Home va elimina cererile de la aceste adrese IP.",
|
||||
"access_blocked_title": "Domenii blocate",
|
||||
"access_blocked_desc": "Nu confundați acest lucru cu filtrele. AdGuard Home va bloca interogări DNS cu aceste domenii în întrebare.",
|
||||
"access_blocked_desc": "Nu confundați acest lucru cu filtrele. AdGuard Home va bloca interogări DNS cu aceste domenii în întrebare. Aici puteți specifica exact numele de domeniu, wildcard și reguli-urlfilter, de ex. 'examplu.org', '*.examplu.org' sau '||exemplu.org^'.",
|
||||
"access_settings_saved": "Setările de acces au fost salvate cu succes",
|
||||
"updates_checked": "Actualizările au fost verificate cu succes",
|
||||
"updates_version_equal": "AdGuard Home este la zi",
|
||||
@ -384,7 +389,8 @@
|
||||
"rewrite_not_found": "Nu s-au găsit rescrieri DNS",
|
||||
"rewrite_confirm_delete": "Sunteți sigur că doriți să ștergeți rescrierea DNS pentru \"{{key}}\"?",
|
||||
"rewrite_desc": "Permite configurarea cu ușurință a răspunsului personalizat DNS pentru un nume de domeniu specific.",
|
||||
"rewrite_applied": "Regula de rescriere aplicată",
|
||||
"rewrite_applied": "Regula de rescriere s-a aplicat",
|
||||
"rewrite_hosts_applied": "Rescrisă de regula fișierului hosts",
|
||||
"dns_rewrites": "Rescrieri DNS",
|
||||
"form_domain": "Intrați un nume de domeniu sau wildcard",
|
||||
"form_answer": "Intrați adresa IP sau numele de domeniu",
|
||||
@ -441,7 +447,7 @@
|
||||
"netname": "Numele rețelei",
|
||||
"descr": "Descriere",
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "<0>Aflați mai multe</0> despre crearea propriilor dvs. liste de blocaj de hosts.",
|
||||
"filtering_rules_learn_more": "<0>Aflați mai multe</0> despre crearea propriilor liste hosts.",
|
||||
"blocked_by_response": "Blocat de CNAME sau IP ca răspuns",
|
||||
"try_again": "Încercați din nou",
|
||||
"domain_desc": "Intrați un nume de domeniu sau wildcard care doriți să fie rescris.",
|
||||
@ -449,6 +455,8 @@
|
||||
"example_rewrite_wildcard": "rescrie răspunsuri pentru toate subdomeniile <0>exemplu.org</0>.",
|
||||
"disable_ipv6": "Dezactivați IPv6",
|
||||
"disable_ipv6_desc": "Dacă această opțiune este activată, toate interogările DNS pentru adrese IPv6 (tip AAAA) vor fi anulate.",
|
||||
"fastest_addr": "Cea mai rapidă adresă IP",
|
||||
"fastest_addr_desc": "Interogați toate serverele DNS și returnați cea mai rapidă adresă IP din răspunsuri",
|
||||
"autofix_warning_text": "Dacă faceți clic pe \"Fix\", AdGuardHome va configura sistemul dvs. pentru a utiliza serverul DNS AdGuardHome.",
|
||||
"autofix_warning_list": "Va efectua aceste sarcini: <0>Dezactivare sistem DNSStubListener</0> <0>Setare adresă server DNS la 127.0.0.1</0> <0>Înlocuire țintei legăturii simbolice a /etc/resolv.conf pentru /run/systemd/resolve/resolv.conf</0> <0>Oprire DNSStubListener (reîncărcare servici rezolvat prin sistem)</0>",
|
||||
"autofix_warning_result": "Ca urmare, toate cererile DNS de la sistemul dvs. vor fi procesate în mod implicit de AdGuardHome.",
|
||||
@ -479,5 +487,7 @@
|
||||
"install_static_configure": "Am detectat că se folosește o adresă IP dinamică - <0>{{ip}}</0>. Vreți să o folosiți pe aceasta ca adresă statică?",
|
||||
"confirm_static_ip": "AdGuard Home va configura {{ip}} ca adresa dvs. IP statică. Doriți să continuați?",
|
||||
"list_updated": "{{count}} listă actualizată",
|
||||
"list_updated_plural": "{{count}} liste actualizate"
|
||||
}
|
||||
"list_updated_plural": "{{count}} liste actualizate",
|
||||
"dnssec_enable": "Activați DNSSEC",
|
||||
"dnssec_enable_desc": "Setați steagul DNSSEC pe interogările DNS de ieșire și verificați rezultatul (este necesar un resolver DNSSEC activat)"
|
||||
}
|
@ -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",
|
||||
@ -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",
|
||||
@ -212,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",
|
||||
@ -255,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",
|
||||
@ -358,7 +361,7 @@
|
||||
"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_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é",
|
||||
@ -387,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",
|
||||
@ -443,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ť.",
|
||||
@ -451,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",
|
||||
@ -484,4 +490,4 @@
|
||||
"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",
|
||||
@ -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",
|
||||
@ -255,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.",
|
||||
@ -358,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",
|
||||
@ -387,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",
|
||||
@ -404,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",
|
||||
@ -417,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",
|
||||
@ -426,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",
|
||||
@ -434,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",
|
||||
@ -443,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.",
|
||||
@ -451,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.",
|
||||
@ -484,4 +490,4 @@
|
||||
"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",
|
||||
@ -480,4 +479,4 @@
|
||||
"confirm_static_ip": "AdGuard Home će konfigurisati {{ip}} da bude vaša statička IP adresa. Želite li da nastavite?",
|
||||
"list_updated": "{{count}} lista ažurirana",
|
||||
"list_updated_plural": "{{count}} lista ažurirano"
|
||||
}
|
||||
}
|
@ -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.",
|
||||
@ -358,4 +357,4 @@
|
||||
"descr": "Beskrivning",
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "<0>Mer info</0> om att skapa dina egna blockeringslistor för värdar."
|
||||
}
|
||||
}
|
@ -130,7 +130,6 @@
|
||||
"filters_and_hosts_hint": "AdGuard Home เข้าใจกฎปิดกั้นโฆษณาพื้นฐานและโฮสต์ไฟล์ไวยากรณ์",
|
||||
"cancel_btn": "ยกเลิก",
|
||||
"enter_name_hint": "ป้อนชื่อ",
|
||||
"enter_url_hint": "ป้อน URL",
|
||||
"check_updates_btn": "ตรวจสอบการปรับปรุง",
|
||||
"custom_filter_rules": "กฎการกรองที่กำหนดเอง",
|
||||
"custom_filter_rules_hint": "ป้อนหนึ่งกฎในหนึ่งบรรทัด คุณสามารถใช้กฎปิดกั้นโฆษณาหรือโฮสต์ไฟล์ไวยากรณ์",
|
||||
@ -413,4 +412,4 @@
|
||||
"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",
|
||||
@ -71,7 +72,7 @@
|
||||
"disabled_protection": "Koruma durduruldu",
|
||||
"refresh_statics": "İstatistikleri yenile",
|
||||
"dns_query": "DNS Sorguları",
|
||||
"blocked_by": "<0>Filtreler tarafından engellendi</0>",
|
||||
"blocked_by": "Filtreler tarafından engellendi",
|
||||
"stats_malware_phishing": "Zararlı yazılım/kimlik hırsızlığı engellendi",
|
||||
"stats_adult": "Yetişkin içerikli site engellendi",
|
||||
"stats_query_domain": "En fazla sorgulanan alan adları",
|
||||
@ -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)"
|
||||
}
|
@ -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 服务器",
|
||||
@ -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": "默认",
|
||||
@ -355,8 +359,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已经是最新版本",
|
||||
@ -383,7 +385,6 @@
|
||||
"rewrite_not_found": "未找到 DNS 重写",
|
||||
"rewrite_confirm_delete": "您确定要删除 \"{{key}}\" 的 DNS 重写?",
|
||||
"rewrite_desc": "可以轻松地配置特定的域名的自定义 DNS 响应。",
|
||||
"rewrite_applied": "已应用的重写规则",
|
||||
"dns_rewrites": "DNS 重写",
|
||||
"form_domain": "输入域",
|
||||
"form_answer": "输入 IP 地址或域名",
|
||||
@ -440,7 +441,6 @@
|
||||
"netname": "网络名称",
|
||||
"descr": "描述",
|
||||
"whois": "Whois",
|
||||
"filtering_rules_learn_more": "<0>了解更多</0>关于如何创建您自己的主机(hosts)拦截清单。",
|
||||
"blocked_by_response": "因响应的CNAME或IP被屏蔽",
|
||||
"try_again": "重试",
|
||||
"domain_desc": "输入您要重写的域名或通配符。",
|
||||
@ -448,6 +448,7 @@
|
||||
"example_rewrite_wildcard": "重写所有<0>example.org</0> 子域的响应。",
|
||||
"disable_ipv6": "禁用 IPv6",
|
||||
"disable_ipv6_desc": "启用后,所有IPv6地址 (type AAAA) 的DNS查询都会被丢弃。",
|
||||
"fastest_addr": "最快的 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处理。",
|
||||
@ -478,5 +479,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": "自我啟動(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": "於一行上輸入一項規則。您可使用廣告封鎖規則或主機檔案語法。",
|
||||
"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_disallowed_desc": "無類別網域間路由(CIDR)或 IP 位址之清單。如果被配置,AdGuard Home 將排除來自這些 IP 位址的請求。",
|
||||
"access_blocked_title": "不允許的網域",
|
||||
"access_blocked_desc": "不要把這個和過濾器混淆。AdGuard Home 將從查詢的詢問中排除有這些網域的 DNS 查詢。",
|
||||
"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 的解析器是必須的)"
|
||||
}
|
@ -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);
|
||||
}
|
@ -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}
|
||||
/>
|
||||
|
@ -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">
|
||||
@ -39,6 +40,7 @@ const Form = (props) => {
|
||||
className="form-control"
|
||||
placeholder={t('enter_url_or_path_hint')}
|
||||
validate={[required, isValidPath]}
|
||||
normalizeOnBlur={data => data.trim()}
|
||||
/>
|
||||
</div>
|
||||
<div className="form__description">
|
||||
|
@ -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,7 +17,7 @@ const getInputFields = (parallel_requests_selected, fastest_addr_selected) => [{
|
||||
name: 'upstream_dns',
|
||||
type: 'text',
|
||||
component: 'textarea',
|
||||
className: 'form-control form-control--textarea',
|
||||
className: 'form-control form-control--textarea font-monospace',
|
||||
placeholder: 'upstream_dns',
|
||||
},
|
||||
{
|
||||
@ -96,7 +96,7 @@ let Form = (props) => {
|
||||
name="bootstrap_dns"
|
||||
component="textarea"
|
||||
type="text"
|
||||
className="form-control form-control--textarea form-control--textarea-small"
|
||||
className="form-control form-control--textarea form-control--textarea-small font-monospace"
|
||||
placeholder={t('bootstrap_dns')}
|
||||
disabled={processingSetConfig}
|
||||
/>
|
||||
|
@ -52,7 +52,7 @@ var serviceRulesArray = []svc{
|
||||
"||snapads.com^",
|
||||
"||impala-media-production.s3.amazonaws.com^",
|
||||
}},
|
||||
{"discord", []string{"||discord.gg^", "||discordapp.net^", "||discordapp.com^", "||discord.media^"}},
|
||||
{"discord", []string{"||discord.gg^", "||discordapp.net^", "||discordapp.com^", "||discord.com^", "||discord.media^"}},
|
||||
{"ok", []string{"||ok.ru^"}},
|
||||
{"skype", []string{"||skype.com^", "||skypeassets.com^"}},
|
||||
{"vk", []string{"||vk.com^", "||userapi.com^", "||vk-cdn.net^", "||vkuservideo.net^"}},
|
||||
|
@ -7,6 +7,7 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"runtime"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
@ -528,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
|
||||
|
263
dnsforward/config.go
Normal file
263
dnsforward/config.go
Normal file
@ -0,0 +1,263 @@
|
||||
package dnsforward
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"crypto/x509"
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"net/http"
|
||||
"sort"
|
||||
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/joomcode/errorx"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsfilter"
|
||||
"github.com/AdguardTeam/dnsproxy/proxy"
|
||||
"github.com/AdguardTeam/dnsproxy/upstream"
|
||||
)
|
||||
|
||||
// FilteringConfig represents the DNS filtering configuration of AdGuard Home
|
||||
// The zero FilteringConfig is empty and ready for use.
|
||||
type FilteringConfig struct {
|
||||
// Callbacks for other modules
|
||||
// --
|
||||
|
||||
// Filtering callback function
|
||||
FilterHandler func(clientAddr string, settings *dnsfilter.RequestFilteringSettings) `yaml:"-"`
|
||||
|
||||
// GetCustomUpstreamByClient - a callback function that returns upstreams configuration
|
||||
// based on the client IP address. Returns nil if there are no custom upstreams for the client
|
||||
GetCustomUpstreamByClient func(clientAddr string) *proxy.UpstreamConfig `yaml:"-"`
|
||||
|
||||
// Protection configuration
|
||||
// --
|
||||
|
||||
ProtectionEnabled bool `yaml:"protection_enabled"` // whether or not use any of dnsfilter features
|
||||
BlockingMode string `yaml:"blocking_mode"` // mode how to answer filtered requests
|
||||
BlockingIPv4 string `yaml:"blocking_ipv4"` // IP address to be returned for a blocked A request
|
||||
BlockingIPv6 string `yaml:"blocking_ipv6"` // IP address to be returned for a blocked AAAA request
|
||||
BlockingIPAddrv4 net.IP `yaml:"-"`
|
||||
BlockingIPAddrv6 net.IP `yaml:"-"`
|
||||
BlockedResponseTTL uint32 `yaml:"blocked_response_ttl"` // if 0, then default is used (3600)
|
||||
|
||||
// IP (or domain name) which is used to respond to DNS requests blocked by parental control or safe-browsing
|
||||
ParentalBlockHost string `yaml:"parental_block_host"`
|
||||
SafeBrowsingBlockHost string `yaml:"safebrowsing_block_host"`
|
||||
|
||||
// Anti-DNS amplification
|
||||
// --
|
||||
|
||||
Ratelimit uint32 `yaml:"ratelimit"` // max number of requests per second from a given IP (0 to disable)
|
||||
RatelimitWhitelist []string `yaml:"ratelimit_whitelist"` // a list of whitelisted client IP addresses
|
||||
RefuseAny bool `yaml:"refuse_any"` // if true, refuse ANY requests
|
||||
|
||||
// Upstream DNS servers configuration
|
||||
// --
|
||||
|
||||
UpstreamDNS []string `yaml:"upstream_dns"`
|
||||
BootstrapDNS []string `yaml:"bootstrap_dns"` // a list of bootstrap DNS for DoH and DoT (plain DNS only)
|
||||
AllServers bool `yaml:"all_servers"` // if true, parallel queries to all configured upstream servers are enabled
|
||||
FastestAddr bool `yaml:"fastest_addr"` // use Fastest Address algorithm
|
||||
|
||||
// Access settings
|
||||
// --
|
||||
|
||||
AllowedClients []string `yaml:"allowed_clients"` // IP addresses of whitelist clients
|
||||
DisallowedClients []string `yaml:"disallowed_clients"` // IP addresses of clients that should be blocked
|
||||
BlockedHosts []string `yaml:"blocked_hosts"` // hosts that should be blocked
|
||||
|
||||
// DNS cache settings
|
||||
// --
|
||||
|
||||
CacheSize uint32 `yaml:"cache_size"` // DNS cache size (in bytes)
|
||||
CacheMinTTL uint32 `yaml:"cache_ttl_min"` // override TTL value (minimum) received from upstream server
|
||||
CacheMaxTTL uint32 `yaml:"cache_ttl_max"` // override TTL value (maximum) received from upstream server
|
||||
|
||||
// Other settings
|
||||
// --
|
||||
|
||||
BogusNXDomain []string `yaml:"bogus_nxdomain"` // transform responses with these IP addresses to NXDOMAIN
|
||||
AAAADisabled bool `yaml:"aaaa_disabled"` // Respond with an empty answer to all AAAA requests
|
||||
EnableDNSSEC bool `yaml:"enable_dnssec"` // Set DNSSEC flag in outcoming DNS request
|
||||
EnableEDNSClientSubnet bool `yaml:"edns_client_subnet"` // Enable EDNS Client Subnet option
|
||||
}
|
||||
|
||||
// TLSConfig is the TLS configuration for HTTPS, DNS-over-HTTPS, and DNS-over-TLS
|
||||
type TLSConfig struct {
|
||||
TLSListenAddr *net.TCPAddr `yaml:"-" json:"-"`
|
||||
StrictSNICheck bool `yaml:"strict_sni_check" json:"-"` // Reject connection if the client uses server name (in SNI) that doesn't match the certificate
|
||||
CertificateChain string `yaml:"certificate_chain" json:"certificate_chain"` // PEM-encoded certificates chain
|
||||
PrivateKey string `yaml:"private_key" json:"private_key"` // PEM-encoded private key
|
||||
|
||||
CertificatePath string `yaml:"certificate_path" json:"certificate_path"` // certificate file name
|
||||
PrivateKeyPath string `yaml:"private_key_path" json:"private_key_path"` // private key file name
|
||||
|
||||
CertificateChainData []byte `yaml:"-" json:"-"`
|
||||
PrivateKeyData []byte `yaml:"-" json:"-"`
|
||||
|
||||
cert tls.Certificate // nolint(structcheck) - linter thinks that this field is unused, while TLSConfig is directly included into ServerConfig
|
||||
dnsNames []string // nolint(structcheck) // DNS names from certificate (SAN) or CN value from Subject
|
||||
}
|
||||
|
||||
// ServerConfig represents server configuration.
|
||||
// The zero ServerConfig is empty and ready for use.
|
||||
type ServerConfig struct {
|
||||
UDPListenAddr *net.UDPAddr // UDP listen address
|
||||
TCPListenAddr *net.TCPAddr // TCP listen address
|
||||
UpstreamConfig *proxy.UpstreamConfig // Upstream DNS servers config
|
||||
OnDNSRequest func(d *proxy.DNSContext)
|
||||
|
||||
FilteringConfig
|
||||
TLSConfig
|
||||
TLSAllowUnencryptedDOH bool
|
||||
|
||||
TLSv12Roots *x509.CertPool // list of root CAs for TLSv1.2
|
||||
TLSCiphers []uint16 // list of TLS ciphers to use
|
||||
|
||||
// Called when the configuration is changed by HTTP request
|
||||
ConfigModified func()
|
||||
|
||||
// Register an HTTP handler
|
||||
HTTPRegister func(string, string, func(http.ResponseWriter, *http.Request))
|
||||
}
|
||||
|
||||
// if any of ServerConfig values are zero, then default values from below are used
|
||||
var defaultValues = ServerConfig{
|
||||
UDPListenAddr: &net.UDPAddr{Port: 53},
|
||||
TCPListenAddr: &net.TCPAddr{Port: 53},
|
||||
FilteringConfig: FilteringConfig{BlockedResponseTTL: 3600},
|
||||
}
|
||||
|
||||
// createProxyConfig creates and validates configuration for the main proxy
|
||||
func (s *Server) createProxyConfig() (proxy.Config, error) {
|
||||
proxyConfig := proxy.Config{
|
||||
UDPListenAddr: s.conf.UDPListenAddr,
|
||||
TCPListenAddr: s.conf.TCPListenAddr,
|
||||
Ratelimit: int(s.conf.Ratelimit),
|
||||
RatelimitWhitelist: s.conf.RatelimitWhitelist,
|
||||
RefuseAny: s.conf.RefuseAny,
|
||||
CacheEnabled: true,
|
||||
CacheSizeBytes: int(s.conf.CacheSize),
|
||||
CacheMinTTL: s.conf.CacheMinTTL,
|
||||
CacheMaxTTL: s.conf.CacheMaxTTL,
|
||||
UpstreamConfig: s.conf.UpstreamConfig,
|
||||
BeforeRequestHandler: s.beforeRequestHandler,
|
||||
RequestHandler: s.handleDNSRequest,
|
||||
AllServers: s.conf.AllServers,
|
||||
EnableEDNSClientSubnet: s.conf.EnableEDNSClientSubnet,
|
||||
FindFastestAddr: s.conf.FastestAddr,
|
||||
}
|
||||
|
||||
if len(s.conf.BogusNXDomain) > 0 {
|
||||
for _, s := range s.conf.BogusNXDomain {
|
||||
ip := net.ParseIP(s)
|
||||
if ip == nil {
|
||||
log.Error("Invalid bogus IP: %s", s)
|
||||
} else {
|
||||
proxyConfig.BogusNXDomain = append(proxyConfig.BogusNXDomain, ip)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TLS settings
|
||||
err := s.prepareTLS(&proxyConfig)
|
||||
if err != nil {
|
||||
return proxyConfig, err
|
||||
}
|
||||
|
||||
// Validate proxy config
|
||||
if proxyConfig.UpstreamConfig == nil || len(proxyConfig.UpstreamConfig.Upstreams) == 0 {
|
||||
return proxyConfig, errors.New("no upstream servers configured")
|
||||
}
|
||||
|
||||
return proxyConfig, nil
|
||||
}
|
||||
|
||||
// initDefaultSettings initializes default settings if nothing
|
||||
// is configured
|
||||
func (s *Server) initDefaultSettings() {
|
||||
if len(s.conf.UpstreamDNS) == 0 {
|
||||
s.conf.UpstreamDNS = defaultDNS
|
||||
}
|
||||
if len(s.conf.BootstrapDNS) == 0 {
|
||||
s.conf.BootstrapDNS = defaultBootstrap
|
||||
}
|
||||
if len(s.conf.ParentalBlockHost) == 0 {
|
||||
s.conf.ParentalBlockHost = parentalBlockHost
|
||||
}
|
||||
if len(s.conf.SafeBrowsingBlockHost) == 0 {
|
||||
s.conf.SafeBrowsingBlockHost = safeBrowsingBlockHost
|
||||
}
|
||||
if s.conf.UDPListenAddr == nil {
|
||||
s.conf.UDPListenAddr = defaultValues.UDPListenAddr
|
||||
}
|
||||
if s.conf.TCPListenAddr == nil {
|
||||
s.conf.TCPListenAddr = defaultValues.TCPListenAddr
|
||||
}
|
||||
}
|
||||
|
||||
// prepareUpstreamSettings - prepares upstream DNS server settings
|
||||
func (s *Server) prepareUpstreamSettings() error {
|
||||
upstreamConfig, err := proxy.ParseUpstreamsConfig(s.conf.UpstreamDNS, s.conf.BootstrapDNS, DefaultTimeout)
|
||||
if err != nil {
|
||||
return fmt.Errorf("DNS: proxy.ParseUpstreamsConfig: %s", err)
|
||||
}
|
||||
s.conf.UpstreamConfig = &upstreamConfig
|
||||
return nil
|
||||
}
|
||||
|
||||
// prepareIntlProxy - initializes DNS proxy that we use for internal DNS queries
|
||||
func (s *Server) prepareIntlProxy() {
|
||||
intlProxyConfig := proxy.Config{
|
||||
CacheEnabled: true,
|
||||
CacheSizeBytes: 4096,
|
||||
UpstreamConfig: s.conf.UpstreamConfig,
|
||||
}
|
||||
s.internalProxy = &proxy.Proxy{Config: intlProxyConfig}
|
||||
}
|
||||
|
||||
// prepareTLS - prepares TLS configuration for the DNS proxy
|
||||
func (s *Server) prepareTLS(proxyConfig *proxy.Config) error {
|
||||
if s.conf.TLSListenAddr != nil && len(s.conf.CertificateChainData) != 0 && len(s.conf.PrivateKeyData) != 0 {
|
||||
proxyConfig.TLSListenAddr = s.conf.TLSListenAddr
|
||||
var err error
|
||||
s.conf.cert, err = tls.X509KeyPair(s.conf.CertificateChainData, s.conf.PrivateKeyData)
|
||||
if err != nil {
|
||||
return errorx.Decorate(err, "Failed to parse TLS keypair")
|
||||
}
|
||||
|
||||
if s.conf.StrictSNICheck {
|
||||
x, err := x509.ParseCertificate(s.conf.cert.Certificate[0])
|
||||
if err != nil {
|
||||
return errorx.Decorate(err, "x509.ParseCertificate(): %s", err)
|
||||
}
|
||||
if len(x.DNSNames) != 0 {
|
||||
s.conf.dnsNames = x.DNSNames
|
||||
log.Debug("DNS: using DNS names from certificate's SAN: %v", x.DNSNames)
|
||||
sort.Strings(s.conf.dnsNames)
|
||||
} else {
|
||||
s.conf.dnsNames = append(s.conf.dnsNames, x.Subject.CommonName)
|
||||
log.Debug("DNS: using DNS name from certificate's CN: %s", x.Subject.CommonName)
|
||||
}
|
||||
}
|
||||
|
||||
proxyConfig.TLSConfig = &tls.Config{
|
||||
GetCertificate: s.onGetCertificate,
|
||||
MinVersion: tls.VersionTLS12,
|
||||
}
|
||||
}
|
||||
upstream.RootCAs = s.conf.TLSv12Roots
|
||||
upstream.CipherSuites = s.conf.TLSCiphers
|
||||
return nil
|
||||
}
|
||||
|
||||
// Called by 'tls' package when Client Hello is received
|
||||
// If the server name (from SNI) supplied by client is incorrect - we terminate the ongoing TLS handshake.
|
||||
func (s *Server) onGetCertificate(ch *tls.ClientHelloInfo) (*tls.Certificate, error) {
|
||||
if s.conf.StrictSNICheck && !matchDNSName(s.conf.dnsNames, ch.ServerName) {
|
||||
log.Info("DNS: TLS: unknown SNI in Client Hello: %s", ch.ServerName)
|
||||
return nil, fmt.Errorf("invalid SNI")
|
||||
}
|
||||
return &s.conf.cert, nil
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -51,7 +51,7 @@ func (s *Server) handleGetConfig(w http.ResponseWriter, r *http.Request) {
|
||||
resp.EDNSCSEnabled = s.conf.EnableEDNSClientSubnet
|
||||
resp.DNSSECEnabled = s.conf.EnableDNSSEC
|
||||
resp.DisableIPv6 = s.conf.AAAADisabled
|
||||
resp.FastestAddr = s.conf.FastestAddrAlgo
|
||||
resp.FastestAddr = s.conf.FastestAddr
|
||||
resp.ParallelRequests = s.conf.AllServers
|
||||
s.RUnlock()
|
||||
|
||||
@ -170,7 +170,7 @@ func (s *Server) handleSetConfig(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
if js.Exists("fastest_addr") {
|
||||
s.conf.FastestAddrAlgo = req.FastestAddr
|
||||
s.conf.FastestAddr = req.FastestAddr
|
||||
}
|
||||
|
||||
if js.Exists("parallel_requests") {
|
||||
@ -343,8 +343,8 @@ func checkDNS(input string, bootstrap []string) error {
|
||||
return fmt.Errorf("wrong upstream format: %s", err)
|
||||
}
|
||||
|
||||
// No need to check this entrance
|
||||
if input == "#" && !defaultUpstream {
|
||||
// No need to check this DNS server
|
||||
if input == "#" || !defaultUpstream {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -249,6 +249,39 @@ func TestBlockedRequest(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestServerCustomClientUpstream(t *testing.T) {
|
||||
s := createTestServer(t)
|
||||
err := s.Start()
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to start server: %s", err)
|
||||
}
|
||||
s.conf.GetCustomUpstreamByClient = func(clientAddr string) *proxy.UpstreamConfig {
|
||||
uc := &proxy.UpstreamConfig{}
|
||||
u := &testUpstream{}
|
||||
u.ipv4 = map[string][]net.IP{}
|
||||
u.ipv4["host."] = []net.IP{net.ParseIP("192.168.0.1")}
|
||||
uc.Upstreams = append(uc.Upstreams, u)
|
||||
return uc
|
||||
}
|
||||
addr := s.dnsProxy.Addr(proxy.ProtoUDP)
|
||||
|
||||
// Send test request
|
||||
req := dns.Msg{}
|
||||
req.Id = dns.Id()
|
||||
req.RecursionDesired = true
|
||||
req.Question = []dns.Question{
|
||||
{Name: "host.", Qtype: dns.TypeA, Qclass: dns.ClassINET},
|
||||
}
|
||||
|
||||
reply, err := dns.Exchange(&req, addr.String())
|
||||
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, dns.RcodeSuccess, reply.Rcode)
|
||||
assert.NotNil(t, reply.Answer)
|
||||
assert.Equal(t, "192.168.0.1", reply.Answer[0].(*dns.A).A.String())
|
||||
assert.Nil(t, s.Stop())
|
||||
}
|
||||
|
||||
// testUpstream is a mock of real upstream.
|
||||
// specify fields with necessary values to simulate real upstream behaviour
|
||||
type testUpstream struct {
|
||||
@ -325,7 +358,9 @@ func (s *Server) startWithUpstream(u upstream.Upstream) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.dnsProxy.Upstreams = []upstream.Upstream{u}
|
||||
s.dnsProxy.UpstreamConfig = &proxy.UpstreamConfig{
|
||||
Upstreams: []upstream.Upstream{u},
|
||||
}
|
||||
return s.dnsProxy.Start()
|
||||
}
|
||||
|
||||
@ -353,8 +388,8 @@ func TestBlockCNAMEProtectionEnabled(t *testing.T) {
|
||||
// but protection is disabled - response is NOT blocked
|
||||
req := createTestMessage("badhost.")
|
||||
reply, err := dns.Exchange(req, addr.String())
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, reply.Rcode == dns.RcodeSuccess)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, dns.RcodeSuccess, reply.Rcode)
|
||||
}
|
||||
|
||||
func TestBlockCNAME(t *testing.T) {
|
||||
@ -368,23 +403,23 @@ func TestBlockCNAME(t *testing.T) {
|
||||
// response is blocked
|
||||
req := createTestMessage("badhost.")
|
||||
reply, err := dns.Exchange(req, addr.String())
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, reply.Rcode == dns.RcodeNameError)
|
||||
assert.Nil(t, err, nil)
|
||||
assert.Equal(t, dns.RcodeNameError, reply.Rcode)
|
||||
|
||||
// 'whitelist.example.org' has a canonical name 'null.example.org' which is blocked by filters
|
||||
// but 'whitelist.example.org' is in a whitelist:
|
||||
// response isn't blocked
|
||||
req = createTestMessage("whitelist.example.org.")
|
||||
reply, err = dns.Exchange(req, addr.String())
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, reply.Rcode == dns.RcodeSuccess)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, dns.RcodeSuccess, reply.Rcode)
|
||||
|
||||
// 'example.org' has a canonical name 'cname1' with IP 127.0.0.255 which is blocked by filters:
|
||||
// response is blocked
|
||||
req = createTestMessage("example.org.")
|
||||
reply, err = dns.Exchange(req, addr.String())
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, reply.Rcode == dns.RcodeNameError)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, dns.RcodeNameError, reply.Rcode)
|
||||
|
||||
_ = s.Stop()
|
||||
}
|
||||
@ -455,7 +490,7 @@ func TestNullBlockedRequest(t *testing.T) {
|
||||
|
||||
func TestBlockedCustomIP(t *testing.T) {
|
||||
rules := "||nxdomain.example.org^\n||null.example.org^\n127.0.0.1 host.example.org\n@@||whitelist.example.org^\n||127.0.0.255\n"
|
||||
filters := []dnsfilter.Filter{dnsfilter.Filter{
|
||||
filters := []dnsfilter.Filter{{
|
||||
ID: 0, Data: []byte(rules),
|
||||
}}
|
||||
c := dnsfilter.Config{}
|
||||
@ -475,27 +510,27 @@ func TestBlockedCustomIP(t *testing.T) {
|
||||
conf.BlockingIPv4 = "0.0.0.1"
|
||||
conf.BlockingIPv6 = "::1"
|
||||
err = s.Prepare(&conf)
|
||||
assert.True(t, err == nil)
|
||||
assert.Nil(t, err)
|
||||
err = s.Start()
|
||||
assert.True(t, err == nil, "%s", err)
|
||||
assert.Nil(t, err)
|
||||
|
||||
addr := s.dnsProxy.Addr(proxy.ProtoUDP)
|
||||
|
||||
req := createTestMessageWithType("null.example.org.", dns.TypeA)
|
||||
reply, err := dns.Exchange(req, addr.String())
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, len(reply.Answer) == 1)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, 1, len(reply.Answer))
|
||||
a, ok := reply.Answer[0].(*dns.A)
|
||||
assert.True(t, ok)
|
||||
assert.True(t, a.A.String() == "0.0.0.1")
|
||||
assert.Equal(t, "0.0.0.1", a.A.String())
|
||||
|
||||
req = createTestMessageWithType("null.example.org.", dns.TypeAAAA)
|
||||
reply, err = dns.Exchange(req, addr.String())
|
||||
assert.True(t, err == nil)
|
||||
assert.True(t, len(reply.Answer) == 1)
|
||||
assert.Nil(t, err)
|
||||
assert.Equal(t, 1, len(reply.Answer))
|
||||
a6, ok := reply.Answer[0].(*dns.AAAA)
|
||||
assert.True(t, ok)
|
||||
assert.True(t, a6.AAAA.String() == "::1")
|
||||
assert.Equal(t, "::1", a6.AAAA.String())
|
||||
|
||||
err = s.Stop()
|
||||
if err != nil {
|
||||
@ -598,7 +633,7 @@ func createTestServer(t *testing.T) *Server {
|
||||
127.0.0.1 host.example.org
|
||||
@@||whitelist.example.org^
|
||||
||127.0.0.255`
|
||||
filters := []dnsfilter.Filter{dnsfilter.Filter{
|
||||
filters := []dnsfilter.Filter{{
|
||||
ID: 0, Data: []byte(rules),
|
||||
}}
|
||||
c := dnsfilter.Config{}
|
||||
|
150
dnsforward/filter.go
Normal file
150
dnsforward/filter.go
Normal file
@ -0,0 +1,150 @@
|
||||
package dnsforward
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsfilter"
|
||||
"github.com/AdguardTeam/dnsproxy/proxy"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/joomcode/errorx"
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
func (s *Server) beforeRequestHandler(_ *proxy.Proxy, d *proxy.DNSContext) (bool, error) {
|
||||
ip := ipFromAddr(d.Addr)
|
||||
if s.access.IsBlockedIP(ip) {
|
||||
log.Tracef("Client IP %s is blocked by settings", ip)
|
||||
return false, nil
|
||||
}
|
||||
|
||||
if len(d.Req.Question) == 1 {
|
||||
host := strings.TrimSuffix(d.Req.Question[0].Name, ".")
|
||||
if s.access.IsBlockedDomain(host) {
|
||||
log.Tracef("Domain %s is blocked by settings", host)
|
||||
return false, nil
|
||||
}
|
||||
}
|
||||
|
||||
return true, nil
|
||||
}
|
||||
|
||||
// getClientRequestFilteringSettings lookups client filtering settings
|
||||
// using the client's IP address from the DNSContext
|
||||
func (s *Server) getClientRequestFilteringSettings(d *proxy.DNSContext) *dnsfilter.RequestFilteringSettings {
|
||||
setts := s.dnsFilter.GetConfig()
|
||||
setts.FilteringEnabled = true
|
||||
if s.conf.FilterHandler != nil {
|
||||
clientAddr := ipFromAddr(d.Addr)
|
||||
s.conf.FilterHandler(clientAddr, &setts)
|
||||
}
|
||||
return &setts
|
||||
}
|
||||
|
||||
// filterDNSRequest applies the dnsFilter and sets d.Res if the request was filtered
|
||||
func (s *Server) filterDNSRequest(ctx *dnsContext) (*dnsfilter.Result, error) {
|
||||
d := ctx.proxyCtx
|
||||
req := d.Req
|
||||
host := strings.TrimSuffix(req.Question[0].Name, ".")
|
||||
res, err := s.dnsFilter.CheckHost(host, d.Req.Question[0].Qtype, ctx.setts)
|
||||
if err != nil {
|
||||
// Return immediately if there's an error
|
||||
return nil, errorx.Decorate(err, "dnsfilter failed to check host '%s'", host)
|
||||
|
||||
} else if res.IsFiltered {
|
||||
// log.Tracef("Host %s is filtered, reason - '%s', matched rule: '%s'", host, res.Reason, res.Rule)
|
||||
d.Res = s.genDNSFilterMessage(d, &res)
|
||||
|
||||
} else if (res.Reason == dnsfilter.ReasonRewrite || res.Reason == dnsfilter.RewriteEtcHosts) &&
|
||||
len(res.IPList) != 0 {
|
||||
resp := s.makeResponse(req)
|
||||
|
||||
name := host
|
||||
if len(res.CanonName) != 0 {
|
||||
resp.Answer = append(resp.Answer, s.genCNAMEAnswer(req, res.CanonName))
|
||||
name = res.CanonName
|
||||
}
|
||||
|
||||
for _, ip := range res.IPList {
|
||||
ip4 := ip.To4()
|
||||
if req.Question[0].Qtype == dns.TypeA && ip4 != nil {
|
||||
a := s.genAAnswer(req, ip4)
|
||||
a.Hdr.Name = dns.Fqdn(name)
|
||||
resp.Answer = append(resp.Answer, a)
|
||||
} else if req.Question[0].Qtype == dns.TypeAAAA && ip4 == nil {
|
||||
a := s.genAAAAAnswer(req, ip)
|
||||
a.Hdr.Name = dns.Fqdn(name)
|
||||
resp.Answer = append(resp.Answer, a)
|
||||
}
|
||||
}
|
||||
|
||||
d.Res = resp
|
||||
|
||||
} else if res.Reason == dnsfilter.ReasonRewrite && len(res.CanonName) != 0 {
|
||||
ctx.origQuestion = d.Req.Question[0]
|
||||
// resolve canonical name, not the original host name
|
||||
d.Req.Question[0].Name = dns.Fqdn(res.CanonName)
|
||||
|
||||
} else if res.Reason == dnsfilter.RewriteEtcHosts && len(res.ReverseHost) != 0 {
|
||||
|
||||
resp := s.makeResponse(req)
|
||||
ptr := &dns.PTR{}
|
||||
ptr.Hdr = dns.RR_Header{
|
||||
Name: req.Question[0].Name,
|
||||
Rrtype: dns.TypePTR,
|
||||
Ttl: s.conf.BlockedResponseTTL,
|
||||
Class: dns.ClassINET,
|
||||
}
|
||||
ptr.Ptr = res.ReverseHost
|
||||
resp.Answer = append(resp.Answer, ptr)
|
||||
d.Res = resp
|
||||
}
|
||||
|
||||
return &res, err
|
||||
}
|
||||
|
||||
// If response contains CNAME, A or AAAA records, we apply filtering to each canonical host name or IP address.
|
||||
// If this is a match, we set a new response in d.Res and return.
|
||||
func (s *Server) filterDNSResponse(ctx *dnsContext) (*dnsfilter.Result, error) {
|
||||
d := ctx.proxyCtx
|
||||
for _, a := range d.Res.Answer {
|
||||
host := ""
|
||||
|
||||
switch v := a.(type) {
|
||||
case *dns.CNAME:
|
||||
log.Debug("DNSFwd: Checking CNAME %s for %s", v.Target, v.Hdr.Name)
|
||||
host = strings.TrimSuffix(v.Target, ".")
|
||||
|
||||
case *dns.A:
|
||||
host = v.A.String()
|
||||
log.Debug("DNSFwd: Checking record A (%s) for %s", host, v.Hdr.Name)
|
||||
|
||||
case *dns.AAAA:
|
||||
host = v.AAAA.String()
|
||||
log.Debug("DNSFwd: Checking record AAAA (%s) for %s", host, v.Hdr.Name)
|
||||
|
||||
default:
|
||||
continue
|
||||
}
|
||||
|
||||
s.RLock()
|
||||
// Synchronize access to s.dnsFilter so it won't be suddenly uninitialized while in use.
|
||||
// This could happen after proxy server has been stopped, but its workers are not yet exited.
|
||||
if !s.conf.ProtectionEnabled || s.dnsFilter == nil {
|
||||
s.RUnlock()
|
||||
continue
|
||||
}
|
||||
res, err := s.dnsFilter.CheckHostRules(host, d.Req.Question[0].Qtype, ctx.setts)
|
||||
s.RUnlock()
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
} else if res.IsFiltered {
|
||||
d.Res = s.genDNSFilterMessage(d, &res)
|
||||
log.Debug("DNSFwd: Matched %s by response: %s", d.Req.Question[0].Name, host)
|
||||
return &res, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, nil
|
||||
}
|
249
dnsforward/handle_dns.go
Normal file
249
dnsforward/handle_dns.go
Normal file
@ -0,0 +1,249 @@
|
||||
package dnsforward
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsfilter"
|
||||
"github.com/AdguardTeam/dnsproxy/proxy"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
// To transfer information between modules
|
||||
type dnsContext struct {
|
||||
srv *Server
|
||||
proxyCtx *proxy.DNSContext
|
||||
setts *dnsfilter.RequestFilteringSettings // filtering settings for this client
|
||||
startTime time.Time
|
||||
result *dnsfilter.Result
|
||||
origResp *dns.Msg // response received from upstream servers. Set when response is modified by filtering
|
||||
origQuestion dns.Question // question received from client. Set when Rewrites are used.
|
||||
err error // error returned from the module
|
||||
protectionEnabled bool // filtering is enabled, dnsfilter object is ready
|
||||
responseFromUpstream bool // response is received from upstream servers
|
||||
origReqDNSSEC bool // DNSSEC flag in the original request from user
|
||||
}
|
||||
|
||||
const (
|
||||
resultDone = iota // module has completed its job, continue
|
||||
resultFinish // module has completed its job, exit normally
|
||||
resultError // an error occurred, exit with an error
|
||||
)
|
||||
|
||||
// handleDNSRequest filters the incoming DNS requests and writes them to the query log
|
||||
func (s *Server) handleDNSRequest(_ *proxy.Proxy, d *proxy.DNSContext) error {
|
||||
ctx := &dnsContext{srv: s, proxyCtx: d}
|
||||
ctx.result = &dnsfilter.Result{}
|
||||
ctx.startTime = time.Now()
|
||||
|
||||
type modProcessFunc func(ctx *dnsContext) int
|
||||
mods := []modProcessFunc{
|
||||
processInitial,
|
||||
processFilteringBeforeRequest,
|
||||
processUpstream,
|
||||
processDNSSECAfterResponse,
|
||||
processFilteringAfterResponse,
|
||||
processQueryLogsAndStats,
|
||||
}
|
||||
for _, process := range mods {
|
||||
r := process(ctx)
|
||||
switch r {
|
||||
case resultDone:
|
||||
// continue: call the next filter
|
||||
|
||||
case resultFinish:
|
||||
return nil
|
||||
|
||||
case resultError:
|
||||
return ctx.err
|
||||
}
|
||||
}
|
||||
|
||||
if d.Res != nil {
|
||||
d.Res.Compress = true // some devices require DNS message compression
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Perform initial checks; process WHOIS & rDNS
|
||||
func processInitial(ctx *dnsContext) int {
|
||||
s := ctx.srv
|
||||
d := ctx.proxyCtx
|
||||
if s.conf.AAAADisabled && d.Req.Question[0].Qtype == dns.TypeAAAA {
|
||||
_ = proxy.CheckDisabledAAAARequest(d, true)
|
||||
return resultFinish
|
||||
}
|
||||
|
||||
if s.conf.OnDNSRequest != nil {
|
||||
s.conf.OnDNSRequest(d)
|
||||
}
|
||||
|
||||
// disable Mozilla DoH
|
||||
if (d.Req.Question[0].Qtype == dns.TypeA || d.Req.Question[0].Qtype == dns.TypeAAAA) &&
|
||||
d.Req.Question[0].Name == "use-application-dns.net." {
|
||||
d.Res = s.genNXDomain(d.Req)
|
||||
return resultFinish
|
||||
}
|
||||
|
||||
return resultDone
|
||||
}
|
||||
|
||||
// Apply filtering logic
|
||||
func processFilteringBeforeRequest(ctx *dnsContext) int {
|
||||
s := ctx.srv
|
||||
d := ctx.proxyCtx
|
||||
|
||||
s.RLock()
|
||||
// Synchronize access to s.dnsFilter so it won't be suddenly uninitialized while in use.
|
||||
// This could happen after proxy server has been stopped, but its workers are not yet exited.
|
||||
//
|
||||
// A better approach is for proxy.Stop() to wait until all its workers exit,
|
||||
// but this would require the Upstream interface to have Close() function
|
||||
// (to prevent from hanging while waiting for unresponsive DNS server to respond).
|
||||
|
||||
var err error
|
||||
ctx.protectionEnabled = s.conf.ProtectionEnabled && s.dnsFilter != nil
|
||||
if ctx.protectionEnabled {
|
||||
ctx.setts = s.getClientRequestFilteringSettings(d)
|
||||
ctx.result, err = s.filterDNSRequest(ctx)
|
||||
}
|
||||
s.RUnlock()
|
||||
|
||||
if err != nil {
|
||||
ctx.err = err
|
||||
return resultError
|
||||
}
|
||||
return resultDone
|
||||
}
|
||||
|
||||
// Pass request to upstream servers; process the response
|
||||
func processUpstream(ctx *dnsContext) int {
|
||||
s := ctx.srv
|
||||
d := ctx.proxyCtx
|
||||
if d.Res != nil {
|
||||
return resultDone // response is already set - nothing to do
|
||||
}
|
||||
|
||||
if d.Addr != nil && s.conf.GetCustomUpstreamByClient != nil {
|
||||
clientIP := ipFromAddr(d.Addr)
|
||||
upstreamsConf := s.conf.GetCustomUpstreamByClient(clientIP)
|
||||
if upstreamsConf != nil {
|
||||
log.Debug("Using custom upstreams for %s", clientIP)
|
||||
d.CustomUpstreamConfig = upstreamsConf
|
||||
}
|
||||
}
|
||||
|
||||
if s.conf.EnableDNSSEC {
|
||||
opt := d.Req.IsEdns0()
|
||||
if opt == nil {
|
||||
log.Debug("DNS: Adding OPT record with DNSSEC flag")
|
||||
d.Req.SetEdns0(4096, true)
|
||||
} else if !opt.Do() {
|
||||
opt.SetDo(true)
|
||||
} else {
|
||||
ctx.origReqDNSSEC = true
|
||||
}
|
||||
}
|
||||
|
||||
// request was not filtered so let it be processed further
|
||||
err := s.dnsProxy.Resolve(d)
|
||||
if err != nil {
|
||||
ctx.err = err
|
||||
return resultError
|
||||
}
|
||||
|
||||
ctx.responseFromUpstream = true
|
||||
return resultDone
|
||||
}
|
||||
|
||||
// Process DNSSEC after response from upstream server
|
||||
func processDNSSECAfterResponse(ctx *dnsContext) int {
|
||||
d := ctx.proxyCtx
|
||||
|
||||
if !ctx.responseFromUpstream || // don't process response if it's not from upstream servers
|
||||
!ctx.srv.conf.EnableDNSSEC {
|
||||
return resultDone
|
||||
}
|
||||
|
||||
if !ctx.origReqDNSSEC {
|
||||
optResp := d.Res.IsEdns0()
|
||||
if optResp != nil && !optResp.Do() {
|
||||
return resultDone
|
||||
}
|
||||
|
||||
// Remove RRSIG records from response
|
||||
// because there is no DO flag in the original request from client,
|
||||
// but we have EnableDNSSEC set, so we have set DO flag ourselves,
|
||||
// and now we have to clean up the DNS records our client didn't ask for.
|
||||
|
||||
answers := []dns.RR{}
|
||||
for _, a := range d.Res.Answer {
|
||||
switch a.(type) {
|
||||
case *dns.RRSIG:
|
||||
log.Debug("Removing RRSIG record from response: %v", a)
|
||||
default:
|
||||
answers = append(answers, a)
|
||||
}
|
||||
}
|
||||
d.Res.Answer = answers
|
||||
|
||||
answers = []dns.RR{}
|
||||
for _, a := range d.Res.Ns {
|
||||
switch a.(type) {
|
||||
case *dns.RRSIG:
|
||||
log.Debug("Removing RRSIG record from response: %v", a)
|
||||
default:
|
||||
answers = append(answers, a)
|
||||
}
|
||||
}
|
||||
d.Res.Ns = answers
|
||||
}
|
||||
|
||||
return resultDone
|
||||
}
|
||||
|
||||
// Apply filtering logic after we have received response from upstream servers
|
||||
func processFilteringAfterResponse(ctx *dnsContext) int {
|
||||
s := ctx.srv
|
||||
d := ctx.proxyCtx
|
||||
res := ctx.result
|
||||
var err error
|
||||
|
||||
switch res.Reason {
|
||||
case dnsfilter.ReasonRewrite:
|
||||
if len(res.CanonName) == 0 {
|
||||
break
|
||||
}
|
||||
d.Req.Question[0] = ctx.origQuestion
|
||||
d.Res.Question[0] = ctx.origQuestion
|
||||
|
||||
if len(d.Res.Answer) != 0 {
|
||||
answer := []dns.RR{}
|
||||
answer = append(answer, s.genCNAMEAnswer(d.Req, res.CanonName))
|
||||
answer = append(answer, d.Res.Answer...) // host -> IP
|
||||
d.Res.Answer = answer
|
||||
}
|
||||
|
||||
case dnsfilter.NotFilteredWhiteList:
|
||||
// nothing
|
||||
|
||||
default:
|
||||
if !ctx.protectionEnabled || // filters are disabled: there's nothing to check for
|
||||
!ctx.responseFromUpstream { // only check response if it's from an upstream server
|
||||
break
|
||||
}
|
||||
origResp2 := d.Res
|
||||
ctx.result, err = s.filterDNSResponse(ctx)
|
||||
if err != nil {
|
||||
ctx.err = err
|
||||
return resultError
|
||||
}
|
||||
if ctx.result != nil {
|
||||
ctx.origResp = origResp2 // matched by response
|
||||
} else {
|
||||
ctx.result = &dnsfilter.Result{}
|
||||
}
|
||||
}
|
||||
|
||||
return resultDone
|
||||
}
|
@ -1,14 +0,0 @@
|
||||
package dnsforward
|
||||
|
||||
import "net"
|
||||
|
||||
// GetIPString is a helper function that extracts IP address from net.Addr
|
||||
func GetIPString(addr net.Addr) string {
|
||||
switch addr := addr.(type) {
|
||||
case *net.UDPAddr:
|
||||
return addr.IP.String()
|
||||
case *net.TCPAddr:
|
||||
return addr.IP.String()
|
||||
}
|
||||
return ""
|
||||
}
|
225
dnsforward/msg.go
Normal file
225
dnsforward/msg.go
Normal file
@ -0,0 +1,225 @@
|
||||
package dnsforward
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net"
|
||||
"time"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsfilter"
|
||||
"github.com/AdguardTeam/dnsproxy/proxy"
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
// Create a DNS response by DNS request and set necessary flags
|
||||
func (s *Server) makeResponse(req *dns.Msg) *dns.Msg {
|
||||
resp := dns.Msg{}
|
||||
resp.SetReply(req)
|
||||
resp.RecursionAvailable = true
|
||||
resp.Compress = true
|
||||
return &resp
|
||||
}
|
||||
|
||||
// genDNSFilterMessage generates a DNS message corresponding to the filtering result
|
||||
func (s *Server) genDNSFilterMessage(d *proxy.DNSContext, result *dnsfilter.Result) *dns.Msg {
|
||||
m := d.Req
|
||||
|
||||
if m.Question[0].Qtype != dns.TypeA && m.Question[0].Qtype != dns.TypeAAAA {
|
||||
return s.genNXDomain(m)
|
||||
}
|
||||
|
||||
switch result.Reason {
|
||||
case dnsfilter.FilteredSafeBrowsing:
|
||||
return s.genBlockedHost(m, s.conf.SafeBrowsingBlockHost, d)
|
||||
case dnsfilter.FilteredParental:
|
||||
return s.genBlockedHost(m, s.conf.ParentalBlockHost, d)
|
||||
default:
|
||||
// If the query was filtered by "Safe search", dnsfilter also must return
|
||||
// the IP address that must be used in response.
|
||||
// In this case regardless of the filtering method, we should return it
|
||||
if result.Reason == dnsfilter.FilteredSafeSearch && result.IP != nil {
|
||||
return s.genResponseWithIP(m, result.IP)
|
||||
}
|
||||
|
||||
if s.conf.BlockingMode == "null_ip" {
|
||||
// it means that we should return 0.0.0.0 or :: for any blocked request
|
||||
|
||||
switch m.Question[0].Qtype {
|
||||
case dns.TypeA:
|
||||
return s.genARecord(m, []byte{0, 0, 0, 0})
|
||||
case dns.TypeAAAA:
|
||||
return s.genAAAARecord(m, net.IPv6zero)
|
||||
}
|
||||
|
||||
} else if s.conf.BlockingMode == "custom_ip" {
|
||||
// means that we should return custom IP for any blocked request
|
||||
|
||||
switch m.Question[0].Qtype {
|
||||
case dns.TypeA:
|
||||
return s.genARecord(m, s.conf.BlockingIPAddrv4)
|
||||
case dns.TypeAAAA:
|
||||
return s.genAAAARecord(m, s.conf.BlockingIPAddrv6)
|
||||
}
|
||||
|
||||
} else if s.conf.BlockingMode == "nxdomain" {
|
||||
// means that we should return NXDOMAIN for any blocked request
|
||||
|
||||
return s.genNXDomain(m)
|
||||
}
|
||||
|
||||
// Default blocking mode
|
||||
// If there's an IP specified in the rule, return it
|
||||
// If there is no IP, return NXDOMAIN
|
||||
if result.IP != nil {
|
||||
return s.genResponseWithIP(m, result.IP)
|
||||
}
|
||||
return s.genNXDomain(m)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) genServerFailure(request *dns.Msg) *dns.Msg {
|
||||
resp := dns.Msg{}
|
||||
resp.SetRcode(request, dns.RcodeServerFailure)
|
||||
resp.RecursionAvailable = true
|
||||
return &resp
|
||||
}
|
||||
|
||||
func (s *Server) genARecord(request *dns.Msg, ip net.IP) *dns.Msg {
|
||||
resp := s.makeResponse(request)
|
||||
resp.Answer = append(resp.Answer, s.genAAnswer(request, ip))
|
||||
return resp
|
||||
}
|
||||
|
||||
func (s *Server) genAAAARecord(request *dns.Msg, ip net.IP) *dns.Msg {
|
||||
resp := s.makeResponse(request)
|
||||
resp.Answer = append(resp.Answer, s.genAAAAAnswer(request, ip))
|
||||
return resp
|
||||
}
|
||||
|
||||
func (s *Server) genAAnswer(req *dns.Msg, ip net.IP) *dns.A {
|
||||
answer := new(dns.A)
|
||||
answer.Hdr = dns.RR_Header{
|
||||
Name: req.Question[0].Name,
|
||||
Rrtype: dns.TypeA,
|
||||
Ttl: s.conf.BlockedResponseTTL,
|
||||
Class: dns.ClassINET,
|
||||
}
|
||||
answer.A = ip
|
||||
return answer
|
||||
}
|
||||
|
||||
func (s *Server) genAAAAAnswer(req *dns.Msg, ip net.IP) *dns.AAAA {
|
||||
answer := new(dns.AAAA)
|
||||
answer.Hdr = dns.RR_Header{
|
||||
Name: req.Question[0].Name,
|
||||
Rrtype: dns.TypeAAAA,
|
||||
Ttl: s.conf.BlockedResponseTTL,
|
||||
Class: dns.ClassINET,
|
||||
}
|
||||
answer.AAAA = ip
|
||||
return answer
|
||||
}
|
||||
|
||||
// generate DNS response message with an IP address
|
||||
func (s *Server) genResponseWithIP(req *dns.Msg, ip net.IP) *dns.Msg {
|
||||
if req.Question[0].Qtype == dns.TypeA && ip.To4() != nil {
|
||||
return s.genARecord(req, ip.To4())
|
||||
} else if req.Question[0].Qtype == dns.TypeAAAA &&
|
||||
len(ip) == net.IPv6len && ip.To4() == nil {
|
||||
return s.genAAAARecord(req, ip)
|
||||
}
|
||||
|
||||
// empty response
|
||||
resp := s.makeResponse(req)
|
||||
return resp
|
||||
}
|
||||
|
||||
func (s *Server) genBlockedHost(request *dns.Msg, newAddr string, d *proxy.DNSContext) *dns.Msg {
|
||||
|
||||
ip := net.ParseIP(newAddr)
|
||||
if ip != nil {
|
||||
return s.genResponseWithIP(request, ip)
|
||||
}
|
||||
|
||||
// look up the hostname, TODO: cache
|
||||
replReq := dns.Msg{}
|
||||
replReq.SetQuestion(dns.Fqdn(newAddr), request.Question[0].Qtype)
|
||||
replReq.RecursionDesired = true
|
||||
|
||||
newContext := &proxy.DNSContext{
|
||||
Proto: d.Proto,
|
||||
Addr: d.Addr,
|
||||
StartTime: time.Now(),
|
||||
Req: &replReq,
|
||||
}
|
||||
|
||||
err := s.dnsProxy.Resolve(newContext)
|
||||
if err != nil {
|
||||
log.Printf("Couldn't look up replacement host '%s': %s", newAddr, err)
|
||||
return s.genServerFailure(request)
|
||||
}
|
||||
|
||||
resp := s.makeResponse(request)
|
||||
if newContext.Res != nil {
|
||||
for _, answer := range newContext.Res.Answer {
|
||||
answer.Header().Name = request.Question[0].Name
|
||||
resp.Answer = append(resp.Answer, answer)
|
||||
}
|
||||
}
|
||||
|
||||
return resp
|
||||
}
|
||||
|
||||
// Make a CNAME response
|
||||
func (s *Server) genCNAMEAnswer(req *dns.Msg, cname string) *dns.CNAME {
|
||||
answer := new(dns.CNAME)
|
||||
answer.Hdr = dns.RR_Header{
|
||||
Name: req.Question[0].Name,
|
||||
Rrtype: dns.TypeCNAME,
|
||||
Ttl: s.conf.BlockedResponseTTL,
|
||||
Class: dns.ClassINET,
|
||||
}
|
||||
answer.Target = dns.Fqdn(cname)
|
||||
return answer
|
||||
}
|
||||
|
||||
func (s *Server) genNXDomain(request *dns.Msg) *dns.Msg {
|
||||
resp := dns.Msg{}
|
||||
resp.SetRcode(request, dns.RcodeNameError)
|
||||
resp.RecursionAvailable = true
|
||||
resp.Ns = s.genSOA(request)
|
||||
return &resp
|
||||
}
|
||||
|
||||
func (s *Server) genSOA(request *dns.Msg) []dns.RR {
|
||||
zone := ""
|
||||
if len(request.Question) > 0 {
|
||||
zone = request.Question[0].Name
|
||||
}
|
||||
|
||||
soa := dns.SOA{
|
||||
// values copied from verisign's nonexistent .com domain
|
||||
// their exact values are not important in our use case because they are used for domain transfers between primary/secondary DNS servers
|
||||
Refresh: 1800,
|
||||
Retry: 900,
|
||||
Expire: 604800,
|
||||
Minttl: 86400,
|
||||
// copied from AdGuard DNS
|
||||
Ns: "fake-for-negative-caching.adguard.com.",
|
||||
Serial: 100500,
|
||||
// rest is request-specific
|
||||
Hdr: dns.RR_Header{
|
||||
Name: zone,
|
||||
Rrtype: dns.TypeSOA,
|
||||
Ttl: s.conf.BlockedResponseTTL,
|
||||
Class: dns.ClassINET,
|
||||
},
|
||||
Mbox: "hostmaster.", // zone will be appended later if it's not empty or "."
|
||||
}
|
||||
if soa.Hdr.Ttl == 0 {
|
||||
soa.Hdr.Ttl = defaultValues.BlockedResponseTTL
|
||||
}
|
||||
if len(zone) > 0 && zone[0] != '.' {
|
||||
soa.Mbox += zone
|
||||
}
|
||||
return []dns.RR{&soa}
|
||||
}
|
91
dnsforward/stats.go
Normal file
91
dnsforward/stats.go
Normal file
@ -0,0 +1,91 @@
|
||||
package dnsforward
|
||||
|
||||
import (
|
||||
"net"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/querylog"
|
||||
"github.com/miekg/dns"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsfilter"
|
||||
"github.com/AdguardTeam/AdGuardHome/stats"
|
||||
"github.com/AdguardTeam/dnsproxy/proxy"
|
||||
)
|
||||
|
||||
// Write Stats data and logs
|
||||
func processQueryLogsAndStats(ctx *dnsContext) int {
|
||||
elapsed := time.Since(ctx.startTime)
|
||||
s := ctx.srv
|
||||
d := ctx.proxyCtx
|
||||
|
||||
shouldLog := true
|
||||
msg := d.Req
|
||||
|
||||
// don't log ANY request if refuseAny is enabled
|
||||
if len(msg.Question) >= 1 && msg.Question[0].Qtype == dns.TypeANY && s.conf.RefuseAny {
|
||||
shouldLog = false
|
||||
}
|
||||
|
||||
s.RLock()
|
||||
// Synchronize access to s.queryLog and s.stats so they won't be suddenly uninitialized while in use.
|
||||
// This can happen after proxy server has been stopped, but its workers haven't yet exited.
|
||||
if shouldLog && s.queryLog != nil {
|
||||
p := querylog.AddParams{
|
||||
Question: msg,
|
||||
Answer: d.Res,
|
||||
OrigAnswer: ctx.origResp,
|
||||
Result: ctx.result,
|
||||
Elapsed: elapsed,
|
||||
ClientIP: getIP(d.Addr),
|
||||
}
|
||||
if d.Upstream != nil {
|
||||
p.Upstream = d.Upstream.Address()
|
||||
}
|
||||
s.queryLog.Add(p)
|
||||
}
|
||||
|
||||
s.updateStats(d, elapsed, *ctx.result)
|
||||
s.RUnlock()
|
||||
|
||||
return resultDone
|
||||
}
|
||||
|
||||
func (s *Server) updateStats(d *proxy.DNSContext, elapsed time.Duration, res dnsfilter.Result) {
|
||||
if s.stats == nil {
|
||||
return
|
||||
}
|
||||
|
||||
e := stats.Entry{}
|
||||
e.Domain = strings.ToLower(d.Req.Question[0].Name)
|
||||
e.Domain = e.Domain[:len(e.Domain)-1] // remove last "."
|
||||
switch addr := d.Addr.(type) {
|
||||
case *net.UDPAddr:
|
||||
e.Client = addr.IP
|
||||
case *net.TCPAddr:
|
||||
e.Client = addr.IP
|
||||
}
|
||||
e.Time = uint32(elapsed / 1000)
|
||||
e.Result = stats.RNotFiltered
|
||||
|
||||
switch res.Reason {
|
||||
|
||||
case dnsfilter.FilteredSafeBrowsing:
|
||||
e.Result = stats.RSafeBrowsing
|
||||
|
||||
case dnsfilter.FilteredParental:
|
||||
e.Result = stats.RParental
|
||||
|
||||
case dnsfilter.FilteredSafeSearch:
|
||||
e.Result = stats.RSafeSearch
|
||||
|
||||
case dnsfilter.FilteredBlackList:
|
||||
fallthrough
|
||||
case dnsfilter.FilteredInvalid:
|
||||
fallthrough
|
||||
case dnsfilter.FilteredBlockedService:
|
||||
e.Result = stats.RFiltered
|
||||
}
|
||||
|
||||
s.stats.Update(e)
|
||||
}
|
87
dnsforward/util.go
Normal file
87
dnsforward/util.go
Normal file
@ -0,0 +1,87 @@
|
||||
package dnsforward
|
||||
|
||||
import (
|
||||
"net"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/AdguardTeam/golibs/utils"
|
||||
)
|
||||
|
||||
// GetIPString is a helper function that extracts IP address from net.Addr
|
||||
func GetIPString(addr net.Addr) string {
|
||||
switch addr := addr.(type) {
|
||||
case *net.UDPAddr:
|
||||
return addr.IP.String()
|
||||
case *net.TCPAddr:
|
||||
return addr.IP.String()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func stringArrayDup(a []string) []string {
|
||||
a2 := make([]string, len(a))
|
||||
copy(a2, a)
|
||||
return a2
|
||||
}
|
||||
|
||||
// Get IP address from net.Addr object
|
||||
// Note: we can't use net.SplitHostPort(a.String()) because of IPv6 zone:
|
||||
// https://github.com/AdguardTeam/AdGuardHome/issues/1261
|
||||
func ipFromAddr(a net.Addr) string {
|
||||
switch addr := a.(type) {
|
||||
case *net.UDPAddr:
|
||||
return addr.IP.String()
|
||||
case *net.TCPAddr:
|
||||
return addr.IP.String()
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// Get IP address from net.Addr
|
||||
func getIP(addr net.Addr) net.IP {
|
||||
switch addr := addr.(type) {
|
||||
case *net.UDPAddr:
|
||||
return addr.IP
|
||||
case *net.TCPAddr:
|
||||
return addr.IP
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Find value in a sorted array
|
||||
func findSorted(ar []string, val string) int {
|
||||
i := sort.SearchStrings(ar, val)
|
||||
if i == len(ar) || ar[i] != val {
|
||||
return -1
|
||||
}
|
||||
return i
|
||||
}
|
||||
|
||||
func isWildcard(host string) bool {
|
||||
return len(host) >= 2 &&
|
||||
host[0] == '*' && host[1] == '.'
|
||||
}
|
||||
|
||||
// Return TRUE if host name matches a wildcard pattern
|
||||
func matchDomainWildcard(host, wildcard string) bool {
|
||||
return isWildcard(wildcard) &&
|
||||
strings.HasSuffix(host, wildcard[1:])
|
||||
}
|
||||
|
||||
// Return TRUE if client's SNI value matches DNS names from certificate
|
||||
func matchDNSName(dnsNames []string, sni string) bool {
|
||||
if utils.IsValidHostname(sni) != nil {
|
||||
return false
|
||||
}
|
||||
if findSorted(dnsNames, sni) != -1 {
|
||||
return true
|
||||
}
|
||||
|
||||
for _, dn := range dnsNames {
|
||||
if matchDomainWildcard(sni, dn) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
2
go.mod
2
go.mod
@ -3,7 +3,7 @@ module github.com/AdguardTeam/AdGuardHome
|
||||
go 1.14
|
||||
|
||||
require (
|
||||
github.com/AdguardTeam/dnsproxy v0.27.1
|
||||
github.com/AdguardTeam/dnsproxy v0.28.1
|
||||
github.com/AdguardTeam/golibs v0.4.2
|
||||
github.com/AdguardTeam/urlfilter v0.10.0
|
||||
github.com/NYTimes/gziphandler v1.1.1
|
||||
|
4
go.sum
4
go.sum
@ -1,5 +1,5 @@
|
||||
github.com/AdguardTeam/dnsproxy v0.27.1 h1:CQ3vtGSNbHNeYkxC6pALwugTSssP2MnsjdxkvVMzEp4=
|
||||
github.com/AdguardTeam/dnsproxy v0.27.1/go.mod h1:hOYFV9TW+pd5XKYz7KZf2FFD8SvSPqjyGTxUae86s58=
|
||||
github.com/AdguardTeam/dnsproxy v0.28.1 h1:WkLjrUcVf/njbTLyL7bNt6e18zQjF2ZYv/HWwL9cMmU=
|
||||
github.com/AdguardTeam/dnsproxy v0.28.1/go.mod h1:hOYFV9TW+pd5XKYz7KZf2FFD8SvSPqjyGTxUae86s58=
|
||||
github.com/AdguardTeam/golibs v0.4.0 h1:4VX6LoOqFe9p9Gf55BeD8BvJD6M6RDYmgEiHrENE9KU=
|
||||
github.com/AdguardTeam/golibs v0.4.0/go.mod h1:skKsDKIBB7kkFflLJBpfGX+G8QFTx0WKUzB6TIgtUj4=
|
||||
github.com/AdguardTeam/golibs v0.4.2 h1:7M28oTZFoFwNmp8eGPb3ImmYbxGaJLyQXeIFVHjME0o=
|
||||
|
@ -11,11 +11,12 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/AdguardTeam/dnsproxy/proxy"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/dhcpd"
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsfilter"
|
||||
"github.com/AdguardTeam/AdGuardHome/dnsforward"
|
||||
"github.com/AdguardTeam/AdGuardHome/util"
|
||||
"github.com/AdguardTeam/dnsproxy/upstream"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/AdguardTeam/golibs/utils"
|
||||
)
|
||||
@ -41,11 +42,12 @@ type Client struct {
|
||||
BlockedServices []string
|
||||
|
||||
Upstreams []string // list of upstream servers to be used for the client's requests
|
||||
// Upstream objects:
|
||||
|
||||
// Custom upstream config for this client
|
||||
// nil: not yet initialized
|
||||
// not nil, but empty: initialized, no good upstreams
|
||||
// not nil, not empty: Upstreams ready to be used
|
||||
upstreamObjects []upstream.Upstream
|
||||
upstreamConfig *proxy.UpstreamConfig
|
||||
}
|
||||
|
||||
type clientSource uint
|
||||
@ -273,16 +275,10 @@ func (clients *clientsContainer) Find(ip string) (Client, bool) {
|
||||
return c, true
|
||||
}
|
||||
|
||||
func upstreamArrayCopy(a []upstream.Upstream) []upstream.Upstream {
|
||||
a2 := make([]upstream.Upstream, len(a))
|
||||
copy(a2, a)
|
||||
return a2
|
||||
}
|
||||
|
||||
// FindUpstreams looks for upstreams configured for the client
|
||||
// If no client found for this IP, or if no custom upstreams are configured,
|
||||
// this method returns nil
|
||||
func (clients *clientsContainer) FindUpstreams(ip string) []upstream.Upstream {
|
||||
func (clients *clientsContainer) FindUpstreams(ip string) *proxy.UpstreamConfig {
|
||||
clients.lock.Lock()
|
||||
defer clients.lock.Unlock()
|
||||
|
||||
@ -291,22 +287,18 @@ func (clients *clientsContainer) FindUpstreams(ip string) []upstream.Upstream {
|
||||
return nil
|
||||
}
|
||||
|
||||
if c.upstreamObjects == nil {
|
||||
c.upstreamObjects = make([]upstream.Upstream, 0)
|
||||
for _, us := range c.Upstreams {
|
||||
u, err := upstream.AddressToUpstream(us, upstream.Options{Timeout: dnsforward.DefaultTimeout})
|
||||
if err != nil {
|
||||
log.Error("upstream.AddressToUpstream: %s: %s", us, err)
|
||||
continue
|
||||
}
|
||||
c.upstreamObjects = append(c.upstreamObjects, u)
|
||||
if len(c.Upstreams) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
if c.upstreamConfig == nil {
|
||||
config, err := proxy.ParseUpstreamsConfig(c.Upstreams, config.DNS.BootstrapDNS, dnsforward.DefaultTimeout)
|
||||
if err == nil {
|
||||
c.upstreamConfig = &config
|
||||
}
|
||||
}
|
||||
|
||||
if len(c.upstreamObjects) == 0 {
|
||||
return nil
|
||||
}
|
||||
return upstreamArrayCopy(c.upstreamObjects)
|
||||
return c.upstreamConfig
|
||||
}
|
||||
|
||||
// Find searches for a client by IP (and does not lock anything)
|
||||
@ -537,7 +529,7 @@ func (clients *clientsContainer) Update(name string, c Client) error {
|
||||
}
|
||||
|
||||
// update upstreams cache
|
||||
c.upstreamObjects = nil
|
||||
c.upstreamConfig = nil
|
||||
|
||||
*old = c
|
||||
return nil
|
||||
|
@ -236,3 +236,31 @@ func TestClientsAddExisting(t *testing.T) {
|
||||
assert.True(t, ok)
|
||||
assert.Nil(t, err)
|
||||
}
|
||||
|
||||
func TestClientsCustomUpstream(t *testing.T) {
|
||||
clients := clientsContainer{}
|
||||
clients.testing = true
|
||||
|
||||
clients.Init(nil, nil, nil)
|
||||
|
||||
// add client with upstreams
|
||||
client := Client{
|
||||
IDs: []string{"1.1.1.1", "1:2:3::4", "aa:aa:aa:aa:aa:aa"},
|
||||
Name: "client1",
|
||||
Upstreams: []string{
|
||||
"1.1.1.1",
|
||||
"[/example.org/]8.8.8.8",
|
||||
},
|
||||
}
|
||||
ok, err := clients.Add(client)
|
||||
assert.Nil(t, err)
|
||||
assert.True(t, ok)
|
||||
|
||||
config := clients.FindUpstreams("1.2.3.4")
|
||||
assert.Nil(t, config)
|
||||
|
||||
config = clients.FindUpstreams("1.1.1.1")
|
||||
assert.NotNil(t, config)
|
||||
assert.Equal(t, 1, len(config.Upstreams))
|
||||
assert.Equal(t, 1, len(config.DomainReservedUpstreams))
|
||||
}
|
||||
|
@ -11,7 +11,6 @@ import (
|
||||
"github.com/AdguardTeam/AdGuardHome/stats"
|
||||
"github.com/AdguardTeam/AdGuardHome/util"
|
||||
"github.com/AdguardTeam/dnsproxy/proxy"
|
||||
"github.com/AdguardTeam/dnsproxy/upstream"
|
||||
"github.com/AdguardTeam/golibs/log"
|
||||
"github.com/joomcode/errorx"
|
||||
)
|
||||
@ -176,7 +175,7 @@ func generateServerConfig() dnsforward.ServerConfig {
|
||||
newconfig.TLSAllowUnencryptedDOH = tlsConf.AllowUnencryptedDOH
|
||||
|
||||
newconfig.FilterHandler = applyAdditionalFiltering
|
||||
newconfig.GetUpstreamsByClient = getUpstreamsByClient
|
||||
newconfig.GetCustomUpstreamByClient = Context.clients.FindUpstreams
|
||||
return newconfig
|
||||
}
|
||||
|
||||
@ -222,10 +221,6 @@ func getDNSAddresses() []string {
|
||||
return dnsAddresses
|
||||
}
|
||||
|
||||
func getUpstreamsByClient(clientAddr string) []upstream.Upstream {
|
||||
return Context.clients.FindUpstreams(clientAddr)
|
||||
}
|
||||
|
||||
// If a client has his own settings, apply them
|
||||
func applyAdditionalFiltering(clientAddr string, setts *dnsfilter.RequestFilteringSettings) {
|
||||
Context.dnsFilter.ApplyBlockedServices(setts, nil, true)
|
||||
|
@ -478,6 +478,8 @@ func (f *Filtering) parseFilterContents(file io.Reader) (int, uint32, string) {
|
||||
name = m[0][1]
|
||||
seenTitle = true
|
||||
}
|
||||
} else if line[0] == '#' {
|
||||
continue
|
||||
} else {
|
||||
rulesCount++
|
||||
}
|
||||
|
@ -14,6 +14,7 @@ import (
|
||||
func testStartFilterListener() net.Listener {
|
||||
http.HandleFunc("/filters/1.txt", func(w http.ResponseWriter, r *http.Request) {
|
||||
content := `||example.org^$third-party
|
||||
# Inline comment example
|
||||
||example.com^$third-party
|
||||
0.0.0.0 example.com
|
||||
`
|
||||
|
@ -336,6 +336,8 @@ func requireAdminRights() {
|
||||
admin, _ := util.HaveAdminRights()
|
||||
if //noinspection ALL
|
||||
admin || isdelve.Enabled {
|
||||
// Don't forget that for this to work you need to add "delve" tag explicitly
|
||||
// https://stackoverflow.com/questions/47879070/how-can-i-see-if-the-goland-debugger-is-running-in-the-program
|
||||
return
|
||||
}
|
||||
|
||||
|
30
main.go
30
main.go
@ -1,7 +1,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"runtime/debug"
|
||||
"time"
|
||||
|
||||
"github.com/AdguardTeam/AdGuardHome/home"
|
||||
)
|
||||
@ -16,6 +18,32 @@ var channel = "release"
|
||||
var goarm = ""
|
||||
|
||||
func main() {
|
||||
debug.SetGCPercent(10)
|
||||
memoryUsage()
|
||||
|
||||
home.Main(version, channel, goarm)
|
||||
}
|
||||
|
||||
// memoryUsage implements a couple of not really beautiful hacks which purpose is to
|
||||
// make OS reclaim the memory freed by AdGuard Home as soon as possible.
|
||||
func memoryUsage() {
|
||||
debug.SetGCPercent(10)
|
||||
|
||||
// madvdontneed: setting madvdontneed=1 will use MADV_DONTNEED
|
||||
// instead of MADV_FREE on Linux when returning memory to the
|
||||
// kernel. This is less efficient, but causes RSS numbers to drop
|
||||
// more quickly.
|
||||
_ = os.Setenv("GODEBUG", "madvdontneed=1")
|
||||
|
||||
// periodically call "debug.FreeOSMemory" so
|
||||
// that the OS could reclaim the free memory
|
||||
go func() {
|
||||
ticker := time.NewTicker(15 * time.Second)
|
||||
for {
|
||||
select {
|
||||
case t := <-ticker.C:
|
||||
t.Second()
|
||||
debug.FreeOSMemory()
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user