diff --git a/Makefile b/Makefile index 550570e..ea5d973 100644 --- a/Makefile +++ b/Makefile @@ -4,23 +4,32 @@ include $(TOPDIR)/rules.mk +PKG_NAME:=luci-app-smartdns +PKG_VERSION:=1.2025.47.2 +PKG_RELEASE:=2 + PKG_LICENSE:=GPL-3.0-or-later PKG_MAINTAINER:=Nick Peng -PKG_VERSION:=1.2025.47.2 -PKG_RELEASE:=1 LUCI_TITLE:=LuCI for smartdns LUCI_DESCRIPTION:=Provides Luci for smartdns -LUCI_DEPENDS:=+smartdns LUCI_PKGARCH:=all +LUCI_DEPENDS:=+luci-base +smartdns \ + +PACKAGE_$(PKG_NAME)_INCLUDE_smartdns_ui:smartdns-ui + +include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME)/config # shown in make menuconfig help $(LUCI_TITLE) Version: $(PKG_VERSION)-$(PKG_RELEASE) + +config PACKAGE_$(PKG_NAME)_INCLUDE_smartdns_ui + bool "Include smartdns-ui" + default n endef -include ../../luci.mk +include $(TOPDIR)/feeds/luci/luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/htdocs/luci-static/resources/view/smartdns/log.js b/htdocs/luci-static/resources/view/smartdns/log.js index e5a8fe6..ff8c95f 100644 --- a/htdocs/luci-static/resources/view/smartdns/log.js +++ b/htdocs/luci-static/resources/view/smartdns/log.js @@ -90,7 +90,7 @@ return view.extend({ var button = ev.target; button.disabled = true; button.textContent = _('Clear Logs...'); - fs.exec_direct('/usr/libexec/smartdns-call', ['clear_log']) + fs.exec('/usr/libexec/smartdns-call', ['clear_log']) .then(function () { button.textContent = _('Logs cleared successfully!'); setTimeout(function () { @@ -114,9 +114,9 @@ return view.extend({ poll.add(L.bind(function () { - return fs.exec_direct('/usr/libexec/smartdns-call', ['tail']) + return fs.exec('/usr/libexec/smartdns-call', ['tail']) .then(function (res) { - var log = E('pre', { 'wrap': 'pre' }, [res.trim() || _('Log is clean.')]); + var log = E('pre', { 'wrap': 'pre' }, [res.stdout.trim() || _('Log is clean.')]); dom.content(log_textarea, log); log.scrollTop = log.scrollHeight; diff --git a/htdocs/luci-static/resources/view/smartdns/smartdns.js b/htdocs/luci-static/resources/view/smartdns/smartdns.js index b2322cc..b7a1d5f 100644 --- a/htdocs/luci-static/resources/view/smartdns/smartdns.js +++ b/htdocs/luci-static/resources/view/smartdns/smartdns.js @@ -61,8 +61,16 @@ function smartdnsRenderStatus(res) { var smartdnsEnable = uci.get_first('smartdns', 'smartdns', 'enabled'); var dnsmasqServer = uci.get_first('dhcp', 'dnsmasq', 'server'); + var uiEnable = uci.get_first('smartdns', 'smartdns', 'ui') || "0"; + var uiPort = uci.get_first('smartdns', 'smartdns', 'ui_port') || "6080"; + if (isRunning) { renderHTML += "SmartDNS - " + _("RUNNING") + ""; + + if (uiEnable === '1') { + var uiLink = "http://" + window.location.hostname + ":" + uiPort + "/"; + renderHTML += "" + _("Open the WebUI") + ""; + } } else { renderHTML += "SmartDNS - " + _("NOT RUNNING") + ""; if (smartdnsEnable === '1') { @@ -84,17 +92,28 @@ function smartdnsRenderStatus(res) { return renderHTML; } + +function isSmartdnsUiAvailable() { + return fs.stat('/usr/lib/libsmartdns_ui.so').then(function (res) { + return res && res.type === 'file'; + }).catch(function () { + return false; + }); +} + return view.extend({ load: function () { return Promise.all([ uci.load('dhcp'), uci.load('smartdns'), + isSmartdnsUiAvailable() ]); }, render: function (stats) { var m, s, o; var ss, so; var servers, download_files; + var hasUi = stats[2]; m = new form.Map('smartdns', _('SmartDNS')); m.title = _("SmartDNS Server"); @@ -166,6 +185,31 @@ return view.extend({ o.rmempty = false; o.default = o.enabled; + //WebUI + if (hasUi) { + o = s.taboption("settings", form.Flag, "ui", _("Enable WebUI"), _("Enable or disable smartdns webui plugin.")); + o.rmempty = false; + o.default = o.disabled; + + o = s.taboption("settings", form.Value, "ui_port", _("WebUI Port"), _("WebUI server port.")); + o.placeholder = 6080; + o.datatype = "port"; + o.rempty = false; + o.depends('ui', '1'); + + o = s.taboption("settings", form.Value, "ui_data_dir", _("WebUI Data Dir"), _("Directory for storing the webui database.")); + o.placeholder = "/var/lib/smartdns"; + o.datatype = "string"; + o.rempty = false; + o.depends('ui', '1'); + + o = s.taboption("settings", form.Value, "ui_log_max_age", _("WebUI Log Retention"), _("Number of days to retain webui logs.")); + o.placeholder = 30; + o.datatype = "uinteger"; + o.rempty = false; + o.depends('ui', '1'); + } + /////////////////////////////////////// // advanced settings; /////////////////////////////////////// diff --git a/po/zh_Hans/smartdns.po b/po/zh_Hans/smartdns.po index 25c81fc..8432287 100644 --- a/po/zh_Hans/smartdns.po +++ b/po/zh_Hans/smartdns.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: luci-app-smartdns\n" -"POT-Creation-Date: 2025-06-17 19:36+0800\n" +"POT-Creation-Date: 2025-06-21 18:57+0800\n" "PO-Revision-Date: \n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -17,7 +17,7 @@ msgstr "" msgid "Loading..." msgstr "加载中..." -#: log.js:82 smartdns.js:125 +#: log.js:82 smartdns.js:144 msgid "Collecting data ..." msgstr "正在收集数据..." @@ -59,142 +59,178 @@ msgstr "返回 SmartDNS" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: smartdns.js:65 +#: smartdns.js:68 msgid "RUNNING" msgstr "运行中" -#: smartdns.js:67 +#: smartdns.js:72 +msgid "Open the WebUI" +msgstr "打开 WebUI" + +#: smartdns.js:75 msgid "NOT RUNNING" msgstr "未运行" -#: smartdns.js:69 +#: smartdns.js:77 msgid "Please check the system logs and check if the configuration is valid." msgstr "请检查系统日志,并检查配置是否合法。" -#: smartdns.js:81 +#: smartdns.js:89 msgid "Dnsmasq Forwarded To Smartdns Failure" msgstr "重定向dnsmasq到smartdns失败" -#: smartdns.js:99 +#: smartdns.js:118 msgid "SmartDNS" msgstr "SmartDNS" -#: smartdns.js:100 +#: smartdns.js:119 msgid "SmartDNS Server" msgstr "SmartDNS 服务器" -#: smartdns.js:101 +#: smartdns.js:120 msgid "" "SmartDNS is a local high-performance DNS server, supports finding fastest " "IP, supports ad filtering, and supports avoiding DNS poisoning." msgstr "SmartDNS是一个本地高性能DNS服务器,支持返回最快IP,支持广告过滤。" -#: smartdns.js:132 +#: smartdns.js:151 msgid "Settings" msgstr "设置" -#: smartdns.js:132 smartdns.js:135 smartdns.js:831 +#: smartdns.js:151 smartdns.js:154 smartdns.js:875 msgid "General Settings" msgstr "常规设置" -#: smartdns.js:136 smartdns.js:832 smartdns.js:1010 +#: smartdns.js:155 smartdns.js:876 smartdns.js:1054 msgid "Advanced Settings" msgstr "高级设置" -#: smartdns.js:137 +#: smartdns.js:156 msgid "Second Server Settings" msgstr "第二DNS服务器" -#: smartdns.js:138 +#: smartdns.js:157 msgid "DNS64 Server Settings" msgstr "DNS64服务器配置" -#: smartdns.js:139 +#: smartdns.js:158 msgid "Download Files Setting" msgstr "下载文件设置" -#: smartdns.js:139 +#: smartdns.js:158 msgid "" "Download domain list files for domain-rule and include config files, please " "refresh the page after download to take effect." msgstr "" "下载域名规则所需要的域名列表文件和smartdns配置文件,下载完成后刷新页面。" -#: smartdns.js:140 +#: smartdns.js:159 msgid "Proxy Server Settings" msgstr "代理服务器设置" -#: smartdns.js:141 +#: smartdns.js:160 msgid "Custom Settings" msgstr "自定义设置" -#: smartdns.js:146 smartdns.js:478 smartdns.js:835 smartdns.js:1013 -#: smartdns.js:1400 smartdns.js:1580 +#: smartdns.js:165 smartdns.js:522 smartdns.js:879 smartdns.js:1057 +#: smartdns.js:1444 smartdns.js:1624 msgid "Enable" msgstr "启用" -#: smartdns.js:146 +#: smartdns.js:165 msgid "Enable or disable smartdns server" msgstr "启用或禁用SmartDNS服务" -#: smartdns.js:151 +#: smartdns.js:170 msgid "Server Name" msgstr "服务器名称" -#: smartdns.js:151 +#: smartdns.js:170 msgid "Smartdns server name" msgstr "SmartDNS的服务器名称,默认为smartdns,留空为主机名" -#: smartdns.js:157 smartdns.js:484 +#: smartdns.js:176 smartdns.js:528 msgid "Local Port" msgstr "本地端口" -#: smartdns.js:158 +#: smartdns.js:177 msgid "" "Smartdns local server port, smartdns will be automatically set as main dns " "when the port is 53." msgstr "" "SmartDNS本地服务端口,当端口号设置为53时,smartdns将会自动配置为主dns。" -#: smartdns.js:165 +#: smartdns.js:184 msgid "Automatically Set Dnsmasq" msgstr "自动设置Dnsmasq" -#: smartdns.js:165 +#: smartdns.js:184 msgid "Automatically set as upstream of dnsmasq when port changes." msgstr "端口更改时自动设为 dnsmasq 的上游。" -#: smartdns.js:173 smartdns.js:1075 smartdns.js:1234 smartdns.js:1457 +#: smartdns.js:190 +msgid "Enable WebUI" +msgstr "启用WebUI" + +#: smartdns.js:190 +msgid "Enable or disable smartdns webui plugin." +msgstr "启用或禁用SmartDNS WebUI插件。" + +#: smartdns.js:194 +msgid "WebUI Port" +msgstr "WebUI端口" + +#: smartdns.js:194 +msgid "WebUI server port." +msgstr "WebUI服务端口。" + +#: smartdns.js:200 +msgid "WebUI Data Dir" +msgstr "WebUI数据库目录" + +#: smartdns.js:200 +msgid "Directory for storing the webui database." +msgstr "用于存储WebUI数据库的目录。" + +#: smartdns.js:206 +msgid "WebUI Log Retention" +msgstr "WebUI日志保存天数" + +#: smartdns.js:206 +msgid "Number of days to retain webui logs." +msgstr "保留WebUI日志的天数。" + +#: smartdns.js:217 smartdns.js:1119 smartdns.js:1278 smartdns.js:1501 msgid "Speed Check Mode" msgstr "测速模式" -#: smartdns.js:173 smartdns.js:1075 smartdns.js:1234 smartdns.js:1457 +#: smartdns.js:217 smartdns.js:1119 smartdns.js:1278 smartdns.js:1501 msgid "Smartdns speed check mode." msgstr "SmartDNS测速模式。" -#: smartdns.js:176 smartdns.js:217 smartdns.js:749 smartdns.js:1078 -#: smartdns.js:1237 smartdns.js:1279 smartdns.js:1453 smartdns.js:1461 +#: smartdns.js:220 smartdns.js:261 smartdns.js:793 smartdns.js:1122 +#: smartdns.js:1281 smartdns.js:1323 smartdns.js:1497 smartdns.js:1505 msgid "default" msgstr "默认" -#: smartdns.js:181 smartdns.js:1083 smartdns.js:1242 smartdns.js:1441 -#: smartdns.js:1466 +#: smartdns.js:225 smartdns.js:1127 smartdns.js:1286 smartdns.js:1485 +#: smartdns.js:1510 msgid "None" msgstr "无" -#: smartdns.js:200 smartdns.js:1102 smartdns.js:1261 smartdns.js:1485 +#: smartdns.js:244 smartdns.js:1146 smartdns.js:1305 smartdns.js:1529 msgid "TCP port is empty" msgstr "TCP端口号为空" -#: smartdns.js:206 smartdns.js:1108 smartdns.js:1267 smartdns.js:1491 +#: smartdns.js:250 smartdns.js:1152 smartdns.js:1311 smartdns.js:1535 msgid "Speed check mode is invalid." msgstr "测速模式无效。" -#: smartdns.js:213 +#: smartdns.js:257 msgid "Response Mode" msgstr "响应模式" -#: smartdns.js:214 +#: smartdns.js:258 msgid "" "Smartdns response mode, First Ping: return the first ping IP, Fastest IP: " "return the fastest IP, Fastest Response: return the fastest DNS response." @@ -202,276 +238,276 @@ msgstr "" "SmartDNS响应模式,最快PING: 返回最早有ping结果的IP,速度适中;最快IP: 返回" "最快IP,查询请求可能延长; 最快响应:返回最快响应的结果,查询请求时间短。" -#: smartdns.js:218 +#: smartdns.js:262 msgid "First Ping" msgstr "最快PING" -#: smartdns.js:219 +#: smartdns.js:263 msgid "Fastest IP" msgstr "最快IP" -#: smartdns.js:220 +#: smartdns.js:264 msgid "Fastest Response" msgstr "最快响应" -#: smartdns.js:223 smartdns.js:491 +#: smartdns.js:267 smartdns.js:535 msgid "TCP Server" msgstr "TCP服务器" -#: smartdns.js:223 smartdns.js:491 +#: smartdns.js:267 smartdns.js:535 msgid "Enable TCP DNS Server" msgstr "启用TCP服务器。" -#: smartdns.js:228 +#: smartdns.js:272 msgid "DOT Server" msgstr "DOT服务器" -#: smartdns.js:228 +#: smartdns.js:272 msgid "Enable DOT DNS Server" msgstr "启用DOT服务器" -#: smartdns.js:232 +#: smartdns.js:276 msgid "DOT Server Port" msgstr "DOT服务器端口" -#: smartdns.js:232 +#: smartdns.js:276 msgid "Smartdns DOT server port." msgstr "Smartdns DOT服务器端口号。" -#: smartdns.js:240 +#: smartdns.js:284 msgid "DOH Server" msgstr "DOH服务器" -#: smartdns.js:240 +#: smartdns.js:284 msgid "Enable DOH DNS Server" msgstr "启用DOH服务器" -#: smartdns.js:244 +#: smartdns.js:288 msgid "DOH Server Port" msgstr "DOH服务器端口" -#: smartdns.js:244 +#: smartdns.js:288 msgid "Smartdns DOH server port." msgstr "Smartdns DOH服务器端口号" -#: smartdns.js:251 +#: smartdns.js:295 msgid "Server Cert" msgstr "服务器证书" -#: smartdns.js:251 +#: smartdns.js:295 msgid "Server certificate file path." msgstr "服务器证书文件路径。" -#: smartdns.js:258 +#: smartdns.js:302 msgid "Server Cert Key" msgstr "服务器证书私钥" -#: smartdns.js:258 +#: smartdns.js:302 msgid "Server certificate key file path." msgstr "服务器证书私钥文件路径。" -#: smartdns.js:265 +#: smartdns.js:309 msgid "Server Cert Key Pass" msgstr "服务器证书私钥密码" -#: smartdns.js:265 +#: smartdns.js:309 msgid "Server certificate key file password." msgstr "服务器证书私钥文件密码。" -#: smartdns.js:272 +#: smartdns.js:316 msgid "IPV6 Server" msgstr "IPV6服务器" -#: smartdns.js:272 +#: smartdns.js:316 msgid "Enable IPV6 DNS Server" msgstr "启用IPV6服务器。" -#: smartdns.js:277 +#: smartdns.js:321 msgid "Bind Device" msgstr "绑定到设备" -#: smartdns.js:277 +#: smartdns.js:321 msgid "Listen only on the specified interfaces." msgstr "监听在指定的设备上,避免非本地网络的DNS查询请求。" -#: smartdns.js:282 +#: smartdns.js:326 msgid "Bind Device Name" msgstr "绑定的设备名称" -#: smartdns.js:282 +#: smartdns.js:326 msgid "Name of device name listen on." msgstr "绑定的设备名称。" -#: smartdns.js:288 smartdns.js:1115 smartdns.js:1274 smartdns.js:1448 +#: smartdns.js:332 smartdns.js:1159 smartdns.js:1318 smartdns.js:1492 msgid "Dual-stack IP Selection" msgstr "双栈IP优选" -#: smartdns.js:289 smartdns.js:1116 smartdns.js:1275 smartdns.js:1449 +#: smartdns.js:333 smartdns.js:1160 smartdns.js:1319 smartdns.js:1493 msgid "Enable IP selection between IPV4 and IPV6" msgstr "启用 IPV4 和 IPV6 间的 IP 优选策略。" -#: smartdns.js:294 +#: smartdns.js:338 msgid "Domain prefetch" msgstr "域名预加载" -#: smartdns.js:295 +#: smartdns.js:339 msgid "Enable domain prefetch, accelerate domain response speed." msgstr "启用域名预加载,加速域名响应速度。" -#: smartdns.js:300 +#: smartdns.js:344 msgid "Serve expired" msgstr "缓存过期服务" -#: smartdns.js:301 +#: smartdns.js:345 msgid "" "Attempts to serve old responses from cache with a TTL of 0 in the response " "without waiting for the actual resolution to finish." msgstr "查询性能优化,有请求时尝试回应TTL为0的过期记录,以避免查询等待。" -#: smartdns.js:306 +#: smartdns.js:350 msgid "Cache Size" msgstr "缓存大小" -#: smartdns.js:306 +#: smartdns.js:350 msgid "DNS domain result cache size" msgstr "缓存DNS的结果,缓存大小,配置零则不缓存。" -#: smartdns.js:310 +#: smartdns.js:354 msgid "Cache Persist" msgstr "持久化缓存" -#: smartdns.js:310 +#: smartdns.js:354 msgid "Write cache to disk on exit and load on startup." msgstr "退出时保存cache到磁盘,启动时加载。" -#: smartdns.js:315 +#: smartdns.js:359 msgid "Resolve Local Hostnames" msgstr "解析本地主机名" -#: smartdns.js:315 +#: smartdns.js:359 msgid "Resolve local hostnames by reading Dnsmasq lease file." msgstr "读取Dnsmasq的租约文件解析本地主机名。" -#: smartdns.js:320 +#: smartdns.js:364 msgid "mDNS Lookup" msgstr "mDNS查询" -#: smartdns.js:320 +#: smartdns.js:364 msgid "Resolve local network hostname via mDNS protocol." msgstr "使用mDNS协议解析本地网络主机名。" -#: smartdns.js:325 smartdns.js:543 smartdns.js:1121 smartdns.js:1283 -#: smartdns.js:1497 +#: smartdns.js:369 smartdns.js:587 smartdns.js:1165 smartdns.js:1327 +#: smartdns.js:1541 msgid "Force AAAA SOA" msgstr "停用IPV6地址解析" -#: smartdns.js:325 smartdns.js:543 smartdns.js:1121 smartdns.js:1283 -#: smartdns.js:1497 +#: smartdns.js:369 smartdns.js:587 smartdns.js:1165 smartdns.js:1327 +#: smartdns.js:1541 msgid "Force AAAA SOA." msgstr "停用IPV6地址解析。" -#: smartdns.js:330 smartdns.js:548 smartdns.js:1126 +#: smartdns.js:374 smartdns.js:592 smartdns.js:1170 msgid "Force HTTPS SOA" msgstr "停用HTTPS记录解析" -#: smartdns.js:330 smartdns.js:548 smartdns.js:1126 +#: smartdns.js:374 smartdns.js:592 smartdns.js:1170 msgid "Force HTTPS SOA." msgstr "停用HTTPS记录解析。" -#: smartdns.js:335 smartdns.js:556 smartdns.js:1131 smartdns.js:1287 -#: smartdns.js:1503 +#: smartdns.js:379 smartdns.js:600 smartdns.js:1175 smartdns.js:1331 +#: smartdns.js:1547 msgid "IPset Name" msgstr "IPset名称" -#: smartdns.js:335 smartdns.js:556 smartdns.js:1131 smartdns.js:1287 -#: smartdns.js:1503 +#: smartdns.js:379 smartdns.js:600 smartdns.js:1175 smartdns.js:1331 +#: smartdns.js:1547 msgid "IPset name." msgstr "IPset名称。" -#: smartdns.js:347 smartdns.js:368 smartdns.js:568 smartdns.js:1143 -#: smartdns.js:1299 +#: smartdns.js:391 smartdns.js:412 smartdns.js:612 smartdns.js:1187 +#: smartdns.js:1343 msgid "ipset name format error, format: [#[4|6]:]ipsetname" msgstr "IPset名称格式错误,格式:[#[4|6]:]ipsetname" -#: smartdns.js:355 +#: smartdns.js:399 msgid "No Speed IPset Name" msgstr "无速度时IPSet名称" -#: smartdns.js:356 +#: smartdns.js:400 msgid "Ipset name, Add domain result to ipset when speed check fails." msgstr "IPset名称,当测速失败时,将查询到的结果添加到对应的IPSet集合中。" -#: smartdns.js:376 smartdns.js:575 smartdns.js:1151 smartdns.js:1306 -#: smartdns.js:1509 +#: smartdns.js:420 smartdns.js:619 smartdns.js:1195 smartdns.js:1350 +#: smartdns.js:1553 msgid "NFTset Name" msgstr "NFTSet名称" -#: smartdns.js:376 smartdns.js:575 smartdns.js:1151 smartdns.js:1306 -#: smartdns.js:1509 +#: smartdns.js:420 smartdns.js:619 smartdns.js:1195 smartdns.js:1350 +#: smartdns.js:1553 msgid "NFTset name, format: [#[4|6]:[family#table#set]]" msgstr "NFTSet名称,格式:[#[4|6]:[family#table#set]]" -#: smartdns.js:388 smartdns.js:409 smartdns.js:587 smartdns.js:1163 -#: smartdns.js:1318 smartdns.js:1522 +#: smartdns.js:432 smartdns.js:453 smartdns.js:631 smartdns.js:1207 +#: smartdns.js:1362 smartdns.js:1566 msgid "NFTset name format error, format: [#[4|6]:[family#table#set]]" msgstr "NFTSet名称格式错误,格式:[#[4|6]:[family#table#set]]" -#: smartdns.js:396 +#: smartdns.js:440 msgid "No Speed NFTset Name" msgstr "无速度时NFTSet名称" -#: smartdns.js:397 +#: smartdns.js:441 msgid "" "Nftset name, Add domain result to nftset when speed check fails, format: " "[#[4|6]:[family#table#set]]" msgstr "NFTset名称,当测速失败时,将查询到的结果添加到对应的NFTSet集合中。" -#: smartdns.js:417 +#: smartdns.js:461 msgid "Domain TTL" msgstr "域名TTL" -#: smartdns.js:417 +#: smartdns.js:461 msgid "TTL for all domain result." msgstr "设置所有域名的 TTL 值。" -#: smartdns.js:421 +#: smartdns.js:465 msgid "Domain TTL Min" msgstr "域名TTL最小值" -#: smartdns.js:422 +#: smartdns.js:466 msgid "Minimum TTL for all domain result." msgstr "所有域名的最小 TTL 值。" -#: smartdns.js:429 +#: smartdns.js:473 msgid "Domain TTL Max" msgstr "域名TTL最大值" -#: smartdns.js:430 +#: smartdns.js:474 msgid "Maximum TTL for all domain result." msgstr "所有域名的最大 TTL 值。" -#: smartdns.js:434 +#: smartdns.js:478 msgid "Reply Domain TTL Max" msgstr "回应的域名TTL最大值" -#: smartdns.js:435 +#: smartdns.js:479 msgid "Reply maximum TTL for all domain result." msgstr "设置返回给客户端的域名TTL最大值。" -#: smartdns.js:439 smartdns.js:595 smartdns.js:996 +#: smartdns.js:483 smartdns.js:639 smartdns.js:1040 msgid "Additional Server Args" msgstr "额外的服务器参数" -#: smartdns.js:440 smartdns.js:596 +#: smartdns.js:484 smartdns.js:640 msgid "" "Additional server args, refer to the help description of the bind option." msgstr "额外的服务器参数,参考bind选项的帮助说明。" -#: smartdns.js:446 smartdns.js:1172 +#: smartdns.js:490 smartdns.js:1216 msgid "Include Config Files
/etc/smartdns/conf.d" msgstr "包含配置文件
/etc/smartdns/conf.d" -#: smartdns.js:447 smartdns.js:1173 +#: smartdns.js:491 smartdns.js:1217 msgid "" "Include other config files from /etc/smartdns/conf.d or custom path, can be " "downloaded from the download page." @@ -479,304 +515,304 @@ msgstr "" "包含配置文件,路径为/etc/smartdns/conf.d,或自定义配置文件路径,可以从下载页" "面配置自动下载。" -#: smartdns.js:460 +#: smartdns.js:504 msgid "Hosts File" msgstr "Hosts文件" -#: smartdns.js:460 +#: smartdns.js:504 msgid "Include hosts file." msgstr "包含hosts文件。" -#: smartdns.js:479 +#: smartdns.js:523 msgid "Enable or disable second DNS server." msgstr "是否启用第二DNS服务器。" -#: smartdns.js:484 +#: smartdns.js:528 msgid "Smartdns local server port" msgstr "SmartDNS本地服务端口" -#: smartdns.js:496 smartdns.js:871 smartdns.js:1050 smartdns.js:1209 -#: smartdns.js:1408 +#: smartdns.js:540 smartdns.js:915 smartdns.js:1094 smartdns.js:1253 +#: smartdns.js:1452 msgid "Server Group" msgstr "服务器组" -#: smartdns.js:497 +#: smartdns.js:541 msgid "Query DNS through specific dns server group, such as office, home." msgstr "使用指定服务器组查询,比如office, home。" -#: smartdns.js:503 +#: smartdns.js:547 msgid "Skip Speed Check" msgstr "跳过测速" -#: smartdns.js:504 +#: smartdns.js:548 msgid "Do not check speed." msgstr "禁用测速。" -#: smartdns.js:509 +#: smartdns.js:553 msgid "Skip Address Rules" msgstr "跳过address规则" -#: smartdns.js:510 +#: smartdns.js:554 msgid "Skip address rules." msgstr "跳过address规则。" -#: smartdns.js:515 +#: smartdns.js:559 msgid "Skip Nameserver Rule" msgstr "跳过Nameserver规则" -#: smartdns.js:516 +#: smartdns.js:560 msgid "Skip nameserver rules." msgstr "跳过Nameserver规则。" -#: smartdns.js:521 +#: smartdns.js:565 msgid "Skip Ipset Rule" msgstr "跳过ipset规则" -#: smartdns.js:522 +#: smartdns.js:566 msgid "Skip ipset rules." msgstr "跳过ipset规则。" -#: smartdns.js:527 +#: smartdns.js:571 msgid "Skip SOA Address Rule" msgstr "跳过address SOA(#)规则" -#: smartdns.js:528 +#: smartdns.js:572 msgid "Skip SOA address rules." msgstr "跳过address SOA(#)规则。" -#: smartdns.js:532 +#: smartdns.js:576 msgid "Skip Dualstack Selection" msgstr "跳过双栈优选" -#: smartdns.js:533 +#: smartdns.js:577 msgid "Skip Dualstack Selection." msgstr "跳过双栈优选。" -#: smartdns.js:538 +#: smartdns.js:582 msgid "Skip Cache" msgstr "跳过cache" -#: smartdns.js:538 +#: smartdns.js:582 msgid "Skip Cache." msgstr "跳过cache。" -#: smartdns.js:552 +#: smartdns.js:596 msgid "Skip IP Alias" msgstr "跳过IP别名" -#: smartdns.js:603 +#: smartdns.js:647 msgid "DNS64" msgstr "DNS64" -#: smartdns.js:611 +#: smartdns.js:655 msgid "Enable Auto Update" msgstr "启用自动更新" -#: smartdns.js:611 +#: smartdns.js:655 msgid "Enable daily (weekly) auto update." msgstr "启用每日(每周)自动更新" -#: smartdns.js:616 +#: smartdns.js:660 msgid "Update Time (Every Week)" msgstr "更新时间(每周)" -#: smartdns.js:617 +#: smartdns.js:661 msgid "Every Day" msgstr "每天" -#: smartdns.js:618 +#: smartdns.js:662 msgid "Every Monday" msgstr "每周一" -#: smartdns.js:619 +#: smartdns.js:663 msgid "Every Tuesday" msgstr "每周二" -#: smartdns.js:620 +#: smartdns.js:664 msgid "Every Wednesday" msgstr "每周三" -#: smartdns.js:621 +#: smartdns.js:665 msgid "Every Thursday" msgstr "每周四" -#: smartdns.js:622 +#: smartdns.js:666 msgid "Every Friday" msgstr "每周五" -#: smartdns.js:623 +#: smartdns.js:667 msgid "Every Saturday" msgstr "每周六" -#: smartdns.js:624 +#: smartdns.js:668 msgid "Every Sunday" msgstr "每周日" -#: smartdns.js:628 +#: smartdns.js:672 msgid "Update time (every day)" msgstr "更新时间(每天)" -#: smartdns.js:634 +#: smartdns.js:678 msgid "Upload Config File" msgstr "上传配置文件" -#: smartdns.js:635 +#: smartdns.js:679 msgid "Upload smartdns config file to /etc/smartdns/conf.d" msgstr "上传配置文件到/etc/smartdns/conf.d" -#: smartdns.js:641 +#: smartdns.js:685 msgid "Upload Domain List File" msgstr "上传域名列表文件" -#: smartdns.js:642 +#: smartdns.js:686 msgid "Upload domain list file to /etc/smartdns/domain-set" msgstr "上传域名列表文件到/etc/smartdns/domain-set" -#: smartdns.js:648 +#: smartdns.js:692 msgid "Upload File" msgstr "上传文件" -#: smartdns.js:654 +#: smartdns.js:698 msgid "Update Files" msgstr "更新文件" -#: smartdns.js:663 +#: smartdns.js:707 msgid "Update" msgstr "更新" -#: smartdns.js:666 +#: smartdns.js:710 msgid "Download Files" msgstr "下载文件" -#: smartdns.js:667 +#: smartdns.js:711 msgid "List of files to download." msgstr "下载文件列表。" -#: smartdns.js:675 +#: smartdns.js:719 msgid "File Name" msgstr "文件名" -#: smartdns.js:679 +#: smartdns.js:723 msgid "URL" msgstr "URL" -#: smartdns.js:688 +#: smartdns.js:732 msgid "URL format error, format: http:// or https://" msgstr "URL格式错误,格式:http://或https://" -#: smartdns.js:694 smartdns.js:859 +#: smartdns.js:738 smartdns.js:903 msgid "type" msgstr "类型" -#: smartdns.js:694 +#: smartdns.js:738 msgid "File Type" msgstr "文件类型" -#: smartdns.js:695 +#: smartdns.js:739 msgid "domain list (/etc/smartdns/domain-set)" msgstr "域名列表(/etc/smartdns/domain-set)" -#: smartdns.js:696 +#: smartdns.js:740 msgid "smartdns config (/etc/smartdns/conf.d)" msgstr "smartdns 配置文件(/etc/smartdns/conf.d)" -#: smartdns.js:697 +#: smartdns.js:741 msgid "ip-set file (/etc/smartdns/ip-set)" msgstr "IP集合列表文件(/etc/smartdns/ip-set)" -#: smartdns.js:698 +#: smartdns.js:742 msgid "other file (/etc/smartdns/download)" msgstr "其它文件(/etc/smartdns/download)" -#: smartdns.js:702 +#: smartdns.js:746 msgid "Description" msgstr "描述" -#: smartdns.js:709 +#: smartdns.js:753 msgid "Proxy Server" msgstr "代理服务器" -#: smartdns.js:709 +#: smartdns.js:753 msgid "Proxy Server URL, format: [socks5|http]://user:pass@ip:port." msgstr "代理服务器地址,格式:[socks5|http]://user:pass@ip:port。" -#: smartdns.js:717 +#: smartdns.js:761 msgid "" "Proxy server URL format error, format: [socks5|http]://user:pass@ip:port." msgstr "代理服务器地址格式错误,格式:[socks5|http]://user:pass@ip:port。" -#: smartdns.js:727 +#: smartdns.js:771 msgid "smartdns custom settings" msgstr "smartdns 自定义设置,具体配置参数参考指导" -#: smartdns.js:741 +#: smartdns.js:785 msgid "Generate Coredump" msgstr "生成coredump" -#: smartdns.js:742 +#: smartdns.js:786 msgid "" "Generate Coredump file when smartdns crash, coredump file is located at /tmp/" "smartdns.xxx.core." msgstr "" "当smartdns异常时生成coredump文件,coredump文件在/tmp/smartdns.xxx.core." -#: smartdns.js:746 +#: smartdns.js:790 msgid "Log Level" msgstr "日志级别" -#: smartdns.js:758 +#: smartdns.js:802 msgid "Log Output Mode" msgstr "日志输出模式" -#: smartdns.js:761 smartdns.js:802 +#: smartdns.js:805 smartdns.js:846 msgid "file" msgstr "文件" -#: smartdns.js:762 smartdns.js:803 +#: smartdns.js:806 smartdns.js:847 msgid "syslog" msgstr "系统日志" -#: smartdns.js:764 +#: smartdns.js:808 msgid "Log Size" msgstr "日志大小" -#: smartdns.js:769 +#: smartdns.js:813 msgid "Log Number" msgstr "日志数量" -#: smartdns.js:774 +#: smartdns.js:818 msgid "Log File" msgstr "日志文件路径" -#: smartdns.js:779 smartdns.js:787 +#: smartdns.js:823 smartdns.js:831 msgid "View Log" msgstr "查看日志" -#: smartdns.js:794 +#: smartdns.js:838 msgid "Enable Audit Log" msgstr "启用审计日志" -#: smartdns.js:799 +#: smartdns.js:843 msgid "Audit Log Output Mode" msgstr "审计日志输出模式" -#: smartdns.js:806 +#: smartdns.js:850 msgid "Audit Log Size" msgstr "审计日志大小" -#: smartdns.js:811 +#: smartdns.js:855 msgid "Audit Log Number" msgstr "审计日志数量" -#: smartdns.js:816 +#: smartdns.js:860 msgid "Audit Log File" msgstr "审计日志文件路径" -#: smartdns.js:824 +#: smartdns.js:868 msgid "Upstream Servers" msgstr "上游服务器" -#: smartdns.js:825 +#: smartdns.js:869 msgid "" "Upstream Servers, support UDP, TCP, DoT, DoH, DoQ, DoH3 protocol. Please " "configure multiple DNS servers, including multiple foreign DNS servers." @@ -784,113 +820,113 @@ msgstr "" "上游 DNS 服务器,支持 UDP,TCP,DoT,DoH,DoQ,DoH3 协议。请配置多个上游 DNS " "服务器,包括多个国内外服务器。" -#: smartdns.js:841 +#: smartdns.js:885 msgid "DNS Server Name" msgstr "DNS服务器名称" -#: smartdns.js:844 +#: smartdns.js:888 msgid "ip" msgstr "ip" -#: smartdns.js:844 +#: smartdns.js:888 msgid "DNS Server ip" msgstr "DNS服务器IP" -#: smartdns.js:849 +#: smartdns.js:893 msgid "port" msgstr "端口" -#: smartdns.js:849 +#: smartdns.js:893 msgid "DNS Server port" msgstr "DNS服务器端口" -#: smartdns.js:859 +#: smartdns.js:903 msgid "DNS Server type" msgstr "协议类型" -#: smartdns.js:861 +#: smartdns.js:905 msgid "udp" msgstr "udp" -#: smartdns.js:862 +#: smartdns.js:906 msgid "tcp" msgstr "tcp" -#: smartdns.js:863 +#: smartdns.js:907 msgid "tls" msgstr "tls" -#: smartdns.js:864 +#: smartdns.js:908 msgid "https" msgstr "https" -#: smartdns.js:865 +#: smartdns.js:909 msgid "quic" msgstr "quic" -#: smartdns.js:866 +#: smartdns.js:910 msgid "h3" msgstr "h3" -#: smartdns.js:871 +#: smartdns.js:915 msgid "DNS Server group" msgstr "服务器组" -#: smartdns.js:890 +#: smartdns.js:934 msgid "Exclude Default Group" msgstr "从默认组中排除" -#: smartdns.js:890 +#: smartdns.js:934 msgid "Exclude DNS Server from default group." msgstr "从default默认服务器组中排除。" -#: smartdns.js:897 +#: smartdns.js:941 msgid "IP Blacklist Filtering" msgstr "IP黑名单过滤" -#: smartdns.js:898 +#: smartdns.js:942 msgid "Filtering IP with blacklist" msgstr "使用IP黑名单过滤" -#: smartdns.js:904 +#: smartdns.js:948 msgid "TLS Hostname Verify" msgstr "校验TLS主机名" -#: smartdns.js:905 +#: smartdns.js:949 msgid "Set TLS hostname to verify." msgstr "设置校验TLS主机名。" -#: smartdns.js:916 +#: smartdns.js:960 msgid "No check certificate" msgstr "停用证书校验" -#: smartdns.js:917 +#: smartdns.js:961 msgid "Do not check certificate." msgstr "不校验证书的合法性。" -#: smartdns.js:927 +#: smartdns.js:971 msgid "TLS SNI name" msgstr "TLS SNI名称" -#: smartdns.js:928 +#: smartdns.js:972 msgid "Sets the server name indication for query. '-' for disable SNI name." msgstr "设置服务器SNI名称,‘-’表示禁用SNI名称。" -#: smartdns.js:939 +#: smartdns.js:983 msgid "HTTP Host" msgstr "HTTP主机" -#: smartdns.js:940 +#: smartdns.js:984 msgid "" "Set the HTTP host used for the query. Use this parameter when the host of " "the URL address is an IP address." msgstr "设置查询时使用的HTTP主机,当URL地址的host是IP地址时,使用此参数。" -#: smartdns.js:949 +#: smartdns.js:993 msgid "TLS SPKI Pinning" msgstr "TLS SPKI 指纹" -#: smartdns.js:950 +#: smartdns.js:994 msgid "" "Used to verify the validity of the TLS server, The value is Base64 encoded " "SPKI fingerprint, leaving blank to indicate that the validity of TLS is not " @@ -899,55 +935,55 @@ msgstr "" "用于校验 TLS 服务器的有效性,数值为 Base64 编码的 SPKI 指纹,留空表示不验证 " "TLS 的合法性。" -#: smartdns.js:962 +#: smartdns.js:1006 msgid "Marking Packets" msgstr "数据包标记" -#: smartdns.js:963 +#: smartdns.js:1007 msgid "Set mark on packets." msgstr "设置数据包标记。" -#: smartdns.js:970 +#: smartdns.js:1014 msgid "Use Proxy" msgstr "使用代理" -#: smartdns.js:971 +#: smartdns.js:1015 msgid "Use proxy to connect to upstream DNS server." msgstr "使用代理连接上游DNS服务器。" -#: smartdns.js:985 +#: smartdns.js:1029 msgid "Please set proxy server first." msgstr "请先设置代理服务器。" -#: smartdns.js:989 +#: smartdns.js:1033 msgid "Only socks5 proxy support udp server." msgstr "仅SOCKS5代理支持UDP服务器。" -#: smartdns.js:997 +#: smartdns.js:1041 msgid "Additional Args for upstream dns servers" msgstr "额外的上游 DNS 服务器参数" -#: smartdns.js:1005 +#: smartdns.js:1049 msgid "Client Rules" msgstr "客户端规则" -#: smartdns.js:1005 +#: smartdns.js:1049 msgid "Client Rules Settings, can achieve parental control functionality." msgstr "客户端规则设置,可以实现家长控制功能。" -#: smartdns.js:1009 +#: smartdns.js:1053 msgid "Basic Settings" msgstr "基本设置" -#: smartdns.js:1011 smartdns.js:1202 +#: smartdns.js:1055 smartdns.js:1246 msgid "DNS Block Setting" msgstr "域名屏蔽设置" -#: smartdns.js:1017 +#: smartdns.js:1061 msgid "Client Address" msgstr "客户端地址" -#: smartdns.js:1018 +#: smartdns.js:1062 msgid "" "If a client address is specified, only that client will apply this rule. You " "can enter an IP address, such as 1.2.3.4, or a MAC address, such as aa:bb:cc:" @@ -956,115 +992,115 @@ msgstr "" "如果指定了客户端,那么对应的客户端会应用相应的规则,可以输入IP地址,如:" "1.2.3.4,或MAC地址,如:aa:bb:cc:dd:ee:ff。" -#: smartdns.js:1039 +#: smartdns.js:1083 msgid "Client address format error, please input ip adress or mac address." msgstr "客户端地址格式错误,请输入 IP 地址或 mac 地址。" -#: smartdns.js:1042 +#: smartdns.js:1086 msgid "Client Address File" msgstr "客户端地址文件" -#: smartdns.js:1043 +#: smartdns.js:1087 msgid "Upload client address file, same as Client Address function." msgstr "上传客户端地址文件,与客户端地址功能相同。" -#: smartdns.js:1050 smartdns.js:1209 smartdns.js:1408 +#: smartdns.js:1094 smartdns.js:1253 smartdns.js:1452 msgid "DNS Server group belongs to, such as office, home." msgstr "设置服务器组,例如office,home" -#: smartdns.js:1070 smartdns.js:1229 smartdns.js:1428 +#: smartdns.js:1114 smartdns.js:1273 smartdns.js:1472 #, javascript-format msgid "Server Group %s not exists" msgstr "服务器组%s不存在" -#: smartdns.js:1186 smartdns.js:1332 smartdns.js:1362 smartdns.js:1432 +#: smartdns.js:1230 smartdns.js:1376 smartdns.js:1406 smartdns.js:1476 msgid "Domain List File" msgstr "域名列表文件" -#: smartdns.js:1186 smartdns.js:1362 +#: smartdns.js:1230 smartdns.js:1406 msgid "Upload domain list file." msgstr "上传域名列表文件" -#: smartdns.js:1197 +#: smartdns.js:1241 msgid "Domain Rules" msgstr "域名规则" -#: smartdns.js:1197 +#: smartdns.js:1241 msgid "Domain Rules Settings" msgstr "域名规则设置" -#: smartdns.js:1201 +#: smartdns.js:1245 msgid "DNS Forwarding Setting" msgstr "域名分流设置" -#: smartdns.js:1203 smartdns.js:1390 +#: smartdns.js:1247 smartdns.js:1434 msgid "Domain Rule List" msgstr "域名规则列表" -#: smartdns.js:1203 +#: smartdns.js:1247 msgid "Set Specific domain rule list." msgstr "设置指定域名的规则列表。" -#: smartdns.js:1204 +#: smartdns.js:1248 msgid "Domain Address" msgstr "域名地址" -#: smartdns.js:1204 +#: smartdns.js:1248 msgid "Set Specific domain ip address." msgstr "设置指定域名的IP地址。" -#: smartdns.js:1280 smartdns.js:1454 +#: smartdns.js:1324 smartdns.js:1498 msgid "Yes" msgstr "是" -#: smartdns.js:1281 smartdns.js:1455 +#: smartdns.js:1325 smartdns.js:1499 msgid "No" msgstr "否" -#: smartdns.js:1326 smartdns.js:1530 smartdns.js:1627 +#: smartdns.js:1370 smartdns.js:1574 smartdns.js:1671 msgid "Additional Rule Flag" msgstr "额外规则标识" -#: smartdns.js:1327 smartdns.js:1531 +#: smartdns.js:1371 smartdns.js:1575 msgid "" "Additional Flags for rules, read help on domain-rule for more information." msgstr "额外的规则标识,具体参考domain-rule的帮助说明。" -#: smartdns.js:1333 smartdns.js:1433 +#: smartdns.js:1377 smartdns.js:1477 msgid "" "Upload domain list file, or configure auto download from Download File " "Setting page." msgstr "上传域名列表文件,或在下载文件设置页面设置自动下载。" -#: smartdns.js:1341 smartdns.js:1370 +#: smartdns.js:1385 smartdns.js:1414 msgid "Domain List" msgstr "域名列表" -#: smartdns.js:1341 +#: smartdns.js:1385 msgid "Configure forwarding domain name list." msgstr "配置分流域名列表" -#: smartdns.js:1370 +#: smartdns.js:1414 msgid "Configure block domain list." msgstr "配置屏蔽域名列表" -#: smartdns.js:1391 +#: smartdns.js:1435 msgid "Configure domain rule list." msgstr "配置域名规则列表" -#: smartdns.js:1406 +#: smartdns.js:1450 msgid "Domain Rule Name" msgstr "域名规则名称" -#: smartdns.js:1439 +#: smartdns.js:1483 msgid "Block domain" msgstr "屏蔽域名" -#: smartdns.js:1439 +#: smartdns.js:1483 msgid "Block domain." msgstr "屏蔽域名。" -#: smartdns.js:1541 +#: smartdns.js:1585 msgid "" "Specify an IP address to return for any host in the given domains, Queries " "in the domains are never forwarded and always replied to with the specified " @@ -1073,139 +1109,139 @@ msgstr "" "配置特定域名返回特定的IP地址,域名查询将不到上游服务器请求,直接返回配置的IP" "地址,可用于广告屏蔽。" -#: smartdns.js:1560 +#: smartdns.js:1604 msgid "IP Rules" msgstr "IP规则" -#: smartdns.js:1560 +#: smartdns.js:1604 msgid "IP Rules Settings" msgstr "IP规则设置" -#: smartdns.js:1564 smartdns.js:1570 +#: smartdns.js:1608 smartdns.js:1614 msgid "IP Rule List" msgstr "IP规则列表" -#: smartdns.js:1564 +#: smartdns.js:1608 msgid "Set Specific ip rule list." msgstr "设置对应IP的规则。" -#: smartdns.js:1565 +#: smartdns.js:1609 msgid "IP Blacklist" msgstr "IP黑名单" -#: smartdns.js:1565 +#: smartdns.js:1609 msgid "Set Specific ip blacklist." msgstr "设置指定的 IP 黑名单列表。" -#: smartdns.js:1571 +#: smartdns.js:1615 msgid "Configure ip rule list." msgstr "配置IP规则列表" -#: smartdns.js:1586 +#: smartdns.js:1630 msgid "IP Rule Name" msgstr "IP规则名称" -#: smartdns.js:1590 +#: smartdns.js:1634 msgid "IP Set File" msgstr "IP集合列表文件" -#: smartdns.js:1590 +#: smartdns.js:1634 msgid "Upload IP set file." msgstr "上传IP集合列表文件。" -#: smartdns.js:1596 +#: smartdns.js:1640 msgid "IP Addresses" msgstr "IP地址" -#: smartdns.js:1596 +#: smartdns.js:1640 msgid "IP addresses, CIDR format." msgstr "IP地址,CIDR格式。" -#: smartdns.js:1601 +#: smartdns.js:1645 msgid "Whitelist IP" msgstr "白名单" -#: smartdns.js:1601 +#: smartdns.js:1645 msgid "Whitelist IP Rule, Accept IP addresses within the range." msgstr "白名单规则,接受指定范围的IP地址。" -#: smartdns.js:1606 +#: smartdns.js:1650 msgid "Blacklist IP" msgstr "黑名单" -#: smartdns.js:1606 +#: smartdns.js:1650 msgid "Blacklist IP Rule, Decline IP addresses within the range." msgstr "黑名单规则,拒绝指定范围的IP地址。" -#: smartdns.js:1611 +#: smartdns.js:1655 msgid "Ignore IP" msgstr "忽略IP" -#: smartdns.js:1611 +#: smartdns.js:1655 msgid "Do not use these IP addresses." msgstr "忽略这些IP地址" -#: smartdns.js:1616 +#: smartdns.js:1660 msgid "Bogus nxdomain" msgstr "假冒IP" -#: smartdns.js:1616 +#: smartdns.js:1660 msgid "Return SOA when the requested result contains a specified IP address." msgstr "当结果包含对应范围的IP时,返回SOA。" -#: smartdns.js:1621 +#: smartdns.js:1665 msgid "IP alias" msgstr "IP别名" -#: smartdns.js:1621 +#: smartdns.js:1665 msgid "" "IP Address Mapping, Can be used for CDN acceleration with Anycast IP, such " "as Cloudflare's CDN." msgstr "IP地址映射,可用于支持AnyCast IP的CDN加速,比如Cloudflare的CDN。" -#: smartdns.js:1628 +#: smartdns.js:1672 msgid "Additional Flags for rules, read help on ip-rule for more information." msgstr "额外的规则标识,具体参考ip-rule的帮助说明。" -#: smartdns.js:1637 +#: smartdns.js:1681 msgid "" "Configure IP blacklists that will be filtered from the results of specific " "DNS server." msgstr "配置需要从指定域名服务器结果过滤的IP黑名单。" -#: smartdns.js:1654 +#: smartdns.js:1698 msgid "Technical Support" msgstr "技术支持" -#: smartdns.js:1655 +#: smartdns.js:1699 msgid "If you like this software, please buy me a cup of coffee." msgstr "如果本软件对你有帮助,请给作者加个蛋。" -#: smartdns.js:1659 +#: smartdns.js:1703 msgid "SmartDNS official website" msgstr "SmartDNS官方网站" -#: smartdns.js:1660 +#: smartdns.js:1704 msgid "open website" msgstr "打开网站" -#: smartdns.js:1667 smartdns.js:1668 +#: smartdns.js:1711 smartdns.js:1712 msgid "Report bugs" msgstr "报告BUG" -#: smartdns.js:1675 +#: smartdns.js:1719 msgid "Donate to smartdns" msgstr "捐助smartdns项目" -#: smartdns.js:1676 +#: smartdns.js:1720 msgid "Donate" msgstr "捐助" -#: smartdns.js:1682 +#: smartdns.js:1726 msgid "Restart Service" msgstr "重启服务" -#: smartdns.js:1691 +#: smartdns.js:1735 msgid "Restart" msgstr "重启"