diff options
58 files changed, 1335 insertions, 473 deletions
diff --git a/applications/luci-app-ddns/Makefile b/applications/luci-app-ddns/Makefile index 195e08131b..331851d263 100644 --- a/applications/luci-app-ddns/Makefile +++ b/applications/luci-app-ddns/Makefile @@ -16,7 +16,7 @@ PKG_VERSION:=2.4.9 # Release == build # increase on changes of translation files -PKG_RELEASE:=5 +PKG_RELEASE:=6 PKG_LICENSE:=Apache-2.0 PKG_MAINTAINER:=Ansuel Smith <ansuelsmth@gmail.com> diff --git a/applications/luci-app-ddns/luasrc/controller/ddns.lua b/applications/luci-app-ddns/luasrc/controller/ddns.lua index e152bb0d98..24735289e0 100755 --- a/applications/luci-app-ddns/luasrc/controller/ddns.lua +++ b/applications/luci-app-ddns/luasrc/controller/ddns.lua @@ -25,6 +25,8 @@ local app_name = "luci-app-ddns" local app_title = "Dynamic DNS" local app_version = "2.4.9-1" +local translate = I18N.translate + function index() local nxfs = require "nixio.fs" -- global definitions not available local sys = require "luci.sys" -- in function index() @@ -59,40 +61,47 @@ end -- Application specific information functions function app_description() - return I18N.translate("Dynamic DNS allows that your router can be reached with " .. - "a fixed hostname while having a dynamically changing IP address.") - .. [[<br />]] - .. I18N.translate("OpenWrt Wiki") .. ": " - .. [[<a href="http://wiki.openwrt.org/doc/howto/ddns.client" target="_blank">]] - .. I18N.translate("DDNS Client Documentation") .. [[</a>]] - .. " --- " - .. [[<a href="http://wiki.openwrt.org/doc/uci/ddns" target="_blank">]] - .. I18N.translate("DDNS Client Configuration") .. [[</a>]] + local tmp = {} + tmp[#tmp+1] = translate("Dynamic DNS allows that your router can be reached with \ + a fixed hostname while having a dynamically changing IP address.") + tmp[#tmp+1] = [[<br />]] + tmp[#tmp+1] = translate("OpenWrt Wiki") .. ": " + tmp[#tmp+1] = [[<a href="https://openwrt.org/docs/guide-user/services/ddns/client" target="_blank">]] + tmp[#tmp+1] = translate("DDNS Client Documentation") + tmp[#tmp+1] = [[</a>]] + tmp[#tmp+1] = " --- " + tmp[#tmp+1] = [[<a href="https://openwrt.org/docs/guide-user/base-system/ddns" target="_blank">]] + tmp[#tmp+1] = translate("DDNS Client Configuration") + tmp[#tmp+1] = [[</a>]] + + return table.concat(tmp) end function app_title_back() - return [[<a href="]] - .. DISP.build_url("admin", "services", "ddns") - .. [[">]] - .. I18N.translate(app_title) - .. [[</a>]] + local tmp = {} + tmp[#tmp+1] = [[<a href="]] + tmp[#tmp+1] = DISP.build_url("admin", "services", "ddns") + tmp[#tmp+1] = [[">]] + tmp[#tmp+1] = translate(app_title) + tmp[#tmp+1] = [[</a>]] + return table.concat(tmp) end -- Standardized application/service functions function app_title_main() - tmp = {} + local tmp = {} tmp[#tmp+1] = [[<a href="javascript:alert(']] - tmp[#tmp+1] = I18N.translate("Version Information") + tmp[#tmp+1] = translate("Version Information") tmp[#tmp+1] = [[\n\n]] .. app_name - tmp[#tmp+1] = [[\n]] .. I18N.translate("Version") .. [[: ]] .. app_version - tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("required") .. [[:]] - tmp[#tmp+1] = [[\n]] .. I18N.translate("Version") .. [[: ]] - tmp[#tmp+1] = srv_ver_min .. [[ ]] .. I18N.translate("or higher") - tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. I18N.translate("installed") .. [[:]] - tmp[#tmp+1] = [[\n]] .. I18N.translate("Version") .. [[: ]] - tmp[#tmp+1] = (service_version() or I18N.translate("NOT installed")) + tmp[#tmp+1] = [[\n]] .. translate("Version") .. [[: ]] .. app_version + tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. translate("required") .. [[:]] + tmp[#tmp+1] = [[\n]] .. translate("Version") .. [[: ]] + tmp[#tmp+1] = srv_ver_min .. [[ ]] .. translate("or higher") + tmp[#tmp+1] = [[\n\n]] .. srv_name .. [[ ]] .. translate("installed") .. [[:]] + tmp[#tmp+1] = [[\n]] .. translate("Version") .. [[: ]] + tmp[#tmp+1] = (service_version() or translate("NOT installed")) tmp[#tmp+1] = [[\n\n]] tmp[#tmp+1] = [[')">]] - tmp[#tmp+1] = I18N.translate(app_title) + tmp[#tmp+1] = translate(app_title) tmp[#tmp+1] = [[</a>]] return table.concat(tmp) @@ -102,7 +111,7 @@ function service_version() local srv_ver_cmd = luci_helper .. " -V | awk {'print $2'} " local ver - + if IPKG then ver = IPKG.info(srv_name)[srv_name].Version else @@ -137,6 +146,7 @@ local function _get_status() local enabled = tonumber(s["enabled"]) or 0 local datelast = "_empty_" -- formatted date of last update local datenext = "_empty_" -- formatted date of next update + local datenextstat = nil -- get force seconds local force_seconds = DDNS.calc_seconds( @@ -170,18 +180,22 @@ local function _get_status() force_seconds = (force_seconds > uptime) and uptime or force_seconds if pid > 0 and ( lasttime + force_seconds - uptime ) <= 0 then datenext = "_verify_" + datenextstat = translate("Verify") -- run once elseif force_seconds == 0 then datenext = "_runonce_" + datenextstat = translate("Run once") -- no process running and NOT enabled elseif pid == 0 and enabled == 0 then datenext = "_disabled_" + datenextstat = translate("Disabled") -- no process running and enabled elseif pid == 0 and enabled ~= 0 then datenext = "_stopped_" + datenextstat = translate("Stopped") end -- get/set monitored interface and IP version @@ -192,10 +206,12 @@ local function _get_status() -- try to get registered IP local lookup_host = s["lookup_host"] or "_nolookup_" + local chk_sec = DDNS.calc_seconds( tonumber(s["check_interval"]) or 10, s["check_unit"] or "minutes" ) local reg_ip = DDNS.get_regip(section, chk_sec) + if reg_ip == "NOFILE" then local dnsserver = s["dns_server"] or "" local force_ipversion = tonumber(s["force_ipversion"] or 0) @@ -212,9 +228,6 @@ local function _get_status() command = command .. [[ -- get_registered_ip]] reg_ip = SYS.exec(command) end - if reg_ip == "" then - reg_ip = "_nodata_" - end -- fill transfer array data[#data+1] = { @@ -225,7 +238,8 @@ local function _get_status() reg_ip = reg_ip, pid = pid, datelast = datelast, - datenext = datenext + datenext = datenext, + datenextstat = datenextstat } end) diff --git a/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm b/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm index 7fcb882a15..31ed42b0ac 100644 --- a/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm +++ b/applications/luci-app-ddns/luasrc/view/ddns/system_status.htm @@ -1,151 +1,60 @@ <!-- ++ BEGIN ++ Dynamic DNS ++ system_status.htm ++ --> <script type="text/javascript">//<![CDATA[ - // helper to move status data to the relevant - // screen objects - // called by XHR.poll and XHR.get - function _data2elements(x, data) { - var tbl = document.getElementById('ddns_status_table'); - // security check - if ( !(tbl) ) { return; } - // clear all rows - while (tbl.firstElementChild !== tbl.lastElementChild) - tbl.removeChild(tbl.lastElementChild); - - // variable for Modulo-Division use to set cbi-rowstyle-? (0 or 1) - var i = -1; - var j = 1; - - // DDNS Service disabled - if (data[0].enabled == 0) { - var txt = '<strong><font color="red"><%:DDNS Autostart disabled%></font>' ; - var url = '<a href="' + data[0].url_up + '"><%:enable here%></a></strong>' ; - tbl.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(((j + i) % 2) + 1), [ - E('<div class="td">', [ txt," - ", url ]) - ])); - i++ ; - } - - var configuration; - var next_update; - var lookup; - var registered_ip; - var network; - - for( j = 1; j < data.length; j++ ) - { - // configuration - configuration = data[j].section; - - // pid - // data[j].pid ignored here - - // last update - // data[j].datelast ignored here - - // next update - switch (data[j].datenext) { - case "_empty_": - next_update = '<em><%:Unknown error%></em>'; - break; - case "_stopped_": - next_update = '<em><%:Stopped%></em>'; - break; - case "_disabled_": - next_update = '<em><%:Disabled%></em>'; - break; - case "_noupdate_": - next_update = '<em><%:Update error%></em>'; - break; - case "_runonce_": - next_update = '<em><%:Run once%></em>'; - break; - case "_verify_": - next_update = '<em><%:Verify%></em>'; - break; - default: - next_update = data[j].datenext; - break; - } - - // lookup - if (data[j].lookup == "_nolookup_") - lookup = '<em><%:config error%></em>'; - else - lookup = data[j].lookup; - - // registered IP - switch (data[j].reg_ip) { - case "_nolookup_": - registered_ip = '<em><%:config error%></em>'; - break; - case "_nodata_": - registered_ip = '<em><%:No data%></em>'; - break; - case "_noipv6_": - registered_ip = '<em><%:IPv6 not supported%></em>'; - break; - default: - registered_ip = data[j].reg_ip; - break; - } - - // monitored interface - if (data[j].iface == "_nonet_") - network = '<em><%:Config error%></em>'; - else - network = data[j].iface; - - tbl.appendChild(E('<div class="tr cbi-section-table-row cbi-rowstyle-%d">'.format(((j + i) % 2) + 1), [ - E('<div class="td">', [ E('<strong>', configuration) ]), - E('<div class="td">', next_update), - E('<div class="td">', lookup), - E('<div class="td">', registered_ip), - E('<div class="td">', network) - ])); - } - - if (tbl.firstElementChild === tbl.lastElementChild || (data[0].enabled == 0 && tbl.childNodes.length == 2) ) { - var br = '<br />'; - var msg = '<%:There is no service configured.%>'; - if (tbl.firstElementChild !== tbl.lastElementChild) - br = ''; - msg = br + msg; - tbl.appendChild(E('<div class="tr cbi-section-table-row">', [ - E('<div class="td">', [ E('<em>', msg) ]) - ])); - } - } - - // force to immediate show status (not waiting for XHR.poll) - XHR.get('<%=url([[admin]], [[services]], [[ddns]], [[status]])%>', null, + //start polling data every 30 second, this doesn't change so much + XHR.poll(30, '<%=url([[admin]], [[services]], [[ddns]], [[status]])%>', null, function(x, data) { - if (data) { _data2elements(x, data); } - } - ); - - XHR.poll(15, '<%=url([[admin]], [[services]], [[ddns]], [[status]])%>', null, - function(x, data) { - if (data) { _data2elements(x, data); } + if (data) { + var tbl = document.getElementById('ddns_status_table'); + // security check + if ( !(tbl) ) { return; } + + var rows = []; + + // DDNS Service disabled + if (data[0].enabled == 0) { + var ddns_legend = document.getElementById('ddns_status_legend'); + ddns_legend.style.display='none'; + rows.push([ + '<strong><font color="red"><%:DDNS Autostart disabled%></font>', + '<a class="cbi-button cbi-button-action important" type="button" href="' + data[0].url_up + '"><%:enable here%></a></strong>' + ]); + } else { + for( j = 1; j < data.length; j++ ) + { + + rows.push([ + '<strong>' + data[j].section + '</strong>', //configuration + data[j].datenextstat ? '<em>'+data[j].datenextstat+'</em>' : '<em><%:Unknown error%></em>', + data[j].lookup ? data[j].lookup : '<em><%:config error%></em>', + data[j].reg_ip ? data[j].reg_ip : '<em><%:No data%></em>', + data[j].iface // monitored interface + ]); + } + } + + cbi_update_table(tbl, rows, '<%:There is no service configured.%>'); + } } ); - + //]]></script> <fieldset class="cbi-section" id="ddns_status_section"> <legend><a href="<%=url([[admin]], [[services]], [[ddns]])%>"><%:Dynamic DNS%></a></legend> - - <div class="table cbi-section-table" id="ddns_status_table"> - <div class="tr cbi-section-table-titles"> - <div class="th cbi-section-table-cell"><%:Configuration%></div> - <div class="th cbi-section-table-cell"><%:Next Update%></div> - <div class="th cbi-section-table-cell"><%:Lookup Hostname%></div> - <div class="th cbi-section-table-cell"><%:Registered IP%></div> - <div class="th cbi-section-table-cell"><%:Network%></div> - </div> - <div class="tr cbi-section-table-row"> - <div class="td"><em><br /><%:Collecting data...%></em></div> + <div class="cbi-section-node"> + <div class="table" id="ddns_status_table"> + <div class="tr table-titles" id="ddns_status_legend"> + <div class="th"><%:Configuration%></div> + <div class="th"><%:Next Update%></div> + <div class="th"><%:Lookup Hostname%></div> + <div class="th"><%:Registered IP%></div> + <div class="th"><%:Network%></div> + </div> + <div class="tr"> + <div class="td"><em><br /><%:Collecting data...%></em></div> + </div> </div> </div> </fieldset> -<!-- ++ END ++ Dynamic DNS ++ system_status.htm ++ --> +<!-- ++ END ++ Dynamic DNS ++ system_status.htm ++ -->
\ No newline at end of file diff --git a/applications/luci-app-firewall/po/ru/firewall.po b/applications/luci-app-firewall/po/ru/firewall.po index 0ffe581d0e..b73d963d8f 100644 --- a/applications/luci-app-firewall/po/ru/firewall.po +++ b/applications/luci-app-firewall/po/ru/firewall.po @@ -84,9 +84,9 @@ msgid "" "each firewall restart, right after the default ruleset has been loaded." msgstr "" "Пользовательские правила позволяют выполнять произвольные команды iptables, " -"которые не охвачены рамками межсетевого экрана. Команды выполняются " -"после каждой перезагрузки межсетевого экрана, сразу после загрузки набора " -"правил по умолчанию." +"которые не охвачены рамками межсетевого экрана. Команды выполняются после " +"каждой перезагрузки межсетевого экрана, сразу после загрузки набора правил " +"по умолчанию." msgid "Destination IP address" msgstr "IP-адрес назначения" @@ -267,15 +267,14 @@ msgstr "Соответствовать ICMP типу" msgid "Match forwarded traffic to the given destination port or port range." msgstr "" -"Перенаправлять соответствующий трафик на указанный порт или диапазон " -"портов." +"Перенаправлять соответствующий трафик на указанный порт или диапазон портов." msgid "" "Match incoming traffic directed at the given destination port or port range " "on this host" msgstr "" -"Порт или диапазон портов, входящие подключения на который будут перенаправляться " -"на внутренний порт внутреннего IP-адреса (см. ниже)" +"Порт или диапазон портов, входящие подключения на который будут " +"перенаправляться на внутренний порт внутреннего IP-адреса (см. ниже)" msgid "" "Match incoming traffic originating from the given source port or port range " @@ -317,14 +316,15 @@ msgstr "Применять правило только для входящего msgid "Only match incoming traffic from this IP or range." msgstr "" -"Применять правило только для входящего трафика от этого IP-адреса или диапазона адресов." +"Применять правило только для входящего трафика от этого IP-адреса или " +"диапазона адресов." msgid "" "Only match incoming traffic originating from the given source port or port " "range on the client host" msgstr "" -"Применять правило только для входящего трафика от указанного порта " -"или диапазона портов клиентского хоста" +"Применять правило только для входящего трафика от указанного порта или " +"диапазона портов клиентского хоста" msgid "Open ports on router" msgstr "Открыть порты на маршрутизаторе" @@ -359,11 +359,11 @@ msgstr "Протокол" msgid "" "Redirect matched incoming traffic to the given port on the internal host" msgstr "" -"Перенаправлять трафик на указанный порт или диапазон портов внутреннего IP-адреса" +"Перенаправлять трафик на указанный порт или диапазон портов внутреннего IP-" +"адреса" msgid "Redirect matched incoming traffic to the specified internal host" -msgstr "" -"Перенаправлять трафик на указанный IP-адрес" +msgstr "Перенаправлять трафик на указанный IP-адрес" msgid "Refuse forward" msgstr "Сбрасывать перенаправляемый трафик" @@ -375,7 +375,8 @@ msgid "Refuse output" msgstr "Сбрасывать исходящий трафик" msgid "Requires hardware NAT support. Implemented at least for mt7621" -msgstr "Требуется аппаратная поддержка NAT. Реализовано, по крайней мере, для mt7621" +msgstr "" +"Требуется аппаратная поддержка NAT. Реализовано, по крайней мере, для mt7621" msgid "Restart Firewall" msgstr "Перезапустить межсетевой экран" @@ -485,12 +486,13 @@ msgid "" "rule is <em>unidirectional</em>, e.g. a forward from lan to wan does " "<em>not</em> imply a permission to forward from wan to lan as well." msgstr "" -"Данные настройки управляют политиками перенаправления трафика между этой (%s) и " -"другими зонами. Трафиком <em>'зон-назначения'</em> является перенаправленный " -"трафик <strong>'исходящий из %q'</strong>. Трафиком <em>'зон-источников'</" -"em> является трафик <strong>'направленый в %q'</strong>. Перенаправление " -"является <em>'однонаправленным'</em>, то есть перенаправление из lan в wan " -"<em>'не'</em> допускает перенаправление трафика из wan в lan." +"Данные настройки управляют политиками перенаправления трафика между этой " +"(%s) и другими зонами. Трафиком <em>'зон-назначения'</em> является " +"перенаправленный трафик <strong>'исходящий из %q'</strong>. Трафиком " +"<em>'зон-источников'</em> является трафик <strong>'направленый в %q'</" +"strong>. Перенаправление является <em>'однонаправленным'</em>, то есть " +"перенаправление из lan в wan <em>'не'</em> допускает перенаправление трафика " +"из wan в lan." msgid "" "This page allows you to change advanced properties of the port forwarding " @@ -503,8 +505,8 @@ msgid "" "This page allows you to change advanced properties of the traffic rule " "entry, such as matched source and destination hosts." msgstr "" -"На этой странице можно изменить расширенные настройки правил для трафика." -"В большинстве случаев нет необходимости изменять эти параметры." +"На этой странице можно изменить расширенные настройки правил для трафика.В " +"большинстве случаев нет необходимости изменять эти параметры." msgid "" "This section defines common properties of %q. The <em>input</em> and " diff --git a/applications/luci-app-https_dns_proxy/po/templates/https_dns_proxy.pot b/applications/luci-app-https_dns_proxy/po/templates/https_dns_proxy.pot index 1b0b66aae2..c292e79325 100644 --- a/applications/luci-app-https_dns_proxy/po/templates/https_dns_proxy.pot +++ b/applications/luci-app-https_dns_proxy/po/templates/https_dns_proxy.pot @@ -1,2 +1,32 @@ -Set up git to auto-update pot-file: -echo '../i18n-scan.pl luci-app-template/ > luci-app-template/po/templates/template.pot; git add .' >> ../.git/hooks/pre-commit +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "Group name" +msgstr "" + +msgid "HTTPS DNS Proxy" +msgstr "" + +msgid "HTTPS DNS Proxy Settings" +msgstr "" + +msgid "Instances" +msgstr "" + +msgid "Listen address" +msgstr "" + +msgid "Listen port" +msgstr "" + +msgid "Provider" +msgstr "" + +msgid "Proxy server" +msgstr "" + +msgid "Subnet address" +msgstr "" + +msgid "User name" +msgstr "" diff --git a/applications/luci-app-mosquitto/Makefile b/applications/luci-app-mosquitto/Makefile new file mode 100644 index 0000000000..1bfb7c3de7 --- /dev/null +++ b/applications/luci-app-mosquitto/Makefile @@ -0,0 +1,13 @@ +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Mosquitto LuCI interface +LUCI_DEPENDS:=+luci-mod-admin-full mosquitto +LUCI_PKGARCH:=all +LUCI_DESCRIPTION:=Provides a webadmin for most basic mosquitto parameters. + +PKG_MAINTAINER:= Karl Palsson <karlp@etactica.com> +PKG_LICENSE:=Apache-2.0 + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-mosquitto/luasrc/controller/mosquitto.lua b/applications/luci-app-mosquitto/luasrc/controller/mosquitto.lua new file mode 100644 index 0000000000..587054eb10 --- /dev/null +++ b/applications/luci-app-mosquitto/luasrc/controller/mosquitto.lua @@ -0,0 +1,16 @@ +--[[ +LuCI - Lua Configuration Interface for mosquitto + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +]]-- + +module("luci.controller.mosquitto", package.seeall) + +function index() + entry({"admin", "services", "mosquitto"}, cbi("mosquitto"), _("Mosquitto")) +end diff --git a/applications/luci-app-mosquitto/luasrc/model/cbi/mosquitto.lua b/applications/luci-app-mosquitto/luasrc/model/cbi/mosquitto.lua new file mode 100644 index 0000000000..78bc9f071c --- /dev/null +++ b/applications/luci-app-mosquitto/luasrc/model/cbi/mosquitto.lua @@ -0,0 +1,229 @@ +--[[ +LuCI model for mosquitto MQTT broker configuration management +Copyright eTactica ehf, 2018 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +]]-- + +local datatypes = require("luci.cbi.datatypes") + +--- Like a Flag, but with an option to remove/set to default. +local function OptionalFlag(section, key, title, description) + local o = section:option(ListValue, key, title, description) + o.optional = true + o:value("", "Default") + o:value("1", "Enabled") + o:value("0", "Disabled") + return o +end + +m = Map("mosquitto", "Mosquitto MQTT Broker", + [[mosquitto - the <a href='http://www.mosquitto.org'>blood thirsty</a> +MQTT messaging broker. Note, only some of the available configuration files + are supported at this stage, use the checkbox below to use config generated + by this page, or the stock mosquitto configuration file in + /etc/mosquitto/mosquitto.conf]]) + +s = m:section(TypedSection, "owrt", "OpenWRT") +s.anonymous = true +p = s:option(Flag, "use_uci", "Use this LuCI configuration page", + [[If checked, mosquitto runs with a config generated + from this page. (Or from UCI directly) If unchecked, mosquitto + runs with the config in /etc/mosquitto/mosquitto.conf + (and this page is ignored)]]) + +s = m:section(TypedSection, "mosquitto", "Mosquitto") +s.anonymous = true + +p = s:option(MultiValue, "log_dest", "Log destination", + "You can have multiple, but 'none' will override all others") +p:value("stderr", "stderr") +p:value("stdout", "stdout") +p:value("syslog", "syslog") +p:value("topic", "$SYS/broker/log/[severity]") +p:value("none", "none") + +OptionalFlag(s, "no_remote_access", "Disallow remote access to this broker", + [[Outbound bridges will still work, but this will make the primary listener + only available from localhost]]) + +local o +o = s:option(Value, "sys_interval", "Time in seconds between updates of the $SYS tree", "Set to zero to disable") +o.datatype = "uinteger" +o.optional = true + +o = s:option(Value, "max_inflight_messages", "Max Inflight Messages", "Limit for message allowed inflight") +o.datatype = "uinteger" +o.optional = true +o = s:option(Value, "max_queued_messages", "Max Queued Messages", "Limit for message queue when offline") +o.datatype = "uinteger" +o.optional = true +o = s:option(Value, "max_queued_bytes", "Max Queued bytes", "Limit for message queue when offline, zero to disable)") +o.datatype = "uinteger" +o.optional = true + + +s = m:section(TypedSection, "persistence", "Persistence") +s.anonymous = true +s.addremove = false +s:option(Flag, "persistence", "Persistence enabled", "Should persistence to disk be enabled at all").rmempty = false +o = s:option(Value, "client_expiration", "Client expiration", "Remove persistent clients if they haven't reconnected in this period, eg 6h, 3d, 2w") +o.optional = true +o:depends("persistence", true) +o = OptionalFlag(s, "autosave_on_changes", "Autosave on changes", "Autosave interval applies to change counts instead of time") +o:depends("persistence", true) +o = s:option(Value, "autosave_interval", "Autosave interval", "Save persistence file after this many seconds or changes") +o.optional = true +o:depends("persistence", true) +o = s:option(Value, "file", "Persistent file name") +o.optional = true +o:depends("persistence", true) +o = s:option(Value, "location", "Persistent file path (with trailing/)", "Path to persistent file") +o.optional = true +o:depends("persistence", true) + +s = m:section(TypedSection, "listener", "Listeners", "You can configure additional listeners here") +s.addremove = true +s.anonymous = true +s:option(Value, "port", "Port").datatype = "port" + +o = s:option(ListValue, "protocol", "Protocol to use when listening") +o:value("", "Default") +o:value("mqtt", "MQTT") +o:value("websockets", "WebSockets") + +s:option(Value, "http_dir", "http_dir to serve on websockets listeners").optional = true +OptionalFlag(s, "use_username_as_clientid", "use_username_as_clientid") +o = s:option(Value, "cafile", "CA file path") +o.optional = true +o.datatype = "file" +o = s:option(Value, "capath", "CA path to search") +o.optional = true +o.datatype = "file" +o = s:option(Value, "certfile", "server certificate file (PEM encoded)") +o.optional = true +o.datatype = "file" +o = s:option(Value, "keyfile", "keyfile (PEM encoded)") +o.optional = true +o.datatype = "file" + +o = s:option(ListValue, "tls_version", "TLS Version", + "Depends on your openssl version, empty to support all") +o.optional = true +o:value("", "Default") +o:value("tlsv1") +o:value("tlsv1.1") +o:value("tlsv1.2") + +OptionalFlag(s, "require_certificate", "Require clients to present a certificate") +OptionalFlag(s, "use_identity_as_username", "use_identity_as_username") +s:option(Value, "crlfile", "CRL to use if require_certificate is enabled").optional = true +s:option(Value, "ciphers", "Ciphers control. Should match 'openssl ciphers' format").optional = true +s:option(Value, "psk_hint", "PSK Hint to provide to connecting clients").optional = true + +-- we want to allow multiple bridge sections +s = m:section(TypedSection, "bridge", "Bridges", + "You can configure multiple bridge connections here") +s.anonymous = true +s.addremove = true + +conn = s:option(Value, "connection", "Connection name", + "unique name for this bridge configuration") + +local function validate_address(self, value) + local host, port = unpack(luci.util.split(value, ":")) + if (datatypes.host(host)) then + if port and #port then + if not datatypes.port(port) then + return nil, "Please enter a valid port after the :" + end + end + return value + end + return nil, "Please enter a hostname or an IP address" +end + +addr = s:option(Value, "address", "address", "address[:port] of remote broker") +addr.datatype = "string" +addr.validate = validate_address + +-- TODO - make the in/out/both a dropdown/radio or something.... +topics = s:option(DynamicList, "topic", "topic", + "full topic string for mosquitto.conf, eg: 'power/# out 2'") + +OptionalFlag(s, "cleansession", "Clean session") +OptionalFlag(s, "notifications", "notifications", + "Attempt to notify the local and remote broker of connection status, defaults to $SYS/broker/connections/<clientid>/state") +s:option(Value, "notification_topic", "Topic to use for local+remote remote for notifications.").optional = true + +s:option(Value, "remote_clientid", "Client id to use on remote end of this bridge connection").optional = true +s:option(Value, "local_clientid", "Client id to use locally. Important when bridging to yourself").optional = true +o = s:option(Value, "keepalive_interval", "Keepalive interval for this bridge") +o.datatype = "uinteger" +o.optional = true +o = s:option(ListValue, "start_type", "How should this bridge be started") +o.optional = true +o:value("", "Default") +o:value("automatic", "Automatic, includes restarts") +o:value("lazy", "Automatic, but stopped when not used") +o:value("once", "Automatic, but no restarts") +o = s:option(Value, "restart_timeout", "How long to wait before reconnecting") +o.datatype = "uinteger" +o.optional = true +o = s:option(Value, "idle_timeout", "How long to wait before disconnecting") +o.datatype = "uinteger" +o.optional = true +o = s:option(Value, "threshold", "How many messages to queue before restarting lazy bridge") +o.datatype = "uinteger" +o.optional = true + +OptionalFlag(s, "try_private", "try_private", + "attempt to notify the remote broker that this is a bridge, not all brokers support this.") +s:option(Value, "remote_username", "Remote username").optional = true +o = s:option(Value, "remote_password", "Remote password") +o.optional = true +o.password = true + +s:option(Value, "identity", "PSK Bridge Identity", "Identity for TLS-PSK").optional = true + +-- no hex validation available in datatypes +local function validate_psk_key(self, value) + if (value:match("^[a-fA-F0-9]+$")) then + return value + end + return nil, "Only hex numbers are allowed (use A-F characters and 0-9 digits)" +end + +psk_key = s:option(Value, "psk", "Bridge PSK", "Key for TLS-PSK") +psk_key.password = true +psk_key.optional = true +psk_key.datatype = "string" +psk_key.validate = validate_psk_key + +b_tls_version = s:option(ListValue, "tls_version", "TLS Version", + "The remote broker must support the same version of TLS for the connection to succeed.") +b_tls_version:value("", "Default") +b_tls_version:value("tlsv1") +b_tls_version:value("tlsv1.1") +b_tls_version:value("tlsv1.2") +b_tls_version.optional = true + +o = s:option(Value, "cafile", "Path to CA file") +o.optional = true +o.datatype = "file" +o = s:option(Value, "capath", "Directory to search for CA files") +o.optional = true +o.datatype = "file" +o = s:option(Value, "certfile", "Path to PEM encoded server certificate file") +o.optional = true +o.datatype = "file" +o = s:option(Value, "keyfile", "Path to PEM encoded keyfile") +o.optional = true +o.datatype = "file" + +return m diff --git a/applications/luci-app-mwan3/po/ja/mwan3.po b/applications/luci-app-mwan3/po/ja/mwan3.po index a5826926dd..8a1cad2f6b 100644 --- a/applications/luci-app-mwan3/po/ja/mwan3.po +++ b/applications/luci-app-mwan3/po/ja/mwan3.po @@ -40,6 +40,9 @@ msgstr "利用可能な値: 1-1000。空欄の場合のデフォルトは1です msgid "Acceptable values: 1-256. Defaults to 1 if not set" msgstr "利用可能な値: 1-256。空欄の場合のデフォルトは1です。" +msgid "All required IP rules for interface %s found" +msgstr "" + msgid "Check IP rules" msgstr "IP ルールのチェック" @@ -263,6 +266,9 @@ msgstr "最小パケットレイテンシ [ms]" msgid "Min packet loss [%]" msgstr "最小パケットロス [%]" +msgid "Missing both IP rules for interface %s" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" @@ -276,6 +282,12 @@ msgstr "いいえ" msgid "No MWAN interfaces found" msgstr "MWAN インターフェースが見つかりません" +msgid "No gateway for interface %s found." +msgstr "" + +msgid "No tracking Hosts for interface %s defined." +msgstr "" + msgid "Notification" msgstr "通知" @@ -285,6 +297,9 @@ msgstr "オフライン" msgid "Online" msgstr "オンライン" +msgid "Only one IP rules for interface %s found" +msgstr "" + msgid "Ping count" msgstr "Ping 回数" @@ -342,6 +357,12 @@ msgstr "プロトコル" msgid "Recovery interval" msgstr "障害復旧 インターバル" +msgid "Routing table %s for interface %s found" +msgstr "" + +msgid "Routing table %s for interface %s not found" +msgstr "" + msgid "Rule" msgstr "ルール" diff --git a/applications/luci-app-mwan3/po/ru/mwan3.po b/applications/luci-app-mwan3/po/ru/mwan3.po index 140c537e73..4d52d7108c 100644 --- a/applications/luci-app-mwan3/po/ru/mwan3.po +++ b/applications/luci-app-mwan3/po/ru/mwan3.po @@ -43,6 +43,9 @@ msgstr "Допустимые значения: 1-1000. По умолчанию 1 msgid "Acceptable values: 1-256. Defaults to 1 if not set" msgstr "Допустимые значения: 1-256 По умолчанию 1, если значение не задано." +msgid "All required IP rules for interface %s found" +msgstr "" + msgid "Check IP rules" msgstr "Проверить правила IP" @@ -262,6 +265,9 @@ msgstr "" msgid "Min packet loss [%]" msgstr "" +msgid "Missing both IP rules for interface %s" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" @@ -275,6 +281,12 @@ msgstr "Нет" msgid "No MWAN interfaces found" msgstr "Интерфейсы MWAN не найдены" +msgid "No gateway for interface %s found." +msgstr "" + +msgid "No tracking Hosts for interface %s defined." +msgstr "" + msgid "Notification" msgstr "Уведомления" @@ -284,6 +296,9 @@ msgstr "Отключен" msgid "Online" msgstr "Онлайн" +msgid "Only one IP rules for interface %s found" +msgstr "" + msgid "Ping count" msgstr "Кол-во пинг-запросов" @@ -341,6 +356,12 @@ msgstr "Протокол" msgid "Recovery interval" msgstr "Интервал восстановления" +msgid "Routing table %s for interface %s found" +msgstr "" + +msgid "Routing table %s for interface %s not found" +msgstr "" + msgid "Rule" msgstr "Правило" diff --git a/applications/luci-app-mwan3/po/templates/mwan3.pot b/applications/luci-app-mwan3/po/templates/mwan3.pot index bcc5e977a5..e815afd1f0 100644 --- a/applications/luci-app-mwan3/po/templates/mwan3.pot +++ b/applications/luci-app-mwan3/po/templates/mwan3.pot @@ -27,6 +27,9 @@ msgstr "" msgid "Acceptable values: 1-256. Defaults to 1 if not set" msgstr "" +msgid "All required IP rules for interface %s found" +msgstr "" + msgid "Check IP rules" msgstr "" @@ -231,6 +234,9 @@ msgstr "" msgid "Min packet loss [%]" msgstr "" +msgid "Missing both IP rules for interface %s" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" @@ -242,6 +248,12 @@ msgstr "" msgid "No MWAN interfaces found" msgstr "" +msgid "No gateway for interface %s found." +msgstr "" + +msgid "No tracking Hosts for interface %s defined." +msgstr "" + msgid "Notification" msgstr "" @@ -251,6 +263,9 @@ msgstr "" msgid "Online" msgstr "" +msgid "Only one IP rules for interface %s found" +msgstr "" + msgid "Ping count" msgstr "" @@ -300,6 +315,12 @@ msgstr "" msgid "Recovery interval" msgstr "" +msgid "Routing table %s for interface %s found" +msgstr "" + +msgid "Routing table %s for interface %s not found" +msgstr "" + msgid "Rule" msgstr "" diff --git a/applications/luci-app-mwan3/po/zh-cn/mwan3.po b/applications/luci-app-mwan3/po/zh-cn/mwan3.po index a6d73159f5..4fd6817407 100644 --- a/applications/luci-app-mwan3/po/zh-cn/mwan3.po +++ b/applications/luci-app-mwan3/po/zh-cn/mwan3.po @@ -38,6 +38,9 @@ msgstr "取值范围:1-1000。如果不填写,默认值为 1" msgid "Acceptable values: 1-256. Defaults to 1 if not set" msgstr "取值范围:1-256。如果不填写,默认值为 1" +msgid "All required IP rules for interface %s found" +msgstr "" + msgid "Check IP rules" msgstr "检查 IP 规则" @@ -251,6 +254,9 @@ msgstr "最小数据包延迟 [ms]" msgid "Min packet loss [%]" msgstr "最小数据包丢失率 [%]" +msgid "Missing both IP rules for interface %s" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" @@ -264,6 +270,12 @@ msgstr "否" msgid "No MWAN interfaces found" msgstr "没有找到 MWAN 接口" +msgid "No gateway for interface %s found." +msgstr "" + +msgid "No tracking Hosts for interface %s defined." +msgstr "" + msgid "Notification" msgstr "通知" @@ -273,6 +285,9 @@ msgstr "离线" msgid "Online" msgstr "在线" +msgid "Only one IP rules for interface %s found" +msgstr "" + msgid "Ping count" msgstr "Ping 计数" @@ -327,6 +342,12 @@ msgstr "通信协议" msgid "Recovery interval" msgstr "故障恢复间隔" +msgid "Routing table %s for interface %s found" +msgstr "" + +msgid "Routing table %s for interface %s not found" +msgstr "" + msgid "Rule" msgstr "规则" diff --git a/applications/luci-app-mwan3/po/zh-tw/mwan3.po b/applications/luci-app-mwan3/po/zh-tw/mwan3.po index 00baedf216..bb17b559d2 100644 --- a/applications/luci-app-mwan3/po/zh-tw/mwan3.po +++ b/applications/luci-app-mwan3/po/zh-tw/mwan3.po @@ -38,6 +38,9 @@ msgstr "取值範圍:1-1000。如果不填寫,預設值為 1" msgid "Acceptable values: 1-256. Defaults to 1 if not set" msgstr "取值範圍:1-256。如果不填寫,預設值為 1" +msgid "All required IP rules for interface %s found" +msgstr "" + msgid "Check IP rules" msgstr "檢查 IP 規則" @@ -251,6 +254,9 @@ msgstr "最小資料包延遲 [ms]" msgid "Min packet loss [%]" msgstr "最小資料包丟失率 [%]" +msgid "Missing both IP rules for interface %s" +msgstr "" + msgid "" "Name of IPset rule. Requires IPset rule in /etc/dnsmasq.conf (eg \"ipset=/" "youtube.com/youtube\")" @@ -264,6 +270,12 @@ msgstr "否" msgid "No MWAN interfaces found" msgstr "沒有找到 MWAN 介面" +msgid "No gateway for interface %s found." +msgstr "" + +msgid "No tracking Hosts for interface %s defined." +msgstr "" + msgid "Notification" msgstr "通知" @@ -273,6 +285,9 @@ msgstr "離線" msgid "Online" msgstr "在線" +msgid "Only one IP rules for interface %s found" +msgstr "" + msgid "Ping count" msgstr "Ping 計數" @@ -327,6 +342,12 @@ msgstr "通訊協議" msgid "Recovery interval" msgstr "故障恢復間隔" +msgid "Routing table %s for interface %s found" +msgstr "" + +msgid "Routing table %s for interface %s not found" +msgstr "" + msgid "Rule" msgstr "規則" diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua index dc7718217c..6dc43bec24 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-advanced.lua @@ -204,10 +204,6 @@ local knownParams = { "dev_node", "/dev/net/tun", translate("Use tun/tap device node") }, - { Flag, - "tun_ipv6", - 0, - translate("Make tun device IPv6 capable") }, { Value, "ifconfig", "10.200.200.3 10.200.200.1", @@ -248,15 +244,6 @@ local knownParams = { "mtu_test", 0, translate("Empirically measure MTU") }, - { ListValue, - "comp_lzo", - { "yes", "no", "adaptive" }, - translate("Use fast LZO compression") }, - { Flag, - "comp_noadapt", - 0, - translate("Don't use adaptive lzo compression"), - { comp_lzo=1 } }, { Value, "link_mtu", 1500, @@ -375,7 +362,7 @@ local knownParams = { { client="0" }, { client="" } }, { DynamicList, "push", - { "redirect-gateway", "comp-lzo" }, + { "redirect-gateway" }, translate("Push options to peer"), { client="0" }, { client="" } }, { Flag, @@ -398,12 +385,6 @@ local knownParams = { "/etc/openvpn/ipp.txt 600", translate("Persist/unpersist ifconfig-pool"), { client="0" }, { client="" } }, - -- deprecated and replaced by --topology p2p - -- { Flag, - -- "ifconfig_pool_linear", - -- 0, - -- translate("Use individual addresses rather than /30 subnets"), - -- { client="0" }, { client="" } }, { Value, "ifconfig_push", "10.200.200.1 255.255.255.255", @@ -470,11 +451,6 @@ local knownParams = { translate("Allowed maximum of new connections"), { client="0" }, { client="" } }, { Flag, - "client_cert_not_required", - 0, - translate("Don't require client certificate"), - { client="0" }, { client="" } }, - { Flag, "username_as_common_name", 0, translate("Use username as common name"), @@ -591,10 +567,6 @@ local knownParams = { "engine", "dynamic", translate("Enable OpenSSL hardware crypto engines") }, - { Flag, - "no_replay", - 0, - translate("Disable replay protection") }, { Value, "replay_window", "64 15", @@ -608,10 +580,6 @@ local knownParams = { "/var/run/openvpn-replay-state", translate("Persist replay-protection state") }, { Flag, - "no_iv", - 0, - translate("Disable cipher initialisation vector") }, - { Flag, "tls_server", 0, translate("Enable TLS and assume server role"), diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua index 3f651c0ada..483860c8e9 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn-basic.lua @@ -4,7 +4,6 @@ require("luci.ip") require("luci.model.uci") - local basicParams = { -- -- Widget, Name, Default(s), Description @@ -14,14 +13,12 @@ local basicParams = { { Value, "nice",0, translate("Change process priority") }, { Value,"port",1194, translate("TCP/UDP port # for both local and remote") }, { ListValue,"dev_type",{ "tun", "tap" }, translate("Type of used device") }, - { Flag,"tun_ipv6",0, translate("Make tun device IPv6 capable") }, { Value,"ifconfig","10.200.200.3 10.200.200.1", translate("Set tun/tap adapter parameters") }, { Value,"server","10.200.200.0 255.255.255.0", translate("Configure server mode") }, { Value,"server_bridge","192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254", translate("Configure server bridge") }, { Flag,"nobind",0, translate("Do not bind to local address and port") }, - { ListValue,"comp_lzo",{"yes","no","adaptive"}, translate("Use fast LZO compression") }, { Value,"keepalive","10 60", translate("Helper directive to simplify the expression of --ping and --ping-restart in server mode configurations") }, { ListValue,"proto",{ "udp", "tcp-client", "tcp-server" }, translate("Use protocol") }, diff --git a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua index a6b0e1dd90..e17aa4085b 100644 --- a/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua +++ b/applications/luci-app-openvpn/luasrc/model/cbi/openvpn.lua @@ -52,21 +52,22 @@ function s.create(self, name) luci.cbi.CREATE_PREFIX .. self.config .. "." .. self.sectiontype .. ".select" ) - name = luci.http.formvalue( + local name = luci.http.formvalue( luci.cbi.CREATE_PREFIX .. self.config .. "." .. self.sectiontype .. ".text" ) if #name > 3 and not name:match("[^a-zA-Z0-9_]") then - uci:section( - "openvpn", "openvpn", name, - uci:get_all( "openvpn_recipes", recipe ) - ) - - uci:delete("openvpn", name, "_role") - uci:delete("openvpn", name, "_description") - uci:save("openvpn") - - luci.http.redirect( self.extedit:format(name) ) + local s = uci:section("openvpn", "openvpn", name) + if s then + local options = uci:get_all("openvpn_recipes", recipe) + for k, v in pairs(options) do + uci:set("openvpn", name, k, v) + end + uci:delete("openvpn", name, "_role") + uci:delete("openvpn", name, "_description") + uci:save("openvpn") + luci.http.redirect( self.extedit:format(name) ) + end elseif #name > 0 then self.invalid_cts = true end diff --git a/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm b/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm index f22cb68c7b..8cb019b461 100644 --- a/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm +++ b/applications/luci-app-openvpn/luasrc/view/openvpn/pageswitch.htm @@ -4,11 +4,11 @@ Licensed to the public under the Apache License 2.0. -%> -<fieldset class="cbi-section"> - <legend> +<div class="cbi-section"> + <h3> <a href="<%=url('admin/services/openvpn')%>"><%:Overview%></a> » <%=luci.i18n.translatef("Instance \"%s\"", self.instance)%> - </legend> + </h3> <% if self.mode == "basic" then %> <a href="<%=url('admin/services/openvpn/advanced', self.instance, "Service")%>"><%:Switch to advanced configuration »%></a> @@ -27,4 +27,4 @@ <% if next(self.categories, i) then %>|<% end %> <% end %> <% end %> -</fieldset> +</div> diff --git a/applications/luci-app-openvpn/root/etc/config/openvpn_recipes b/applications/luci-app-openvpn/root/etc/config/openvpn_recipes index 1b394dffbc..69270e48e1 100644 --- a/applications/luci-app-openvpn/root/etc/config/openvpn_recipes +++ b/applications/luci-app-openvpn/root/etc/config/openvpn_recipes @@ -2,101 +2,94 @@ # Routed point-to-point server # config openvpn_recipe server_tun_ptp - option _description "Simple server configuration for a routed point-to-point VPN" - option _role "server" - option dev "tun" - option ifconfig "10.0.0.1 10.0.0.2" - option secret "shared-secret.key" - option keepalive "10 60" - option comp_lzo "yes" - option verb "3" - option mssfix "1420" + option _description 'Simple server configuration for a routed point-to-point VPN' + option _role 'server' + option dev 'tun' + option ifconfig '10.0.0.1 10.0.0.2' + option secret 'shared-secret.key' + option keepalive '10 60' + option verb '3' + option mssfix '1420' # # Routed point-to-point client # config openvpn_recipe client_tun_ptp - option _description "Simple client configuration for a routed point-to-point VPN" - option _role "client" - option dev "tun" - list remote "vpnserver.example.org" - option ifconfig "10.0.0.2 10.0.0.1" - option secret "shared-secret.key" - option nobind "1" - option comp_lzo "yes" - option verb "3" + option _description 'Simple client configuration for a routed point-to-point VPN' + option _role 'client' + option dev 'tun' + list remote 'vpnserver.example.org' + option ifconfig '10.0.0.2 10.0.0.1' + option secret 'shared-secret.key' + option nobind '1' + option verb '3' # # Routed multi-client server # config openvpn_recipe server_tun - option _description "Server configuration for a routed multi-client VPN" - option _role "server" - option dev "tun" - option server "10.0.100.0 255.255.255.0" - option ca "ca.crt" - option cert "server.crt" - option key "server.key" - option dh "dh1024.pem" - option keepalive "10 60" - option comp_lzo "yes" - option verb "3" - option mssfix "1420" + option _description 'Server configuration for a routed multi-client VPN' + option _role 'server' + option dev 'tun' + option server '10.0.100.0 255.255.255.0' + option ca 'ca.crt' + option cert 'server.crt' + option key 'server.key' + option dh 'dh1024.pem' + option keepalive '10 60' + option verb '3' + option mssfix '1420' # # Routed client # config openvpn_recipe client_tun - option _description "Client configuration for a routed multi-client VPN" - option _role "client" - option client "1" - option dev "tun" - list remote "vpnserver.example.org" - option pkcs12 "my_client.p12" - option remote_cert_tls "server" - option comp_lzo "yes" - option nobind "1" - option persist_key "1" - option persist_tun "1" - option verb "3" - option reneg_sec "0" - option float "1" + option _description 'Client configuration for a routed multi-client VPN' + option _role 'client' + option client '1' + option dev 'tun' + list remote 'vpnserver.example.org' + option pkcs12 'my_client.p12' + option remote_cert_tls 'server' + option nobind '1' + option persist_key '1' + option persist_tun '1' + option verb '3' + option reneg_sec '0' + option float '1' # # Multi-client ethernet bridge server # config openvpn_recipe server_tap_bridge - option _description "Server configuration for an ethernet bridge VPN" - option _role "server" - option dev "tap" - option server_bridge "192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254" - option ca "ca.crt" - option cert "server.crt" - option key "server.key" - option dh "dh1024.pem" - option keepalive "10 60" - option comp_lzo "yes" - option verb "3" - option mssfix "1420" + option _description 'Server configuration for an ethernet bridge VPN' + option _role 'server' + option dev 'tap' + option server_bridge '192.168.1.1 255.255.255.0 192.168.1.128 192.168.1.254' + option ca 'ca.crt' + option cert 'server.crt' + option key 'server.key' + option dh 'dh1024.pem' + option keepalive '10 60' + option verb '3' + option mssfix '1420' # # Ethernet bridge client # config openvpn_recipe client_tap_bridge - option _description "Client configuration for an ethernet bridge VPN" - option _role "client" - option client "1" - option dev "tap" - list remote "vpnserver.example.org" - option ca "ca.crt" - option cert "my_client.crt" - option key "my_client.key" - option dh "dh1024.pem" - option remote_cert_tls "server" - option comp_lzo "yes" - option nobind "1" - option persist_key "1" - option verb "3" - option reneg_sec "0" - option float "1" - + option _description 'Client configuration for an ethernet bridge VPN' + option _role 'client' + option client '1' + option dev 'tap' + list remote 'vpnserver.example.org' + option ca 'ca.crt' + option cert 'my_client.crt' + option key 'my_client.key' + option dh 'dh1024.pem' + option remote_cert_tls 'server' + option nobind '1' + option persist_key '1' + option verb '3' + option reneg_sec '0' + option float '1' diff --git a/applications/luci-app-samba4/luasrc/model/cbi/samba4.lua b/applications/luci-app-samba4/luasrc/model/cbi/samba4.lua index e5c0a1bed0..2a1399b96b 100644 --- a/applications/luci-app-samba4/luasrc/model/cbi/samba4.lua +++ b/applications/luci-app-samba4/luasrc/model/cbi/samba4.lua @@ -15,9 +15,20 @@ h = s:taboption("general", Flag, "homes", translate("Share home-directories"), translate("Allow system users to reach their home directories via " .. "network shares")) h.rmempty = false -s:taboption("general", Flag, "disable_netbios", translate("Disable Netbios")) -s:taboption("general", Flag, "disable_ad_dc", translate("Disable Active Directory Domain Controller")) -s:taboption("general", Flag, "disable_winbind", translate("Disable Winbind")) + +macos = s:taboption("general", Flag, "macos", translate("Enable macOS compatible shares"), + translate("Enables Apple's AAPL extension globally and adds macOS compatibility options to all shares.")) +macos.rmempty = false + +if nixio.fs.access("/usr/sbin/nmbd") then + s:taboption("general", Flag, "disable_netbios", translate("Disable Netbios")) +end +if nixio.fs.access("/usr/sbin/samba") then + s:taboption("general", Flag, "disable_ad_dc", translate("Disable Active Directory Domain Controller")) +end +if nixio.fs.access("/usr/sbin/winbindd") then + s:taboption("general", Flag, "disable_winbind", translate("Disable Winbind")) +end tmpl = s:taboption("template", Value, "_tmpl", translate("Edit the template that is used for generating the samba configuration."), @@ -49,42 +60,53 @@ if nixio.fs.access("/etc/config/fstab") then pth.titleref = luci.dispatcher.build_url("admin", "system", "fstab") end -s:option(Value, "users", translate("Allowed users")).rmempty = true +br = s:option(Flag, "browseable", translate("Browse-able")) +br.enabled = "yes" +br.disabled = "no" +br.default = "yes" ro = s:option(Flag, "read_only", translate("Read-only")) -ro.rmempty = false ro.enabled = "yes" ro.disabled = "no" +ro.default = "yes" -br = s:option(Flag, "browseable", translate("Browseable")) -br.rmempty = false -br.default = "yes" -br.enabled = "yes" -br.disabled = "no" +s:option(Flag, "force_root", translate("Force Root")) + +au = s:option(Value, "users", translate("Allowed users")) +au.rmempty = true go = s:option(Flag, "guest_ok", translate("Allow guests")) -go.rmempty = false go.enabled = "yes" go.disabled = "no" +go.default = "no" gon = s:option(Flag, "guest_only", translate("Guests only")) -gon.rmempty = false gon.enabled = "yes" gon.disabled = "no" +gon.default = "no" -io = s:option(Flag, "inherit_owner", translate("Inherit owner")) -io.rmempty = false -io.enabled = "yes" -io.disabled = "no" +iown = s:option(Flag, "inherit_owner", translate("Inherit owner")) +iown.enabled = "yes" +iown.disabled = "no" +iown.default = "no" cm = s:option(Value, "create_mask", translate("Create mask")) cm.rmempty = true -cm.size = 4 +cm.maxlength = 4 +cm.placeholder = "0666" dm = s:option(Value, "dir_mask", translate("Directory mask")) dm.rmempty = true -dm.size = 4 +dm.maxlength = 4 +dm.placeholder = "0777" + +vfs = s:option(Value, "vfs_objects", translate("Vfs objects")) +vfs.rmempty = true + +s:option(Flag, "timemachine", translate("Apple Time-machine share")) -s:option(Value, "vfs_objects", translate("Vfs objects")).rmempty = true +tms = s:option(Value, "timemachine_maxsize", translate("Time-machine size in GB")) +tms.rmempty = true +tms.maxlength = 5 return m diff --git a/applications/luci-app-samba4/po/ca/samba4.po b/applications/luci-app-samba4/po/ca/samba4.po index ddd306d07a..0183f56b70 100644 --- a/applications/luci-app-samba4/po/ca/samba4.po +++ b/applications/luci-app-samba4/po/ca/samba4.po @@ -26,7 +26,10 @@ msgstr "" msgid "Allowed users" msgstr "Usuaris permesos" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -53,6 +56,17 @@ msgstr "Edita plantilla" msgid "Edit the template that is used for generating the samba configuration." msgstr "Edita la plantilla que s'usa per generar la configuració de samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Ajusts generals" @@ -99,6 +113,9 @@ msgstr "" "barra ('|') no es deuen canviar. Reben els seus valors de la pestanya " "'Ajusts generals'." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/cs/samba4.po b/applications/luci-app-samba4/po/cs/samba4.po index a013bcc13e..88cd178367 100644 --- a/applications/luci-app-samba4/po/cs/samba4.po +++ b/applications/luci-app-samba4/po/cs/samba4.po @@ -22,7 +22,10 @@ msgstr "" msgid "Allowed users" msgstr "Povolení uživatelé" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -51,6 +54,17 @@ msgstr "" "Editovat šablonu, která je použita pro generování konfiguračního souboru pro " "sambu." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Obecné nastavení" @@ -96,6 +110,9 @@ msgstr "" "konfigurace samby generována. Hodnoty uzavřené rourou (\"|\"), by se neměly " "měnit. Tyto hodnoty jsou brány ze záložky \"Obecná nastavení\"." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/de/samba4.po b/applications/luci-app-samba4/po/de/samba4.po index b9caa61d1c..35a4815284 100644 --- a/applications/luci-app-samba4/po/de/samba4.po +++ b/applications/luci-app-samba4/po/de/samba4.po @@ -24,17 +24,20 @@ msgstr "" msgid "Allowed users" msgstr "Legitimierte Benutzer" -msgid "Browseable" -msgstr "Suchbar" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" +msgstr "Durchsuchbar" msgid "Create mask" -msgstr "Berechtigungsmaske für neue Dateien" +msgstr "Berechtigungs-maske für neue Dateien" msgid "Description" msgstr "Beschreibung" msgid "Directory mask" -msgstr "Verzeichnismaske" +msgstr "Verzeichnis-maske" msgid "Disable Active Directory Domain Controller" msgstr "Deaktiviere Active Directory Domain Controller" @@ -53,6 +56,17 @@ msgstr "" "Hier kann das Template bearbeitet werden, das zur Erstellung der Samba-" "Konfigurationsdateien verwendet wird." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Allgemeine Einstellungen" @@ -69,7 +83,7 @@ msgid "Name" msgstr "Name" msgid "Network Shares" -msgstr "Netzwerkfreigaben" +msgstr "Netzwerk-freigaben" msgid "Path" msgstr "Pfad" @@ -83,7 +97,7 @@ msgid "Read-only" msgstr "Nur Lesen" msgid "Share home-directories" -msgstr "Heimatverzeichnisse freigeben" +msgstr "Heimat-verzeichnisse freigeben" msgid "Shared Directories" msgstr "Freigegebene Verzeichnisse" @@ -100,12 +114,18 @@ msgstr "" "werden, da diese beim Erstellen der Konfiguration mit den Werten aus dem Tab " "'Allgemeine Einstellungen' ersetzt werden." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" -msgstr "Virtuelle Filesystem Module" +msgstr "" msgid "Workgroup" msgstr "Arbeitsgruppe" +#~ msgid "Browseable" +#~ msgstr "Suchbar" + #~ msgid "Mask for new directories" #~ msgstr "Maske für neue Verzeichnisse" diff --git a/applications/luci-app-samba4/po/el/samba4.po b/applications/luci-app-samba4/po/el/samba4.po index 946915f74d..88999d4071 100644 --- a/applications/luci-app-samba4/po/el/samba4.po +++ b/applications/luci-app-samba4/po/el/samba4.po @@ -22,7 +22,10 @@ msgstr "" msgid "Allowed users" msgstr "" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -49,6 +52,17 @@ msgstr "" msgid "Edit the template that is used for generating the samba configuration." msgstr "" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "" @@ -91,6 +105,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/en/samba4.po b/applications/luci-app-samba4/po/en/samba4.po index 75ef0f96e9..35ecc99e25 100644 --- a/applications/luci-app-samba4/po/en/samba4.po +++ b/applications/luci-app-samba4/po/en/samba4.po @@ -22,7 +22,10 @@ msgstr "Allow system users to reach their home directories via network shares" msgid "Allowed users" msgstr "Allowed users" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -49,6 +52,17 @@ msgstr "Edit template" msgid "Edit the template that is used for generating the samba configuration." msgstr "Edit the template that is used for generating the Samba configuration." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "General settings" @@ -95,6 +109,9 @@ msgstr "" "('|') should not be changed. They get their values from the 'General " "settings' tab." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/es/samba4.po b/applications/luci-app-samba4/po/es/samba4.po index 1e6b8fd368..99d64f970b 100644 --- a/applications/luci-app-samba4/po/es/samba4.po +++ b/applications/luci-app-samba4/po/es/samba4.po @@ -24,7 +24,10 @@ msgstr "" msgid "Allowed users" msgstr "Usuarios permitidos" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -51,6 +54,17 @@ msgstr "Editar plantilla" msgid "Edit the template that is used for generating the samba configuration." msgstr "Editar la plantilla usada para generar la configuración de samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Configuración general" @@ -96,6 +110,9 @@ msgstr "" "generará la configuración de samba. Los valores entre tuberías ('|') no " "deben cambiarse. Su valor se toma desde la pestaña 'Configuración General'." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/fr/samba4.po b/applications/luci-app-samba4/po/fr/samba4.po index 53212311cf..a5b7dc7935 100644 --- a/applications/luci-app-samba4/po/fr/samba4.po +++ b/applications/luci-app-samba4/po/fr/samba4.po @@ -24,7 +24,10 @@ msgstr "" msgid "Allowed users" msgstr "Utilisateurs autorisés" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -51,6 +54,17 @@ msgstr "Éditer le modèle" msgid "Edit the template that is used for generating the samba configuration." msgstr "Éditer le modèle utilisé pour générer la configuration Samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Paramètres généraux" @@ -97,6 +111,9 @@ msgstr "" " (« | ») ne doivent pas être modifiées, elles proviennent de l'onglet " "« Paramètres généraux »." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/he/samba4.po b/applications/luci-app-samba4/po/he/samba4.po index 3f670e6c2d..859dd8d896 100644 --- a/applications/luci-app-samba4/po/he/samba4.po +++ b/applications/luci-app-samba4/po/he/samba4.po @@ -17,7 +17,10 @@ msgstr "" msgid "Allowed users" msgstr "" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -44,6 +47,17 @@ msgstr "" msgid "Edit the template that is used for generating the samba configuration." msgstr "" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "" @@ -86,6 +100,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/hu/samba4.po b/applications/luci-app-samba4/po/hu/samba4.po index 08ff729f4b..8dbe91558d 100644 --- a/applications/luci-app-samba4/po/hu/samba4.po +++ b/applications/luci-app-samba4/po/hu/samba4.po @@ -22,7 +22,10 @@ msgstr "" msgid "Allowed users" msgstr "Engedélyezett felhasználók" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -51,6 +54,17 @@ msgstr "" "Itt szerkesztheti a sablont, ami a végleges samba konfiguráció " "elkészítéséhez kerül felhasználásra." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Általános beállítások" @@ -97,6 +111,9 @@ msgstr "" "közé zárt értékek módosítása nem szükséges, az értéküket az általános " "beállítások fülről kapják." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/it/samba4.po b/applications/luci-app-samba4/po/it/samba4.po index 93359d7ba7..d7f5631965 100644 --- a/applications/luci-app-samba4/po/it/samba4.po +++ b/applications/luci-app-samba4/po/it/samba4.po @@ -24,8 +24,11 @@ msgstr "" msgid "Allowed users" msgstr "Utenti ammessi" -msgid "Browseable" -msgstr "Sfogliabile" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" +msgstr "" msgid "Create mask" msgstr "Crea maschera" @@ -52,6 +55,17 @@ msgid "Edit the template that is used for generating the samba configuration." msgstr "" "Modifica il template utilizzato per generare la configurazione di samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Opzioni Generali" @@ -100,12 +114,18 @@ msgstr "" "('|') non dovrebbero essere toccati. Essi vengono generati dalla schermata " "'Opzioni Generali'." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" msgid "Workgroup" msgstr "Gruppo di lavoro" +#~ msgid "Browseable" +#~ msgstr "Sfogliabile" + #~ msgid "Mask for new directories" #~ msgstr "Maschera per le nuove cartelle" diff --git a/applications/luci-app-samba4/po/ja/samba4.po b/applications/luci-app-samba4/po/ja/samba4.po index 3e82cbca2c..1358c2bd0e 100644 --- a/applications/luci-app-samba4/po/ja/samba4.po +++ b/applications/luci-app-samba4/po/ja/samba4.po @@ -22,7 +22,10 @@ msgstr "sambaを介してユーザーのホームディレクトリへのアク msgid "Allowed users" msgstr "許可されたユーザー" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -49,6 +52,17 @@ msgstr "テンプレートの編集" msgid "Edit the template that is used for generating the samba configuration." msgstr "samba設定を生成するテンプレートを編集します。" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "一般設定" @@ -96,6 +110,9 @@ msgstr "" "容です。パイプ('|')で閉じられた値は変更しないでください。これらの値は'一般設" "定'タブ内の値によって置き換えられます。" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/ms/samba4.po b/applications/luci-app-samba4/po/ms/samba4.po index 9e138471d0..c6ca22fba0 100644 --- a/applications/luci-app-samba4/po/ms/samba4.po +++ b/applications/luci-app-samba4/po/ms/samba4.po @@ -16,7 +16,10 @@ msgstr "" msgid "Allowed users" msgstr "" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -43,6 +46,17 @@ msgstr "" msgid "Edit the template that is used for generating the samba configuration." msgstr "" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "" @@ -85,6 +99,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/no/samba4.po b/applications/luci-app-samba4/po/no/samba4.po index 6e84259337..8742cbb0a5 100644 --- a/applications/luci-app-samba4/po/no/samba4.po +++ b/applications/luci-app-samba4/po/no/samba4.po @@ -13,7 +13,10 @@ msgstr "Tillat systembrukere å nå sine hjemmekataloger via nettverks mapper." msgid "Allowed users" msgstr "Tillatte brukere" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -40,6 +43,17 @@ msgstr "Rediger Mal" msgid "Edit the template that is used for generating the samba configuration." msgstr "Rediger malen som brukes til å generere samba konfigurasjonen." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Generelle Innstillinger" @@ -85,6 +99,9 @@ msgstr "" "konfigurasjon vil bli generert fra. Verdier omsluttet av ('|') bør ikke " "endres. De får sine verdier fra 'Generelle Innstillinger' fanen." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/pl/samba4.po b/applications/luci-app-samba4/po/pl/samba4.po index aec7082d53..faad499c46 100644 --- a/applications/luci-app-samba4/po/pl/samba4.po +++ b/applications/luci-app-samba4/po/pl/samba4.po @@ -23,7 +23,10 @@ msgstr "" msgid "Allowed users" msgstr "Użytkownicy z prawem dostępu" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -50,6 +53,17 @@ msgstr "Edytuj szablon" msgid "Edit the template that is used for generating the samba configuration." msgstr "Edytuj szablon, który jest używany do generowania konfiguracji samby." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Ustawienia ogólne" @@ -96,6 +110,9 @@ msgstr "" "kreski pionowej ('|') nie powinny być zmieniane. Wartości ich zostaną " "pobrane z zakładki \"Ustawienia ogólne\"." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/pt-br/samba4.po b/applications/luci-app-samba4/po/pt-br/samba4.po index 8f6dbb6c99..5383aa32de 100644 --- a/applications/luci-app-samba4/po/pt-br/samba4.po +++ b/applications/luci-app-samba4/po/pt-br/samba4.po @@ -24,7 +24,10 @@ msgstr "" msgid "Allowed users" msgstr "Usuários permitidos" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -51,6 +54,17 @@ msgstr "Editar modelo" msgid "Edit the template that is used for generating the samba configuration." msgstr "Edita o modelo que é usado para gerar a configuração do samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Configurações Gerais" @@ -97,6 +111,9 @@ msgstr "" "não devem ser alterados. Estes valores serão obtidos a partir da aba " "'Configurações Gerais'." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/pt/samba4.po b/applications/luci-app-samba4/po/pt/samba4.po index 2f8f2dafc0..50c1645f0c 100644 --- a/applications/luci-app-samba4/po/pt/samba4.po +++ b/applications/luci-app-samba4/po/pt/samba4.po @@ -24,7 +24,10 @@ msgstr "" msgid "Allowed users" msgstr "Utilizadores Permitidos" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -51,6 +54,17 @@ msgstr "Editar Template" msgid "Edit the template that is used for generating the samba configuration." msgstr "Editar a template que é utilizada para gerar a configuração samba" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Definições Gerais" @@ -97,6 +111,9 @@ msgstr "" "| não devem ser alterados. Eles recebem os valores do separador 'Definições " "Gerais'." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/ro/samba4.po b/applications/luci-app-samba4/po/ro/samba4.po index d9f698971e..b481b1f952 100644 --- a/applications/luci-app-samba4/po/ro/samba4.po +++ b/applications/luci-app-samba4/po/ro/samba4.po @@ -23,7 +23,10 @@ msgstr "" msgid "Allowed users" msgstr "Utilizatori acceptati" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -50,6 +53,17 @@ msgstr "Editeaza sablon" msgid "Edit the template that is used for generating the samba configuration." msgstr "Editeaza sablonul care e folosit pentru generarea configuratiei samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Setari generale" @@ -95,6 +109,9 @@ msgstr "" "genereaza configuratia samba. Valorile dintre liniuta verticala ('|') n-ar " "trebui schimbate, ele iau valorile direct din tab-ul de \"Setari generale\"." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/ru/samba4.po b/applications/luci-app-samba4/po/ru/samba4.po index f588424d95..f7ec3269eb 100644 --- a/applications/luci-app-samba4/po/ru/samba4.po +++ b/applications/luci-app-samba4/po/ru/samba4.po @@ -26,8 +26,11 @@ msgstr "" msgid "Allowed users" msgstr "Разрешенные пользователи" -msgid "Browseable" -msgstr "Виден в списке доступных ресурсов" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" +msgstr "" msgid "Create mask" msgstr "Создать маску" @@ -53,6 +56,17 @@ msgstr "Настройка config файла" msgid "Edit the template that is used for generating the samba configuration." msgstr "Настройка config<br />файла samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Основные настройки" @@ -101,12 +115,18 @@ msgstr "" "('|'), не должны быть изменены.<br />Они будут автоматически заменены на " "значения со страницы 'Основные настройки'." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" msgid "Workgroup" msgstr "Рабочая группа" +#~ msgid "Browseable" +#~ msgstr "Виден в списке доступных ресурсов" + #~ msgid "Mask for new directories" #~ msgstr "Маска для новых папок" diff --git a/applications/luci-app-samba4/po/sk/samba4.po b/applications/luci-app-samba4/po/sk/samba4.po index 53e8e214ea..44299ac1aa 100644 --- a/applications/luci-app-samba4/po/sk/samba4.po +++ b/applications/luci-app-samba4/po/sk/samba4.po @@ -17,7 +17,10 @@ msgstr "" msgid "Allowed users" msgstr "" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -44,6 +47,17 @@ msgstr "" msgid "Edit the template that is used for generating the samba configuration." msgstr "" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "" @@ -86,6 +100,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/sv/samba4.po b/applications/luci-app-samba4/po/sv/samba4.po index d9c0cc0df9..39695eb0b7 100644 --- a/applications/luci-app-samba4/po/sv/samba4.po +++ b/applications/luci-app-samba4/po/sv/samba4.po @@ -18,7 +18,10 @@ msgstr "Tillåt systemanvändare att nå deras hem-mappar via nätverksdelningar msgid "Allowed users" msgstr "Tillåtna användare" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -46,6 +49,17 @@ msgid "Edit the template that is used for generating the samba configuration." msgstr "" "Redigera mallen som används för att generera konfigurationen för samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Generella inställningar" @@ -88,6 +102,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/templates/samba4.pot b/applications/luci-app-samba4/po/templates/samba4.pot index 3041807b14..33142d047c 100644 --- a/applications/luci-app-samba4/po/templates/samba4.pot +++ b/applications/luci-app-samba4/po/templates/samba4.pot @@ -10,7 +10,10 @@ msgstr "" msgid "Allowed users" msgstr "" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -37,6 +40,17 @@ msgstr "" msgid "Edit the template that is used for generating the samba configuration." msgstr "" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "" @@ -79,6 +93,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/tr/samba4.po b/applications/luci-app-samba4/po/tr/samba4.po index 1c233f1ec3..4368fb2710 100644 --- a/applications/luci-app-samba4/po/tr/samba4.po +++ b/applications/luci-app-samba4/po/tr/samba4.po @@ -17,7 +17,10 @@ msgstr "" msgid "Allowed users" msgstr "" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -44,6 +47,17 @@ msgstr "" msgid "Edit the template that is used for generating the samba configuration." msgstr "" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "" @@ -86,6 +100,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/uk/samba4.po b/applications/luci-app-samba4/po/uk/samba4.po index e228baec2e..a4f7e5a02b 100644 --- a/applications/luci-app-samba4/po/uk/samba4.po +++ b/applications/luci-app-samba4/po/uk/samba4.po @@ -23,7 +23,10 @@ msgstr "" msgid "Allowed users" msgstr "Дозволені користувачі" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" msgid "Create mask" @@ -51,6 +54,17 @@ msgid "Edit the template that is used for generating the samba configuration." msgstr "" "Редагувати шаблон, який використовується для створення конфігурації samba." +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "Загальні настройки" @@ -97,6 +111,9 @@ msgstr "" "\" (\"|\") не повинні змінюватися. Вони отримують свої значення з вкладки " "\"Загальні налаштування\"." +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/vi/samba4.po b/applications/luci-app-samba4/po/vi/samba4.po index b176471b0d..d597628229 100644 --- a/applications/luci-app-samba4/po/vi/samba4.po +++ b/applications/luci-app-samba4/po/vi/samba4.po @@ -28,7 +28,10 @@ msgstr "" msgid "Allowed users" msgstr "Người sử dụng được cho phép" -msgid "Browseable" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" msgstr "" #, fuzzy @@ -57,6 +60,17 @@ msgstr "" msgid "Edit the template that is used for generating the samba configuration." msgstr "" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "" @@ -100,6 +114,9 @@ msgid "" "Settings' tab." msgstr "" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "" diff --git a/applications/luci-app-samba4/po/zh-cn/samba4.po b/applications/luci-app-samba4/po/zh-cn/samba4.po index bab5f9b9cb..f49abac4e9 100644 --- a/applications/luci-app-samba4/po/zh-cn/samba4.po +++ b/applications/luci-app-samba4/po/zh-cn/samba4.po @@ -25,8 +25,11 @@ msgstr "允许系统用户通过网络共享访问他们的家目录" msgid "Allowed users" msgstr "允许用户" -msgid "Browseable" -msgstr "可浏览" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" +msgstr "" msgid "Create mask" msgstr "创建权限掩码" @@ -52,6 +55,17 @@ msgstr "编辑模板" msgid "Edit the template that is used for generating the samba configuration." msgstr "编辑用来生成 samba 设置的模板" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "基本设置" @@ -96,12 +110,18 @@ msgstr "" "这是将从其上生成 samba 配置的文件“/etc/samba/smb.conf.template”的内容。由管道" "符(“|”)包围的值不应更改。它们将从“常规设置”标签中获取其值。" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "VFS 对象" msgid "Workgroup" msgstr "工作组" +#~ msgid "Browseable" +#~ msgstr "可浏览" + #~ msgid "Mask for new directories" #~ msgstr "新目录权限掩码" diff --git a/applications/luci-app-samba4/po/zh-tw/samba4.po b/applications/luci-app-samba4/po/zh-tw/samba4.po index 17d18e6200..ae962f9e82 100644 --- a/applications/luci-app-samba4/po/zh-tw/samba4.po +++ b/applications/luci-app-samba4/po/zh-tw/samba4.po @@ -25,8 +25,11 @@ msgstr "允許系統使用者通過網路共享訪問他們的家目錄" msgid "Allowed users" msgstr "允許使用者" -msgid "Browseable" -msgstr "可瀏覽" +msgid "Apple Time-machine share" +msgstr "" + +msgid "Browse-able" +msgstr "" msgid "Create mask" msgstr "建立權限掩碼" @@ -52,6 +55,17 @@ msgstr "編輯模板" msgid "Edit the template that is used for generating the samba configuration." msgstr "編輯用來生成 samba 設定的模板" +msgid "Enable macOS compatible shares" +msgstr "" + +msgid "" +"Enables Apple's AAPL extension globally and adds macOS compatibility options " +"to all shares." +msgstr "" + +msgid "Force Root" +msgstr "" + msgid "General Settings" msgstr "基本設定" @@ -96,12 +110,18 @@ msgstr "" "這是將從其上生成 samba 配置的檔案“/etc/samba/smb.conf.template”的內容。由管道" "符(“|”)包圍的值不應更改。它們將從“常規設定”標籤中獲取其值。" +msgid "Time-machine size in GB" +msgstr "" + msgid "Vfs objects" msgstr "VFS 物件" msgid "Workgroup" msgstr "工作組" +#~ msgid "Browseable" +#~ msgstr "可瀏覽" + #~ msgid "Mask for new directories" #~ msgstr "新目錄權限掩碼" diff --git a/applications/luci-app-unbound/luasrc/controller/unbound.lua b/applications/luci-app-unbound/luasrc/controller/unbound.lua index 771385b798..734476acae 100644 --- a/applications/luci-app-unbound/luasrc/controller/unbound.lua +++ b/applications/luci-app-unbound/luasrc/controller/unbound.lua @@ -52,6 +52,8 @@ function index() entry({"admin", "services", "unbound", "status", "localzone"}, call("QueryLocalZone"), _("Local Zones"), 30).leaf = true + entry({"admin", "services", "unbound", "status", "dumpcache"}, + call("QueryCacheDump"), _("Cache Dump"), 40).leaf = true else entry({"admin", "services", "unbound", "status", "statistics"}, call("ShowEmpty"), _("Statistics"), 10).leaf = true @@ -151,6 +153,16 @@ function QueryLocalZone() {heading = "", description = lcldesc, content = lcldata}) end +function QueryCacheDump() + local lcldata = luci.util.exec( + "unbound-control -c /var/lib/unbound/unbound.conf dump_cache") + + local lcldesc = luci.i18n.translate( + "This shows Unbound 'cache_dump'. Usefull to check if unbound is actually caching dns entities.") + + luci.template.render("unbound/show-textbox", + {heading = "", description = lcldesc, content = lcldata}) +end function ShowUnboundConf() local unboundfile = "/var/lib/unbound/unbound.conf" diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua index df2164f8a6..60d0477d53 100644 --- a/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua +++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound/configure.lua @@ -210,10 +210,11 @@ if (valman == "0") then pro = s1:taboption("resource", ListValue, "protocol", translate("Recursion Protocol"), - translate("Chose the protocol recursion queries leave on")) + translate("Chose the IP versions used upstream and downstream")) pro:value("default", translate("Default")) pro:value("ip4_only", translate("IP4 Only")) - pro:value("ip6_only", translate("IP6 Only")) + pro:value("ip6_local", translate("IP4 All and IP6 Local")) + pro:value("ip6_only", translate("IP6 Only*")) pro:value("ip6_prefer", translate("IP6 Preferred")) pro:value("mixed", translate("IP4 and IP6")) pro.rmempty = false diff --git a/modules/luci-base/luasrc/sys.lua b/modules/luci-base/luasrc/sys.lua index 823e20770c..1436a3a235 100644 --- a/modules/luci-base/luasrc/sys.lua +++ b/modules/luci-base/luasrc/sys.lua @@ -70,6 +70,24 @@ function mounts() return data end +function mtds() + local data = {} + + if fs.access("/proc/mtd") then + for l in io.lines("/proc/mtd") do + local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"') + if s and n then + local d = {} + d.size = tonumber(s, 16) + d.name = n + table.insert(data, d) + end + end + end + + return data +end + -- containing the whole environment is returned otherwise this function returns -- the corresponding string value for the given name or nil if no such variable -- exists. diff --git a/modules/luci-base/po/ru/base.po b/modules/luci-base/po/ru/base.po index 4fa5940c4b..d84167a520 100644 --- a/modules/luci-base/po/ru/base.po +++ b/modules/luci-base/po/ru/base.po @@ -2755,8 +2755,8 @@ msgid "" "Query all available upstream <abbr title=\"Domain Name System\">DNS</abbr> " "servers" msgstr "" -"Опрашивать все имеющиеся внешние <abbr title=\"Domain Name System\">DNS</abbr>" -"-серверы" +"Опрашивать все имеющиеся внешние <abbr title=\"Domain Name System\">DNS</" +"abbr>-серверы" msgid "R0 Key Lifetime" msgstr "R0 Key время жизни" diff --git a/modules/luci-base/po/tr/base.po b/modules/luci-base/po/tr/base.po index 5113bc9869..f8d89b4b17 100644 --- a/modules/luci-base/po/tr/base.po +++ b/modules/luci-base/po/tr/base.po @@ -1,15 +1,16 @@ msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"PO-Revision-Date: 2013-11-25 14:47+0200\n" -"Last-Translator: qbilay <qbilay@mynet.com>\n" +"Project-Id-Version: \n" +"PO-Revision-Date: 2018-09-13 22:59+0300\n" +"Last-Translator: Yusuf Soyipek <yusuf@soyipek.com>\n" "Language-Team: none\n" "Language: tr\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.6\n" +"X-Generator: Poedit 2.1.1\n" +"POT-Creation-Date: \n" msgid "%.1f dB" msgstr "" @@ -48,7 +49,7 @@ msgid "-- match by uuid --" msgstr "-- uuid'e göre eşleştir --" msgid "-- please select --" -msgstr "" +msgstr "-- lütfen seçin --" msgid "1 Minute Load:" msgstr "1 Dakikalık Yük:" @@ -240,13 +241,13 @@ msgid "Add new interface..." msgstr "Yeni arabirim ekle..." msgid "Additional Hosts files" -msgstr "" +msgstr "Ek Hosts dosyaları" msgid "Additional servers file" -msgstr "" +msgstr "Ek sunucular dosyası" msgid "Address" -msgstr "Adresler" +msgstr "Adres" msgid "Address to access local relay bridge" msgstr "" @@ -406,7 +407,7 @@ msgid "Apply unchecked" msgstr "" msgid "Architecture" -msgstr "" +msgstr "Mimari" msgid "" "Assign a part of given length of every public IPv6-prefix to this interface" @@ -420,7 +421,7 @@ msgid "" msgstr "" msgid "Associated Stations" -msgstr "" +msgstr "İlişkili istasyonlar" msgid "Associations" msgstr "" @@ -429,10 +430,10 @@ msgid "Auth Group" msgstr "" msgid "Authentication" -msgstr "Kimlik doğrulama" +msgstr "Kimlik Doğrulama" msgid "Authentication Type" -msgstr "" +msgstr "Kimlik doğrulama türü" msgid "Authoritative" msgstr "Yetkilendirme" @@ -504,7 +505,7 @@ msgid "Backup" msgstr "Yedekleme" msgid "Backup / Flash Firmware" -msgstr "" +msgstr "Yedek/Firmware Yazma" msgid "Backup file list" msgstr "" @@ -534,16 +535,16 @@ msgid "Bind the tunnel to this interface (optional)." msgstr "" msgid "Bitrate" -msgstr "" +msgstr "Bit hızı" msgid "Bogus NX Domain Override" msgstr "" msgid "Bridge" -msgstr "" +msgstr "Köprü" msgid "Bridge interfaces" -msgstr "" +msgstr "Köprü arabirimleri" msgid "Bridge unit number" msgstr "" @@ -558,7 +559,7 @@ msgid "Broadcom BCM%04x 802.11 Wireless Controller" msgstr "" msgid "Buffered" -msgstr "" +msgstr "Tamponlu" msgid "" "Build/distribution specific feed definitions. This file will NOT be " @@ -643,6 +644,8 @@ msgid "" "Click \"Generate archive\" to download a tar archive of the current " "configuration files." msgstr "" +"Mevcut yapılandırma dosyalarının yeni bir arşivini indirmek için \"Arşiv " +"Oluştur\"'u tıklayın." msgid "Client" msgstr "" @@ -690,22 +693,22 @@ msgid "Configuration has been rolled back!" msgstr "" msgid "Confirmation" -msgstr "" +msgstr "Onayla" msgid "Connect" -msgstr "" +msgstr "Bağlan" msgid "Connected" -msgstr "" +msgstr "Bağlandı" msgid "Connection Limit" -msgstr "" +msgstr "Bağlantı limiti" msgid "Connection attempt failed" msgstr "" msgid "Connections" -msgstr "" +msgstr "Bağlantılar" msgid "" "Could not regain access to the device after applying the configuration " @@ -714,10 +717,10 @@ msgid "" msgstr "" msgid "Country" -msgstr "" +msgstr "Ülke" msgid "Country Code" -msgstr "" +msgstr "Ülke Kodu" msgid "Cover the following interface" msgstr "" @@ -729,19 +732,19 @@ msgid "Create / Assign firewall-zone" msgstr "" msgid "Create Interface" -msgstr "" +msgstr "Arabirim Oluştur" msgid "Create a bridge over multiple interfaces" msgstr "" msgid "Critical" -msgstr "" +msgstr "Kritik" msgid "Cron Log Level" msgstr "" msgid "Custom Interface" -msgstr "" +msgstr "Özel Arabirim" msgid "Custom delegated IPv6-prefix" msgstr "" @@ -828,19 +831,19 @@ msgid "Debug" msgstr "" msgid "Default %d" -msgstr "" +msgstr "Varsayılan" msgid "Default gateway" -msgstr "" +msgstr "Default ağ geçidi" msgid "Default is stateless + stateful" msgstr "" msgid "Default state" -msgstr "" +msgstr "Varsayılan durum" msgid "Define a name for this network." -msgstr "" +msgstr "Bu ağ için bir ad tanımlayın." msgid "" "Define additional DHCP options, for example " @@ -849,69 +852,71 @@ msgid "" msgstr "" msgid "Delete" -msgstr "" +msgstr "Sil" msgid "Delete this network" -msgstr "" +msgstr "Bu ağı sil" msgid "Delivery Traffic Indication Message Interval" msgstr "" msgid "Description" -msgstr "" +msgstr "Açıklama" msgid "Design" -msgstr "" +msgstr "Tasarım" msgid "Destination" -msgstr "" +msgstr "Hedef" msgid "Device" -msgstr "" +msgstr "Cihaz" msgid "Device Configuration" -msgstr "" +msgstr "Cihaz Yapılandırması" msgid "Device is rebooting..." -msgstr "" +msgstr "Cihaz yeniden başlatılıyor..." msgid "Device unreachable!" -msgstr "" +msgstr "Cihaz ulaşılamaz!" msgid "Device unreachable! Still waiting for device..." -msgstr "" +msgstr "Cihaz ulaşılamaz! Hala cihazı bekliyorum..." msgid "Diagnostics" -msgstr "" +msgstr "Tanı" msgid "Dial number" -msgstr "" +msgstr "Arama numarası" msgid "Directory" -msgstr "" +msgstr "Dizin" msgid "Disable" -msgstr "" +msgstr "Pasif" msgid "" "Disable <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</abbr> for " "this interface." msgstr "" +"Bu arabirim için <abbr title=\"Dynamic Host Configuration Protocol\">DHCP</" +"abbr>'yi devre dışı bırakın." msgid "Disable DNS setup" -msgstr "" +msgstr "DNS kurulumunu devre dışı" msgid "Disable Encryption" -msgstr "" +msgstr "Şifrelemeyi Devre Dışı" msgid "Disable this network" -msgstr "" +msgstr "Ağ devre dışı" msgid "Disabled" -msgstr "" +msgstr "Devre dışı" msgid "Disabled (default)" -msgstr "" +msgstr "Devre dışı (varsayılan)" msgid "Disassociate On Low Acknowledgement" msgstr "" @@ -920,16 +925,16 @@ msgid "Discard upstream RFC1918 responses" msgstr "" msgid "Disconnection attempt failed" -msgstr "" +msgstr "Bağlantı kesme girişimi başarısız oldu" msgid "Dismiss" -msgstr "" +msgstr "Reddet" msgid "Displaying only packages containing" -msgstr "" +msgstr "Yalnızca içeren paketler görüntüleniyor" msgid "Distance Optimization" -msgstr "" +msgstr "Mesafe Optimizasyonu" msgid "Distance to farthest network member in meters." msgstr "" @@ -1146,7 +1151,7 @@ msgid "Expand hosts" msgstr "" msgid "Expires" -msgstr "" +msgstr "Süre Bitişi" msgid "" "Expiry time of leased addresses, minimum is 2 minutes (<code>2m</code>)." @@ -1236,19 +1241,19 @@ msgid "Firmware File" msgstr "" msgid "Firmware Version" -msgstr "" +msgstr "Firmware Versiyon" msgid "Fixed source port for outbound DNS queries" msgstr "" msgid "Flash Firmware" -msgstr "" +msgstr "Firmware Güncelle" msgid "Flash image..." -msgstr "" +msgstr "Dosyayı yaz..." msgid "Flash new firmware image" -msgstr "" +msgstr "Yeni firmware dosyasını yaz" msgid "Flash operations" msgstr "" @@ -1308,10 +1313,10 @@ msgid "Frame Bursting" msgstr "" msgid "Free" -msgstr "" +msgstr "Boş" msgid "Free space" -msgstr "" +msgstr "Boş alan" msgid "" "Further information about WireGuard interfaces and peers at <a href=\"http://" @@ -1325,7 +1330,7 @@ msgid "GPRS only" msgstr "" msgid "Gateway" -msgstr "" +msgstr "Ağ Geçidi" msgid "Gateway address is invalid" msgstr "" @@ -1349,7 +1354,7 @@ msgid "Generate PMK locally" msgstr "" msgid "Generate archive" -msgstr "" +msgstr "Arşiv oluştur" msgid "Generic 802.11%s Wireless Controller" msgstr "" @@ -1488,7 +1493,7 @@ msgid "IPv4+IPv6" msgstr "" msgid "IPv4-Address" -msgstr "" +msgstr "IPv4-Adres" msgid "IPv4-in-IPv4 (RFC2003)" msgstr "" @@ -1539,7 +1544,7 @@ msgid "IPv6 suffix" msgstr "" msgid "IPv6-Address" -msgstr "" +msgstr "IPv6-Adres" msgid "IPv6-PD" msgstr "" @@ -1707,7 +1712,7 @@ msgid "Kernel Log" msgstr "" msgid "Kernel Version" -msgstr "" +msgstr "Çekirdek Versiyonu" msgid "Key" msgstr "" @@ -1758,7 +1763,7 @@ msgid "Leasefile" msgstr "" msgid "Leasetime remaining" -msgstr "" +msgstr "Kalan kira süresi" msgid "Leave empty to autodetect" msgstr "" @@ -1839,7 +1844,7 @@ msgid "Load" msgstr "" msgid "Load Average" -msgstr "" +msgstr "Ortalama Yük" msgid "Loading" msgstr "" @@ -1863,7 +1868,7 @@ msgid "Local Startup" msgstr "" msgid "Local Time" -msgstr "" +msgstr "Yerel Zaman" msgid "Local domain" msgstr "" @@ -1915,7 +1920,7 @@ msgid "MAC" msgstr "" msgid "MAC-Address" -msgstr "" +msgstr "MAC-Adres" msgid "MAC-Address Filter" msgstr "" @@ -1979,7 +1984,7 @@ msgid "Mbit/s" msgstr "" msgid "Memory" -msgstr "" +msgstr "Bellek" msgid "Memory usage (%)" msgstr "" @@ -2101,10 +2106,10 @@ msgid "Navigation" msgstr "" msgid "Netmask" -msgstr "" +msgstr "Ağ Maskesi" msgid "Network" -msgstr "" +msgstr "Ağ" msgid "Network Utilities" msgstr "" @@ -2164,7 +2169,7 @@ msgid "No zone assigned" msgstr "" msgid "Noise" -msgstr "" +msgstr "Parazit" msgid "Noise Margin (SNR)" msgstr "" @@ -2349,7 +2354,7 @@ msgid "Override the table used for internal routes" msgstr "" msgid "Overview" -msgstr "" +msgstr "Genel Bakış" msgid "Owner" msgstr "" @@ -2543,7 +2548,7 @@ msgid "Prot." msgstr "" msgid "Protocol" -msgstr "" +msgstr "Protokol" msgid "Protocol family" msgstr "" @@ -3370,7 +3375,7 @@ msgid "Tone" msgstr "" msgid "Total Available" -msgstr "" +msgstr "Toplam Mevcut" msgid "Traceroute" msgstr "" @@ -3502,7 +3507,7 @@ msgid "Uploaded File" msgstr "Yüklenen Dosya" msgid "Uptime" -msgstr "Açılma süresi" +msgstr "Çalışma Zamanı" msgid "Use <code>/etc/ethers</code>" msgstr "" diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua index 2fa7847fc6..46d2e36c32 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/system.lua @@ -35,6 +35,7 @@ function index() entry({"admin", "system", "flashops"}, call("action_flashops"), _("Backup / Flash Firmware"), 70) entry({"admin", "system", "flashops", "reset"}, post("action_reset")) entry({"admin", "system", "flashops", "backup"}, post("action_backup")) + entry({"admin", "system", "flashops", "backupmtdblock"}, post("action_backupmtdblock")) entry({"admin", "system", "flashops", "backupfiles"}, form("admin_system/backupfiles")) -- call() instead of post() due to upload handling! @@ -318,6 +319,23 @@ function action_backup() luci.ltn12.pump.all(reader, luci.http.write) end +function action_backupmtdblock() + local http = require "luci.http" + local mv = http.formvalue("mtdblockname") + local m, s, n = mv:match('^([^%s]+)/([^%s]+)/([^%s]+)') + + local reader = ltn12_popen("dd if=/dev/mtd%s conv=fsync,notrunc 2>/dev/null" % n) + + luci.http.header( + 'Content-Disposition', 'attachment; filename="backup-%s-%s-%s.bin"' %{ + luci.sys.hostname(), m, + os.date("%Y-%m-%d") + }) + + luci.http.prepare_content("application/octet-stream") + luci.ltn12.pump.all(reader, luci.http.write) +end + function action_restore() local fs = require "nixio.fs" local http = require "luci.http" diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua index 06bce01fc4..8be354b448 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/ifaces.lua @@ -53,7 +53,7 @@ local function get_ifstate(name, option) m.uci:foreach("luci", "ifstate", function (s) if s.interface == name then - val = m.uci:get("luci", s[".name"], option) + val = s[option] return false end end) diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua index 3e46628d3f..d79b3c4704 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/vlan.lua @@ -17,7 +17,7 @@ local update_interfaces = function(old_ifname, new_ifname) local info = { } m.uci:foreach("network", "interface", function(section) - local old_ifnames = m.uci:get("network", section[".name"], "ifname") + local old_ifnames = section.ifname local new_ifnames = { } local cur_ifname local changed = false diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm index b409c8b039..03dd5aab29 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/diagnostics.htm @@ -68,10 +68,12 @@ local route_host = luci.config.diag and luci.config.diag.route or "dev.openwrt.o <div class="td left"> <input style="margin: 5px 0" type="text" value="<%=ping_host%>" name="ping" /><br /> <% if has_ping6 then %> - <select name="ping_proto" style="width:auto"> - <option value="" selected="selected"><%:IPv4%></option> - <option value="6"><%:IPv6%></option> - </select> + <span> + <select name="ping_proto" style="width:auto"> + <option value="" selected="selected"><%:IPv4%></option> + <option value="6"><%:IPv6%></option> + </select> + </span> <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping, this.form.ping_proto.selectedIndex)" /> <% else %> <input type="button" value="<%:Ping%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.ping)" /> @@ -81,10 +83,12 @@ local route_host = luci.config.diag and luci.config.diag.route or "dev.openwrt.o <div class="td left"> <input style="margin: 5px 0" type="text" value="<%=route_host%>" name="traceroute" /><br /> <% if has_traceroute6 then %> - <select name="traceroute_proto" style="width:auto"> - <option value="" selected="selected"><%:IPv4%></option> - <option value="6"><%:IPv6%></option> - </select> + <span> + <select name="traceroute_proto" style="width:auto"> + <option value="" selected="selected"><%:IPv4%></option> + <option value="6"><%:IPv6%></option> + </select> + </span> <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute, this.form.traceroute_proto.selectedIndex)" /> <% else %> <input type="button" value="<%:Traceroute%>" class="cbi-button cbi-button-apply" onclick="update_status(this.form.traceroute)" /> diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm b/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm index f3d2e8d7b0..8204d38e34 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_system/flashops.htm @@ -59,6 +59,40 @@ <div class="cbi-section-error"><%:The backup archive does not appear to be a valid gzip file.%></div> <% end %> </div> + + <% local mtds = require("luci.sys").mtds(); if #mtds > 0 then -%> + <h3><%:Save mtdblock contents%></h3> + <div class="cbi-section-descr"><%:Click "Save mtdblock" to download specified mtdblock file. (NOTE: THIS FEATURE IS FOR PROFESSIONALS! )%></div> + <div class="cbi-section-node"> + <form class="inline" method="post" action="<%=url('admin/system/flashops/backupmtdblock')%>"> + <input type="hidden" name="token" value="<%=token%>" /> + <div class="cbi-value"> + <label class="cbi-value-title" for="mtdblockname"><%:Choose mtdblock%></label> + <div class="cbi-value-field"> + <select class="cbi-input-select" data-update="change" name="mtdblockname" id="mtdblockname"> + <% for i, key in ipairs(mtds) do + if key and key.name ~= "rootfs_data" then -%> + <option<%= + attr("id", "mtdblockname-" .. key.name) .. + attr("value", key.name .. '/'.. key.size .. '/' .. i - 1) .. + attr("data-index", i) .. + ifattr(key.name == "linux" or key.name == "firmware", "selected", "selected") + %>><%=pcdata(key.name)%></option> + <% end + end -%> + </select> + </div> + </div> + <div class="cbi-value cbi-value-last<% if reset_avail then %> cbi-value-error<% end %>"> + <label class="cbi-value-title" for="image"><%:Download mtdblock%></label> + <div class="cbi-value-field"> + <input type="submit" class="cbi-button cbi-button-action important" value="<%:Save mtdblock%>" /> + </div> + </div> + </form> + </div> + <% end %> + </div> <div class="cbi-section"> diff --git a/protocols/luci-proto-ipv6/Makefile b/protocols/luci-proto-ipv6/Makefile index b28c8d5895..b0c8395e86 100644 --- a/protocols/luci-proto-ipv6/Makefile +++ b/protocols/luci-proto-ipv6/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Support for DHCPv6/6in4/6to4/6rd/DS-Lite -LUCI_DEPENDS:= +LUCI_DEPENDS:=@IPV6 PKG_LICENSE:=Apache-2.0 diff --git a/themes/luci-theme-material/htdocs/luci-static/material/cascade.css b/themes/luci-theme-material/htdocs/luci-static/material/cascade.css index 4875c33f8d..fa0316343b 100644 --- a/themes/luci-theme-material/htdocs/luci-static/material/cascade.css +++ b/themes/luci-theme-material/htdocs/luci-static/material/cascade.css @@ -19,6 +19,11 @@ */ /* + * Include custom css + */ +@import url("custom.css"); + +/* * Font generate by Icomoon<icomoon.io> */ @font-face { @@ -255,7 +260,7 @@ footer > a { width: calc(0% + 15rem); height: 100%; height: calc(100% - 4rem); - background-color: white; + background-color: var(--menu-bg-color, #FFFFFF); overflow-x: auto; position: fixed; } @@ -281,8 +286,8 @@ footer > a { } header { - background: #0099CC; - color: white; + background: var(--header-bg, #0099CC); + color: var(--header-color, #FFFFFF); } header > .fill > .container { @@ -292,7 +297,7 @@ header > .fill > .container { header > .fill > .container > .brand { font-size: 1.4rem; - color: white; + color: var(--header-color, #FFFFFF); text-decoration: none; cursor: default; vertical-align: text-bottom; @@ -374,7 +379,7 @@ header > .fill > .container > .brand { } .main > .main-left > .nav > li a { - color: #404040; + color: var(--menu-color, #404040); display: block; } @@ -406,7 +411,7 @@ header > .fill > .container > .brand { .main > .main-left > .nav > li:hover, .main > .main-left > .nav > .slide > .menu:hover { - background: #D4D4D4; + background: var(--submenu-bg-hover, #D4D4D4) } .main > .main-left > .nav > .slide:hover { @@ -418,7 +423,7 @@ header > .fill > .container > .brand { } .main > .main-left > .nav > .slide > .slide-menu > .active { - background-color: #0099CC; + background-color: var(--submenu-bg-hover-active, #0099CC); } .main > .main-left > .nav > .slide > .slide-menu > li > a { @@ -431,7 +436,7 @@ header > .fill > .container > .brand { } .main > .main-left > .nav > .slide > .slide-menu > li:hover { - background: #D4D4D4; + background: var(--submenu-bg-hover, #D4D4D4) } .main > .main-left > .nav > .slide > .slide-menu > .active:hover { @@ -1226,7 +1231,7 @@ td > .ifacebadge, min-height: 14rem; padding: 0.8rem; font-size: 0.8rem; - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-family: monospace; color: black; } diff --git a/themes/luci-theme-material/htdocs/luci-static/material/custom.css b/themes/luci-theme-material/htdocs/luci-static/material/custom.css new file mode 100644 index 0000000000..b32eb2af1b --- /dev/null +++ b/themes/luci-theme-material/htdocs/luci-static/material/custom.css @@ -0,0 +1,9 @@ + +:root { + --header-bg: #0099CC; + --header-color: #FFFFFF; + --menu-bg-color: #FFFFFF; + --menu-color: #404040; + --submenu-bg-hover: #D4D4D4; + --submenu-bg-hover-active: #0099CC; +} |