Add dnscrypt-proxy (ldns, libsodium, luci-app-dnscrypt-proxy)
authorRISCi_ATOM <bob@bobcall.me>
Fri, 10 Jan 2020 17:50:06 +0000 (12:50 -0500)
committerRISCi_ATOM <bob@bobcall.me>
Fri, 10 Jan 2020 17:50:06 +0000 (12:50 -0500)
30 files changed:
libs/ldns/Makefile [new file with mode: 0644]
libs/ldns/patches/001-fix-cross-compile-on-darwin.patch [new file with mode: 0644]
libs/ldns/patches/100-CVE-2017-1000231.patch [new file with mode: 0644]
libs/ldns/patches/101-CVE-2017-1000232.patch [new file with mode: 0644]
libs/ldns/patches/200-deprecated-openssl.patch [new file with mode: 0644]
libs/ldns/patches/300-openssl-engine.patch [new file with mode: 0644]
libs/libsodium/Makefile [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/Makefile [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/po/es/dnscrypt-proxy.po [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/po/zh-cn/dnscrypt-proxy.po [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/po/zh-tw/dnscrypt-proxy.po [new file with mode: 0644]
luci/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy [new file with mode: 0755]
net/dnscrypt-proxy/Config.in [new file with mode: 0755]
net/dnscrypt-proxy/Makefile [new file with mode: 0644]
net/dnscrypt-proxy/files/dnscrypt-proxy.config [new file with mode: 0644]
net/dnscrypt-proxy/files/dnscrypt-proxy.init [new file with mode: 0644]
net/dnscrypt-proxy/files/dnscrypt-resolvers.csv [new file with mode: 0644]
net/dnscrypt-proxy/patches/010-internal.patch [new file with mode: 0644]

diff --git a/libs/ldns/Makefile b/libs/ldns/Makefile
new file mode 100644 (file)
index 0000000..484e5c3
--- /dev/null
@@ -0,0 +1,89 @@
+#
+# Copyright (C) 2011-2015 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=ldns
+PKG_VERSION:=1.7.0
+PKG_RELEASE:=5
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.nlnetlabs.nl/downloads/ldns
+PKG_HASH:=c19f5b1b4fb374cfe34f4845ea11b1e0551ddc67803bd6ddd5d2a20f0997a6cc
+
+PKG_LICENSE:=BSD-3-Clause
+PKG_LICENSE_FILES:=LICENSE
+PKG_MAINTAINER:=
+PKG_CPE_ID:=cpe:/a:nlnetlabs:ldns
+
+PKG_FIXUP:=autoreconf
+PKG_BUILD_PARALLEL:=1
+PKG_INSTALL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libldns/Default
+  URL:=http://www.nlnetlabs.nl/projects/ldns/
+  DEPENDS:=+libopenssl
+endef
+
+define Package/libldns
+  $(call Package/libldns/Default)
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=A library to simplify DNS programming
+endef
+
+define Package/libldns/description
+  The goal of ldns is to simplify DNS programming, it supports recent RFCs like
+  the DNSSEC documents, and allows developers to easily create software
+  conforming to current RFCs, and experimental software for current Internet
+  Drafts.
+endef
+
+define Package/drill
+  $(call Package/libldns/Default)
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=IP Addresses and Names
+  TITLE:=DNS(SEC) information tool
+  DEPENDS+= +libldns
+endef
+
+define Package/drill/description
+  drill is a tool to designed to get all sorts of information out of the DNS. It
+  is specificly designed to be used with DNSSEC.
+endef
+
+CONFIGURE_ARGS += \
+       --disable-dane-ta-usage \
+       --disable-ecdsa \
+       --disable-gost \
+       --with-drill \
+       --with-ssl="$(STAGING_DIR)/usr"
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/ldns $(1)/usr/include/
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libldns.{a,so*} $(1)/usr/lib/
+       $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+       $(CP) $(PKG_BUILD_DIR)/packaging/libldns.pc $(1)/usr/lib/pkgconfig
+endef
+
+define Package/libldns/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libldns.so.* $(1)/usr/lib/
+endef
+
+define Package/drill/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/drill $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,libldns))
+$(eval $(call BuildPackage,drill))
diff --git a/libs/ldns/patches/001-fix-cross-compile-on-darwin.patch b/libs/ldns/patches/001-fix-cross-compile-on-darwin.patch
new file mode 100644 (file)
index 0000000..ddc2691
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -842,7 +842,7 @@ ACX_CHECK_FORMAT_ATTRIBUTE
+ ACX_CHECK_UNUSED_ATTRIBUTE
+ # check OSX deployment target, if needed
+-if echo $build_os | grep darwin > /dev/null; then
++if echo $target_os | grep darwin > /dev/null; then
+   sdk_p=`xcode-select -print-path`;
+   sdk_v="$( /usr/bin/xcrun --show-sdk-version )";
+   case $sdk_v in
diff --git a/libs/ldns/patches/100-CVE-2017-1000231.patch b/libs/ldns/patches/100-CVE-2017-1000231.patch
new file mode 100644 (file)
index 0000000..2c2abe8
--- /dev/null
@@ -0,0 +1,28 @@
+From c8391790c96d4c8a2c10f9ab1460fda83b509fc2 Mon Sep 17 00:00:00 2001
+From: Willem Toorop <willem@nlnetlabs.nl>
+Date: Thu, 27 Apr 2017 00:14:58 +0200
+Subject: [PATCH] Check parse limit before t increment
+
+Thanks Stephan Zeisberg
+---
+ parse.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/parse.c b/parse.c
+index e68627c..947dbb8 100644
+--- a/parse.c
++++ b/parse.c
+@@ -118,6 +118,10 @@ ldns_fget_token_l(FILE *f, char *token, const char *delim, size_t limit, int *li
+                       if (line_nr) {
+                               *line_nr = *line_nr + 1;
+                       }
++                      if (limit > 0 && (i >= limit || (size_t)(t-token) >= limit)) {
++                              *t = '\0';
++                              return -1;
++                      }
+                       *t++ = ' ';
+                       prev_c = c;
+                       continue;
+-- 
+2.9.5
+
diff --git a/libs/ldns/patches/101-CVE-2017-1000232.patch b/libs/ldns/patches/101-CVE-2017-1000232.patch
new file mode 100644 (file)
index 0000000..25be44d
--- /dev/null
@@ -0,0 +1,30 @@
+From 3bdeed02505c9bbacb3b64a97ddcb1de967153b7 Mon Sep 17 00:00:00 2001
+From: Willem Toorop <willem@nlnetlabs.nl>
+Date: Thu, 27 Apr 2017 00:25:20 +0200
+Subject: [PATCH] bugfix #1257: Free after reallocing to 0 size
+
+Thanks Stephan Zeisberg
+---
+ str2host.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/str2host.c b/str2host.c
+index b274b17..f2a317b 100644
+--- a/str2host.c
++++ b/str2host.c
+@@ -1525,8 +1525,10 @@ ldns_str2rdf_long_str(ldns_rdf **rd, const char *str)
+       if (! str) {
+               return LDNS_STATUS_SYNTAX_BAD_ESCAPE;
+       }
+-      length = (size_t)(dp - data);
+-
++      if (!(length = (size_t)(dp - data))) {
++              LDNS_FREE(data);
++              return LDNS_STATUS_SYNTAX_EMPTY;
++      }
+       /* Lose the overmeasure */
+       data = LDNS_XREALLOC(dp = data, uint8_t, length);
+       if (! data) {
+-- 
+2.9.5
+
diff --git a/libs/ldns/patches/200-deprecated-openssl.patch b/libs/ldns/patches/200-deprecated-openssl.patch
new file mode 100644 (file)
index 0000000..cdeff84
--- /dev/null
@@ -0,0 +1,78 @@
+--- a/dnssec.c
++++ b/dnssec.c
+@@ -23,6 +23,9 @@
+ #include <openssl/rand.h>
+ #include <openssl/err.h>
+ #include <openssl/md5.h>
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
++#include <openssl/dsa.h>
+ #endif
+ ldns_rr *
+--- a/dnssec_sign.c
++++ b/dnssec_sign.c
+@@ -17,6 +17,9 @@
+ #include <openssl/rand.h>
+ #include <openssl/err.h>
+ #include <openssl/md5.h>
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
++#include <openssl/dsa.h>
+ #endif /* HAVE_SSL */
+ ldns_rr *
+--- a/dnssec_verify.c
++++ b/dnssec_verify.c
+@@ -594,7 +594,9 @@ ldns_dnssec_trust_tree_print_sm_fmt(FILE
+                                               if (tree->parent_status[i]
+                                                   == LDNS_STATUS_SSL_ERR) {
+                                                       printf("; SSL Error: ");
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+                                                       ERR_load_crypto_strings();
++#endif
+                                                       ERR_print_errors_fp(stdout);
+                                                       printf("\n");
+                                               }
+--- a/drill/drill.c
++++ b/drill/drill.c
+@@ -1013,7 +1013,7 @@ main(int argc, char *argv[])
+       xfree(tsig_data);
+       xfree(tsig_algorithm);
+-#ifdef HAVE_SSL
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+       CRYPTO_cleanup_all_ex_data();
+       ERR_free_strings();
+       EVP_cleanup();
+--- a/host2str.c
++++ b/host2str.c
+@@ -28,6 +28,12 @@
+ #include <time.h>
+ #include <sys/time.h>
++#ifdef HAVE_SSL
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
++#include <openssl/dsa.h>
++#endif
++
+ #ifndef INET_ADDRSTRLEN
+ #define INET_ADDRSTRLEN 16
+ #endif
+--- a/keys.c
++++ b/keys.c
+@@ -16,8 +16,12 @@
+ #ifdef HAVE_SSL
+ #include <openssl/ssl.h>
+-#include <openssl/engine.h>
+ #include <openssl/rand.h>
++#include <openssl/bn.h>
++#include <openssl/rsa.h>
++#include <openssl/dsa.h>
++#include <openssl/engine.h>
++#include <openssl/ui.h>
+ #endif /* HAVE_SSL */
+ ldns_lookup_table ldns_signing_algorithms[] = {
diff --git a/libs/ldns/patches/300-openssl-engine.patch b/libs/ldns/patches/300-openssl-engine.patch
new file mode 100644 (file)
index 0000000..8f2be23
--- /dev/null
@@ -0,0 +1,23 @@
+--- a/keys.c
++++ b/keys.c
+@@ -20,8 +20,10 @@
+ #include <openssl/bn.h>
+ #include <openssl/rsa.h>
+ #include <openssl/dsa.h>
+-#include <openssl/engine.h>
+ #include <openssl/ui.h>
++#ifndef OPENSSL_NO_ENGINE
++#include <openssl/engine.h>
++#endif
+ #endif /* HAVE_SSL */
+ ldns_lookup_table ldns_signing_algorithms[] = {
+@@ -103,7 +105,7 @@ ldns_key_new_frm_fp(ldns_key **k, FILE *fp)
+       return ldns_key_new_frm_fp_l(k, fp, NULL);
+ }
+-#ifdef HAVE_SSL
++#if defined(HAVE_SSL) && !defined(OPENSSL_NO_ENGINE)
+ ldns_status
+ ldns_key_new_frm_engine(ldns_key **key, ENGINE *e, char *key_id, ldns_algorithm alg)
+ {
diff --git a/libs/libsodium/Makefile b/libs/libsodium/Makefile
new file mode 100644 (file)
index 0000000..a75a533
--- /dev/null
@@ -0,0 +1,73 @@
+#
+# Copyright (C) 2009-2016 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libsodium
+PKG_VERSION:=1.0.18
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://download.libsodium.org/libsodium/releases \
+               https://github.com/jedisct1/libsodium/releases/download/$(PKG_VERSION)
+PKG_HASH:=6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1
+
+PKG_MAINTAINER:=Damiano Renfer <damiano.renfer@gmail.com>
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=LICENSE
+
+PKG_USE_MIPS16:=0
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/libsodium
+  SECTION:=libs
+  CATEGORY:=Libraries
+  TITLE:=P(ortable|ackageable) NaCl-based crypto library
+  URL:=https://github.com/jedisct1/libsodium
+endef
+
+define Package/libsodium/description
+  NaCl (pronounced "salt") is a new easy-to-use high-speed software library for network communication, encryption, decryption, signatures, etc.
+  NaCl's goal is to provide all of the core operations needed to build higher-level cryptographic tools.
+  Sodium is a portable, cross-compilable, installable, packageable fork of NaCl (based on the latest released upstream version nacl-20110221), with a compatible API.
+  The design choices, particularly in regard to the Curve25519 Diffie-Hellman function, emphasize security (whereas NIST curves emphasize "performance" at the cost of security), and "magic constants" in NaCl/Sodium have clear rationales.
+  The same cannot be said of NIST curves, where the specific origins of certain constants are not described by the standards.
+  And despite the emphasis on higher security, primitives are faster across-the-board than most implementations of the NIST standards.
+endef
+
+define Package/libsodium/config
+menu "Configuration"
+       depends on PACKAGE_libsodium
+       config LIBSODIUM_MINIMAL
+               bool "Compile only what is required for the high-level API (no aes128ctr), should be fine in most cases."
+               default y
+endmenu
+endef
+
+CONFIGURE_ARGS+= \
+       --disable-ssp \
+       $(if $(CONFIG_LIBSODIUM_MINIMAL),--enable,--disable)-minimal
+
+define Build/InstallDev
+       $(INSTALL_DIR) $(1)/usr/include/sodium
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/sodium.h $(1)/usr/include
+       $(CP) $(PKG_INSTALL_DIR)/usr/include/sodium/*.h $(1)/usr/include/sodium
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsodium.{a,so*} $(1)/usr/lib
+       $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libsodium.pc $(1)/usr/lib/pkgconfig/
+endef
+
+define Package/libsodium/install
+       $(INSTALL_DIR) $(1)/usr/lib
+       $(CP) $(PKG_INSTALL_DIR)/usr/lib/libsodium.so.* $(1)/usr/lib/
+endef
+
+$(eval $(call BuildPackage,libsodium))
diff --git a/luci/luci-app-dnscrypt-proxy/Makefile b/luci/luci-app-dnscrypt-proxy/Makefile
new file mode 100644 (file)
index 0000000..ced9e8b
--- /dev/null
@@ -0,0 +1,13 @@
+# Copyright 2017 Dirk Brenken (dev@brenken.org)
+# This is free software, licensed under the Apache License, Version 2.0
+#
+
+include $(TOPDIR)/rules.mk
+
+LUCI_TITLE:=LuCI support for DNSCrypt-Proxy
+LUCI_DEPENDS:=+uclient-fetch +dnscrypt-proxy +luci-lib-httpprotoutils
+LUCI_PKGARCH:=all
+
+include $(TOPDIR)/package/luci/luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua b/luci/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua
new file mode 100644 (file)
index 0000000..c055945
--- /dev/null
@@ -0,0 +1,36 @@
+-- Copyright 2017-2019 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+module("luci.controller.dnscrypt-proxy", package.seeall)
+
+local util  = require("luci.util")
+local i18n  = require("luci.i18n")
+local templ = require("luci.template")
+
+function index()
+       if not nixio.fs.access("/etc/config/dnscrypt-proxy") then
+               nixio.fs.writefile("/etc/config/dnscrypt-proxy", "")
+       end
+       entry({"admin", "services", "dnscrypt-proxy"}, firstchild(), _("DNSCrypt-Proxy"), 60).dependent = false
+       entry({"admin", "services", "dnscrypt-proxy", "tab_from_cbi"}, cbi("dnscrypt-proxy/overview_tab", {hideresetbtn=true, hidesavebtn=true}), _("Overview"), 10).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "logfile"}, call("logread"), _("View Logfile"), 20).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced"}, firstchild(), _("Advanced"), 100)
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "configuration"}, form("dnscrypt-proxy/configuration_tab"), _("Edit DNSCrypt-Proxy Configuration"), 110).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_dnsmasq"}, form("dnscrypt-proxy/cfg_dnsmasq_tab"), _("Edit Dnsmasq Configuration"), 120).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_resolvcrypt"}, form("dnscrypt-proxy/cfg_resolvcrypt_tab"), _("Edit Resolvcrypt Configuration"), 130).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 140).leaf = true
+end
+
+function view_reslist()
+       local reslist = util.trim(util.exec("cat /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv"))
+       templ.render("dnscrypt-proxy/view_reslist", {title = i18n.translate("DNSCrypt-Proxy Resolver List"), content = reslist})
+end
+
+function logread()
+       local logfile = util.trim(util.exec("logread -e 'dnscrypt-proxy' 2>/dev/null")) or ""
+       
+       if logfile == "" then
+               logfile = "No DNSCrypt-Proxy related logs yet!"
+       end
+       templ.render("dnscrypt-proxy/logread", {title = i18n.translate("DNSCrypt-Proxy Logfile"), content = logfile})
+end
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua b/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua
new file mode 100644 (file)
index 0000000..6e75ac9
--- /dev/null
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local nxfs      = require("nixio.fs")
+local util      = require("luci.util")
+local uci_input = "/etc/config/dhcp"
+
+if not nxfs.access(uci_input) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("dnscrypt-proxy/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the main Dnsmasq configuration file (/etc/config/dhcp)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nxfs.readfile(uci_input) or ""
+end
+
+function f.write(self, section, data)
+       return nxfs.writefile(uci_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua b/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua
new file mode 100644 (file)
index 0000000..f172b15
--- /dev/null
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local nxfs      = require("nixio.fs")
+local util      = require("luci.util")
+local res_input = "/etc/resolv-crypt.conf"
+
+if not nxfs.access(res_input) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("dnscrypt-proxy/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the resolv-crypt configuration file (/etc/resolv-crypt.conf)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nxfs.readfile(res_input) or ""
+end
+
+function f.write(self, section, data)
+       return nxfs.writefile(res_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua b/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua
new file mode 100644 (file)
index 0000000..f184273
--- /dev/null
@@ -0,0 +1,39 @@
+-- Copyright 2017 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local nxfs      = require("nixio.fs")
+local util      = require("luci.util")
+local uci_input = "/etc/config/dnscrypt-proxy"
+
+if not nxfs.access(uci_input) then
+       m = SimpleForm("error", nil, translate("Input file not found, please check your configuration."))
+       m.reset = false
+       m.submit = false
+       return m
+end
+
+m = SimpleForm("input", nil)
+m:append(Template("dnscrypt-proxy/config_css"))
+m.submit = translate("Save")
+m.reset = false
+
+s = m:section(SimpleSection, nil,
+       translate("This form allows you to modify the content of the main DNSCrypt-Proxy configuration file (/etc/config/dnscrypt-proxy)."))
+
+f = s:option(TextValue, "data")
+f.rows = 20
+f.rmempty = true
+
+function f.cfgvalue()
+       return nxfs.readfile(uci_input) or ""
+end
+
+function f.write(self, section, data)
+       return nxfs.writefile(uci_input, "\n" .. util.trim(data:gsub("\r\n", "\n")) .. "\n")
+end
+
+function s.handle(self, state, data)
+       return true
+end
+
+return m
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua b/luci/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
new file mode 100644 (file)
index 0000000..967110f
--- /dev/null
@@ -0,0 +1,263 @@
+-- Copyright 2017-2018 Dirk Brenken (dev@brenken.org)
+-- This is free software, licensed under the Apache License, Version 2.0
+
+local fs        = require("nixio.fs")
+local uci       = require("luci.model.uci").cursor()
+local util      = require("luci.util")
+local res_input = "/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv"
+local res_dir   = fs.dirname(res_input)
+local dump      = util.ubus("network.interface", "dump", {})
+local plug_cnt  = tonumber(luci.sys.exec("env -i /usr/sbin/dnscrypt-proxy --version | grep 'Support for plugins: present' | wc -l"))
+local res_list  = {}
+local url       = "https://raw.githubusercontent.com/dyne/dnscrypt-proxy/master/dnscrypt-resolvers.csv"
+
+local _, date = pcall(require, "luci.http.date")
+if not date then
+       _, date = pcall(require, "luci.http.protocol.date")
+end
+
+if not fs.access(res_input) then
+       if not fs.access("/lib/libustream-ssl.so") then
+               m = SimpleForm("error", nil, translate("No default resolver list and no SSL support available.<br />")
+                       .. translate("Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv' to use this package."))
+               m.submit = false
+               m.reset = false
+               return m
+       else
+               luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+       end
+end
+
+if not uci:get_first("dnscrypt-proxy", "global") then
+       uci:add("dnscrypt-proxy", "global")
+       uci:save("dnscrypt-proxy")
+       uci:commit("dnscrypt-proxy")
+end
+
+if fs.access(res_input) then
+       for line in io.lines(res_input) or {} do
+               local name,
+               location,
+               dnssec,
+               nolog = line:match("^([^,]+),.-,\".-\",\"*(.-)\"*,.-,[0-9],\"*([yesno]+)\"*,\"*([yesno]+)\"*,.*")
+               if name ~= "" and name ~= "Name" then
+                       if location == "" then
+                               location = "-"
+                       end
+                       if dnssec == "" then
+                               dnssec = "-"
+                       end
+                       if nolog == "" then
+                               nolog = "-"
+                       end
+                       res_list[#res_list + 1] = { name = name, location = location, dnssec = dnssec, nolog = nolog }
+               end
+       end
+end
+
+m = Map("dnscrypt-proxy", translate("DNSCrypt-Proxy"),
+       translate("Configuration of the DNSCrypt-Proxy package. ")
+       .. translatef("For further information "
+       .. "<a href=\"%s\" target=\"_blank\">"
+       .. "see the wiki online</a>", "https://openwrt.org/docs/guide-user/services/dns/dnscrypt"))
+m:chain("dhcp")
+
+function m.on_after_commit(self)
+       function d1.validate(self, value, s1)
+               if value == "1" then
+                       uci:commit("dnscrypt-proxy")
+                       uci:set("dhcp", s1, "noresolv", 1)
+                       if not fs.access("/etc/resolv-crypt.conf") or fs.stat("/etc/resolv-crypt.conf").size == 0 then
+                               uci:set("dhcp", s1, "resolvfile", "/tmp/resolv.conf.auto")
+                       else
+                               uci:set("dhcp", s1, "resolvfile", "/etc/resolv-crypt.conf")
+                       end
+                       local server_list = {}
+                       local cnt = 1
+                       uci:foreach("dnscrypt-proxy", "dnscrypt-proxy", function(s)
+                               server_list[cnt] = s['address'] .. "#" .. s['port']
+                               cnt = cnt + 1
+                       end)
+                       server_list[cnt] = "/pool.ntp.org/8.8.8.8"
+                       uci:set_list("dhcp", s1, "server", server_list)
+                       if cnt > 2 then
+                               uci:set("dhcp", s1, "allservers", 1)
+                       else
+                               uci:set("dhcp", s1, "allservers", 0)
+                       end
+                       uci:save("dhcp")
+                       uci:commit("dhcp")
+               end
+               return value
+       end
+       luci.sys.call("env -i /etc/init.d/dnscrypt-proxy restart >/dev/null 2>&1")
+       luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1")
+end
+
+s = m:section(TypedSection, "global", translate("General Options"))
+s.anonymous = true
+
+-- Main dnscrypt-proxy resource list
+
+o1 = s:option(DummyValue, "", translate("Default Resolver List"))
+o1.template = "dnscrypt-proxy/res_options"
+o1.value = res_input
+
+o2 = s:option(DummyValue, "", translate("File Date"))
+o2.template = "dnscrypt-proxy/res_options"
+if fs.access(res_input) then
+       o2.value = date.to_http(fs.stat(res_input).mtime)
+else
+       o2.value = "-"
+end
+
+o3 = s:option(DummyValue, "", translate("File Checksum"))
+o3.template = "dnscrypt-proxy/res_options"
+if fs.access(res_input) then
+       o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
+else
+       o3.value = "-"
+end
+
+if fs.access("/lib/libustream-ssl.so") then
+       btn1 = s:option(Button, "", translate("Refresh Resolver List"),
+               translate("Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."))
+       btn1.inputtitle = translate("Refresh List")
+       btn1.inputstyle = "apply"
+       btn1.disabled = false
+       function btn1.write()
+               if not fs.access(res_dir) then
+                       fs.mkdir(res_dir)
+               end
+               luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy"))
+       end
+else
+       btn1 = s:option(Button, "", translate("Refresh Resolver List"),
+               translate("No SSL support available.<br />")
+               .. translate("Please install a 'libustream-ssl' library to download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."))
+       btn1.inputtitle = translate("-------")
+       btn1.inputstyle = "button"
+       btn1.disabled = true
+end
+
+if not fs.access("/etc/resolv-crypt.conf") or fs.stat("/etc/resolv-crypt.conf").size == 0 then
+       btn2 = s:option(Button, "", translate("Create Custom Config File"),
+               translate("Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS upstream timeouts with multiple DNSCrypt instances.<br />")
+               .. translatef("For further information "
+               .. "<a href=\"%s\" target=\"_blank\">"
+               .. "see the wiki online</a>", "https://openwrt.org/docs/guide-user/services/dns/dnscrypt"))
+       btn2.inputtitle = translate("Create Config File")
+       btn2.inputstyle = "apply"
+       btn2.disabled = false
+       function btn2.write()
+               luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'")
+               luci.http.redirect(luci.dispatcher.build_url("admin", "services", "dnscrypt-proxy"))
+       end
+else
+       btn2 = s:option(Button, "", translate("Create Custom Config File"),
+               translate("The config file '/etc/resolv-crypt.conf' already exist.<br />")
+               .. translate("Please edit the file manually in the 'Advanced' section."))
+       btn2.inputtitle = translate("-------")
+       btn2.inputstyle = "button"
+       btn2.disabled = true
+end
+
+-- Trigger settings
+
+t = s:option(ListValue, "procd_trigger", translate("Startup Trigger"),
+       translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of 'All' available network interfaces.<br />")
+       .. translate("To restrict the trigger, select only the relevant network interface. Usually the 'wan' interface should work for most users."))
+t:value("", "All")
+if dump then
+       local i, v
+       for i, v in ipairs(dump.interface) do
+               if v.interface ~= "loopback" then
+                       t:value(v.interface)
+               end
+       end
+end
+t.default = procd_trigger or "All"
+t.rmempty = true
+
+-- Mandatory options per instance
+
+s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance Options"))
+s.anonymous = true
+s.addremove = true
+
+i1 = s:option(Value, "address", translate("IP Address"),
+       translate("The local IPv4 or IPv6 address. The latter one should be specified within brackets, e.g. '[::1]'."))
+i1.default = address or "127.0.0.1"
+i1.rmempty = false
+
+i2 = s:option(Value, "port", translate("Port"),
+       translate("The listening port for DNS queries."))
+i2.datatype = "port"
+i2.default = port
+i2.rmempty = false
+
+i3 = s:option(ListValue, "resolver", translate("Resolver (LOC/SEC/NOLOG)"),
+       translate("Name of the remote DNS service for resolving queries incl. Location, DNSSEC- and NOLOG-Flag."))
+i3.datatype = "hostname"
+i3.widget = "select"
+local i, v
+for i, v in ipairs(res_list) do
+       if v.name then
+               i3:value(v.name, v.name .. " (" .. v.location .. "/" .. v.dnssec .. "/" .. v.nolog .. ")")
+       end
+end
+i3.default = resolver
+i3.rmempty = false
+
+-- Extra options per instance
+
+e1 = s:option(Value, "resolvers_list", translate("Alternate Resolver List"),
+       translate("Specify a non-default Resolver List."))
+e1.datatype = "file"
+e1.optional = true
+
+e2 = s:option(Value, "ephemeral_keys", translate("Ephemeral Keys"),
+       translate("Improve privacy by using an ephemeral public key for each query. ")
+       .. translate("This option requires extra CPU cycles and is useless with most DNSCrypt server."))
+e2.datatype = "bool"
+e2.value = 1
+e2.optional = true
+
+if plug_cnt > 0 then
+       e3 = s:option(DynamicList, "blacklist", translate("Blacklist"),
+               translate("Local blacklists allow you to block abuse sites by domains or ip addresses. ")
+               .. translate("The value for this property is the blocklist type and path to the file, e.g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."))
+       e3.optional = true
+
+       e4 = s:option(Value, "block_ipv6", translate("Block IPv6"),
+               translate("Disable IPv6 to speed up DNSCrypt-Proxy."))
+       e4.datatype = "bool"
+       e4.value = 1
+       e4.optional = true
+
+       e5 = s:option(Value, "local_cache", translate("Local Cache"),
+               translate("Enable Caching to speed up DNSCcrypt-Proxy."))
+       e5.datatype = "bool"
+       e5.value = 1
+       e5.optional = true
+       
+       e6 = s:option(Value, "query_log_file", translate("DNS Query Logfile"),
+       translate("Log the received DNS queries to a file, so you can watch in real-time what is happening on the network."))
+       e6.optional = true
+end
+
+-- Dnsmasq options
+
+m1 = Map("dhcp")
+
+s1 = m1:section(TypedSection, "dnsmasq", translate("Dnsmasq Options"))
+s1.anonymous = true
+
+d1 = s1:option(Flag, "", translate("Transfer Options To Dnsmasq"),
+       translate("Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />")
+       .. translate("Please note: This may change the values for 'noresolv', 'resolvfile', 'allservers' and the list 'server' settings."))
+d1.default = d1.enabled
+d1.rmempty = false
+
+return m, m1
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm b/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm
new file mode 100644 (file)
index 0000000..2233a15
--- /dev/null
@@ -0,0 +1,13 @@
+<style type="text/css">
+       textarea
+       {
+               border: 1px solid #cccccc;
+               padding: 5px;
+               font-size: 12px;
+               font-family: monospace;
+               resize: none;
+               white-space: pre;
+               overflow-wrap: normal;
+               overflow-x: scroll;
+       }
+</style>
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm b/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm
new file mode 100644 (file)
index 0000000..5c5ac6f
--- /dev/null
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+       <fieldset class="cbi-section">
+               <div class="cbi-section-descr"><%:This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related messages only.%></div>
+               <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+       </fieldset>
+</div>
+
+<%+footer%>
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm b/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm
new file mode 100644 (file)
index 0000000..04dc37b
--- /dev/null
@@ -0,0 +1,10 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+cbi/valueheader%>
+
+<input name="reslist" id="reslist" type="text" class="cbi-input-text" style="background:transparent;border:none;box-shadow:none;color:#0069d6;width:500px" value="<%=self:cfgvalue(section)%>" disabled="disabled" />
+
+<%+cbi/valuefooter%>
diff --git a/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm b/luci/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm
new file mode 100644 (file)
index 0000000..76a2300
--- /dev/null
@@ -0,0 +1,15 @@
+<%#
+Copyright 2017 Dirk Brenken (dev@brenken.org)
+This is free software, licensed under the Apache License, Version 2.0
+-%>
+
+<%+header%>
+
+<div class="cbi-map">
+       <fieldset class="cbi-section">
+               <div class="cbi-section-descr"><%:This form shows the content of the current DNSCrypt Resolver List.%></div>
+               <textarea id="logread_id" style="width: 100%; height: 450px; border: 1px solid #cccccc; padding: 5px; font-size: 12px; font-family: monospace; resize: none;" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+2%>"><%=content:pcdata()%></textarea>
+       </fieldset>
+</div>
+
+<%+footer%>
diff --git a/luci/luci-app-dnscrypt-proxy/po/es/dnscrypt-proxy.po b/luci/luci-app-dnscrypt-proxy/po/es/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..0864c2f
--- /dev/null
@@ -0,0 +1,358 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Language: es\n"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:139
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:161
+msgid "-------"
+msgstr "-------"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:17
+msgid "Advanced"
+msgstr "Avanzado"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:215
+msgid "Alternate Resolver List"
+msgstr "Lista alternativa de resolución"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:258
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+"Aplique la configuración específica de DNSCrypt-Proxy a la configuración de "
+"Dnsmasq.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:228
+msgid "Blacklist"
+msgstr "Lista negra"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:233
+msgid "Block IPv6"
+msgstr "Bloque IPv6"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:169
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"De forma predeterminada, el inicio de DNSCrypt-Proxy se activará mediante "
+"eventos de actualización de 'Todas' las interfaces de red disponibles.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:59
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "Configuración del paquete DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:146
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"Cree '/etc/resolv-crypt.conf' con 'options timeout:1' para reducir los "
+"tiempos de espera ascendentes de DNS con múltiples instancias de DNSCrypt."
+"<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:150
+msgid "Create Config File"
+msgstr "Crear archivo de configuración"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:145
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:158
+msgid "Create Custom Config File"
+msgstr "Crear archivo de configuración personalizado"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:245
+msgid "DNS Query Logfile"
+msgstr "Archivo de registro de consultas DNS"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:14
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:58
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:35
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "Archivo de registro de DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:26
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "Lista de resolución de DNSCrypt-Proxy "
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:102
+msgid "Default Resolver List"
+msgstr "Lista de resolución predeterminada"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:234
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "Deshabilite IPv6 para acelerar DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:254
+msgid "Dnsmasq Options"
+msgstr "Opciones de Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:124
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Descargue la lista de resolución actual de 'github.com/dyne/dnscrypt-proxy'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:18
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "Editar configuración de DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:19
+msgid "Edit Dnsmasq Configuration"
+msgstr "Editar configuración de Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:20
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Editar configuración de Resolvcrypt"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:240
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "Habilitar el almacenamiento en caché para acelerar DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:220
+msgid "Ephemeral Keys"
+msgstr "Claves efímeras"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:114
+msgid "File Checksum"
+msgstr "Archivo Checksum"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:106
+msgid "File Date"
+msgstr "Fecha de archivo"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:60
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:147
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"Para obtener más información <a href=\"%s\" target=\"_blank\">vea la wiki en "
+"línea</a>"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:97
+msgid "General Options"
+msgstr "Opciones generales"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:189
+msgid "IP Address"
+msgstr "Dirección IP"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:221
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"Mejore la privacidad mediante el uso de una clave pública efímera para cada "
+"consulta."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:9
+msgid "Input file not found, please check your configuration."
+msgstr "Archivo de entrada no encontrado, por favor revise su configuración."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:185
+msgid "Instance Options"
+msgstr "Opciones de instancia"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:239
+msgid "Local Cache"
+msgstr "Caché local"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:229
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"Las listas negras locales le permiten bloquear sitios de abuso por dominios "
+"o direcciones IP."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:246
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"Registre las consultas de DNS recibidas en un archivo, para que pueda ver en "
+"tiempo real lo que está sucediendo en la red."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:201
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"Nombre del servicio de DNS remoto para resolver consultas incl. Ubicación, "
+"DNSSEC- y NOLOG-Flag."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:137
+msgid "No SSL support available.<br />"
+msgstr "No hay soporte SSL disponible.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:21
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr ""
+"No hay una lista de resolución predeterminada y no hay soporte SSL "
+"disponible.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:15
+msgid "Overview"
+msgstr "Vista general"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:160
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "Edite el archivo manualmente en la sección 'Avanzado'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:138
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Instale una biblioteca 'libustream-ssl' para descargar la lista de "
+"resolución actual desde 'github.com/dyne/dnscrypt-proxy'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:22
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"Instale una lista de resolución en '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' para usar este paquete."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:259
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"Tenga en cuenta: Esto puede cambiar los valores de 'noresolv', 'resolvfile', "
+"'allservers' y la configuración de la lista 'servidor'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:194
+msgid "Port"
+msgstr "Puerto"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:125
+msgid "Refresh List"
+msgstr "Actualizar lista"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:123
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:136
+msgid "Refresh Resolver List"
+msgstr "Actualizar lista de resolución"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:200
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "Resolver (LOC/SEC/NOLOG)"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:17
+msgid "Save"
+msgstr "Guardar"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:216
+msgid "Specify a non-default Resolver List."
+msgstr "Especifique una lista de resolución no predeterminada."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:168
+msgid "Startup Trigger"
+msgstr "Disparador de inicio"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:159
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "El archivo de configuración '/etc/resolv-crypt.conf' ya existe.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:195
+msgid "The listening port for DNS queries."
+msgstr "El puerto de escucha para consultas DNS."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:190
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"La dirección IPv4 o IPv6 local. Este último debe especificarse entre "
+"corchetes, por ejemplo. '[::1]'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:230
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"El valor de esta propiedad es el tipo de lista de bloqueo y la ruta al "
+"archivo, por ejemplo, 'domains:/path/to/dbl.txt' o 'ips: /path/to/ipbl.txt'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"Este formulario le permite modificar el contenido del archivo de "
+"configuración principal de DNSCrypt-Proxy (/etc/config/dnscrypt-proxy)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"Este formulario le permite modificar el contenido del archivo de "
+"configuración principal de Dnsmasq (/etc/config/dhcp)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"Este formulario le permite modificar el contenido del archivo de "
+"configuración de resolv-crypt (/etc/resolv-crypt.conf)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm:10
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"Este formulario muestra el contenido de la actual Lista de resolución de "
+"DNSCrypt."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm:10
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"Esta forma muestra la salida de syslog, filtrada previamente solo para los "
+"mensajes relacionados con DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:222
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"Esta opción requiere ciclos de CPU adicionales y es inútil con la mayoría de "
+"los servidores DNSCrypt."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:170
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"Para restringir el activador, seleccione solo la interfaz de red relevante. "
+"Por lo general, la interfaz 'wan' debería funcionar para la mayoría de los "
+"usuarios."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:257
+msgid "Transfer Options To Dnsmasq"
+msgstr "Opciones de transferencia a Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:16
+msgid "View Logfile"
+msgstr "Ver archivo de registro"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:21
+msgid "View Resolver List"
+msgstr "Ver lista de resolución"
diff --git a/luci/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po b/luci/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..a2008ec
--- /dev/null
@@ -0,0 +1,354 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: \n"
+"POT-Creation-Date: \n"
+"PO-Revision-Date: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.0.7\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:139
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:161
+msgid "-------"
+msgstr "(利用不可)"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:17
+msgid "Advanced"
+msgstr "詳細"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:215
+msgid "Alternate Resolver List"
+msgstr "代替 リゾルバ リスト"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:258
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr "Dnsmasq の構成に、DNSCrypt-Proxy を指定する設定を適用します。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:228
+msgid "Blacklist"
+msgstr "ブラックリスト"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:233
+msgid "Block IPv6"
+msgstr "IPv6 のブロック"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:169
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"デフォルトでは、 DNSCrypt-Proxy は利用可能な全ネットワーク インターフェース"
+"の ifup イベントによりトリガされ起動します。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:59
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "DNSCrypt-Proxy パッケージの設定です。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:146
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"複数の DNSCrypt インスタンスで DNS アップストリーム タイムアウトの設定値を共"
+"用するため、 'options timeout:1' を含めた '/etc/resolv-crypt.conf' を作成しま"
+"す。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:150
+msgid "Create Config File"
+msgstr "設定ファイルの作成"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:145
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:158
+msgid "Create Custom Config File"
+msgstr "カスタム設定ファイルの作成"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:245
+msgid "DNS Query Logfile"
+msgstr "DNS クエリ ログファイル"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:14
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:58
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:35
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "DNSCrypt-Proxy ログファイル"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:26
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy リゾルバ リスト"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:102
+msgid "Default Resolver List"
+msgstr "デフォルト リゾルバ リスト"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:234
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "DNSCrypt-Proxy の高速化のため、IPv6 を無効化します。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:254
+msgid "Dnsmasq Options"
+msgstr "Dnsmasq オプション"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:124
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"現在のリゾルバ リストを 'github.com/dyne/dnscrypt-proxy' からダウンロードしま"
+"す。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:18
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "DNSCrypt-Proxy 設定の編集"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:19
+msgid "Edit Dnsmasq Configuration"
+msgstr "Dnsmasq 設定の編集"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:20
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Resolvcrypt 設定の編集"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:240
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "DNSCrypt-Proxy の高速化のため、キャッシュ機能を有効化します。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:220
+msgid "Ephemeral Keys"
+msgstr "一時的なキー"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:114
+msgid "File Checksum"
+msgstr "ファイル チェックサム"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:106
+msgid "File Date"
+msgstr "ファイル日付"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:60
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:147
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン Wiki</a> を確認して"
+"ください。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:97
+msgid "General Options"
+msgstr "全般オプション"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:189
+msgid "IP Address"
+msgstr "IP アドレス"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:221
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"クエリ毎に一時的な公開鍵を使用することにより、プライバシーを向上します。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:9
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルが見つかりません。設定を確認してください。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:185
+msgid "Instance Options"
+msgstr "インスタンス オプション"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:239
+msgid "Local Cache"
+msgstr "ローカル キャッシュ"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:229
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"ローカル ブラックリストは、不正なサイトをドメイン名または IP アドレスによって"
+"ブロックすることが可能です。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:246
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"受信した DNS クエリをファイルに記録します。これにより、ネットワークで何が起き"
+"ているかをリアルタイムに把握することが可能です。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:201
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"クエリの名前解決を行う、ロケーション, DNSSECの有無, NOLOG フラグを含めたリ"
+"モート DNS サービスの名前です。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:137
+msgid "No SSL support available.<br />"
+msgstr "利用可能な SSL サポートがありません。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:21
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr ""
+"デフォルトのリゾルバ リストと、利用可能な SSL サポートがありません。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:15
+msgid "Overview"
+msgstr "概要"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:160
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "'詳細' タブで手動でファイルを編集してください。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:138
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"現在のリゾルバ リストを 'github.com/dyne/dnscrypt-proxy' からダウンロードする"
+"ために、 'libustream-ssl' ライブラリをインストールしてください。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:22
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"このパッケージを利用するには、リゾルバ リストを '/usr/share/dnscrypt-proxy/"
+"dnscrypt-resolvers.csv' にインストールしてください。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:259
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"注: これは、 'noresolv' および 'resolvfile', 'allservers', 'list server' の設"
+"定値を変更する場合があります。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:194
+msgid "Port"
+msgstr "ポート"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:125
+msgid "Refresh List"
+msgstr "リストのリフレッシュ"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:123
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:136
+msgid "Refresh Resolver List"
+msgstr "リゾルバ リストのリフレッシュ"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:200
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "リゾルバ(LOC/SEC/NOLOG)"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:17
+msgid "Save"
+msgstr "保存"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:216
+msgid "Specify a non-default Resolver List."
+msgstr "デフォルトとは異なるリゾルバ リストを設定します。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:168
+msgid "Startup Trigger"
+msgstr "スタートアップ トリガ"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:159
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "設定ファイル '/etc/resolv-crypt.conf' は既に存在しています。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:195
+msgid "The listening port for DNS queries."
+msgstr "DNS クエリを待ち受けるポートです。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:190
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"ローカルの IPv4 または IPv6 アドレスです。 IPv6 アドレスの場合、ブラケット "
+"\"[ ]\" を含めて記述される必要があります(例: '[::1]')。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:230
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"このプロパティの値は、ブロックリストのタイプ及びファイルへのパスの組み合わせ"
+"です。(例: 'domains:/path/to/domainlist.txt' または 'ips:/path/to/iplist."
+"txt')"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"このフォームでは、メインの DNSCrypt-Proxy 設定ファイル (/etc/config/dnscrypt-"
+"proxy) の内容を変更することができます。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"このフォームでは、メインの Dnsmasq 設定ファイル (/etc/config/dhcp) の内容を変"
+"更することができます。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"このフォームでは、 resolv-crypt 設定ファイル(/etc/resolv-crypt.conf)の内容"
+"を変更することができます。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm:10
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"このフォームには、現在の DNSCrypt リゾルバ リストの内容が表示されます。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm:10
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"このフォームには、システムログ内の DNSCrypt-Proxy に関連するメッセージのみが"
+"表示されます。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:222
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"このオプションは、通常よりも CPU リソースを多く使用するほか、ほとんどの "
+"DNSCrypt サーバーでは不要なものです。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:170
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"トリガを限定するには、適切なインターフェースを選択してください。通常、 'wan' "
+"インターフェースがほとんどのユーザーに適しています。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:257
+msgid "Transfer Options To Dnsmasq"
+msgstr "Dnsmasq の転送オプション"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:16
+msgid "View Logfile"
+msgstr "ログファイルの確認"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:21
+msgid "View Resolver List"
+msgstr "リゾルバ リストの確認"
diff --git a/luci/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po b/luci/luci-app-dnscrypt-proxy/po/ru/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..11c477c
--- /dev/null
@@ -0,0 +1,355 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Project-Id-Version: LuCI: dnscrypt-proxy\n"
+"POT-Creation-Date: 2017-10-17 14:30+0300\n"
+"PO-Revision-Date: 2018-01-24 14:58+0300\n"
+"Language-Team: http://cyber-place.ru\n"
+"MIME-Version: 1.0\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.8.7.1\n"
+"Last-Translator: Vladimir aka sunny <picfun@ya.ru>\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Language: ru\n"
+"Project-Info: Это технический перевод, не дословный. Главное-удобный русский "
+"интерфейс, все проверялось в графическом режиме, совместим с другими apps\n"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:139
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:161
+msgid "-------"
+msgstr "-------"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:17
+msgid "Advanced"
+msgstr "Дополнительно"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:215
+msgid "Alternate Resolver List"
+msgstr "Альтернативный список разрешенных серверов"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:258
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+"Применить специальные настройки DNSCrypt-Proxy для Dnsmasq config файла.<br /"
+">"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:228
+msgid "Blacklist"
+msgstr "Чёрный список"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:233
+msgid "Block IPv6"
+msgstr "Блокировать IPv6"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:169
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"По дефолту DNSCrypt-Proxy стартует на всех доступных интерфейсах 'All'.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:59
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "Настройка DNSCrypt-Proxy. "
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:146
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"Создать config файл /etc/resolv-crypt.none со строкой 'options timeout:1' "
+"для уменьшения времени ожидания ответов DNS серверов внешней сети с "
+"многократной обработкой запросов DNSCrypt-ом.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:150
+msgid "Create Config File"
+msgstr "Создать сonfig файл"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:145
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:158
+msgid "Create Custom Config File"
+msgstr "Создать config"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:245
+msgid "DNS Query Logfile"
+msgstr "Файл системного журнала запроса DNS"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:14
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:58
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:35
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "Файл системного журнала DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:26
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy список разрешенных серверов"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:102
+msgid "Default Resolver List"
+msgstr "Дефолтный список разрешенных серверов"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:234
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "Отключить IPv6 для DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:254
+msgid "Dnsmasq Options"
+msgstr "Настройка Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:124
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Загрузить текущий список клиентов  из 'github.com/dyne/dnscrypt-proxy'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:18
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "Настройка config файла DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:19
+msgid "Edit Dnsmasq Configuration"
+msgstr "Настройка config файла Dnsmasq"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:20
+msgid "Edit Resolvcrypt Configuration"
+msgstr "Настройка config файла Resolvcrypt"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:240
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "Включить кэширование для ускорения DNSCcrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:220
+msgid "Ephemeral Keys"
+msgstr "Эфемерные ключи"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:114
+msgid "File Checksum"
+msgstr "Контрольная сумма файла"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:106
+msgid "File Date"
+msgstr "Дата и время<br />создания файла"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:60
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:147
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"Для более подробной информации <a href=\"%s\" target=\"_blank\">обратитесь к "
+"wiki онлайн</a>."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:97
+msgid "General Options"
+msgstr "Основные настройки"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:189
+msgid "IP Address"
+msgstr "IP-Адрес"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:221
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"Улучшить безопасность, используя эфемерный Публичный ключ для каждого "
+"запроса."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:9
+msgid "Input file not found, please check your configuration."
+msgstr "Config файл не найден, настройте config файл."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:185
+msgid "Instance Options"
+msgstr "Дополнительные настройки"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:239
+msgid "Local Cache"
+msgstr "Локальный кэш"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:229
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"Локальные Черные списки, позволяют блокировать сайты по их доменам или IP-"
+"адресам."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:246
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"Записывайте в журнал полученные запросы DNS. Таким образом, Вы сможете "
+"наблюдать в режиме реального времени, что происходит в сети."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:201
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+"Имя удаленного сервера DNS для разрешения запросов к нему.<br /"
+">Расположение, DNSSEC- и NOLOG-Flag (LOC/SEC/NOLOG)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:137
+msgid "No SSL support available.<br />"
+msgstr "Отсутствует поддержка SSL.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:21
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr "Отсутствует список разрешенных серверов и не поддерживается SSL.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:15
+msgid "Overview"
+msgstr "Главное меню"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:160
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "Отредактируйте файл вручную в разделе 'Дополнительно'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:138
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"Установите библиотеку 'libustream-ssl', чтобы скачать текущий список "
+"клиентов с адреса 'github.com/dyne/dnscrypt-proxy'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:22
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"Установите список разрешенных серверов в /usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv для использования данного сервиса."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:259
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"Примечание: Этот режим, может изменить значения для 'noresolv', "
+"'resolvfile', 'allservers' и параметры настройки списка 'серверов'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:194
+msgid "Port"
+msgstr "Порт"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:125
+msgid "Refresh List"
+msgstr "Обновить список"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:123
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:136
+msgid "Refresh Resolver List"
+msgstr "Обновить список разрешенных серверов"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:200
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "Разрешено<br />(LOC/SEC/NOLOG)"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:17
+msgid "Save"
+msgstr "Сохранить"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:216
+msgid "Specify a non-default Resolver List."
+msgstr "Специальный не дефолтный список разрешенных серверов."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:168
+msgid "Startup Trigger"
+msgstr "Назначить"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:159
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "Config файл /etc/resolv-crypt.conf уже существует.<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:195
+msgid "The listening port for DNS queries."
+msgstr "Прослушивание порта для DNS запросов."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:190
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"Локальные IPv4 или IPv6 адреса. Заключить в скобки, как образец '[::1]'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:230
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"Обозначить содержимое Черного списка, используя в его названии содержимое "
+"его списка и указав путь к файлу соответствующим образом 'domains:/path/to/"
+"dbl.txt' или 'ips:/path/to/ipbl.txt'."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла DNSCrypt-Proxy (/etc/"
+"config/dnscrypt-proxy)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла Dnsmasq (/etc/config/"
+"dhcp)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"Страница позволяет изменять содержимое config файла resolv-crypt (/etc/"
+"resolv-crypt.conf)."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm:10
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"Страница демонстрирует содержимое DNSCrypt списка разрешенных серверов."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm:10
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"Страница показывает вывод системного журнала, предварительно фильтруемый "
+"только для DNSCrypt-Proxy."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:222
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"Этот режим нагружает CPU и большинством DNSCrypt серверов не поддерживается."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:170
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"Выберите только соответствующий сетевой интерфейс.<br />Обычно интерфейса "
+"'wan', достаточно для большинства пользователей."
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:257
+msgid "Transfer Options To Dnsmasq"
+msgstr "Режим передачи Dnsmasq-у"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:16
+msgid "View Logfile"
+msgstr "Показать системный журнал"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:21
+msgid "View Resolver List"
+msgstr "Список разрешенных серверов"
diff --git a/luci/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot b/luci/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot
new file mode 100644 (file)
index 0000000..db88bc7
--- /dev/null
@@ -0,0 +1,302 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:139
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:161
+msgid "-------"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:17
+msgid "Advanced"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:215
+msgid "Alternate Resolver List"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:258
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:228
+msgid "Blacklist"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:233
+msgid "Block IPv6"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:169
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:59
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:146
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:150
+msgid "Create Config File"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:145
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:158
+msgid "Create Custom Config File"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:245
+msgid "DNS Query Logfile"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:14
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:58
+msgid "DNSCrypt-Proxy"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:35
+msgid "DNSCrypt-Proxy Logfile"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:26
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:102
+msgid "Default Resolver List"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:234
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:254
+msgid "Dnsmasq Options"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:124
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:18
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:19
+msgid "Edit Dnsmasq Configuration"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:20
+msgid "Edit Resolvcrypt Configuration"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:240
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:220
+msgid "Ephemeral Keys"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:114
+msgid "File Checksum"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:106
+msgid "File Date"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:60
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:147
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:97
+msgid "General Options"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:189
+msgid "IP Address"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:221
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:9
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:185
+msgid "Instance Options"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:239
+msgid "Local Cache"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:229
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:246
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:201
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:137
+msgid "No SSL support available.<br />"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:21
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:15
+msgid "Overview"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:160
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:138
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:22
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:259
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:194
+msgid "Port"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:125
+msgid "Refresh List"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:123
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:136
+msgid "Refresh Resolver List"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:200
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:17
+msgid "Save"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:216
+msgid "Specify a non-default Resolver List."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:168
+msgid "Startup Trigger"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:159
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:195
+msgid "The listening port for DNS queries."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:190
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:230
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm:10
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm:10
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:222
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:170
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:257
+msgid "Transfer Options To Dnsmasq"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:16
+msgid "View Logfile"
+msgstr ""
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:21
+msgid "View Resolver List"
+msgstr ""
diff --git a/luci/luci-app-dnscrypt-proxy/po/zh-cn/dnscrypt-proxy.po b/luci/luci-app-dnscrypt-proxy/po/zh-cn/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..e99f7b3
--- /dev/null
@@ -0,0 +1,328 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2018-08-07 18:40+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:139
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:161
+msgid "-------"
+msgstr "-------"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:17
+msgid "Advanced"
+msgstr "高级"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:215
+msgid "Alternate Resolver List"
+msgstr "备用解析服务器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:258
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr "将特定于 DNSCrypt-Proxy 的设置应用到 Dnsmasq 配置。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:228
+msgid "Blacklist"
+msgstr "黑名单"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:233
+msgid "Block IPv6"
+msgstr "阻止 IPv6"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:169
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"默认情况下,DNSCrypt-Proxy 启动将由“All”所有可用网络接口的 ifup 事件触发。"
+"<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:59
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "配置 DNSCrypt-Proxy 包。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:146
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"创建“/etc/resolv-crypt.conf”时使用“options timeout:1”选项,用多个 DNSCrypt 实"
+"例来减少 DNS 上游发生超时的情况。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:150
+msgid "Create Config File"
+msgstr "创建配置文件"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:145
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:158
+msgid "Create Custom Config File"
+msgstr "创建自定义配置文件"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:245
+msgid "DNS Query Logfile"
+msgstr "DNS 查询日志文件"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:14
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:58
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:35
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "DNSCrypt-Proxy 日志文件"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:26
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy 解析服务器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:102
+msgid "Default Resolver List"
+msgstr "默认解析服务器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:234
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "禁用 IPv6 以加速 DNSCrypt-Proxy。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:254
+msgid "Dnsmasq Options"
+msgstr "Dnsmasq 选项"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:124
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr "从“github.com/dyne/DNSCrypt-Proxy”下载当前的解析服务器列表。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:18
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "编辑 DNSCrypt-Proxy 配置"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:19
+msgid "Edit Dnsmasq Configuration"
+msgstr "编辑 Dnsmasq 配置"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:20
+msgid "Edit Resolvcrypt Configuration"
+msgstr "编辑 Resolvcrypt 配置"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:240
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "启用缓存以加速 DNSCcrypt-Proxy。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:220
+msgid "Ephemeral Keys"
+msgstr "临时密钥"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:114
+msgid "File Checksum"
+msgstr "文件校验和"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:106
+msgid "File Date"
+msgstr "文件日期"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:60
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:147
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr "详细信息请<a href=\"%s\" target=\"_blank\">查看在线 wiki</a>"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:97
+msgid "General Options"
+msgstr "常规选项"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:189
+msgid "IP Address"
+msgstr "IP 地址"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:221
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr "每次查询使用不同的临时公钥,以增强隐私。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:9
+msgid "Input file not found, please check your configuration."
+msgstr "未找到输入文件,请检查您的配置。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:185
+msgid "Instance Options"
+msgstr "实例选项"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:239
+msgid "Local Cache"
+msgstr "本地缓存"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:229
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr "本地黑名单,允许您按域名或 IP 地址拦截有害网站。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:246
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr "将收到的 DNS 查询记录到文件中,以便您可以实时查看网络上发生的情况。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:201
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr "用于解析 DNS 查询的远程服务器名称,包括位置、DNSSEC- 和 NOLOG-Flag。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:137
+msgid "No SSL support available.<br />"
+msgstr "无 SSL 支持。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:21
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr "无默认解析服务器列表,也无 SSL 支持。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:15
+msgid "Overview"
+msgstr "概述"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:160
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "请在“高级”部分中手动编辑文件。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:138
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"要从“github.com/dyne/DNSCrypt-Proxy”下载当前的解析服务器列表,请安"
+"装“libustream-ssl”库。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:22
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"要使用此程序,请将解析服务器列表放到“/usr/share/DNSCrypt-Proxy/dnscrypt-"
+"resolvers.csv”。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:259
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"请注意:这可能会更改“noresolv”、“resolvfile”、“allservers”和“server”列表的设"
+"置值。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:194
+msgid "Port"
+msgstr "端口"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:125
+msgid "Refresh List"
+msgstr "刷新列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:123
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:136
+msgid "Refresh Resolver List"
+msgstr "刷新解析服务器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:200
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "解析服务器(LOC/SEC/NOLOG)"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:17
+msgid "Save"
+msgstr "保存"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:216
+msgid "Specify a non-default Resolver List."
+msgstr "指定非默认的解析服务器列表。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:168
+msgid "Startup Trigger"
+msgstr "启动触发器"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:159
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "配置文件“/etc/resolv-crypt.conf”已经存在。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:195
+msgid "The listening port for DNS queries."
+msgstr "DNS 查询的监听端口。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:190
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr "本地 IPv4 或 IPv6 地址。后者应用方括号括起,如“[::1]”。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:230
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"此属性的值是拦截列表的类型和文件的路径,例如“domains:/path/to/dbl."
+"txt”或“ips:/path/to/ipbl.txt”。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"此表单允许您修改主 DNSCrypt-Proxy 配置文件(/etc/config/dnscrypt-proxy)的内"
+"容。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr "此表单允许您修改主 Dnsmasq 配置文件(/etc/config/dhcp)的内容。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"此表单允许您修改 resolv-crypt 配置文件(/etc/resolv-crypt.conf)的内容。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm:10
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr "此表单显示当前 DNSCrypt 的解析服务器列表。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm:10
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr "此表单显示 syslog 输出,仅针对 DNSCrypt-Proxy 相关消息进行预过滤。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:222
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr "此选项需要额外的 CPU 周期,对大多数 DNSCrypt 服务器都没用。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:170
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"要限制触发器,请只选择相关的网络接口。通常,“wan”接口应该适用于大多数用户。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:257
+msgid "Transfer Options To Dnsmasq"
+msgstr "转移选项到 Dnsmasq "
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:16
+msgid "View Logfile"
+msgstr "查看日志文件"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:21
+msgid "View Resolver List"
+msgstr "查看解析服务器列表"
diff --git a/luci/luci-app-dnscrypt-proxy/po/zh-tw/dnscrypt-proxy.po b/luci/luci-app-dnscrypt-proxy/po/zh-tw/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..fa230ce
--- /dev/null
@@ -0,0 +1,328 @@
+#
+# Yangfl <mmyangfl@gmail.com>, 2018.
+#
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Last-Translator: Yangfl <mmyangfl@gmail.com>\n"
+"Language-Team:  <debian-l10n-chinese@lists.debian.org>\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"PO-Revision-Date: 2018-08-07 18:40+0800\n"
+"X-Generator: Gtranslator 2.91.7\n"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:139
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:161
+msgid "-------"
+msgstr "-------"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:17
+msgid "Advanced"
+msgstr "高階"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:215
+msgid "Alternate Resolver List"
+msgstr "備用解析伺服器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:258
+msgid ""
+"Apply DNSCrypt-Proxy specific settings to the Dnsmasq configuration.<br />"
+msgstr "將特定於 DNSCrypt-Proxy 的設定應用到 Dnsmasq 配置。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:228
+msgid "Blacklist"
+msgstr "黑名單"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:233
+msgid "Block IPv6"
+msgstr "阻止 IPv6"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:169
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"'All' available network interfaces.<br />"
+msgstr ""
+"預設情況下,DNSCrypt-Proxy 啟動將由“All”所有可用網路介面的 ifup 事件觸發。"
+"<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:59
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "配置 DNSCrypt-Proxy 包。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:146
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances.<br />"
+msgstr ""
+"建立“/etc/resolv-crypt.conf”時使用“options timeout:1”選項,用多個 DNSCrypt 實"
+"例來減少 DNS 上游發生超時的情況。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:150
+msgid "Create Config File"
+msgstr "建立配置檔案"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:145
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:158
+msgid "Create Custom Config File"
+msgstr "建立自訂配置檔案"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:245
+msgid "DNS Query Logfile"
+msgstr "DNS 查詢日誌檔案"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:14
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:58
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:35
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "DNSCrypt-Proxy 日誌檔案"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:26
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy 解析伺服器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:102
+msgid "Default Resolver List"
+msgstr "預設解析伺服器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:234
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "禁用 IPv6 以加速 DNSCrypt-Proxy。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:254
+msgid "Dnsmasq Options"
+msgstr "Dnsmasq 選項"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:124
+msgid ""
+"Download the current resolver list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr "從“github.com/dyne/DNSCrypt-Proxy”下載當前的解析伺服器列表。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:18
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "編輯 DNSCrypt-Proxy 配置"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:19
+msgid "Edit Dnsmasq Configuration"
+msgstr "編輯 Dnsmasq 配置"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:20
+msgid "Edit Resolvcrypt Configuration"
+msgstr "編輯 Resolvcrypt 配置"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:240
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "啟用快取以加速 DNSCcrypt-Proxy。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:220
+msgid "Ephemeral Keys"
+msgstr "臨時金鑰"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:114
+msgid "File Checksum"
+msgstr "檔案校驗和"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:106
+msgid "File Date"
+msgstr "檔案日期"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:60
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:147
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr "詳細資訊請<a href=\"%s\" target=\"_blank\">檢視線上 wiki</a>"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:97
+msgid "General Options"
+msgstr "常規選項"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:189
+msgid "IP Address"
+msgstr "IP 位址"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:221
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr "每次查詢使用不同的臨時公鑰,以增強隱私。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:9
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:9
+msgid "Input file not found, please check your configuration."
+msgstr "未找到輸入檔案,請檢查您的配置。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:185
+msgid "Instance Options"
+msgstr "例項選項"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:239
+msgid "Local Cache"
+msgstr "本地快取"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:229
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr "本地黑名單,允許您按域名或 IP 位址攔截有害網站。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:246
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr "將收到的 DNS 查詢記錄到檔案中,以便您可以實時檢視網路上發生的情況。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:201
+msgid ""
+"Name of the remote DNS service for resolving queries incl. Location, DNSSEC- "
+"and NOLOG-Flag."
+msgstr "用於解析 DNS 查詢的遠端伺服器名稱,包括位置、DNSSEC- 和 NOLOG-Flag。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:137
+msgid "No SSL support available.<br />"
+msgstr "無 SSL 支援。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:21
+msgid "No default resolver list and no SSL support available.<br />"
+msgstr "無預設解析伺服器列表,也無 SSL 支援。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:15
+msgid "Overview"
+msgstr "概述"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:160
+msgid "Please edit the file manually in the 'Advanced' section."
+msgstr "請在“高階”部分中手動編輯檔案。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:138
+msgid ""
+"Please install a 'libustream-ssl' library to download the current resolver "
+"list from 'github.com/dyne/dnscrypt-proxy'."
+msgstr ""
+"要從“github.com/dyne/DNSCrypt-Proxy”下載當前的解析伺服器列表,請安"
+"裝“libustream-ssl”庫。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:22
+msgid ""
+"Please install a resolver list to '/usr/share/dnscrypt-proxy/dnscrypt-"
+"resolvers.csv' to use this package."
+msgstr ""
+"要使用此程式,請將解析伺服器列表放到“/usr/share/DNSCrypt-Proxy/dnscrypt-"
+"resolvers.csv”。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:259
+msgid ""
+"Please note: This may change the values for 'noresolv', 'resolvfile', "
+"'allservers' and the list 'server' settings."
+msgstr ""
+"請注意:這可能會更改“noresolv”、“resolvfile”、“allservers”和“server”列表的設"
+"置值。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:194
+msgid "Port"
+msgstr "埠"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:125
+msgid "Refresh List"
+msgstr "重新整理列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:123
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:136
+msgid "Refresh Resolver List"
+msgstr "重新整理解析伺服器列表"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:200
+msgid "Resolver (LOC/SEC/NOLOG)"
+msgstr "解析伺服器(LOC/SEC/NOLOG)"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:17
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:17
+msgid "Save"
+msgstr "儲存"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:216
+msgid "Specify a non-default Resolver List."
+msgstr "指定非預設的解析伺服器列表。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:168
+msgid "Startup Trigger"
+msgstr "啟動觸發器"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:159
+msgid "The config file '/etc/resolv-crypt.conf' already exist.<br />"
+msgstr "配置檔案“/etc/resolv-crypt.conf”已經存在。<br />"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:195
+msgid "The listening port for DNS queries."
+msgstr "DNS 查詢的監聽埠。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:190
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr "本地 IPv4 或 IPv6 位址。後者應用方括號括起,如“[::1]”。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:230
+msgid ""
+"The value for this property is the blocklist type and path to the file, e."
+"g.'domains:/path/to/dbl.txt' or 'ips:/path/to/ipbl.txt'."
+msgstr ""
+"此屬性的值是攔截列表的型別和檔案的路徑,例如“domains:/path/to/dbl."
+"txt”或“ips:/path/to/ipbl.txt”。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+"此表單允許您修改主 DNSCrypt-Proxy 配置檔案(/etc/config/dnscrypt-proxy)的內"
+"容。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr "此表單允許您修改主 Dnsmasq 配置檔案(/etc/config/dhcp)的內容。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_resolvcrypt_tab.lua:21
+msgid ""
+"This form allows you to modify the content of the resolv-crypt configuration "
+"file (/etc/resolv-crypt.conf)."
+msgstr ""
+"此表單允許您修改 resolv-crypt 配置檔案(/etc/resolv-crypt.conf)的內容。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm:10
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr "此表單顯示當前 DNSCrypt 的解析伺服器列表。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm:10
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr "此表單顯示 syslog 輸出,僅針對 DNSCrypt-Proxy 相關訊息進行預過濾。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:222
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr "此選項需要額外的 CPU 週期,對大多數 DNSCrypt 伺服器都沒用。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:170
+msgid ""
+"To restrict the trigger, select only the relevant network interface. Usually "
+"the 'wan' interface should work for most users."
+msgstr ""
+"要限制觸發器,請只選擇相關的網路介面。通常,“wan”介面應該適用於大多數使用者。"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua:257
+msgid "Transfer Options To Dnsmasq"
+msgstr "轉移選項到 Dnsmasq "
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:16
+msgid "View Logfile"
+msgstr "檢視日誌檔案"
+
+#: applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua:21
+msgid "View Resolver List"
+msgstr "檢視解析伺服器列表"
diff --git a/luci/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy b/luci/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy
new file mode 100755 (executable)
index 0000000..ec4da17
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+uci -q batch <<-EOF >/dev/null
+       delete ucitrack.@dnscrypt-proxy[-1]
+       add ucitrack dnscrypt-proxy
+       set ucitrack.@dnscrypt-proxy[-1].init=dnscrypt-proxy
+       commit ucitrack
+EOF
+
+rm -f /tmp/luci-indexcache
+exit 0
diff --git a/net/dnscrypt-proxy/Config.in b/net/dnscrypt-proxy/Config.in
new file mode 100755 (executable)
index 0000000..50d09af
--- /dev/null
@@ -0,0 +1,8 @@
+menu "Configuration"
+       depends on PACKAGE_dnscrypt-proxy
+
+config DNSCRYPT_ENABLE_PLUGINS
+       bool "Enable plugin support (includes libldns and plugins, increases size by 125kB)"
+       default n
+
+endmenu
diff --git a/net/dnscrypt-proxy/Makefile b/net/dnscrypt-proxy/Makefile
new file mode 100644 (file)
index 0000000..9bbfa8a
--- /dev/null
@@ -0,0 +1,129 @@
+#
+# Copyright (C) 2018 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=dnscrypt-proxy
+PKG_SOURCE_DATE:=2019-08-20
+PKG_SOURCE_VERSION:=07ac3825b5069adc28e2547c16b1d983a8ed8d80
+PKG_RELEASE:=1
+
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_URL:=https://github.com/dyne/dnscrypt-proxy
+PKG_MIRROR_HASH:=c5c074f52732f14f026002bc48bdffcf0b212092de5798120209b2e6b65fc3e6
+
+PKG_MAINTAINER:=Damiano Renfer <damiano.renfer@gmail.com>
+PKG_LICENSE:=ISC
+PKG_LICENSE_FILES:=COPYING
+
+PKG_FIXUP:=autoreconf
+PKG_INSTALL:=1
+PKG_BUILD_PARALLEL:=1
+PKG_CONFIG_DEPENDS:= \
+       CONFIG_DNSCRYPT_ENABLE_PLUGINS
+
+include $(INCLUDE_DIR)/package.mk
+
+define Package/dnscrypt-proxy/Default
+  SECTION:=net
+  CATEGORY:=Network
+  SUBMENU:=IP Addresses and Names
+  URL:=https://github.com/dyne/dnscrypt-proxy
+endef
+
+define Package/dnscrypt-proxy
+  $(call Package/dnscrypt-proxy/Default)
+  DEPENDS:=+libsodium +dnscrypt-proxy-resolvers +DNSCRYPT_ENABLE_PLUGINS:libltdl \
+       +DNSCRYPT_ENABLE_PLUGINS:libldns
+  TITLE:=A tool for securing communications between a client and a DNS resolver
+endef
+
+define Package/dnscrypt-proxy/description
+  dnscrypt-proxy provides local service which can be used directly as your
+  local resolver or as a DNS forwarder, encrypting and authenticating requests
+  using the DNSCrypt protocol and passing them to an upstream server.
+  The DNSCrypt protocol uses high-speed high-security elliptic-curve cryptography
+  and is very similar to DNSCurve, but focuses on securing communications between
+  a client and its first-level resolver.
+endef
+
+define Package/dnscrypt-proxy-resolvers
+  $(call Package/dnscrypt-proxy/Default)
+  TITLE:=Package with current list of dnscrypt-proxy resolvers
+endef
+
+define Package/dnscrypt-proxy-resolvers/description
+  Package with current list of dnscrypt-proxy resolvers.
+endef
+
+define Package/hostip
+  $(call Package/dnscrypt-proxy/Default)
+  DEPENDS:=+libsodium
+  TITLE:=Resolver to IPv4 or IPv6 addresses
+endef
+
+define Package/hostip/description
+  The DNSCrypt proxy ships with a simple tool named hostip that resolves a name
+  to IPv4 or IPv6 addresses.
+endef
+
+define Package/dnscrypt-proxy/config
+       source "$(SOURCE)/Config.in"
+endef
+
+define Build/Configure
+       $(call Build/Configure/Default, \
+       --prefix=/usr \
+       --disable-ssp \
+       $(if $(CONFIG_DNSCRYPT_ENABLE_PLUGINS),,--disable-plugins) \
+       )
+endef
+
+TARGET_CFLAGS += \
+       -fomit-frame-pointer \
+       -fdata-sections \
+       -ffunction-sections
+
+TARGET_LDFLAGS += \
+       -Wl,-gc-sections
+
+MAKE_FLAGS += \
+       CFLAGS="$(TARGET_CFLAGS)" \
+       LDFLAGS="$(TARGET_LDFLAGS)"
+
+define Package/dnscrypt-proxy/install
+       $(INSTALL_DIR) $(1)/usr/sbin
+       $(CP) $(PKG_INSTALL_DIR)/usr/sbin/dnscrypt-proxy $(1)/usr/sbin/
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/dnscrypt-proxy.init $(1)/etc/init.d/dnscrypt-proxy
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/dnscrypt-proxy.config $(1)/etc/config/dnscrypt-proxy
+       $(if $(CONFIG_DNSCRYPT_ENABLE_PLUGINS), \
+               $(INSTALL_DIR) $(1)/usr/lib/dnscrypt-proxy; \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/dnscrypt-proxy/libdcplugin_example_cache.so $(1)/usr/lib/dnscrypt-proxy/; \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/dnscrypt-proxy/libdcplugin_example_ldns_aaaa_blocking.so $(1)/usr/lib/dnscrypt-proxy/; \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/dnscrypt-proxy/libdcplugin_example_ldns_blocking.so $(1)/usr/lib/dnscrypt-proxy/; \
+               $(CP) $(PKG_INSTALL_DIR)/usr/lib/dnscrypt-proxy/libdcplugin_example_logging.so $(1)/usr/lib/dnscrypt-proxy/)
+endef
+
+define Package/dnscrypt-proxy-resolvers/install
+       $(INSTALL_DIR) $(1)/usr/share/dnscrypt-proxy
+       $(CP) ./files/dnscrypt-resolvers.csv $(1)/usr/share/dnscrypt-proxy/
+endef
+
+define Package/dnscrypt-proxy/conffiles
+/etc/config/dnscrypt-proxy
+endef
+
+define Package/hostip/install
+       $(INSTALL_DIR) $(1)/usr/bin
+       $(CP) $(PKG_INSTALL_DIR)/usr/bin/hostip $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,dnscrypt-proxy))
+$(eval $(call BuildPackage,dnscrypt-proxy-resolvers))
+$(eval $(call BuildPackage,hostip))
diff --git a/net/dnscrypt-proxy/files/dnscrypt-proxy.config b/net/dnscrypt-proxy/files/dnscrypt-proxy.config
new file mode 100644 (file)
index 0000000..635422a
--- /dev/null
@@ -0,0 +1,35 @@
+config global
+       # start dnscrypt-proxy from procd interface trigger rather than immediately in init
+       # if needed you can restrict trigger to certain interface(s)
+       # list procd_trigger 'wan'
+       # list procd_trigger 'wan6'
+
+config dnscrypt-proxy ns1
+       option address '127.0.0.1'
+       option port '5353'
+       option resolver 'fvz-anyone'
+       # more details about the following options can be found in:
+       #    https://github.com/dyne/dnscrypt-proxy/blob/master/dnscrypt-proxy.conf
+       # option resolvers_list '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv'
+       # ephemeral keys option requires extra CPU cycles and can cause huge system load
+       # option ephemeral_keys '0'
+       # option client_key '/path/to/client_key'
+       # option log_level '6'
+       # option syslog '1'
+       # option syslog_prefix 'dnscrypt-proxy'
+       # option query_log_file '/path/to/logfile'
+       # enable cache may speed up dnscrypt-proxy
+       # option local_cache '0'
+       # disable IPv6 may also speed up dnscrypt-proxy
+       # option block_ipv6 '0'
+       # Blacklists allow you to block domains, ip, ...
+       # list blacklist 'domains:/path/to/domains-blacklist-file.txt'
+       # list blacklist 'domains:/path/to/domains-blacklist2-file.txt'
+
+#      config dnscrypt-proxy ns2
+#              option address '127.0.0.1'
+#              option port '5454'
+#              # option resolver 'd0wn-random-ns1'
+#              # option resolvers_list '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv'
+#              # option ephemeral_keys '0'
+#              # option client_key ''
diff --git a/net/dnscrypt-proxy/files/dnscrypt-proxy.init b/net/dnscrypt-proxy/files/dnscrypt-proxy.init
new file mode 100644 (file)
index 0000000..7df6b22
--- /dev/null
@@ -0,0 +1,167 @@
+#!/bin/sh /etc/rc.common
+
+# Startup before dnsmasq
+START=18
+USE_PROCD=1
+PROG=/usr/sbin/dnscrypt-proxy
+CONFIG_DIR=/var/etc
+USER=nobody
+
+boot() {
+    dnscrypt_boot=1
+    rc_procd start_service
+}
+
+dnscrypt_instance() {
+    local config_path="$CONFIG_DIR/dnscrypt-proxy-$1.conf"
+    create_config_file $1 "$config_path"
+
+    procd_open_instance
+    procd_set_param command $PROG "$config_path"
+    procd_close_instance
+}
+
+create_config_file() {
+    local address port resolver resolvers_list ephemeral_keys client_key log_level syslog syslog_prefix local_cache query_log_file block_ipv6 provider_name provider_key resolver_address
+    local config_path="$2"
+    local plugins_support_enabled=$(dnscrypt-proxy --version | grep 'Support for plugins: present' | wc -l)
+
+    [ ! -d "$CONFIG_DIR" ] && mkdir -p "$CONFIG_DIR"
+    [ -f "$config_path" ] && rm "$config_path"
+
+    config_get      address         $1 'address'        '127.0.0.1'
+    config_get      port            $1 'port'           '5353'
+    config_get      resolver        $1 'resolver'       ''
+    config_get      provider_name   $1 'providername'   ''
+    config_get      provider_key    $1 'providerkey'    ''
+    config_get      resolver_address $1 'resolveraddress'    ''
+    config_get      resolvers_list  $1 'resolvers_list' '/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv'
+    config_get      client_key      $1 'client_key'     ''
+    config_get      syslog_prefix   $1 'syslog_prefix'  'dnscrypt-proxy'
+    config_get      query_log_file  $1 'query_log_file' ''
+    config_get      log_level       $1 'log_level'      '6'
+    config_get      blacklist       $1 'blacklist'      ''
+    config_get_bool syslog          $1 'syslog'         '1'
+    config_get_bool ephemeral_keys  $1 'ephemeral_keys' '0'
+    config_get_bool local_cache     $1 'local_cache'    '0'
+    config_get_bool block_ipv6      $1 'block_ipv6'     '0'
+
+    append_param_not_empty  "ResolverName"  "$resolver"         $config_path
+    append_param            "ResolversList" "$resolvers_list"   $config_path
+    append_param_not_empty  "ProviderName"  "$provider_name"    $config_path
+    append_param_not_empty  "ProviderKey"   "$provider_key"     $config_path
+    append_param_not_empty  "ResolverAddress" "$resolver_address" $config_path
+    append_param            "User"          "$USER"             $config_path
+    append_param            "LocalAddress"  "$address:$port"    $config_path
+    append_param_not_empty  "ClientKey"     "$client_key"       $config_path
+    append_on_off           "EphemeralKeys" $ephemeral_keys     $config_path
+    append_param            "LogLevel"      "$log_level"        $config_path
+    append_on_off           "Syslog"        $syslog             $config_path
+    append_param            "SyslogPrefix"  "$syslog_prefix"    $config_path
+    append_on_off           "LocalCache"    $local_cache        $config_path
+    append_param_not_empty  "QueryLogFile"  "$query_log_file"   $config_path
+
+    if [ $plugins_support_enabled -ne 0 ] && [ $block_ipv6 -ne 0 ]
+    then
+        append_yes_no "BlockIPv6" $block_ipv6 $config_path
+    elif [ $block_ipv6 -ne 0 ]
+    then
+        log_ignored_param "block_ipv6"
+    fi
+
+    if [ $plugins_support_enabled -ne 0 ] && [ -n "$blacklist" ]
+    then
+        config_list_foreach $1 'blacklist' append_blacklists $config_path
+    elif [ -n "$blacklist" ]
+    then
+        log_ignored_param "blacklist"
+    fi
+}
+
+log_ignored_param() {
+    local param_name=$1
+    logger -t dnscrypt-proxy -p user.warn "dnscrypt-proxy plugins support not present, ignoring '$param_name' parameter."
+}
+
+append_on_off() {
+    local param_name=$1
+    local param_value=$2
+    local config_path=$3
+    local value
+
+    if [ $param_value -eq 1 ]
+    then
+        value="on"
+    else
+        value="off"
+    fi
+
+    echo "$param_name $value" >> $config_path
+}
+
+append_yes_no() {
+    local param_name=$1
+    local param_value=$2
+    local config_path=$3
+    local value
+
+    if [ $param_value -eq 1 ]
+    then
+        value="yes"
+    else
+        value="no"
+    fi
+
+    echo "$param_name $value" >> $config_path
+}
+
+append_param() {
+    local param_name=$1
+    local param_value=$2
+    local config_path=$3
+       
+    echo "$param_name $param_value" >> $config_path
+}
+
+append_param_not_empty() {
+    local param_name=$1
+    local param_value=$2
+    local config_path=$3
+
+    if [ ! -z "$param_value" -a "$param_value" != " " ]
+    then
+        append_param "$param_name" "$param_value" "$config_path"
+    fi
+}
+
+append_blacklists() {
+    local value="$1"
+    local config_path="$2"
+    append_param_not_empty "BlackList" "$value" $config_path
+}
+
+start_service() {
+    if [ -n "${dnscrypt_boot}" ]
+    then
+        return 0
+    fi
+    config_load dnscrypt-proxy
+    config_foreach dnscrypt_instance dnscrypt-proxy
+}
+
+service_triggers() {
+    local trigger
+    local triggerlist="$(uci_get dnscrypt-proxy.@global[0].procd_trigger)"
+
+    PROCD_RELOAD_DELAY=2000
+    if [ -n "${triggerlist}" ]
+    then
+        for trigger in ${triggerlist}
+        do
+            procd_add_interface_trigger "interface.*.up" "${trigger}" /etc/init.d/dnscrypt-proxy reload
+        done
+    else
+        procd_add_raw_trigger "interface.*.up" 2000 /etc/init.d/dnscrypt-proxy reload
+    fi
+    procd_add_reload_trigger 'dnscrypt-proxy'
+}
diff --git a/net/dnscrypt-proxy/files/dnscrypt-resolvers.csv b/net/dnscrypt-proxy/files/dnscrypt-resolvers.csv
new file mode 100644 (file)
index 0000000..de8feb5
--- /dev/null
@@ -0,0 +1,107 @@
+Name,"Full name","Description","Location","Coordinates",URL,Version,DNSSEC validation,No logs,Namecoin,Resolver address,Provider name,Provider public key,Provider public key TXT record
+adguard-dns-family-ns1,"Adguard DNS Family Protection 1","Adguard DNS with safesearch and adult content blocking","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.132:5443,2.dnscrypt.family.ns1.adguard.com,B831:5DD7:B14B:6EE3:20A4:70DC:2ED6:B1AA:398C:C9E5:86F8:5D45:45D6:B8C9:B500:5ABA,pk.family.ns1.adguard.com
+adguard-dns-family-ns2,"Adguard DNS Family Protection 2","Adguard DNS with safesearch and adult content blocking","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.134:5443,2.dnscrypt.family.ns2.adguard.com,8C21:17A9:EBC1:57D6:FB64:056F:0ADB:C11C:5D83:6734:73C4:6E25:8D9B:2F57:D4EE:351F,pk.family.ns2.adguard.com
+adguard-dns-ns1,"Adguard DNS 1","Remove ads and protect your computer from malware","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.130:5443,2.dnscrypt.default.ns1.adguard.com,D12B:47F2:52DC:F2C2:BBF8:9910:86EA:F79C:E449:5D8B:16C8:A0C4:322E:52CA:3F39:0873,pk.default.ns1.adguard.com
+adguard-dns-ns2,"Adguard DNS 2","Remove ads and protect your computer from malware","Anycast","",https://adguard.com/en/adguard-dns/overview.html,1,no,yes,no,176.103.130.131:5443,2.dnscrypt.default.ns2.adguard.com,81D0:02D3:6A4C:A50C:473B:7479:650F:E12E:02B3:21CB:6138:562A:208E:403D:FDC5:5E94,pk.default.ns2.adguard.com
+bikinhappy-sg,"BikinHappy Singapore","provided by bikinhappy.com","Singapore","",http://dns.bikinhappy.com,1,yes,yes,no,172.104.46.253:443,2.dnscrypt-cert.dns.bikinhappy.com,7167:91A0:745E:17ED:1E73:D426:C697:E8DF:EE4B:476B:149F:8449:62DD:4615:BD71:5C70,
+bn-fr0,"Babylon Network France 0","Non-logging, uncensored DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,5.135.66.222:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr0.dnscrypt.babylon.network
+bn-fr0-ipv6,"Babylon Network France 0 (IPv6)","Non-logging, uncensored IPv6 DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,[2001:41d0:8:4480::222]:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr0.dnscrypt.babylon.network
+bn-fr1,"Babylon Network France 1","Non-logging, uncensored DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,164.132.130.171:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr1.dnscrypt.babylon.network
+bn-fr1-ipv6,"Babylon Network France 1 (IPv6)","Non-logging, uncensored IPv6 DNS resolver provided by Babylon Network","Roubaix, France","",https://babylon.network,1,no,yes,no,[2001:41d0:1:82b5::171]:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.fr1.dnscrypt.babylon.network
+bn-nl0,"Babylon Network Netherlands 0","Non-logging, uncensored DNS resolver provided by Babylon Network","Amsterdam, The Netherlands","",https://babylon.network,1,no,yes,no,87.253.152.190:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.nl0.dnscrypt.babylon.network
+bn-nl0-ipv6,"Babylon Network Netherlands 0 (IPv6)","Non-logging, uncensored IPv6 DNS resolver provided by Babylon Network","Amsterdam, The Netherlands","",https://babylon.network,1,no,yes,no,[2a01:7c8:c020:3::190]:5353,2.dnscrypt-cert.babylon.network,8794:070A:143D:35CA:1CA6:32E7:B189:3028:4EAE:5DAF:EBB4:01E3:DF52:E9F0:37AB:D182,pk.nl0.dnscrypt.babylon.network
+cisco,"Cisco OpenDNS","Remove your DNS blind spot","Anycast","",https://www.opendns.com,1,no,no,no,208.67.220.220,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,
+cisco-familyshield,"Cisco OpenDNS with FamilyShield","Block websites not suitable for children","Anycast","",https://www.opendns.com/home-internet-security/parental-controls/,1,no,no,no,208.67.220.123,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,
+cisco-ipv6,"Cisco OpenDNS over IPv6","Cisco OpenDNS IPv6 sandbox","Anycast","",https://www.opendns.com/about/innovations/ipv6/,1,no,no,no,[2620:0:ccc::2]:443,2.dnscrypt-cert.opendns.com,B735:1140:206F:225D:3E2B:D822:D7FD:691E:A1C3:3CC8:D666:8D0C:BE04:BFAB:CA43:FB79,
+cpunks-ru,"Cypherpunks.ru","Cypherpunks.ru public DNS server",Russia,,http://www.cypherpunks.ru/DNSCrypt.html,1,no,yes,no,77.51.181.209:5353,2.dnscrypt-cert.cypherpunks.ru,1838:CCA3:D953:0A66:3433:5D50:05BD:3758:44E3:977E:E868:2B6C:5528:12BD:A78D:2E99,
+cs-caeast,"CS Canada east DNSCrypt server","provided by cryptostorm.is","Montreal, CA",,"https://cryptostorm.is",1,"no","yes","yes",167.114.84.132:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-cawest,"CS Canada west DNSCrypt server","provided by cryptostorm.is","Vancouver, CA",,"https://cryptostorm.is",1,"no","yes","yes",162.221.207.228:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-cfi,"CS cryptofree France DNSCrypt server","provided by cryptostorm.is","Paris, France",,"https://cryptostorm.is",1,"no","yes","yes",212.83.175.31:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-cfii,"CS secondary cryptofree France DNSCrypt server","provided by cryptostorm.is","Paris, France",,"https://cryptostorm.is",1,"no","yes","yes",23.105.70.204:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-ch,"CS Switzerland DNSCrypt server","provided by cryptostorm.is","Baar, Switzerland",,"https://cryptostorm.is",1,"no","yes","yes",185.60.147.77:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-de,"CS Frankfurt, DE DNSCrypt server","provided by cryptostorm.is","Frankfurt, Germany",,"https://cryptostorm.is",1,"no","yes","yes",84.16.240.43:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-de3,"CS Dusseldorf, DE DNSCrypt server","provided by cryptostorm.is","Dusseldorf, Germany",,"https://cryptostorm.is",1,"no","yes","yes",89.163.214.174:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-dk,"CS Denmark DNSCrypt server","provided by cryptostorm.is","Copenhagen, Denmark",,"https://cryptostorm.is",1,"no","yes","yes",82.103.131.172:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-dk2,"CS secondary Denmark DNSCrypt server","provided by cryptostorm.is","Copenhagen, Denmark",,"https://cryptostorm.is",1,"no","yes","yes",185.212.169.139:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-es,"CS Spain DNSCrypt server","provided by cryptostorm.is","Valencia, Spain",,"https://cryptostorm.is",1,"no","yes","yes",185.140.114.51:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-fi,"CS Finland DNSCrypt server","provided by cryptostorm.is","Helsinki, Finland",,"https://cryptostorm.is",1,"no","yes","yes",185.117.118.20:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-fr,"CS France DNSCrypt server","provided by cryptostorm.is","Paris, France",,"https://cryptostorm.is",1,"no","yes","yes",212.129.46.86:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-fr2,"CS secondary France DNSCrypt server","provided by cryptostorm.is","Paris, France",,"https://cryptostorm.is",1,"no","yes","yes",212.129.46.32:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-lt,"CS Lithuania DNSCrypt server","provided by cryptostorm.is","Vilnius, Lithuania",,"https://cryptostorm.is",1,"no","yes","yes",46.166.170.10:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-lv,"CS Latvia DNSCrypt server","provided by cryptostorm.is","Riga, Latvia",,"https://cryptostorm.is",1,"no","yes","yes",80.233.134.52:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-md,"CS Moldova DNSCrypt server","provided by cryptostorm.is","Chisinau, Moldova",,"https://cryptostorm.is",1,"no","yes","yes",176.123.3.249:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-nl,"CS Netherlands DNSCrypt server","provided by cryptostorm.is","Rotterdam, Netherlands",,"https://cryptostorm.is",1,"no","yes","yes",213.163.64.208:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-pl,"CS Poland DNSCrypt server","provided by cryptostorm.is","Warsaw, Poland",,"https://cryptostorm.is",1,"no","yes","yes",5.133.8.187:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-pt,"CS Portugal DNSCrypt server","provided by cryptostorm.is","Lisbon, Portugal",,"https://cryptostorm.is",1,"no","yes","yes",109.71.42.228:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-ro,"CS Romania DNSCrypt server","provided by cryptostorm.is","Romania",,"https://cryptostorm.is",1,"no","yes","yes",5.254.96.195:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-rome,"CS Italy DNSCrypt server","provided by cryptostorm.is","Rome, Italy",,"https://cryptostorm.is",1,"no","yes","yes",185.94.193.234:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-uk,"CS England DNSCrypt server","provided by cryptostorm.is","Rugby, England",,"https://cryptostorm.is",1,"no","yes","yes",5.101.137.251:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-useast,"CS New York City NY US DNSCrypt server","provided by cryptostorm.is","Buffalo, NY",,"https://cryptostorm.is",1,"no","yes","yes",173.234.159.235:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-useast2,"CS Washington DC US DNSCrypt server","provided by cryptostorm.is","Washington, DC",,"https://cryptostorm.is",1,"no","yes","yes",198.7.58.227:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-usnorth,"CS Chicago IL US DNSCrypt server","provided by cryptostorm.is","Chicago, IL",,"https://cryptostorm.is",1,"no","yes","yes",173.234.56.115:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-ussouth,"CS Dallas TX US DNSCrypt server","provided by cryptostorm.is","Dallas, TX",,"https://cryptostorm.is",1,"no","yes","yes",70.32.38.67:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-ussouth2,"CS Atlanta GA US DNSCrypt server","provided by cryptostorm.is","Atlanta, GA",,"https://cryptostorm.is",1,"no","yes","yes",108.62.19.131:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-uswest,"CS Seattle WA US DNSCrypt server","provided by cryptostorm.is","Seattle, WA",,"https://cryptostorm.is",1,"no","yes","yes",64.120.5.251:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-uswest3,"CS secondary Las Vegas NV US DNSCrypt server","provided by cryptostorm.is","Las Vegas, NV",,"https://cryptostorm.is",1,"no","yes","yes",104.238.195.139:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+cs-uswest5,"CS Los Angeles CA US DNSCrypt server","provided by cryptostorm.is","Los Angeles, CA",,"https://cryptostorm.is",1,"no","yes","yes",173.208.95.75:443,2.dnscrypt-cert.cryptostorm.is,3133:72AD:5956:32C2:416B:872F:098F:851B:DDB9:6528:4C6C:BE9A:4F19:0964:30DB:A95A,
+d0wn-at-ns1,"D0wn Resolver Austria 01","Server provided by Martin 'd0wn' Albus","Austria","",https://dns.d0wn.biz,1,yes,yes,no,79.133.33.52,2.dnscrypt-cert.at.d0wn.biz,717E:5DF4:1841:CD4B:D92E:CE16:ECCC:443D:B305:B03D:86E6:69B7:4AC1:FBB6:18D0:2BB4,pubkey.at.dnscrypt.d0wn.biz
+d0wn-cz-ns1,"D0wn Resolver Czech Republic 01","Server provided by Martin 'd0wn' Albus","Czech Republic","",https://dns.d0wn.biz,1,yes,yes,no,81.2.237.32,2.dnscrypt-cert.cz.d0wn.biz,EE21:5055:4DA0:1367:BAC3:768A:7C1E:24BF:D777:ACD5:77A4:44F8:BDF3:84E0:5966:D855,pubkey.cz.dnscrypt.d0wn.biz
+d0wn-de-ns1,"D0wn Resolver Germany 01","Server provided by Martin 'd0wn' Albus","Germany","",https://dns.d0wn.biz,1,yes,yes,no,82.211.31.248,2.dnscrypt-cert.de.d0wn.biz,B040:19F8:8D49:4682:41E3:EB58:5F61:173F:EF8E:55DA:0597:2DB7:27BB:C153:1DD8:D109,pubkey.de.dnscrypt.d0wn.biz
+d0wn-de-ns1-ipv6,"D0wn Resolver Germany 01 over IPv6","Server provided by Martin 'd0wn' Albus","Germany","",https://dns.d0wn.biz,1,yes,yes,no,[2001:1608:10:195:3:dead:beef:cafe]:443,2.dnscrypt-cert.de.d0wn.biz,B040:19F8:8D49:4682:41E3:EB58:5F61:173F:EF8E:55DA:0597:2DB7:27BB:C153:1DD8:D109,pubkey.de.dnscrypt.d0wn.biz
+d0wn-es-ns1,"D0wn Resolver Spain 01","Server provided by Martin 'd0wn' Albus","Spain","",https://dns.d0wn.biz,1,yes,yes,no,91.142.220.29,2.dnscrypt-cert.es.d0wn.biz,EB09:E854:AEDA:9705:CB47:ED69:EADD:4156:3653:82C5:C88D:A2E3:6917:3B54:4774:7505,pubkey.es.dnscrypt.d0wn.biz
+d0wn-fr-ns1,"D0wn Resolver France 01","Server provided by Martin 'd0wn' Albus","France","",https://dns.d0wn.biz,1,yes,yes,no,151.80.7.115:1053,2.dnscrypt-cert.fr.d0wn.biz,58A8:22D3:29EB:C14F:BCEB:45AF:42EB:2F58:C797:0AD3:ED31:397D:1D34:8636:2375:7251,pubkey.fr.dnscrypt.d0wn.biz
+d0wn-fr-ns2,"D0wn Resolver France 02","Server provided by Martin 'd0wn' Albus","France","",https://dns.d0wn.biz,1,yes,yes,no,37.187.0.40,2.dnscrypt-cert.fr2.d0wn.biz,25A7:DB7B:7835:55D5:7DA4:7C0C:57F8:9C5F:0220:3D09:67E3:585A:723E:E0D1:CB38:F767,pubkey.fr2.dnscrypt.d0wn.biz
+d0wn-fr-ns2-ipv6,"D0wn Resolver France 02 over IPv6","Server provided by Martin 'd0wn' Albus","France","",https://dns.d0wn.biz,1,yes,yes,no,[2001:41D0:A:0028::1]:443,2.dnscrypt-cert.fr2.d0wn.biz,25A7:DB7B:7835:55D5:7DA4:7C0C:57F8:9C5F:0220:3D09:67E3:585A:723E:E0D1:CB38:F767,pubkey.fr2.dnscrypt.d0wn.biz
+d0wn-gr-ns1,"D0wn Resolver Greece 01","Server provided by Martin 'd0wn' Albus","Greece","",https://dns.d0wn.biz,1,yes,yes,no,85.25.105.193,2.dnscrypt-cert.gr.d0wn.biz,B19C:0B5C:48F2:58FA:0BE4:67F4:5F50:BC7F:985F:C544:8A4F:BC9D:5574:5A35:5701:8009,pubkey.gr.dnscrypt.d0wn.biz
+d0wn-id-ns1,"D0wn Resolver Indonesia 01","Server provided by Martin 'd0wn' Albus","Indonesia","",https://dns.d0wn.biz,1,yes,yes,no,45.114.118.195,2.dnscrypt-cert.id.d0wn.biz,BE93:B3F1:2A3B:2448:8F33:F91F:9461:5F73:D5CA:56D6:C789:96DE:7A18:D4DE:5182:094D,pubkey.id.dnscrypt.d0wn.biz
+d0wn-is-ns1,"D0wn Resolver Iceland 01","Server provided by Martin 'd0wn' Albus","Iceland","",https://dns.d0wn.biz,1,yes,yes,no,37.235.49.61,2.dnscrypt-cert.is.d0wn.biz,2B28:974E:073A:6B38:722A:5BE1:F7A0:250C:508F:A809:238F:8F3D:76D8:6098:20D7:B2D9,pubkey.is.dnscrypt.d0wn.biz
+d0wn-is-ns2,"D0wn Resolver Iceland 02","Server provided by Martin 'd0wn' Albus","Iceland","",https://dns.d0wn.biz,1,yes,yes,no,93.95.226.165,2.dnscrypt-cert.is2.d0wn.biz,8460:34A9:C630:CA3C:04AC:4A90:1625:F17A:87B2:ACB9:4180:AC48:1E2C:10E8:CEDE:1A6F,pubkey.is2.dnscrypt.d0wn.biz
+d0wn-it-ns1,"D0wn Resolver Italy 01","Server provided by Martin 'd0wn' Albus","Italy","",https://dns.d0wn.biz,1,yes,yes,no,31.14.133.188,2.dnscrypt-cert.it.d0wn.biz,2DEC:CEF8:A4D0:57DE:0D1A:CE8E:0A3C:BEB8:2135:61A8:BF0E:7373:0BA0:EC38:C876:3B50,pubkey.it.dnscrypt.d0wn.biz
+d0wn-lv-ns1,"D0wn Resolver Latvia 01","Server provided by Martin 'd0wn' Albus","Latvia","",https://dns.d0wn.biz,1,yes,yes,no,89.111.13.60,2.dnscrypt-cert.lv.d0wn.biz,9AC3:6B4C:7ADB:E7D6:D697:B6BF:151C:151A:B291:8C5D:B912:15F8:B986:5926:33A4:A5E1,pubkey.lv.dnscrypt.d0wn.biz
+d0wn-lv-ns2,"D0wn Resolver Latvia 02","Server provided by Martin 'd0wn' Albus","Latvia","",https://dns.d0wn.biz,1,yes,yes,no,185.86.151.28,2.dnscrypt-cert.lv2.d0wn.biz,B111:F80C:E3E0:1C36:CC73:0995:009E:6351:EF08:0503:309D:9417:7AA3:8C67:916D:0CDF,pubkey.lv.dnscrypt.d0wn.biz
+d0wn-lv-ns2-ipv6,"D0wn Resolver Latvia 01 over IPv6","Server provided by Martin 'd0wn' Albus","Latvia","",https://dns.d0wn.biz,1,yes,yes,no,[2a02:7aa0:1201::f60e:2719]:443,2.dnscrypt-cert.lv2.d0wn.biz,B111:F80C:E3E0:1C36:CC73:0995:009E:6351:EF08:0503:309D:9417:7AA3:8C67:916D:0CDF,pubkey.lv.dnscrypt.d0wn.biz
+d0wn-md-ns1,"D0wn Resolver Moldova 01","Server provided by Martin 'd0wn' Albus","Moldova","",https://dns.d0wn.biz,1,yes,yes,no,178.17.170.67:1053,2.dnscrypt-cert.md.d0wn.biz,3DB2:C4CB:39E2:6B82:FDDF:6D91:1A65:D164:F4F0:D237:8CDD:0C37:469F:24BA:B9A0:F9FF,pubkey.md.dnscrypt.d0wn.biz
+d0wn-md-ns1-ipv6,"D0wn Resolver Moldova 01 over IPv6","Server provided by Martin 'd0wn' Albus","Moldova","",https://dns.d0wn.biz,1,yes,yes,no,[2a00:1dc0:cafe::ad86:fa7e]:1053,2.dnscrypt-cert.md.d0wn.biz,3DB2:C4CB:39E2:6B82:FDDF:6D91:1A65:D164:F4F0:D237:8CDD:0C37:469F:24BA:B9A0:F9FF,pubkey.md.dnscrypt.d0wn.biz
+d0wn-mx-ns1,"D0wn Resolver Mexico 01","Server provided by Martin 'd0wn' Albus","Mexico","",https://dns.d0wn.biz,1,yes,yes,no,201.131.126.212,2.dnscrypt-cert.mx.d0wn.biz,999E:63F0:0DE7:C171:3A72:5625:2A3F:097B:EC3A:D28F:BE28:7569:5C37:E80D:3D55:4FD0,pubkey.mx.dnscrypt.d0wn.biz
+d0wn-nl-ns1,"D0wn Resolver Netherlands 01","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,95.85.9.86:1053,2.dnscrypt-cert.nl.d0wn.biz,7BE6:68FE:A505:FFA7:4C27:C2CA:F881:59DA:038C:5741:13AA:2556:A4D2:2D0B:B6F0:009E,pubkey.nl.dnscrypt.d0wn.biz
+d0wn-nl-ns1-ipv6,"D0wn Resolver Netherlands 01 over IPv6","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,[2a03:b0c0:0:1010::62:f001]:1053,2.dnscrypt-cert.nl.d0wn.biz,7BE6:68FE:A505:FFA7:4C27:C2CA:F881:59DA:038C:5741:13AA:2556:A4D2:2D0B:B6F0:009E,pubkey.nl.dnscrypt.d0wn.biz
+d0wn-nl-ns2,"D0wn Resolver Netherlands 02","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,185.83.217.248:1053,2.dnscrypt-cert.nl2.d0wn.biz,DFAA:B7D8:29E6:1F34:4FED:2610:4221:70C9:ADC7:7E9F:A65F:4A46:0BAE:A735:3186:3B99,pubkey.nl2.dnscrypt.d0wn.biz
+d0wn-nl-ns2-ipv6,"D0wn Resolver Netherlands 02 over IPv6","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,[2a02:2ca0:64:22::2]:1053,2.dnscrypt-cert.nl2.d0wn.biz,DFAA:B7D8:29E6:1F34:4FED:2610:4221:70C9:ADC7:7E9F:A65F:4A46:0BAE:A735:3186:3B99,pubkey.nl2.dnscrypt.d0wn.biz
+d0wn-nl-ns4,"D0wn Resolver Netherlands 04","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,31.220.43.105,2.dnscrypt-cert.nl4.d0wn.biz,2A4F:4389:5CE6:3230:B4C5:76A5:AC38:6418:4D12:6949:B160:FDB0:9166:ABB4:CEC6:0672,pubkey.nl4.dnscrypt.d0wn.biz
+d0wn-random-ns1,"D0wn Resolver Moldova Random 01","Server provided by Martin 'd0wn' Albus","Moldova","",https://dns.d0wn.biz,1,yes,yes,no,178.17.170.133:443,2.dnscrypt-cert.random.d0wn.biz,A420:867F:ED5C:024C:C86A:EECE:AA05:194B:017F:D2FF:9E72:385A:874F:8CE5:6832:ED2E,pubkey.random.dnscrypt.d0wn.biz
+d0wn-random-ns1-ipv6,"D0wn Resolver Moldova Random 01 over IPv6","Server provided by Martin 'd0wn' Albus","Moldova","",https://dns.d0wn.biz,1,yes,yes,no,[2a00:1dc0:cafe::c6af:c19d]:443,2.dnscrypt-cert.random.d0wn.biz,A420:867F:ED5C:024C:C86A:EECE:AA05:194B:017F:D2FF:9E72:385A:874F:8CE5:6832:ED2E,pubkey.random.dnscrypt.d0wn.biz
+d0wn-random-ns2,"D0wn Resolver Netherlands Random 02","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,185.14.29.140,2.dnscrypt-cert.random2.d0wn.biz,7D73:F486:3C01:4CC9:B278:D107:F254:7A4F:1EA2:1081:07B0:CB82:645A:D8A4:B98A:B327,pubkey.random2.dnscrypt.d0wn.biz
+d0wn-random-ns2-ipv6,"D0wn Resolver Netherlands Random 02 over IPv6","Server provided by Martin 'd0wn' Albus","Netherlands","",https://dns.d0wn.biz,1,yes,yes,no,[2a00:1ca8:a7::1e9]:443,2.dnscrypt-cert.random2.d0wn.biz,7D73:F486:3C01:4CC9:B278:D107:F254:7A4F:1EA2:1081:07B0:CB82:645A:D8A4:B98A:B327,pubkey.random2.dnscrypt.d0wn.biz
+d0wn-ru-ns1,"D0wn Resolver Russia 01","Server provided by Martin 'd0wn' Albus","Russia","",https://dns.d0wn.biz,1,yes,yes,no,91.214.71.181,2.dnscrypt-cert.ru.d0wn.biz,0ECA:BC40:E0A1:335F:0221:4240:AB86:2919:D16A:2393:CCEB:4B40:9EB9:4F24:3077:ED99,pubkey.ru.dnscrypt.d0wn.biz
+d0wn-se-ns1,"D0wn Resolver Sweden 01","Server provided by Martin 'd0wn' Albus","Sweden","",https://dns.d0wn.biz,1,yes,yes,no,95.215.44.124,2.dnscrypt-cert.se.d0wn.biz,9D4F:762B:DD24:F77A:64B4:7E0F:F5C6:93FD:A02A:39E9:8FEC:0CEE:F252:3A5F:A403:C032,pubkey.se.dnscrypt.d0wn.biz
+d0wn-se-ns1-ipv6,"D0wn Resolver Sweden 01 over IPv6","Server provided by Martin 'd0wn' Albus","Sweden","",https://dns.d0wn.biz,1,yes,yes,no,[2a02:7aa0:1619::4f50:a69]:443,2.dnscrypt-cert.se.d0wn.biz,9D4F:762B:DD24:F77A:64B4:7E0F:F5C6:93FD:A02A:39E9:8FEC:0CEE:F252:3A5F:A403:C032,pubkey.se.dnscrypt.d0wn.biz
+d0wn-se-ns2,"D0wn Resolver Sweden 02","Server provided by Martin 'd0wn' Albus","Sweden","",https://dns.d0wn.biz,1,yes,yes,no,31.220.5.186,2.dnscrypt-cert.se2.d0wn.biz,C57D:D6A4:178E:ADE2:D0C0:B138:A4D4:074A:DF59:1488:8711:5CAC:EB60:A37B:3492:DA15,pubkey.se2.dnscrypt.d0wn.biz
+d0wn-sg-ns1,"D0wn Resolver Singapore 01","Server provided by Martin 'd0wn' Albus","Singapore","",https://dns.d0wn.biz,1,yes,yes,no,128.199.248.105,2.dnscrypt-cert.sg.d0wn.biz,D82B:2B76:1DA0:8470:B55B:820C:FAAB:9F32:D632:E9E0:5616:2CE7:7D21:E970:98FF:4A34,pubkey.sg.dnscrypt.d0wn.biz
+d0wn-sg-ns1-ipv6,"D0wn Resolver Singapore 01 over IPv6","Server provided by Martin 'd0wn' Albus","Singapore","",https://dns.d0wn.biz,1,yes,yes,no,[2400:6180:0:d0::38:d001]:443,2.dnscrypt-cert.sg.d0wn.biz,D82B:2B76:1DA0:8470:B55B:820C:FAAB:9F32:D632:E9E0:5616:2CE7:7D21:E970:98FF:4A34,pubkey.sg.dnscrypt.d0wn.biz
+d0wn-tz-ns1,"D0wn Resolver Tanzania 01","Server provided by Martin 'd0wn' Albus","Tanzania","",https://dns.d0wn.biz,1,yes,yes,no,41.79.69.13,2.dnscrypt-cert.tz.d0wn.biz,D606:15FB:D145:3BA1:4E76:8A3E:5C5C:B3AC:1746:1331:463D:A0AF:8CF7:DF04:DA4D:756D,pubkey.tz.dnscrypt.d0wn.biz
+d0wn-tz-ns1-ipv6,"D0wn Resolver Tanzania 01 over IPv6","Server provided by Martin 'd0wn' Albus","Tanzania","",https://dns.d0wn.biz,1,yes,yes,no,[2c0f:fda8:5::2ed1:d2ec]:443,2.dnscrypt-cert.tz.d0wn.biz,D606:15FB:D145:3BA1:4E76:8A3E:5C5C:B3AC:1746:1331:463D:A0AF:8CF7:DF04:DA4D:756D,pubkey.tz.dnscrypt.d0wn.biz
+d0wn-us-ns1,"D0wn Resolver United States of America 01","Server provided by Martin 'd0wn' Albus","United States of America","",https://dns.d0wn.biz,1,yes,yes,no,107.181.187.219,2.dnscrypt-cert.us.d0wn.biz,04BB:6100:7CFF:C72B:AF91:8942:F9DC:12A9:61A1:C6F2:177F:7CF9:F3C9:1B43:9FBE:6B80,pubkey.us.dnscrypt.d0wn.biz
+d0wn-us-ns2,"D0wn Resolver United States of America 02","Server provided by Martin 'd0wn' Albus","United States of America","",https://dns.d0wn.biz,1,yes,yes,no,192.252.222.24,2.dnscrypt-cert.us2.d0wn.biz,729B:FABE:2295:D469:E911:F97E:3EE4:F6DB:0190:EA6F:7CF3:F7EE:BB6B:99B1:698A:237D,pubkey.us2.dnscrypt.d0wn.biz
+d0wn-us-ns4,"D0wn Resolver United States of America 04","Server provided by Martin 'd0wn' Albus","United States of America","",https://dns.d0wn.biz,1,yes,yes,no,107.181.168.52,2.dnscrypt-cert.us4.d0wn.biz,F392:5D53:A315:66C2:ACF2:B2D2:8A69:6739:B066:1B8C:EF1B:3AFD:E828:0D83:D4EA:6D7D,pubkey.us4.dnscrypt.d0wn.biz
+d0wn-za-ns1,"D0wn Resolver South Africa 01","Server provided by Martin 'd0wn' Albus","South Africa","",https://dns.d0wn.biz,1,yes,yes,no,169.239.181.3,2.dnscrypt-cert.za.d0wn.biz,FBBD:0F3A:AF2B:B1BB:CD8F:9324:D5F6:A68C:E722:3890:8B90:92CF:F6D2:BF7C:9EC1:1368,pubkey.za.dnscrypt.d0wn.biz
+dnscrypt.ca-1,"dnscrypt.ca Server 1","Uncensored DNSSEC validating and log-free","Montreal, Canada","","https://dnscrypt.ca/",1,yes,yes,no,"192.99.183.132:443","2.dnscrypt-cert.dnscrypt.ca-1",1A53:A3C9:5078:9CBD:D10B:1933:A468:9B6C:846A:40F1:B73D:1752:AECA:C982:9ECB:7CE2,
+dnscrypt.ca-2,"dnscrypt.ca Server 2","Uncensored DNSSEC validating and log-free","Montreal, Canada","","https://dnscrypt.ca/",1,yes,yes,no,"149.56.228.45:443","2.dnscrypt-cert.dnscrypt.ca-2",0108:54AB:3B56:A7EE:F9D3:9158:FEF6:820B:FF93:A235:7C89:1608:DB9E:15D3:BBE0:1185,
+dnscrypt.eu-dk,"DNSCrypt.eu Denmark","Free, non-logged, uncensored. Hosted by Netgroup.","Denmark","",https://dnscrypt.eu,1,yes,yes,no,77.66.84.233,2.dnscrypt-cert.resolver2.dnscrypt.eu,3748:5585:E3B9:D088:FD25:AD36:B037:01F5:520C:D648:9E9A:DD52:1457:4955:9F0A:9955,pubkey.resolver2.dnscrypt.eu
+dnscrypt.eu-dk-ipv6,"DNSCrypt.eu Denmark over IPv6","Free, non-logged, uncensored. Hosted by Netgroup.","Denmark","",https://dnscrypt.eu,1,yes,yes,no,[2001:1448:243::dc2]:443,2.dnscrypt-cert.resolver2.dnscrypt.eu,3748:5585:E3B9:D088:FD25:AD36:B037:01F5:520C:D648:9E9A:DD52:1457:4955:9F0A:9955,pubkey.resolver2.dnscrypt.eu
+dnscrypt.eu-nl,"DNSCrypt.eu Holland","Free, non-logged, uncensored. Hosted by RamNode.","Netherlands","",https://dnscrypt.eu,1,yes,yes,no,176.56.237.171,2.dnscrypt-cert.resolver1.dnscrypt.eu,67C0:0F2C:21C5:5481:45DD:7CB4:6A27:1AF2:EB96:9931:40A3:09B6:2B8D:1653:1185:9C66,pubkey.resolver1.dnscrypt.eu
+dnscrypt.nl-ns0,"DNSCrypt.nl The Netherlands (NL)","Public DNSCrypt server in Amsterdam, the Netherlands","Netherlands","",https://dnscrypt.nl,1,yes,yes,no,45.76.35.212,2.dnscrypt-cert.ns0.dnscrypt.nl,4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA,pkey.ns0.dnscrypt.nl
+dnscrypt.nl-ns0-ipv6,"DNSCrypt.nl The Netherlands (NL) over IPv6","Public DNSCrypt server in Amsterdam, the Netherlands","Netherlands","",https://dnscrypt.nl,1,yes,yes,no,[2001:19f0:5001:30a:5400:ff:fe58:7140]:443,2.dnscrypt-cert.ns0.dnscrypt.nl,4C84:FB8C:0511:5DFA:5F97:C5ED:0329:1370:C78A:BCD6:4E15:DD53:AB08:DE72:FB84:4ACA,pkey.ns0.dnscrypt.nl
+dnscrypt.org-fr,"DNSCrypt.org France","DNSSEC/Non-logged/Uncensored - ARM server donated by Scaleway.com","Paris, France","",https://fr.dnscrypt.org,2,yes,yes,no,212.47.228.136,2.dnscrypt-cert.fr.dnscrypt.org,E801:B84E:A606:BFB0:BAC0:CE43:445B:B15E:BA64:B02F:A3C4:AA31:AE10:636A:0790:324D,pubkey.fr.dnscrypt.org
+fvz-anyone,"Primary OpenNIC Anycast DNS Resolver","Fusl's public primary OpenNIC Tier2 Anycast DNS Resolver","Anycast","",http://dnsrec.meo.ws/,1,no,yes,no,185.121.177.177,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,
+fvz-anytwo,"Secondary OpenNIC Anycast DNS Resolver","Fusl's public secondary OpenNIC Tier2 Anycast DNS Resolver","Anycast","",http://dnsrec.meo.ws/,1,no,yes,no,169.239.202.202,2.dnscrypt-cert.dnsrec.meo.ws,1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5,
+ipredator,"Ipredator.se Server","Public DNSCrypt server in Sweden provided by Ipredator.se","Sweden","",https://www.ipredator.se,1,yes,yes,no,194.132.32.32,2.dnscrypt-cert.ipredator.se,C44C:566A:A8D6:46C4:32B1:04F5:3D00:961B:32DC:71CF:1C04:BD9E:B013:E480:E7A4:7828,pubkey.resolver2.ipredator.se
+ns0.dnscrypt.is,"ns0.dnscrypt.is in Reykjavík, Iceland","DNSSEC enabled, non-logging, uncensored. Sponsored by 1984 Hosting.","Reykjavík, Iceland","",https://dnscrypt.is,1,yes,yes,no,93.95.228.87,2.dnscrypt-cert.ns0.dnscrypt.is,EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402,pubkey.ns0.dnscrypt.is
+okturtles,"okTurtles","For a surveillance-free world. HTTPS is broken. DNSChain fixes it.","Georgia, US","33.032501, -83.895699",http://okturtles.com/,1,no,yes,no,23.226.227.93,2.dnscrypt-cert.okturtles.com,1D85:3953:E34F:AFD0:05F9:4C6F:D1CC:E635:D411:9904:0D48:D19A:5D35:0B6A:7C81:73CB,
+opennic-tumabox,"TumaBox","Public DNS server operated by TumaBox.org","Germany","",http://wiki.tumabox.org/doku.php?id=dns,1,no,yes,no,130.255.73.90:5353,2.tumabox.org,D591:7B11:6A35:3114:C238:AA99:A6EB:0C28:7CF7:6805:41AC:5DBF:A8A0:239E:228C:5B06,
+opennic-tumabox-ipv6,"TumaBox over IPv6","Public DNS server operated by TumaBox.org","Germany","",http://wiki.tumabox.org/doku.php?id=dns,1,no,yes,no,[2a02:e00:fffd:139::9]:5353,2.tumabox.org,D591:7B11:6A35:3114:C238:AA99:A6EB:0C28:7CF7:6805:41AC:5DBF:A8A0:239E:228C:5B06,
+securedns,SecureDNS,Uncensored and no logging,"Amsterdam, Netherlands",,https://securedns.eu,1,yes,yes,no,146.185.167.43:5353,2.dnscrypt-cert.securedns.eu,B3A5:9769:1457:5B04:89E1:9FAE:9C43:E679:FAF2:8C57:1897:0031:7F7B:B496:291F:B095,2.dnscrypt-cert.securedns.eu
+securedns-ipv6,SecureDNS over IPv6,Uncensored and no logging,"Amsterdam, Netherlands",,https://securedns.eu,1,yes,yes,no,[2a03:b0c0:0:1010::e9a:3001]:5353,2.dnscrypt-cert.securedns.eu,B3A5:9769:1457:5B04:89E1:9FAE:9C43:E679:FAF2:8C57:1897:0031:7F7B:B496:291F:B095,2.dnscrypt-cert.securedns.eu
+soltysiak,"Soltysiak","Public DNSCrypt server in Poland","Poland","52.4014619, 16.9278078",http://dc1.soltysiak.com/,1,yes,yes,yes,178.216.201.222:2053,2.dnscrypt-cert.soltysiak.com,25C4:E188:2915:4697:8F9C:2BBD:B6A7:AFA4:01ED:A051:0508:5D53:03E7:1928:C066:8F21,pubkey.dc1.soltysiak.com
+soltysiak-ipv6,"Soltysiak over IPv6","Public DNSCrypt server in Poland","Poland","52.4014619, 16.9278078",http://dc1.soltysiak.com/,1,yes,yes,yes,[2001:470:70:4ff::2]:2053,2.dnscrypt-cert.soltysiak.com,25C4:E188:2915:4697:8F9C:2BBD:B6A7:AFA4:01ED:A051:0508:5D53:03E7:1928:C066:8F21,pubkey.dc1.soltysiak.com
+ventricle.us,"Anatomical DNS","Public DNSCrypt resolver provided by Jacob Henner","New York, NY","",https://jacobhenner.com,1,yes,yes,no,107.170.57.34,2.dnscrypt-cert.dnscrypt.ventricle.us,E985:F118:AD4E:3CC6:5FF2:2520:1890:C6F5:58B7:5B5A:52F5:6B17:CFEA:C100:5C8B:9BAA,pubkey.dnscrypt.ventricle.us
+yandex,"Yandex","Yandex public DNS server","Anycast","",https://www.yandex.com,1,no,no,no,77.88.8.78:15353,2.dnscrypt-cert.browser.yandex.net,D384:C071:C9F7:4662:AF2A:CCD5:7B5D:CC97:14D4:07B6:AD36:01E1:AEDC:06D5:6D49:6327,
diff --git a/net/dnscrypt-proxy/patches/010-internal.patch b/net/dnscrypt-proxy/patches/010-internal.patch
new file mode 100644 (file)
index 0000000..f10a85f
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/src/proxy/app.c
++++ b/src/proxy/app.c
+@@ -391,7 +391,7 @@ dnscrypt_proxy_main(int argc, char *argv[])
+     }
+     logger_noformat(&proxy_context, LOG_NOTICE, "Starting " PACKAGE_STRING);
+     sodium_mlock(&proxy_context, sizeof proxy_context);
+-    randombytes_set_implementation(&randombytes_salsa20_implementation);
++    randombytes_set_implementation(&randombytes_internal_implementation);
+ #ifdef PLUGINS
+     if (plugin_support_context_load(app_context.dcps_context) != 0) {