Merge pull request #1306 from aparcar/update_packages
authorJo-Philipp Wich <jo@mein.io>
Tue, 22 Aug 2017 19:21:59 +0000 (21:21 +0200)
committerGitHub <noreply@github.com>
Tue, 22 Aug 2017 19:21:59 +0000 (21:21 +0200)
luci-app-attendedsysupgrade: param update_package

52 files changed:
applications/luci-app-dnscrypt-proxy/Makefile [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot [new file with mode: 0644]
applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy [new file with mode: 0755]
applications/luci-app-mwan3/luasrc/model/cbi/mwan/advanced_hotplugscript.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/globalsconfig.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interface.lua
applications/luci-app-mwan3/luasrc/model/cbi/mwan/interfaceconfig.lua
applications/luci-app-mwan3/po/ja/mwan3.po
applications/luci-app-mwan3/po/templates/mwan3.pot
applications/luci-app-mwan3/po/zh-cn/mwan3.po
applications/luci-app-samba/po/ca/samba.po
applications/luci-app-samba/po/cs/samba.po
applications/luci-app-samba/po/de/samba.po
applications/luci-app-samba/po/el/samba.po
applications/luci-app-samba/po/en/samba.po
applications/luci-app-samba/po/es/samba.po
applications/luci-app-samba/po/fr/samba.po
applications/luci-app-samba/po/he/samba.po
applications/luci-app-samba/po/hu/samba.po
applications/luci-app-samba/po/it/samba.po
applications/luci-app-samba/po/ja/samba.po
applications/luci-app-samba/po/ms/samba.po
applications/luci-app-samba/po/no/samba.po
applications/luci-app-samba/po/pl/samba.po
applications/luci-app-samba/po/pt-br/samba.po
applications/luci-app-samba/po/pt/samba.po
applications/luci-app-samba/po/ro/samba.po
applications/luci-app-samba/po/ru/samba.po
applications/luci-app-samba/po/sk/samba.po
applications/luci-app-samba/po/sv/samba.po
applications/luci-app-samba/po/templates/samba.pot
applications/luci-app-samba/po/tr/samba.po
applications/luci-app-samba/po/uk/samba.po
applications/luci-app-samba/po/vi/samba.po
applications/luci-app-samba/po/zh-cn/samba.po
applications/luci-app-samba/po/zh-tw/samba.po
applications/luci-app-shadowsocks-libev/luasrc/model/cbi/shadowsocks-libev/rules.lua
applications/luci-app-shadowsocks-libev/luasrc/model/shadowsocks-libev.lua
applications/luci-app-travelmate/luasrc/model/cbi/travelmate/overview_tab.lua
applications/luci-app-travelmate/po/ja/travelmate.po
applications/luci-app-travelmate/po/pt-br/travelmate.po
applications/luci-app-travelmate/po/templates/travelmate.pot
applications/luci-app-uhttpd/luasrc/model/cbi/uhttpd/uhttpd.lua

diff --git a/applications/luci-app-dnscrypt-proxy/Makefile b/applications/luci-app-dnscrypt-proxy/Makefile
new file mode 100644 (file)
index 0000000..4b632b8
--- /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_PKGARCH:=all
+
+include ../../luci.mk
+
+# call BuildPackage - OpenWrt buildroot signature
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua b/applications/luci-app-dnscrypt-proxy/luasrc/controller/dnscrypt-proxy.lua
new file mode 100644 (file)
index 0000000..6d6790a
--- /dev/null
@@ -0,0 +1,32 @@
+-- Copyright 2017 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"}, cbi("dnscrypt-proxy/configuration_tab"), _("Edit DNSCrypt-Proxy Configuration"), 110).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "cfg_dnsmasq"}, cbi("dnscrypt-proxy/cfg_dnsmasq_tab"), _("Edit Dnsmasq Configuration"), 120).leaf = true
+       entry({"admin", "services", "dnscrypt-proxy", "advanced", "view_reslist"}, call("view_reslist"), _("View Resolver List"), 130).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'"))
+       templ.render("dnscrypt-proxy/logread", {title = i18n.translate("DNSCrypt-Proxy Logfile"), content = logfile})
+end
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/cfg_dnsmasq_tab.lua
new file mode 100644 (file)
index 0000000..d22abbf
--- /dev/null
@@ -0,0 +1,37 @@
+-- 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."))
+       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/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/configuration_tab.lua b/applications/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/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua b/applications/luci-app-dnscrypt-proxy/luasrc/model/cbi/dnscrypt-proxy/overview_tab.lua
new file mode 100644 (file)
index 0000000..7ab84ab
--- /dev/null
@@ -0,0 +1,177 @@
+-- Copyright 2017 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 date      = require("luci.http.protocol.date")
+local res_input = "/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv"
+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://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-resolvers.csv"
+
+if not fs.access("/lib/libustream-ssl.so") then
+       m = SimpleForm("error", nil, translate("SSL support not available, please install an libustream-ssl variant to use this package."))
+       m.submit = false
+       m.reset = false
+       return m
+end
+
+if not fs.access(res_input) then
+       luci.sys.call("env -i /bin/uclient-fetch --no-check-certificate -O " .. res_input .. " " .. url .. " >/dev/null 2>&1")
+end
+
+if not uci:get_first("dnscrypt-proxy", "global") then
+       uci:add("dnscrypt-proxy", "global")
+       uci:save("dnscrypt-proxy")
+       uci:commit("dnscrypt-proxy")
+end
+
+for line in io.lines(res_input) do
+       local name = line:match("^[%w_.-]*")
+       res_list[#res_list + 1] = { name = name }
+end
+
+m = Map("dnscrypt-proxy", translate("DNSCrypt-Proxy"),
+       translate("Configuration of the DNSCrypt-Proxy package. ")
+       .. translate("Keep in mind to configure Dnsmasq as well. ")
+       .. translatef("For further information "
+       .. "<a href=\"%s\" target=\"_blank\">"
+       .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt"))
+
+function m.on_after_commit(self)
+       luci.sys.call("env -i /etc/init.d/dnsmasq restart >/dev/null 2>&1")
+       luci.sys.call("env -i /etc/init.d/dnscrypt-proxy 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"
+o2.value = date.to_http(nixio.fs.stat(res_input).mtime)
+
+o3 = s:option(DummyValue, "", translate("File Checksum"))
+o3.template = "dnscrypt-proxy/res_options"
+o3.value = luci.sys.exec("sha256sum " .. res_input .. " | awk '{print $1}'")
+
+btn = s:option(Button, "", translate("Refresh Resolver List"))
+btn.inputtitle = translate("Refresh List")
+btn.inputstyle = "apply"
+btn.disabled = false
+function btn.write(self, section, value)
+       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
+
+-- Trigger settings
+
+t = s:option(DynamicList, "procd_trigger", translate("Startup Trigger"),
+       translate("By default the DNSCrypt-Proxy startup will be triggered by ifup events of multiple network interfaces. ")
+       .. translate("To restrict the trigger, add only the relevant network interface(s). ")
+       .. translate("Usually the 'wan' interface should work for most users."))
+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.rmempty = true
+
+-- Extra options
+
+ds = s:option(DummyValue, "_dummy", translate("Extra options"),
+       translate("Options for further tweaking in case the defaults are not suitable for you."))
+ds.template = "cbi/nullsection"
+
+btn = 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. ")
+       .. translatef("For further information "
+       .. "<a href=\"%s\" target=\"_blank\">"
+       .. "see the wiki online</a>", "https://wiki.openwrt.org/inbox/dnscrypt"))
+btn.inputtitle = translate("Create Config File")
+btn.inputstyle = "apply"
+btn.disabled = false
+function btn.write(self, section, value)
+       if not fs.access("/etc/resolv-crypt.conf") then
+               luci.sys.call("env -i echo 'options timeout:1' > '/etc/resolv-crypt.conf'")
+       end
+end
+
+-- Mandatory options per instance
+
+s = m:section(TypedSection, "dnscrypt-proxy", translate("Instance options"))
+s.anonymous = true
+s.addremove = true
+
+o1 = 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]'."))
+o1.default = address or "127.0.0.1"
+o1.rmempty = false
+
+o2 = s:option(Value, "port", translate("Port"),
+       translate("The listening port for DNS queries."))
+o2.datatype = "port"
+o2.default = port
+o2.rmempty = false
+
+o3 = s:option(ListValue, "resolver", translate("Resolver"),
+       translate("Name of the remote DNS service for resolving queries."))
+o3.datatype = "hostname"
+o3.widget = "select"
+local i, v
+for i, v in ipairs(res_list) do
+       if v.name ~= "Name" then
+               o3:value(v.name)
+       end
+end
+o3.default = resolver
+o3.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
+
+return m
diff --git a/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/config_css.htm b/applications/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/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/logread.htm b/applications/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/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/res_options.htm b/applications/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/applications/luci-app-dnscrypt-proxy/luasrc/view/dnscrypt-proxy/view_reslist.htm b/applications/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/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po b/applications/luci-app-dnscrypt-proxy/po/ja/dnscrypt-proxy.po
new file mode 100644 (file)
index 0000000..0328df2
--- /dev/null
@@ -0,0 +1,232 @@
+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.3\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: ja\n"
+
+msgid "Advanced"
+msgstr "詳細"
+
+msgid "Alternate Resolver List"
+msgstr "代替 リゾルバ リスト"
+
+msgid "Blacklist"
+msgstr "ブラックリスト"
+
+msgid "Block IPv6"
+msgstr "IPv6 のブロック"
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"multiple network interfaces."
+msgstr ""
+"デフォルトでは、 DNSCrypt-Proxy は全ネットワーク インターフェースの ifup イベ"
+"ントによりトリガされ起動します。"
+
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr "DNSCrypt-Proxy パッケージの設定です。"
+
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances."
+msgstr ""
+"複数の DNSCrypt インスタンスで DNS アップストリーム タイムアウトの設定値を共"
+"用するため、 'options timeout:1' を含めた '/etc/resolv-crypt.conf' を作成しま"
+"す。"
+
+msgid "Create Config File"
+msgstr "設定ファイルの作成"
+
+msgid "Create custom config file"
+msgstr "カスタム設定ファイルの作成"
+
+msgid "DNS Query Logfile"
+msgstr "DNS クエリ ログファイル"
+
+msgid "DNSCrypt-Proxy"
+msgstr "DNSCrypt-Proxy"
+
+msgid "DNSCrypt-Proxy Logfile"
+msgstr "DNSCrypt-Proxy ログファイル"
+
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr "DNSCrypt-Proxy リゾルバ リスト"
+
+msgid "Default Resolver List"
+msgstr "デフォルト リゾルバ リスト"
+
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr "DNSCrypt-Proxy の高速化のため、IPv6 を無効化します。"
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr "DNSCrypt-Proxy 設定の編集"
+
+msgid "Edit Dnsmasq Configuration"
+msgstr "Dnsmasq 設定の編集"
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr "DNSCrypt-Proxy の高速化のため、キャッシュ機能を有効化します。"
+
+msgid "Ephemeral Keys"
+msgstr "一時的なキー"
+
+msgid "Extra options"
+msgstr "拡張オプション"
+
+msgid "File Checksum"
+msgstr "ファイル チェックサム"
+
+msgid "File Date"
+msgstr "ファイル日付"
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+"詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン Wiki</a> を確認して"
+"ください。"
+
+msgid "General options"
+msgstr "全般設定"
+
+msgid "IP Address"
+msgstr "IP アドレス"
+
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+"クエリ毎に一時的な公開鍵を使用することにより、プライバシーを向上します。"
+
+msgid "Input file not found, please check your configuration."
+msgstr "入力ファイルが見つかりません。設定を確認してください。"
+
+msgid "Instance options"
+msgstr "インスタンス オプション"
+
+msgid "Keep in mind to configure Dnsmasq as well."
+msgstr "Dnsmasq を適切に設定する必要があることに留意してください。"
+
+msgid "Local Cache"
+msgstr "ローカル キャッシュ"
+
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+"ローカル ブラックリストは、不正なサイトをドメイン名または IP アドレスによって"
+"ブロックすることが可能です。"
+
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+"受信した DNS クエリをファイルに記録します。これにより、ネットワークで何が起き"
+"ているかをリアルタイムに把握することが可能です。"
+
+msgid "Name of the remote DNS service for resolving queries."
+msgstr "クエリの名前解決を行う、リモートの DNS サービス名です。"
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr "デフォルト設定が適切でない場合、追加で設定するためのオプションです。"
+
+msgid "Overview"
+msgstr "概要"
+
+msgid "Port"
+msgstr "ポート"
+
+msgid "Refresh List"
+msgstr "リストのリフレッシュ"
+
+msgid "Refresh Resolver List"
+msgstr "リゾルバ リストのリフレッシュ"
+
+msgid "Resolver"
+msgstr "リゾルバ"
+
+msgid ""
+"SSL support not available, please install an libustream-ssl variant to use "
+"this package."
+msgstr ""
+"SSL サポートが利用できません。このパッケージを使用するには libustream-ssl 等"
+"をインストールし、 SSL サポートを有効にしてください。"
+
+msgid "Save"
+msgstr "保存"
+
+msgid "Specify a non-default Resolver List."
+msgstr "デフォルトとは異なるリゾルバ リストを設定します。"
+
+msgid "Startup Trigger"
+msgstr "スタートアップ トリガ"
+
+msgid "The listening port for DNS queries."
+msgstr "DNS クエリを待ち受けるポートです。"
+
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+"ローカルの IPv4 または IPv6 アドレスです。 IPv6 アドレスの場合、ブラケット "
+"\"[ ]\" を含めて記述される必要があります(例: '[::1]')。"
+
+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')"
+
+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) の内容を変更することができます。"
+
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+"このフォームでは、メインの Dnsmasq 設定ファイル (/etc/config/dhcp) の内容を変"
+"更することができます。"
+
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+"このフォームには、現在の DNSCrypt リゾルバ リストの内容が表示されます。"
+
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+"このフォームには、システムログ内の DNSCrypt-Proxy に関連するメッセージのみが"
+"表示されます。"
+
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+"このオプションは、通常よりも CPU リソースを多く使用するほか、ほとんどの "
+"DNSCrypt サーバーでは不要なものです。"
+
+msgid "To restrict the trigger, add only the relevant network interface(s)."
+msgstr ""
+"トリガを限定するには、適切なネットワーク インターフェースのみを追加してくださ"
+"い。"
+
+msgid "Usually the 'wan' interface should work for most users."
+msgstr "通常、 'wan' インターフェースがほとんどのユーザーに適しています。"
+
+msgid "View Logfile"
+msgstr "ログファイルの確認"
+
+msgid "View Resolver List"
+msgstr "リゾルバ リストの確認"
diff --git a/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot b/applications/luci-app-dnscrypt-proxy/po/templates/dnscrypt-proxy.pot
new file mode 100644 (file)
index 0000000..ea83e7a
--- /dev/null
@@ -0,0 +1,191 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8"
+
+msgid "Advanced"
+msgstr ""
+
+msgid "Alternate Resolver List"
+msgstr ""
+
+msgid "Blacklist"
+msgstr ""
+
+msgid "Block IPv6"
+msgstr ""
+
+msgid ""
+"By default the DNSCrypt-Proxy startup will be triggered by ifup events of "
+"multiple network interfaces."
+msgstr ""
+
+msgid "Configuration of the DNSCrypt-Proxy package."
+msgstr ""
+
+msgid ""
+"Create '/etc/resolv-crypt.conf' with 'options timeout:1' to reduce DNS "
+"upstream timeouts with multiple DNSCrypt instances."
+msgstr ""
+
+msgid "Create Config File"
+msgstr ""
+
+msgid "Create custom config file"
+msgstr ""
+
+msgid "DNS Query Logfile"
+msgstr ""
+
+msgid "DNSCrypt-Proxy"
+msgstr ""
+
+msgid "DNSCrypt-Proxy Logfile"
+msgstr ""
+
+msgid "DNSCrypt-Proxy Resolver List"
+msgstr ""
+
+msgid "Default Resolver List"
+msgstr ""
+
+msgid "Disable IPv6 to speed up DNSCrypt-Proxy."
+msgstr ""
+
+msgid "Edit DNSCrypt-Proxy Configuration"
+msgstr ""
+
+msgid "Edit Dnsmasq Configuration"
+msgstr ""
+
+msgid "Enable Caching to speed up DNSCcrypt-Proxy."
+msgstr ""
+
+msgid "Ephemeral Keys"
+msgstr ""
+
+msgid "Extra options"
+msgstr ""
+
+msgid "File Checksum"
+msgstr ""
+
+msgid "File Date"
+msgstr ""
+
+msgid ""
+"For further information <a href=\"%s\" target=\"_blank\">see the wiki "
+"online</a>"
+msgstr ""
+
+msgid "General options"
+msgstr ""
+
+msgid "IP Address"
+msgstr ""
+
+msgid "Improve privacy by using an ephemeral public key for each query."
+msgstr ""
+
+msgid "Input file not found, please check your configuration."
+msgstr ""
+
+msgid "Instance options"
+msgstr ""
+
+msgid "Keep in mind to configure Dnsmasq as well."
+msgstr ""
+
+msgid "Local Cache"
+msgstr ""
+
+msgid ""
+"Local blacklists allow you to block abuse sites by domains or ip addresses."
+msgstr ""
+
+msgid ""
+"Log the received DNS queries to a file, so you can watch in real-time what "
+"is happening on the network."
+msgstr ""
+
+msgid "Name of the remote DNS service for resolving queries."
+msgstr ""
+
+msgid ""
+"Options for further tweaking in case the defaults are not suitable for you."
+msgstr ""
+
+msgid "Overview"
+msgstr ""
+
+msgid "Port"
+msgstr ""
+
+msgid "Refresh List"
+msgstr ""
+
+msgid "Refresh Resolver List"
+msgstr ""
+
+msgid "Resolver"
+msgstr ""
+
+msgid ""
+"SSL support not available, please install an libustream-ssl variant to use "
+"this package."
+msgstr ""
+
+msgid "Save"
+msgstr ""
+
+msgid "Specify a non-default Resolver List."
+msgstr ""
+
+msgid "Startup Trigger"
+msgstr ""
+
+msgid "The listening port for DNS queries."
+msgstr ""
+
+msgid ""
+"The local IPv4 or IPv6 address. The latter one should be specified within "
+"brackets, e.g. '[::1]'."
+msgstr ""
+
+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 ""
+
+msgid ""
+"This form allows you to modify the content of the main DNSCrypt-Proxy "
+"configuration file (/etc/config/dnscrypt-proxy)."
+msgstr ""
+
+msgid ""
+"This form allows you to modify the content of the main Dnsmasq configuration "
+"file (/etc/config/dhcp)."
+msgstr ""
+
+msgid "This form shows the content of the current DNSCrypt Resolver List."
+msgstr ""
+
+msgid ""
+"This form shows the syslog output, pre-filtered for DNSCrypt-Proxy related "
+"messages only."
+msgstr ""
+
+msgid ""
+"This option requires extra CPU cycles and is useless with most DNSCrypt "
+"server."
+msgstr ""
+
+msgid "To restrict the trigger, add only the relevant network interface(s)."
+msgstr ""
+
+msgid "Usually the 'wan' interface should work for most users."
+msgstr ""
+
+msgid "View Logfile"
+msgstr ""
+
+msgid "View Resolver List"
+msgstr ""
diff --git a/applications/luci-app-dnscrypt-proxy/root/etc/uci-defaults/60_luci-dnscrypt-proxy b/applications/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
index 0e7b8b1..1b97080 100644 (file)
@@ -1,55 +1,40 @@
 -- ------ hotplug script configuration ------ --
 
 fs = require "nixio.fs"
-sys = require "luci.sys"
 ut = require "luci.util"
 
-script = "/etc/hotplug.d/iface/16-mwancustom"
-scriptBackup = "/etc/hotplug.d/iface/16-mwancustombak"
-
-if luci.http.formvalue("cbid.luci.1._restorebak") then -- restore button has been clicked
-       luci.http.redirect(luci.dispatcher.build_url("admin/network/mwan/advanced/hotplugscript") .. "?restore=yes")
-elseif luci.http.formvalue("restore") == "yes" then -- restore script from backup
-       os.execute("cp -f " .. scriptBackup .. " " .. script)
-end
-
+script = "/etc/mwan3.user"
 
 m5 = SimpleForm("luci", nil)
        m5:append(Template("mwan/advanced_hotplugscript")) -- highlight current tab
 
 f = m5:section(SimpleSection, nil,
-       translate("This section allows you to modify the contents of /etc/hotplug.d/iface/16-mwancustom<br />" ..
-       "This is useful for running system commands and/or scripts based on interface ifup or ifdown hotplug events<br /><br />" ..
+       translate("This section allows you to modify the content of \"/etc/mwan3.user\".<br />" ..
+       "The file is also preserved during sysupgrade.<br />" ..
+       "<br />" ..
        "Notes:<br />" ..
-       "The first line of the script must be &#34;#!/bin/sh&#34; without quotes<br />" ..
-       "Lines beginning with # are comments and are not executed<br /><br />" ..
-       "Available variables:<br />" ..
-       "$ACTION is the hotplug event (ifup, ifdown)<br />" ..
-       "$INTERFACE is the interface name (wan1, wan2, etc.)<br />" ..
-       "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"))
-
-
-restore = f:option(Button, "_restorebak", translate("Restore default hotplug script"))
-       restore.inputtitle = translate("Restore...")
-       restore.inputstyle = "apply"
+       "This file is interpreted as a shell script.<br />" ..
+       "The first line of the script must be &#34;#!/bin/sh&#34; without quotes.<br />" ..
+       "Lines beginning with # are comments and are not executed.<br />" ..
+       "Put your custom mwan3 action here, they will<br />" ..
+       "be executed with each netifd hotplug interface event<br />" ..
+       "on interfaces for which mwan3 is enabled.<br />" ..
+       "<br />" ..
+       "There are three main environment variables that are passed to this script.<br />" ..
+       "<br />" ..
+       "$ACTION Either \"ifup\" or \"ifdown\"<br />" ..
+       "$INTERFACE Name of the interface which went up or down (e.g. \"wan\" or \"wwan\")<br />" ..
+       "$DEVICE Physical device name which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br />" ..
+       "<br />"))
 
 t = f:option(TextValue, "lines")
        t.rmempty = true
        t.rows = 20
-
        function t.cfgvalue()
-               local hps = fs.readfile(script)
-               if not hps or hps == "" then -- if script does not exist or is blank restore from backup
-                       sys.call("cp -f " .. scriptBackup .. " " .. script)
-                       return fs.readfile(script)
-               else
-                       return hps
-               end
+               return fs.readfile(script)
        end
-
        function t.write(self, section, data) -- format and write new data to script
                return fs.writefile(script, ut.trim(data:gsub("\r\n", "\n")) .. "\n")
        end
 
-
 return m5
index 54d20bd..919ed46 100644 (file)
@@ -29,4 +29,12 @@ for _, net in ipairs(net:get_networks()) do
 end
 n.rmempty = false
 
+mask = s:option(
+       Value,
+       "mmx_mask",
+       translate("Firewall mask"),
+       translate("Enter value in hex, starting with <code>0x</code>"))
+mask.datatype = "hex(4)"
+mask.default = "0xff00"
+
 return m
index aeabc63..c8c122a 100644 (file)
@@ -147,6 +147,16 @@ track_ip = mwan_interface:option(DummyValue, "track_ip", translate("Tracking IP"
                end
        end
 
+track_method = mwan_interface:option(DummyValue, "track_method", translate("Tracking method"))
+       track_method.rawhtml = true
+       function track_method.cfgvalue(self, s)
+               if tracked then
+                       return self.map:get(s, "track_method") or "&#8212;"
+               else
+                       return "&#8212;"
+               end
+       end
+
 reliability = mwan_interface:option(DummyValue, "reliability", translate("Tracking reliability"))
        reliability.rawhtml = true
        function reliability.cfgvalue(self, s)
index ab44ba6..0318091 100644 (file)
@@ -117,6 +117,12 @@ track_ip = mwan_interface:option(DynamicList, "track_ip", translate("Tracking ho
        translate("This hostname or IP address will be pinged to determine if the link is up or down. Leave blank to assume interface is always online"))
        track_ip.datatype = "host"
 
+track_method = mwan_interface:option(ListValue, "track_method", translate("Tracking method"))
+       track_method.default = "ping"
+       track_method:value("ping")
+       track_method:value("arping")
+       track_method:value("httping")
+
 reliability = mwan_interface:option(Value, "reliability", translate("Tracking reliability"),
        translate("Acceptable values: 1-100. This many Tracking IP addresses must respond for the link to be deemed up"))
        reliability.datatype = "range(1, 100)"
index 89fa5ea..72c5ddd 100644 (file)
@@ -88,6 +88,9 @@ msgstr ""
 msgid "Enabled"
 msgstr "有効"
 
+msgid "Enter value in hex, starting with <code>0x</code>"
+msgstr "<code>0x</code> で始まる16進数の値を入力してください。"
+
 msgid "Error collecting troubleshooting information"
 msgstr "トラブルシューティング情報の収集エラー"
 
@@ -95,11 +98,14 @@ msgid "Errors"
 msgstr "エラー"
 
 msgid "Expect interface state on up event"
-msgstr ""
+msgstr "Up イベント時に予想されるインターフェースの状態です。"
 
 msgid "Failure interval"
 msgstr "障害検出 インターバル"
 
+msgid "Firewall mask"
+msgstr "ファイアウォール マスク"
+
 msgid "Flush conntrack table"
 msgstr ""
 
@@ -107,10 +113,10 @@ msgid "Flush global firewall conntrack table on interface events"
 msgstr ""
 
 msgid "Globals"
-msgstr ""
+msgstr "全般"
 
 msgid "Globals mwan3 options"
-msgstr ""
+msgstr "MWAN3 全般オプション"
 
 msgid "Hotplug Script"
 msgstr "ホットプラグ スクリプト"
@@ -131,7 +137,7 @@ msgid "IPv6"
 msgstr "IPv6"
 
 msgid "Initial state"
-msgstr ""
+msgstr "初期状態"
 
 msgid "Interface"
 msgstr "インターフェース"
@@ -299,7 +305,7 @@ msgid "Offline"
 msgstr "オフライン"
 
 msgid "Online"
-msgstr ""
+msgstr "オンライン"
 
 msgid "Online (tracking active)"
 msgstr "オンライン(追跡実行中)"
@@ -320,7 +326,7 @@ msgid "Ping interval"
 msgstr "Ping インターバル"
 
 msgid "Ping interval during failure detection"
-msgstr "障害検出動作中の Ping 実行間隔です。"
+msgstr "障害検出中の Ping 実行間隔です。"
 
 msgid "Ping interval during failure recovering"
 msgstr "障害復旧中の Ping 実行間隔です。"
@@ -370,12 +376,6 @@ msgstr "障害復旧 インターバル"
 msgid "Restart MWAN"
 msgstr "MWAN の再起動"
 
-msgid "Restore default hotplug script"
-msgstr "デフォルトのホットプラグ スクリプトの復元"
-
-msgid "Restore..."
-msgstr "復元..."
-
 msgid "Rule"
 msgstr "ルール"
 
@@ -443,6 +443,31 @@ msgstr ""
 "に対して Ping の送信が行われます。常にオンラインとする場合、空欄のままにしま"
 "す。"
 
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+msgstr ""
+"このセクションでは、 \"/etc/mwan3.user\" の内容を変更することができます。"
+"<br />このファイルは、 sysupgrade 時に保持されます。<br /><br />注意: <br />"
+"このファイルは、シェルスクリプトとして解釈されます。<br />スクリプトの1行目"
+"は、&#34;#!bin/sh&#34; である必要があります(クォーテーション不要)。<br /># "
+"で始まる行はコメントであり、実行されません。<br />mwan3 のカスタム動作をここ"
+"に入力してください。これらは、 mwan3 が有効なインターフェースの<br />netifd "
+"ホットプラグ インターフェース イベント毎に実行されます。<br /><br />主に3つの"
+"環境変数が利用可能です。<br /><br />$ACTION - \"ifup\" および \"ifdown\"<br /"
+">$INTERFACE - Up または Down が行われたインターフェース名(例: \"wan\" や "
+"\"wwan\")<br />$DEVICE - Up または Down が行われた物理デバイス名(例: "
+"\"eth0\" や \"wwan0\")<br /><br />"
+
 msgid "This section allows you to modify the contents of /etc/config/mwan3"
 msgstr ""
 "このセクションでは、 /etc/config/mwan3 の内容を変更することができます。"
@@ -455,32 +480,15 @@ msgid "This section allows you to modify the contents of /etc/config/wireless"
 msgstr ""
 "このセクションでは、 /etc/config/wireless の内容を変更することができます。"
 
-msgid ""
-"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
-"mwancustom<br />This is useful for running system commands and/or scripts "
-"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
-"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
-">Lines beginning with # are comments and are not executed<br /><br /"
-">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
-"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
-"device name attached to the interface (eth0.1, eth1, etc.)"
-msgstr ""
-"このセクションでは、 /etc/hotplug.d/iface/16-mwancustom の内容を変更すること"
-"ができます。<br />これは、インターフェースの ifup または ifdown ホットプラグ "
-"イベント時にシステムコマンドまたはスクリプト、もしくはその両方を実行すること"
-"に役立ちます。<br /><br />注意:<br />スクリプトの1行目は、&#34;#!bin/sh&#34; "
-"である必要があります(クオーテーション不要)。<br /># で始まる行はコメントと"
-"して認識され、実行されません。<br /><br />利用可能な変数:<br />$ACTION - ホッ"
-"トプラグ イベント (ifup, ifdown)<br />$INTERFACE - インターフェース名(wan1, "
-"wan2, その他)<br />$DEVICE - インターフェースにアタッチされたデバイスの名前"
-"(eth0.1, eth1, その他)"
-
 msgid "Tracking IP"
 msgstr "追跡 IP"
 
 msgid "Tracking hostname or IP address"
 msgstr "追跡ホスト名または IP アドレス"
 
+msgid "Tracking method"
+msgstr "追跡方式"
+
 msgid "Tracking reliability"
 msgstr "追跡の信頼性"
 
@@ -505,6 +513,8 @@ msgid ""
 "Use the IP address of this interface as source IP address for traffic "
 "initiated by the router itself"
 msgstr ""
+"ルーター自身によって発生するトラフィックのアクセス元 IP アドレスとして、この"
+"インターフェースの IP アドレスが使用されます。"
 
 msgid "View the contents of /etc/protocols for protocol descriptions"
 msgstr "プロトコルの説明については、 /etc/protocols の内容を確認してください。"
@@ -653,10 +663,3 @@ msgstr "停止"
 
 msgid "unreachable (reject)"
 msgstr "unreachable (reject)"
-
-#~ msgid ""
-#~ "This IP address will be pinged to dermine if the link is up or down. "
-#~ "Leave blank to assume interface is always online"
-#~ msgstr ""
-#~ "これらは、リンクの Up または Down を判定するために Ping が送信されるIP ア"
-#~ "ドレスです。常にオンラインとする場合、空欄のままにします。"
index 8694298..e63d8ad 100644 (file)
@@ -73,6 +73,9 @@ msgstr ""
 msgid "Enabled"
 msgstr ""
 
+msgid "Enter value in hex, starting with <code>0x</code>"
+msgstr ""
+
 msgid "Error collecting troubleshooting information"
 msgstr ""
 
@@ -85,6 +88,9 @@ msgstr ""
 msgid "Failure interval"
 msgstr ""
 
+msgid "Firewall mask"
+msgstr ""
+
 msgid "Flush conntrack table"
 msgstr ""
 
@@ -330,12 +336,6 @@ msgstr ""
 msgid "Restart MWAN"
 msgstr ""
 
-msgid "Restore default hotplug script"
-msgstr ""
-
-msgid "Restore..."
-msgstr ""
-
 msgid "Rule"
 msgstr ""
 
@@ -389,6 +389,20 @@ msgid ""
 "down. Leave blank to assume interface is always online"
 msgstr ""
 
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+msgstr ""
+
 msgid "This section allows you to modify the contents of /etc/config/mwan3"
 msgstr ""
 
@@ -398,23 +412,15 @@ msgstr ""
 msgid "This section allows you to modify the contents of /etc/config/wireless"
 msgstr ""
 
-msgid ""
-"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
-"mwancustom<br />This is useful for running system commands and/or scripts "
-"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
-"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
-">Lines beginning with # are comments and are not executed<br /><br /"
-">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
-"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
-"device name attached to the interface (eth0.1, eth1, etc.)"
-msgstr ""
-
 msgid "Tracking IP"
 msgstr ""
 
 msgid "Tracking hostname or IP address"
 msgstr ""
 
+msgid "Tracking method"
+msgstr ""
+
 msgid "Tracking reliability"
 msgstr ""
 
index 3c505d8..b133e8b 100644 (file)
@@ -76,6 +76,9 @@ msgstr "当 Ping 成功次数达到这个数值后,已经被认为离线的接
 msgid "Enabled"
 msgstr "启用"
 
+msgid "Enter value in hex, starting with <code>0x</code>"
+msgstr ""
+
 msgid "Error collecting troubleshooting information"
 msgstr "收集故障排除信息时出错"
 
@@ -88,6 +91,9 @@ msgstr ""
 msgid "Failure interval"
 msgstr "故障检测间隔"
 
+msgid "Firewall mask"
+msgstr ""
+
 msgid "Flush conntrack table"
 msgstr "刷新连接跟踪表"
 
@@ -350,12 +356,6 @@ msgstr "故障恢复间隔"
 msgid "Restart MWAN"
 msgstr "重启 MWAN"
 
-msgid "Restore default hotplug script"
-msgstr "恢复默认的 hotplug 脚本"
-
-msgid "Restore..."
-msgstr "恢复..."
-
 msgid "Rule"
 msgstr "规则"
 
@@ -416,6 +416,20 @@ msgid ""
 "down. Leave blank to assume interface is always online"
 msgstr "通过 ping 此主机或 IP 地址来确定链路是否在线。留空则认为接口始终在线"
 
+msgid ""
+"This section allows you to modify the content of \"/etc/mwan3.user\".<br /"
+">The file is also preserved during sysupgrade.<br /><br />Notes:<br />This "
+"file is interpreted as a shell script.<br />The first line of the script "
+"must be &#34;#!/bin/sh&#34; without quotes.<br />Lines beginning with # are "
+"comments and are not executed.<br />Put your custom mwan3 action here, they "
+"will<br />be executed with each netifd hotplug interface event<br />on "
+"interfaces for which mwan3 is enabled.<br /><br />There are three main "
+"environment variables that are passed to this script.<br /><br />$ACTION "
+"Either \"ifup\" or \"ifdown\"<br />$INTERFACE Name of the interface which "
+"went up or down (e.g. \"wan\" or \"wwan\")<br />$DEVICE Physical device name "
+"which interface went up or down (e.g. \"eth0\" or \"wwan0\")<br /><br />"
+msgstr ""
+
 msgid "This section allows you to modify the contents of /etc/config/mwan3"
 msgstr "这里允许你修改 /etc/config/mwan3 的内容"
 
@@ -425,29 +439,15 @@ msgstr "这里允许你修改 /etc/config/network 的内容"
 msgid "This section allows you to modify the contents of /etc/config/wireless"
 msgstr "这里允许你修改 /etc/config/wireless 的内容"
 
-msgid ""
-"This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
-"mwancustom<br />This is useful for running system commands and/or scripts "
-"based on interface ifup or ifdown hotplug events<br /><br />Notes:<br />The "
-"first line of the script must be &#34;#!/bin/sh&#34; without quotes<br /"
-">Lines beginning with # are comments and are not executed<br /><br /"
-">Available variables:<br />$ACTION is the hotplug event (ifup, ifdown)<br />"
-"$INTERFACE is the interface name (wan1, wan2, etc.)<br />$DEVICE is the "
-"device name attached to the interface (eth0.1, eth1, etc.)"
-msgstr ""
-"这里允许你修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接口 "
-"ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />脚本的"
-"第一行必须是 &#34;#!/bin/sh&#34; 不含引号<br />以#开头的行是注释,不会执行"
-"<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)<br />"
-"$INTERFACE 是接口名称(wan1、wan2 等)<br />$DEVICE 是连接到接口的设备名称 "
-"(eth0.1、eth1 等)"
-
 msgid "Tracking IP"
 msgstr "追踪的 IP"
 
 msgid "Tracking hostname or IP address"
 msgstr "追踪的主机或 IP 地址"
 
+msgid "Tracking method"
+msgstr ""
+
 msgid "Tracking reliability"
 msgstr "追踪可靠性"
 
@@ -590,3 +590,26 @@ msgstr ""
 
 msgid "unreachable (reject)"
 msgstr "不可达(拒绝)"
+
+#~ msgid "Restore default hotplug script"
+#~ msgstr "恢复默认的 hotplug 脚本"
+
+#~ msgid "Restore..."
+#~ msgstr "恢复..."
+
+#~ msgid ""
+#~ "This section allows you to modify the contents of /etc/hotplug.d/iface/16-"
+#~ "mwancustom<br />This is useful for running system commands and/or scripts "
+#~ "based on interface ifup or ifdown hotplug events<br /><br />Notes:<br /"
+#~ ">The first line of the script must be &#34;#!/bin/sh&#34; without "
+#~ "quotes<br />Lines beginning with # are comments and are not executed<br /"
+#~ "><br />Available variables:<br />$ACTION is the hotplug event (ifup, "
+#~ "ifdown)<br />$INTERFACE is the interface name (wan1, wan2, etc.)<br />"
+#~ "$DEVICE is the device name attached to the interface (eth0.1, eth1, etc.)"
+#~ msgstr ""
+#~ "这里允许你修改 /etc/hotplug.d/iface/16-mwancustom 的内容<br />这可以在接"
+#~ "口 ifup 或 ifdown Hotplug 事件时运行系统命令或脚本<br /><br />注意:<br />"
+#~ "脚本的第一行必须是 &#34;#!/bin/sh&#34; 不含引号<br />以#开头的行是注释,"
+#~ "不会执行<br /><br />可用变量:<br />$ACTION 是 Hotplug 事件(ifup, ifdown)"
+#~ "<br />$INTERFACE 是接口名称(wan1、wan2 等)<br />$DEVICE 是连接到接口的设"
+#~ "备名称 (eth0.1、eth1 等)"
index fadcbdf..eb6be15 100644 (file)
@@ -65,6 +65,11 @@ msgstr "Comparticions de xarxa"
 msgid "Path"
 msgstr "Ruta"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Només lectura"
 
index 4a00124..d66d876 100644 (file)
@@ -63,6 +63,11 @@ msgstr "Síťová sdílení"
 msgid "Path"
 msgstr "Cesta"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Pouze pro čtení"
 
index 1bcac0c..4e8da53 100644 (file)
@@ -65,6 +65,11 @@ msgstr "Netzwerkfreigaben"
 msgid "Path"
 msgstr "Pfad"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Nur Lesen"
 
index 9a15ad1..878416a 100644 (file)
@@ -61,6 +61,11 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr ""
 
index 94cfdb5..642580e 100644 (file)
@@ -61,6 +61,11 @@ msgstr "Network Shares"
 msgid "Path"
 msgstr "Path"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Read-only"
 
index c14ebd2..57c4b86 100644 (file)
@@ -63,6 +63,11 @@ msgstr "Comparticiones de red"
 msgid "Path"
 msgstr "Dirección"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Solo lectura"
 
index ff040b5..63960fc 100644 (file)
@@ -63,6 +63,11 @@ msgstr "Partages réseau"
 msgid "Path"
 msgstr "Chemin"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Lecture seule"
 
index 620f56c..010d2b2 100644 (file)
@@ -56,6 +56,11 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr ""
 
index 38a9a08..0263edb 100644 (file)
@@ -63,6 +63,11 @@ msgstr "Hálózati megosztások"
 msgid "Path"
 msgstr "Elérési út"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Csak olvasható"
 
index a2bb9b6..8e5b062 100644 (file)
@@ -64,6 +64,11 @@ msgstr "Condivisioni di rete"
 msgid "Path"
 msgstr "Percorso"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Solo lettura"
 
index 9f338de..eca10ef 100644 (file)
@@ -1,17 +1,17 @@
 msgid ""
 msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
+"Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2009-05-19 19:36+0200\n"
-"PO-Revision-Date: 2011-11-03 18:09+0200\n"
-"Last-Translator: Kentaro <kentaro.matsuyama@gmail.com>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
+"PO-Revision-Date: 2017-08-16 00:41+0900\n"
+"Last-Translator: INAGAKI Hiroshi <musashino.open@gmail.com>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Pootle 2.0.4\n"
+"X-Generator: Poedit 2.0.3\n"
+"Language-Team: \n"
 
 msgid "Allow guests"
 msgstr "ゲストアクセスを許可"
@@ -61,6 +61,13 @@ msgstr "ネットワーク共有"
 msgid "Path"
 msgstr "パス"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+"共有するディレクトリを追加してください。マウントされたデバイス等のディレクト"
+"リを設定し、公開することができます。"
+
 msgid "Read-only"
 msgstr "読み込みのみ"
 
index de4ed7c..d5f1ce1 100644 (file)
@@ -55,6 +55,11 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr ""
 
index 7059d77..349f6b9 100644 (file)
@@ -52,6 +52,11 @@ msgstr "Nettverks Mapper"
 msgid "Path"
 msgstr "Fysisk bane"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Skrivebeskyttet"
 
index bf54e78..d997268 100644 (file)
@@ -62,6 +62,11 @@ msgstr "Udziały sieciowe"
 msgid "Path"
 msgstr "Ścieżka"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Tylko do odczytu"
 
index 43ea3b9..a2e6e22 100644 (file)
@@ -63,6 +63,11 @@ msgstr "Compartilhamentos de Rede"
 msgid "Path"
 msgstr "Caminho"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Somente leitura"
 
index 6d4f003..f58b588 100644 (file)
@@ -63,6 +63,11 @@ msgstr "Partilhas da Rede"
 msgid "Path"
 msgstr "Caminho"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Apenas Leitura"
 
index 78c55e4..7cfcda7 100644 (file)
@@ -62,6 +62,11 @@ msgstr "Partajari pe retea"
 msgid "Path"
 msgstr "Cale"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Doar citire"
 
index 4823dc4..534770f 100644 (file)
@@ -64,6 +64,11 @@ msgstr "Сетевые ресурсы"
 msgid "Path"
 msgstr "Путь"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Только для чтения"
 
index 2c511c8..21f102d 100644 (file)
@@ -56,6 +56,11 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr ""
 
index 549a69c..f58f8b8 100644 (file)
@@ -58,6 +58,11 @@ msgstr "Nätverksdelningar"
 msgid "Path"
 msgstr "Genväg"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Endast läsbar"
 
index 9e4ab7f..674ed33 100644 (file)
@@ -49,6 +49,11 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr ""
 
index 486768f..98d47be 100644 (file)
@@ -56,6 +56,11 @@ msgstr ""
 msgid "Path"
 msgstr ""
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr ""
 
index 077315e..a4469f9 100644 (file)
@@ -63,6 +63,11 @@ msgstr "Загальні мережеві ресурси"
 msgid "Path"
 msgstr "Шлях"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "Тільки читання"
 
index c5f6e02..7c088ce 100644 (file)
@@ -69,6 +69,11 @@ msgstr "Mạng chia sẻ"
 msgid "Path"
 msgstr ""
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 #, fuzzy
 msgid "Read-only"
 msgstr "Chỉ đọc "
index 2294b61..b6fd8f3 100644 (file)
@@ -61,6 +61,11 @@ msgstr "网络共享"
 msgid "Path"
 msgstr "目录"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "只读"
 
index bfa2d7d..ed0dabb 100644 (file)
@@ -59,6 +59,11 @@ msgstr "網路分享"
 msgid "Path"
 msgstr "路徑"
 
+msgid ""
+"Please add directories to share. Each directory refers to a folder on a "
+"mounted device."
+msgstr ""
+
 msgid "Read-only"
 msgstr "唯讀"
 
index 5df59cb..9985790 100644 (file)
@@ -19,7 +19,7 @@ m = Map("shadowsocks-libev",
 local sdata = m:get('ss_rules')
 if not sdata then
        m:set('ss_rules', nil, 'ss_rules')
-       m:set('ss_rules', 'ss_rules', 'disabled', true)
+       m:set('ss_rules', 'disabled', true)
 end
 
 s = m:section(NamedSection, "ss_rules", "ss_rules")
@@ -39,8 +39,12 @@ ss.values_redir(o, 'udp')
 
 o = s:taboption('general', ListValue, "local_default",
        translate("Local-out default"),
-       translate("Default action for locally generated packets"))
+       translate("Default action for locally generated TCP packets"))
 ss.values_actions(o)
+o = s:taboption('general', DynamicList, "ifnames",
+       translate("Ingress interfaces"),
+       translate("Only apply rules on packets from these network interfaces"))
+ss.values_ifnames(o)
 s:taboption('general', Value, "ipt_args",
        translate("Extra arguments"),
        translate("Passes additional arguments to iptables. Use with care!"))
@@ -74,5 +78,9 @@ s:taboption('dstip', FileBrowser, "dst_ips_forward_file",
        translate("Dst ip forward file"),
        translate("File containing ip addresses for the purposes as with <em>Dst ip forward</em>"))
 o.datatype = "file"
+o = s:taboption('dstip', ListValue, "dst_default",
+       translate("Dst default"),
+       translate("Default action for packets whose destination addresses do not match any of the destination ip list"))
+ss.values_actions(o)
 
 return m
index 6608ee8..650ff63 100644 (file)
@@ -14,8 +14,10 @@ module("luci.model.shadowsocks-libev", function(m)
 end)
 
 function values_actions(o)
-       for _, a in ipairs(actions) do
-               o:value(a)
+       o:value("bypass")
+       o:value("forward")
+       if o.option ~= "dst_default" then
+               o:value("checkdst")
        end
 end
 
@@ -43,7 +45,6 @@ function values_serverlist(o)
 end
 
 function values_ipaddr(o)
-       local keys, vals = {}, {}
        for _, v in ipairs(nw:get_interfaces()) do
                for _, a in ipairs(v:ipaddrs()) do
                        o:value(a:host():string(), '%s (%s)' %{ a:host(), v:shortname() })
@@ -51,6 +52,14 @@ function values_ipaddr(o)
        end
 end
 
+function values_ifnames(o)
+       for _, v in ipairs(nw:get_interfaces()) do
+               if v.dev then
+                       o:value(v.dev.name)
+               end
+       end
+end
+
 function options_client(s, tab)
        local o
 
@@ -226,17 +235,13 @@ modes = {
        "udp_only",
 }
 
-actions = {
-       "bypass",
-       "forward",
-       "checkdst",
-}
-
 methods = {
        -- aead
        "aes-128-gcm",
        "aes-192-gcm",
        "aes-256-gcm",
+       "chacha20-ietf-poly1305",
+       "xchacha20-ietf-poly1305",
        -- stream
        "table",
        "rc4",
index add5231..27971df 100644 (file)
@@ -163,24 +163,25 @@ e = m:section(NamedSection, "global", "travelmate", translate("Extra options"),
 translate("Options for further tweaking in case the defaults are not suitable for you."))
 
 e1 = e:option(Value, "trm_radio", translate("Radio selection"),
-       translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'"))
+       translate("Restrict travelmate to a dedicated radio, e.g. 'radio0'."))
 e1.datatype = "and(uciname,rangelength(6,6))"
 e1.rmempty = true
 
 e2 = e:option(Value, "trm_maxretry", translate("Connection Limit"),
-       translate("How many times should travelmate try to connect to an Uplink"))
+       translate("How many times should travelmate try to connect to an Uplink. ")
+       .. translate("To disable this feature set it to '0' which means unlimited retries."))
 e2.default = 3
-e2.datatype = "range(1,10)"
+e2.datatype = "range(0,30)"
 e2.rmempty = false
 
 e3 = e:option(Value, "trm_maxwait", translate("Interface Timeout"),
-       translate("How long should travelmate wait for a successful wlan interface reload"))
+       translate("How long should travelmate wait for a successful wlan interface reload."))
 e3.default = 30
 e3.datatype = "range(5,60)"
 e3.rmempty = false
 
 e4 = e:option(Value, "trm_timeout", translate("Overall Timeout"),
-       translate("Timeout in seconds between retries in 'automatic' mode"))
+       translate("Timeout in seconds between retries in 'automatic' mode."))
 e4.default = 60
 e4.datatype = "range(60,300)"
 e4.rmempty = false
index 7056153..febdbd5 100644 (file)
@@ -107,12 +107,12 @@ msgstr ""
 "詳細な情報は <a href=\"%s\" target=\"_blank\">オンライン ドキュメント</a> を"
 "確認してください。"
 
-msgid "How long should travelmate wait for a successful wlan interface reload"
+msgid "How long should travelmate wait for a successful wlan interface reload."
 msgstr ""
 "無線LAN インターフェースのリロードが成功するまでの、Travelmate の待機時間で"
 "す。"
 
-msgid "How many times should travelmate try to connect to an Uplink"
+msgid "How many times should travelmate try to connect to an Uplink."
 msgstr "Travelmate がアップリンクへの接続を試行する回数です。"
 
 msgid "Input file not found, please check your configuration."
@@ -188,8 +188,8 @@ msgstr "再スキャン"
 msgid "Rescan"
 msgstr "再スキャン"
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
-msgstr "Travelmate が指定された無線に接続するよう制限します。例: 'radio0'"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
+msgstr "Travelmate が指定された無線に接続するよう制御します。(例: 'radio0')"
 
 msgid "Runtime information"
 msgstr "実行情報"
@@ -256,9 +256,13 @@ msgstr ""
 "このフォームには、システムログ内の Travelmate に関するメッセージのみが表示さ"
 "れます。"
 
-msgid "Timeout in seconds between retries in 'automatic' mode"
+msgid "Timeout in seconds between retries in 'automatic' mode."
 msgstr "'automatic' モード時に接続を確認または再試行する間隔(秒)です。"
 
+msgid "To disable this feature set it to '0' which means unlimited retries."
+msgstr ""
+"この機能を無効にして接続の再試行を無制限にする場合、 '0' を設定します。"
+
 msgid "Travelmate"
 msgstr "Travelmate"
 
index 282dda8..41fab70 100644 (file)
@@ -102,10 +102,10 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
-msgid "How long should travelmate wait for a successful wlan interface reload"
+msgid "How long should travelmate wait for a successful wlan interface reload."
 msgstr ""
 
-msgid "How many times should travelmate try to connect to an Uplink"
+msgid "How many times should travelmate try to connect to an Uplink."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -173,7 +173,7 @@ msgstr ""
 msgid "Rescan"
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
 msgstr ""
 
 msgid "Runtime information"
@@ -231,7 +231,10 @@ msgid ""
 "messages only."
 msgstr ""
 
-msgid "Timeout in seconds between retries in 'automatic' mode"
+msgid "Timeout in seconds between retries in 'automatic' mode."
+msgstr ""
+
+msgid "To disable this feature set it to '0' which means unlimited retries."
 msgstr ""
 
 msgid "Travelmate"
index 2190055..a9ceafe 100644 (file)
@@ -91,10 +91,10 @@ msgid ""
 "documentation</a>"
 msgstr ""
 
-msgid "How long should travelmate wait for a successful wlan interface reload"
+msgid "How long should travelmate wait for a successful wlan interface reload."
 msgstr ""
 
-msgid "How many times should travelmate try to connect to an Uplink"
+msgid "How many times should travelmate try to connect to an Uplink."
 msgstr ""
 
 msgid "Input file not found, please check your configuration."
@@ -162,7 +162,7 @@ msgstr ""
 msgid "Rescan"
 msgstr ""
 
-msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'"
+msgid "Restrict travelmate to a dedicated radio, e.g. 'radio0'."
 msgstr ""
 
 msgid "Runtime information"
@@ -220,7 +220,10 @@ msgid ""
 "messages only."
 msgstr ""
 
-msgid "Timeout in seconds between retries in 'automatic' mode"
+msgid "Timeout in seconds between retries in 'automatic' mode."
+msgstr ""
+
+msgid "To disable this feature set it to '0' which means unlimited retries."
 msgstr ""
 
 msgid "Travelmate"
index 03821ad..883e1bb 100644 (file)
@@ -202,14 +202,17 @@ o = ucs:taboption("advanced", Value, "max_requests", translate("Maximum number o
 o.optional = true
 o.datatype = "uinteger"
 
-local s = m:section(NamedSection, "px5g", "cert", translate("uHTTPd Self-signed Certificate Parameters"))
+local s = m:section(TypedSection, "cert", translate("uHTTPd Self-signed Certificate Parameters"))
+
+s.template  = "cbi/tsection"
+s.anonymous = true
 
 o = s:option(Value, "days", translate("Valid for # of Days"))
 o.default = 730
 o.datatype = "uinteger"
 
 o = s:option(Value, "bits", translate("Length of key in bits"))
-o.default = 1024
+o.default = 2048
 o.datatype = "min(1024)"
 
 o = s:option(Value, "commonname", translate("Server Hostname"), translate("a.k.a CommonName"))
@@ -222,6 +225,6 @@ o = s:option(Value, "state", translate("State"))
 o.default = "Unknown"
 
 o = s:option(Value, "location", translate("Location"))
-o.default = "Somewhere"
+o.default = "Unknown"
 
 return m