diff options
Diffstat (limited to 'applications')
64 files changed, 1789 insertions, 88 deletions
diff --git a/applications/luci-app-ddns/Makefile b/applications/luci-app-ddns/Makefile index 55ce1cb3e3..88c905a41a 100644 --- a/applications/luci-app-ddns/Makefile +++ b/applications/luci-app-ddns/Makefile @@ -1,16 +1,18 @@ # -# Copyright (C) 2008-2016 The LuCI Team <luci@lists.subsignal.org> -# -# This is free software, licensed under the Apache License, Version 2.0 . +# Copyright 2008 Steven Barth <steven@midlink.org> +# Copyright 2008 Jo-Philipp Wich <jow@openwrt.org> +# Copyright 2013 Manuel Munz <freifunk at somakoma dot de> +# Copyright 2014-2016 Christian Schoenebeck <christian dot schoenebeck at gmail dot com> # +# This is free software, licensed under the Apache License, Version 2.0 include $(TOPDIR)/rules.mk -PKG_NAME:=luci-app-ddns +# PKG_NAME:=luci-app-ddns # Version == major.minor.patch # increase on new functionality (minor) or patches (patch) -PKG_VERSION:=2.4.7 +PKG_VERSION:=2.4.8 # Release == build # increase on changes of translation files @@ -22,15 +24,13 @@ PKG_MAINTAINER:=Christian Schoenebeck <christian.schoenebeck@gmail.com> # LuCI specific settings LUCI_TITLE:=LuCI Support for Dynamic DNS Client (ddns-scripts) LUCI_DEPENDS:=+luci-mod-admin-full +ddns-scripts -LUCI_PKGARCH:=all +# LUCI_PKGARCH:=all define Package/$(PKG_NAME)/config # shown in make menuconfig <Help> help $(LUCI_TITLE) - . Version: $(PKG_VERSION)-$(PKG_RELEASE) - $(PKG_MAINTAINER) endef include ../../luci.mk diff --git a/applications/luci-app-ddns/luasrc/controller/ddns.lua b/applications/luci-app-ddns/luasrc/controller/ddns.lua index 9f5411b06e..63bb8bf4be 100755 --- a/applications/luci-app-ddns/luasrc/controller/ddns.lua +++ b/applications/luci-app-ddns/luasrc/controller/ddns.lua @@ -17,12 +17,14 @@ local UCI = require "luci.model.uci" local UTIL = require "luci.util" local DDNS = require "luci.tools.ddns" -- ddns multiused functions +luci_helper = "/usr/lib/ddns/dynamic_dns_lucihelper.sh" + local srv_name = "ddns-scripts" -local srv_ver_min = "2.7.5" -- minimum version of service required -local srv_ver_cmd = [[/usr/lib/ddns/dynamic_dns_updater.sh --version | awk {'print $2'}]] +local srv_ver_min = "2.7.6" -- minimum version of service required +local srv_ver_cmd = luci_helper .. [[ -V | awk {'print $2'}]] local app_name = "luci-app-ddns" local app_title = "Dynamic DNS" -local app_version = "2.4.7-1" +local app_version = "2.4.8-1" function index() local nxfs = require "nixio.fs" -- global definitions not available @@ -96,14 +98,14 @@ function app_title_main() end function service_version() local ver = nil + + ver = UTIL.exec(srv_ver_cmd) + if #ver > 0 then return ver end + IPKG.list_installed(srv_name, function(n, v, d) if v and (#v > 0) then ver = v end end ) - if not ver or (#ver == 0) then - ver = UTIL.exec(srv_ver_cmd) - if #ver == 0 then ver = nil end - end return ver end function service_ok() @@ -191,10 +193,14 @@ local function _get_status() local force_ipversion = tonumber(s["force_ipversion"] or 0) local force_dnstcp = tonumber(s["force_dnstcp"] or 0) local is_glue = tonumber(s["is_glue"] or 0) - local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh]] - command = command .. [[ get_registered_ip ]] .. lookup_host .. [[ ]] .. use_ipv6 .. - [[ ]] .. force_ipversion .. [[ ]] .. force_dnstcp .. - [[ ]] .. is_glue .. [[ ]] .. dnsserver + local command = luci_helper .. [[ -]] + if (use_ipv6 == 1) then command = command .. [[6]] end + if (force_ipversion == 1) then command = command .. [[f]] end + if (force_dnstcp == 1) then command = command .. [[t]] end + if (is_glue == 1) then command = command .. [[g]] end + command = command .. [[l ]] .. lookup_host + if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end + command = command .. [[ -- get_registered_ip]] local reg_ip = SYS.exec(command) if reg_ip == "" then reg_ip = "_nodata_" @@ -221,8 +227,8 @@ end function logread(section) -- read application settings local uci = UCI.cursor() - local log_dir = uci:get("ddns", "global", "log_dir") or "/var/log/ddns" - local lfile = log_dir .. "/" .. section .. ".log" + local ldir = uci:get("ddns", "global", "ddns_logdir") or "/var/log/ddns" + local lfile = ldir .. "/" .. section .. ".log" local ldata = NXFS.readfile(lfile) if not ldata or #ldata == 0 then @@ -289,8 +295,9 @@ function startstop(section, enabled) uci:commit("ddns") uci:unload("ddns") - -- start dynamic_dns_updater.sh script - os.execute ([[/usr/lib/ddns/dynamic_dns_updater.sh %s 0 > /dev/null 2>&1 &]] % section) + -- start ddns-updater for section + local command = luci_helper .. [[ -S ]] .. section .. [[ -- start]] + os.execute(command) NX.nanosleep(3) -- 3 seconds "show time" -- status changed so return full status diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua index 131cbfdeae..a8f4cbf7ad 100644 --- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/detail.lua @@ -58,7 +58,7 @@ end -- read services/services_ipv6 files -- ######################################## local services4 = { } -- IPv4 -- -local fd4 = io.open("/usr/lib/ddns/services", "r") +local fd4 = io.open("/etc/ddns/services", "r") if fd4 then local ln, s, t repeat @@ -72,7 +72,7 @@ if fd4 then end local services6 = { } -- IPv6 -- -local fd6 = io.open("/usr/lib/ddns/services_ipv6", "r") +local fd6 = io.open("/etc/ddns/services_ipv6", "r") if fd6 then local ln, s, t repeat @@ -91,35 +91,38 @@ end -- local IP can be read local function _verify_ip_source() -- section is globally defined here be calling agrument (see above) - local _network = "-" - local _url = "-" - local _interface = "-" - local _script = "-" - local _proxy = "" + local _arg local _ipv6 = usev6:formvalue(section) local _source = (_ipv6 == "1") and src6:formvalue(section) or src4:formvalue(section) + + local command = CTRL.luci_helper .. [[ -]] + if (_ipv6 == "1") then command = command .. [[6]] end + if _source == "network" then - _network = (_ipv6 == "1") + _arg = (_ipv6 == "1") and ipn6:formvalue(section) or ipn4:formvalue(section) + command = command .. [[n ]] .. _arg elseif _source == "web" then - _url = (_ipv6 == "1") + _arg = (_ipv6 == "1") and iurl6:formvalue(section) or iurl4:formvalue(section) + command = command .. [[u ]] .. _arg + -- proxy only needed for checking url - _proxy = (pxy) and pxy:formvalue(section) or "" + _arg = (pxy) and pxy:formvalue(section) or "" + if (_arg and #_arg > 0) then + command = command .. [[ -p ]] .. _arg + end elseif _source == "interface" then - _interface = ipi:formvalue(section) + command = command .. [[i ]] .. ipi:formvalue(section) elseif _source == "script" then - _script = ips:formvalue(section) + command = command .. [[s ]] .. ips:formvalue(section) end - - local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh get_local_ip ]] .. - _ipv6 .. [[ ]] .. _source .. [[ ]] .. _network .. [[ ]] .. - _url .. [[ ]] .. _interface .. [[ ']] .. _script.. [[' ]] .. _proxy + command = command .. [[ -- get_local_ip]] return (SYS.call(command) == 0) end @@ -248,10 +251,8 @@ if m:formvalue("cbid.ddns.%s._switch" % section) then -- section == arg[1] end -- read application settings -- ################################################ --- date format; if not set use ISO format -local date_format = m.uci:get(m.config, "global", "date_format") or "%F %R" -- log directory -local log_dir = m.uci:get(m.config, "global", "log_dir") or "/var/log/ddns" +local logdir = m.uci:get(m.config, "global", "ddns_logdir") or "/var/log/ddns" -- cbi-section definition -- ################################################### local ns = m:section( NamedSection, section, "service", @@ -1158,8 +1159,11 @@ if DDNS.has_dnsserver or ( ( m:get(section, "dns_server") or "" ) ~= "" ) then else local ipv6 = usev6:formvalue(section) or "0" local force = fipv:formvalue(section) or "0" - local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh verify_dns ]] .. - value .. [[ ]] .. ipv6 .. [[ ]] .. force + local command = CTRL.luci_helper .. [[ -]] + if (ipv6 == 1) then command = command .. [[6]] end + if (force == 1) then command = command .. [[f]] end + command = command .. [[d ]] .. value .. [[ -- verify_dns]] + local ret = SYS.call(command) if ret == 0 then return value -- everything OK elseif ret == 2 then return nil, err_tab_adv(self) .. translate("nslookup can not resolve host") @@ -1225,8 +1229,10 @@ if DDNS.has_proxy or ( ( m:get(section, "proxy") or "" ) ~= "" ) then elseif DDNS.has_proxy then local ipv6 = usev6:formvalue(section) or "0" local force = fipv:formvalue(section) or "0" - local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh verify_proxy ]] .. - value .. [[ ]] .. ipv6 .. [[ ]] .. force + local command = CRTL.luci_helper .. [[ -]] + if (ipv6 == 1) then command = command .. [[6]] end + if (force == 1) then command = command .. [[f]] end + command = command .. [[p ]] .. value .. [[ -- verify_proxy]] local ret = SYS.call(command) if ret == 0 then return value elseif ret == 2 then return nil, err_tab_adv(self) .. translate("nslookup can not resolve host") @@ -1262,7 +1268,7 @@ end logf = ns:taboption("advanced", Flag, "use_logfile", translate("Log to file"), translate("Writes detailed messages to log file. File will be truncated automatically.") .. "<br />" .. - translate("File") .. [[: "]] .. log_dir .. [[/]] .. section .. [[.log"]] ) + translate("File") .. [[: "]] .. logdir .. [[/]] .. section .. [[.log"]] ) logf.orientation = "horizontal" logf.default = "1" -- if not defined write to log by default @@ -1464,7 +1470,7 @@ lv.template = "ddns/detail_logview" lv.inputtitle = translate("Read / Reread log file") lv.rows = 50 function lv.cfgvalue(self, section) - local lfile=log_dir .. "/" .. section .. ".log" + local lfile=logdir .. "/" .. section .. ".log" if NXFS.access(lfile) then return lfile .. "\n" .. translate("Please press [Read] button") end diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua index 23ce4f13f7..9dc0857509 100644 --- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/global.lua @@ -16,7 +16,8 @@ m.redirect = DISP.build_url("admin", "services", "ddns") function m.commit_handler(self) if self.changed then -- changes ? - os.execute("/etc/init.d/ddns reload &") -- reload configuration + local command = CTRL.luci_helper .. " -- reload" + os.execute(command) -- reload configuration end end @@ -40,8 +41,8 @@ function ns.cfgvalue(self, section) return self.map:get(section) end --- allow_local_ip -- ########################################################## -local ali = ns:option(Flag, "allow_local_ip") +-- upd_privateip -- ########################################################### +local ali = ns:option(Flag, "upd_privateip") ali.title = translate("Allow non-public IP's") ali.description = translate("Non-public and by default blocked IP's") .. ":" .. [[<br /><strong>IPv4: </strong>]] @@ -50,8 +51,8 @@ ali.description = translate("Non-public and by default blocked IP's") .. ":" .. "::/32, f000::/4" ali.default = "0" --- date_format -- ############################################################# -local df = ns:option(Value, "date_format") +-- ddns_dateformat -- ######################################################### +local df = ns:option(Value, "ddns_dateformat") df.title = translate("Date format") df.description = [[<a href="http://www.cplusplus.com/reference/ctime/strftime/" target="_blank">]] .. translate("For supported codes look here") @@ -69,8 +70,8 @@ function df.parse(self, section, novld) DDNS.value_parse(self, section, novld) end --- run_dir -- ################################################################# -local rd = ns:option(Value, "run_dir") +-- ddns_rundir -- ############################################################# +local rd = ns:option(Value, "ddns_rundir") rd.title = translate("Status directory") rd.description = translate("Directory contains PID and other status information for each running section") rd.default = "/var/run/ddns" @@ -79,8 +80,8 @@ function rd.parse(self, section, novld) DDNS.value_parse(self, section, novld) end --- log_dir -- ################################################################# -local ld = ns:option(Value, "log_dir") +-- ddns_logdir -- ############################################################# +local ld = ns:option(Value, "ddns_logdir") ld.title = translate("Log directory") ld.description = translate("Directory contains Log files for each running section") ld.default = "/var/log/ddns" @@ -89,8 +90,8 @@ function ld.parse(self, section, novld) DDNS.value_parse(self, section, novld) end --- log_lines -- ############################################################### -local ll = ns:option(Value, "log_lines") +-- ddns_loglines -- ########################################################### +local ll = ns:option(Value, "ddns_loglines") ll.title = translate("Log length") ll.description = translate("Number of last lines stored in log files") ll.default = "250" diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua index 21827b7659..df39a3a7e5 100644 --- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/hints.lua @@ -24,7 +24,7 @@ s = m:section( SimpleSection, translate("Hints"), translate("Below a list of configuration tips for your system to run Dynamic DNS updates without limitations") ) --- ddns_scripts needs to be updated for full functionality +-- ddns-scripts needs to be updated for full functionality if not CTRL.service_ok() then local so = s:option(DummyValue, "_update_needed") so.titleref = DISP.build_url("admin", "system", "packages") diff --git a/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua b/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua index 9a989bae41..6ba3ea0dd8 100644 --- a/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua +++ b/applications/luci-app-ddns/luasrc/model/cbi/ddns/overview.lua @@ -33,10 +33,13 @@ m.description = CTRL.app_description() m.on_after_commit = function(self) if self.changed then -- changes ? + local command = CTRL.luci_helper if SYS.init.enabled("ddns") then -- ddns service enabled, restart all - os.execute("/etc/init.d/ddns restart") + command = command .. " -- restart" + os.execute(command) else -- ddns service disabled, send SIGHUP to running - os.execute("killall -1 dynamic_dns_updater.sh") + command = command .. " -- reload" + os.execute(command) end end end @@ -52,7 +55,7 @@ if show_hints or need_update or not_enabled then s = m:section( SimpleSection, translate("Hints") ) - -- ddns_scripts needs to be updated for full functionality + -- ddns-scripts needs to be updated for full functionality if need_update then local dv = s:option(DummyValue, "_update_needed") dv.titleref = DISP.build_url("admin", "system", "packages") @@ -119,18 +122,21 @@ function dom.set_one(self, section) end end function dom.set_two(self, section) - local lookup = self.map:get(section, "lookup_host") or "" - if lookup == "" then return "" end + local lookup_host = self.map:get(section, "lookup_host") or "" + if lookup_host == "" then return "" end local dnsserver = self.map:get(section, "dnsserver") or "" local use_ipv6 = tonumber(self.map:get(section, "use_ipv6") or 0) local force_ipversion = tonumber(self.map:get(section, "force_ipversion") or 0) local force_dnstcp = tonumber(self.map:get(section, "force_dnstcp") or 0) - local command = [[/usr/lib/ddns/dynamic_dns_lucihelper.sh]] - if not NXFS.access(command, "rwx", "rx", "rx") then - NXFS.chmod(command, 755) - end - command = command .. [[ get_registered_ip ]] .. lookup .. [[ ]] .. use_ipv6 .. - [[ ]] .. force_ipversion .. [[ ]] .. force_dnstcp .. [[ ]] .. dnsserver + local is_glue = tonumber(self.map:get(section, "is_glue") or 0) + local command = CTRL.luci_helper .. [[ -]] + if (use_ipv6 == 1) then command = command .. [[6]] end + if (force_ipversion == 1) then command = command .. [[f]] end + if (force_dnstcp == 1) then command = command .. [[t]] end + if (is_glue == 1) then command = command .. [[g]] end + command = command .. [[l ]] .. lookup_host + if (#dnsserver > 0) then command = command .. [[ -d ]] .. dnsserver end + command = command .. [[ -- get_registered_ip]] local ip = SYS.exec(command) if ip == "" then ip = translate("no data") end return ip diff --git a/applications/luci-app-ddns/luasrc/tools/ddns.lua b/applications/luci-app-ddns/luasrc/tools/ddns.lua index e55c673629..209d9c3a41 100755 --- a/applications/luci-app-ddns/luasrc/tools/ddns.lua +++ b/applications/luci-app-ddns/luasrc/tools/ddns.lua @@ -57,7 +57,7 @@ end function epoch2date(epoch, format) if not format or #format < 2 then local uci = UCI.cursor() - format = uci:get("ddns", "global", "date_format") or "%F %R" + format = uci:get("ddns", "global", "ddns_dateformat") or "%F %R" uci:unload("ddns") end format = format:gsub("%%n", "<br />") -- replace newline @@ -67,18 +67,18 @@ end -- read lastupdate from [section].update file function get_lastupd(section) - local uci = UCI.cursor() - local run_dir = uci:get("ddns", "global", "run_dir") or "/var/run/ddns" - local etime = tonumber(NXFS.readfile("%s/%s.update" % { run_dir, section } ) or 0 ) + local uci = UCI.cursor() + local rdir = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns" + local etime = tonumber(NXFS.readfile("%s/%s.update" % { rdir, section } ) or 0 ) uci:unload("ddns") return etime end -- read PID from run file and verify if still running function get_pid(section) - local uci = UCI.cursor() - local run_dir = uci:get("ddns", "global", "run_dir") or "/var/run/ddns" - local pid = tonumber(NXFS.readfile("%s/%s.pid" % { run_dir, section } ) or 0 ) + local uci = UCI.cursor() + local rdir = uci:get("ddns", "global", "ddns_rundir") or "/var/run/ddns" + local pid = tonumber(NXFS.readfile("%s/%s.pid" % { rdir, section } ) or 0 ) if pid > 0 and not NX.kill(pid, 0) then pid = 0 end diff --git a/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm b/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm index 0bcfd44283..b69d780ea9 100644 --- a/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm +++ b/applications/luci-app-ddns/luasrc/view/ddns/detail_lvalue.htm @@ -14,6 +14,7 @@ c = c + 1 %> <input class="cbi-input-radio" onclick="cbi_d_update(this.id)" onchange="cbi_d_update(this.id)" type="radio"<%= attr("id", cbid..c) .. attr("name", cbid) .. attr("value", key) .. ifattr((self:cfgvalue(section) or self.default) == key, "checked", "checked") %> /> + <label<%= attr("for", cbid..c) %>></label> <label<%= attr("for", cbid..c) %>><%=self.vallist[i]%></label> <% if c == self.size then c = 0 %><% if self.orientation == "horizontal" then %> <% else %><br /><% end %> <% end end %> diff --git a/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm b/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm index 159cb60147..23ec059170 100644 --- a/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm +++ b/applications/luci-app-ddns/luasrc/view/ddns/global_value.htm @@ -4,7 +4,7 @@ <script type="text/javascript">//<![CDATA[ // event handler on changed date function onkeyup_date(value) { - var obj = document.getElementById("cbid.ddns.global.date_format.help"); + var obj = document.getElementById("cbid.ddns.global.ddns_dateformat.help"); if ( !obj ) { return; } // security check if ( value == "" || value.length == 0 ) { value = "%F %R"; } diff --git a/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm b/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm index 64b3dae455..2efc125fcc 100644 --- a/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm +++ b/applications/luci-app-ddns/luasrc/view/ddns/overview_enabled.htm @@ -10,6 +10,7 @@ attr("id", cbid) .. attr("name", cbid) .. attr("value", self.enabled or 1) .. ifattr((self:cfgvalue(section) or self.default) == self.enabled, "checked", "checked") %> /> +<label<%= attr("for", cbid)%>></label> <%+cbi/valuefooter%> <!-- ++ END ++ Dynamic DNS ++ overview_enabled.htm ++ --> diff --git a/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns b/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns index 9fd875e34b..a82c1f9ac6 100755 --- a/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns +++ b/applications/luci-app-ddns/root/etc/uci-defaults/40_luci-ddns @@ -7,4 +7,4 @@ uci -q batch <<-EOF >/dev/null EOF rm -f /tmp/luci-indexcache -exit 0 +return 0 diff --git a/applications/luci-app-diag-devinfo/Makefile b/applications/luci-app-diag-devinfo/Makefile index 0424fffa0c..1505b62121 100644 --- a/applications/luci-app-diag-devinfo/Makefile +++ b/applications/luci-app-diag-devinfo/Makefile @@ -9,6 +9,10 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=LuCI Diagnostics Tools (Device Info) LUCI_DEPENDS:=+luci-app-diag-core +smap +netdiscover +mac-to-devinfo +httping +smap-to-devinfo +netdiscover-to-devinfo @BROKEN +define Package/luci-app-diag-devinfo/conffiles +/etc/config/luci_devinfo +endef + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-rp-pppoe-server/Makefile b/applications/luci-app-rp-pppoe-server/Makefile new file mode 100644 index 0000000000..6cf4595cea --- /dev/null +++ b/applications/luci-app-rp-pppoe-server/Makefile @@ -0,0 +1,15 @@ +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Roaring Penguing PPPoE Server +LUCI_DEPENDS:=+rp-pppoe-server + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua b/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua new file mode 100644 index 0000000000..105a80e28d --- /dev/null +++ b/applications/luci-app-rp-pppoe-server/luasrc/controller/rp-pppoe-server.lua @@ -0,0 +1,13 @@ +-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com> +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.rp-pppoe-server", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/pppoe") then + return + end + + entry({"admin", "services", "rp-pppoe-server"}, cbi("rp-pppoe-server"), _("RP PPPoE Server")) +end + diff --git a/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua b/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua new file mode 100644 index 0000000000..ef15ed6127 --- /dev/null +++ b/applications/luci-app-rp-pppoe-server/luasrc/model/cbi/rp-pppoe-server.lua @@ -0,0 +1,72 @@ +-- Copyright 2015 Daniel Dickinson <openwrt@daniel.thecshore.com> +-- Licensed to the public under the Apache License 2.0. + +local m, s, o + +local nixio = require "nixio" + +m = Map("pppoe", translate("Roaring Penguin PPPoE Server"), + translate("PPPoE Server Configuration")) + +s = m:section(TypedSection, "pppoe_server", translate("Server Configuration")) +s.addremove = false +s.anonymous = true + +o = s:option(Value, "interface", translate("Interface"), translate("Interface on which to listen.")) +o.template = "cbi/network_ifacelist" +o.nocreate = true + +o = s:option(Value, "ac_name", translate("Access Concentrator Name")) +o.optional = true + +o = s:option(DynamicList, "service_name", translate("Service Name")) +o.optional = true + +o = s:option(Value, "maxsessionsperpeer", translate("Maximum sessions per peer")) +o.optional = true +o.datatype = "uinteger" + +o = s:option(Value, "localip", translate("IP of listening side")) +o.datetype = "ipaddr" + +o = s:option(Value, "firstremoteip", translate("First remote IP")) +o.datatype = "ipaddr" + +o = s:option(Value, "maxsessions", translate("Maximum sessions")) +o.datatype = "uinteger" +o.default = 64 +o.optional = true + +o = s:option(Value, "optionsfile", translate("Options file")) +o.default = "/etc/ppp/pppoe-server-options" +o.optional = true + +o = s:option(Flag, "randomsessions", translate("Random session selection"), translate("Instead of starting at beginning and going to end, randomize session number")) +o.optional = true + +o = s:option(Value, "unit", translate("Unit"), translate("PPP unit number")) +o.optional = true +o.datatype = "uinteger" +o.default = 0 + +o = s:option(Value, "offset", translate("Offset"), translate("PPP offset")) +o.optional = true +o.datatype = "uinteger" +o.default = 0 + +o = s:option(Value, "timeout", translate("Timeout")) +o.optional = true +o.datatype = "uinteger" +o.default = 60 + +o = s:option(Value, "mss", translate("MSS")) +o.optional = true +o.datatype = "uinteger" +o.default = 1468 + + +o = s:option(Flag, "sync", translate("Sync")) +o.optional = true +o.default = false + +return m diff --git a/applications/luci-app-splash/Makefile b/applications/luci-app-splash/Makefile index 345f8910ff..5740aa5f7c 100644 --- a/applications/luci-app-splash/Makefile +++ b/applications/luci-app-splash/Makefile @@ -9,6 +9,12 @@ include $(TOPDIR)/rules.mk LUCI_TITLE:=Freifunk DHCP-Splash application LUCI_DEPENDS:=+luci-lib-nixio +tc +kmod-sched +iptables-mod-nat-extra +iptables-mod-ipopt +define Package/luci-app-splash/conffiles +/etc/config/luci_splash +/usr/lib/luci-splash/splashtext.html +/usr/lib/luci-splash/splashtextinclude.html +endef + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-statistics/Makefile b/applications/luci-app-statistics/Makefile index 6c0121e96a..008792a5d0 100644 --- a/applications/luci-app-statistics/Makefile +++ b/applications/luci-app-statistics/Makefile @@ -12,6 +12,10 @@ LUCI_DEPENDS:= \ +collectd-mod-cpu +collectd-mod-memory \ +collectd-mod-interface +collectd-mod-load +collectd-mod-network +define Package/luci-app-statistics/conffiles +/etc/config/luci_statistics +endef + include ../../luci.mk # call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua index 3f26aeed6f..36c5554d35 100644 --- a/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua +++ b/applications/luci-app-statistics/luasrc/controller/luci_statistics/luci_statistics.lua @@ -25,6 +25,7 @@ function index() conntrack = _("Conntrack"), cpu = _("Processor"), + cpufreq = _("CPU Frequency"), csv = _("CSV Output"), df = _("Disk Space Usage"), disk = _("Disk Usage"), @@ -49,6 +50,7 @@ function index() sensors = _("Sensors"), splash_leases = _("Splash Leases"), tcpconns = _("TCP Connections"), + thermal = _("Thermal"), unixsock = _("UnixSock"), uptime = _("Uptime") } @@ -56,8 +58,12 @@ function index() -- our collectd menu local collectd_menu = { output = { "csv", "network", "rrdtool", "unixsock" }, - general = { "cpu", "df", "disk", "email", "entropy", "exec", "irq", "load", "memory", "nut", "processes", "sensors", "uptime" }, - network = { "conntrack", "dns", "interface", "iptables", "netlink", "olsrd", "openvpn", "ping", "splash_leases", "tcpconns", "iwinfo" } + general = { "cpu", "cpufreq", "df", "disk", "email", + "entropy", "exec", "irq", "load", "memory", + "nut", "processes", "sensors", "thermal", "uptime" }, + network = { "conntrack", "dns", "interface", "iptables", + "netlink", "olsrd", "openvpn", "ping", + "splash_leases", "tcpconns", "iwinfo" } } -- create toplevel menu nodes diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua new file mode 100644 index 0000000000..d1116630b4 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/cpufreq.lua @@ -0,0 +1,14 @@ +-- Licensed to the public under the Apache License 2.0. + +m = Map("luci_statistics", + translate("CPU Frequency Plugin Configuration"), + translate("This plugin collects statistics about the processor frequency scaling.")) + +-- collectd_cpufreq config section +s = m:section( NamedSection, "collectd_cpufreq", "luci_statistics" ) + +-- collectd_cpufreq.enable +enable = s:option( Flag, "enable", translate("Enable this plugin") ) +enable.default = 0 + +return m diff --git a/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua new file mode 100644 index 0000000000..bdf41b79bc --- /dev/null +++ b/applications/luci-app-statistics/luasrc/model/cbi/luci_statistics/thermal.lua @@ -0,0 +1,29 @@ +-- Licensed to the public under the Apache License 2.0. + +m = Map("luci_statistics", + translate("Thermal Plugin Configuration"), + translate("The thermal plugin will monitor temperature of the system. " .. + "Data is typically read from /sys/class/thermal/*/temp " .. + "( '*' denotes the thermal device to be read, e.g. thermal_zone1 )") + ) + +-- collectd_thermal config section +s = m:section( NamedSection, "collectd_thermal", "luci_statistics" ) + +-- collectd_thermal.enable +enable = s:option( Flag, "enable", translate("Enable this plugin") ) +enable.default = 0 + +-- collectd_thermal.tz (Device) +tz = s:option( Value, "Device", translate("Monitor device(s) / thermal zone(s)"), + translate("Empty value = monitor all") ) +tz.optional = true +tz:depends( "enable", 1 ) + +-- collectd_thermal.ignoreselected (IgnoreSelected) +ignoreselected = s:option( Flag, "IgnoreSelected", translate("Monitor all except specified") ) +ignoreselected.default = 0 +ignoreselected.optional = true +ignoreselected:depends( "enable", 1 ) + +return m diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua new file mode 100644 index 0000000000..25a72d2285 --- /dev/null +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/cpufreq.lua @@ -0,0 +1,25 @@ +-- Licensed to the public under the Apache License 2.0. + +module("luci.statistics.rrdtool.definitions.cpufreq",package.seeall) + +function rrdargs( graph, plugin, plugin_instance, dtype ) + + return { + title = "%H: Processor frequency", + alt_autoscale = true, + vlabel = "Frequency (Hz)", + number_format = "%3.2lf%s", + data = { + sources = { + cpufreq = { "" } + }, + options = { + cpufreq_0 = { color = "ff0000", title = "Core 0", noarea=true, overlay=true }, + cpufreq_1 = { color = "0000ff", title = "Core 1", noarea=true, overlay=true }, + cpufreq_2 = { color = "00ff00", title = "Core 2", noarea=true, overlay=true }, + cpufreq_3 = { color = "00ffff", title = "Core 3", noarea=true, overlay=true } + } + } + } +end + diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua index 8b04ab8b38..dd93196902 100644 --- a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/nut.lua @@ -32,23 +32,24 @@ function rrdargs( graph, plugin, plugin_instance, dtype ) options = { current_output = { color = "00e000", title = "Output current", noarea=true, overlay=true }, - current_battery = { color = "0000ff", title = "Battery current", noarea=true, overlay=true }, + current_battery = { color = "0000ff", title = "Battery current", noarea=true, overlay=true } } } } local percentage = { - title = "%H: Battery charge on UPS \"%pi\"", + title = "%H: Battery charge/load on UPS \"%pi\"", vlabel = "Percent", y_min = "0", y_max = "100", number_format = "%5.1lf%%", data = { instances = { - percent = "charge" + percent = { "charge", "load" } }, options = { - percent_charge = { color = "00ff00", title = "Charge level" } + percent_charge = { color = "00ff00", title = "Charge level" }, + percent_load = { color = "ff0000", title = "Load" } } } } @@ -78,10 +79,39 @@ function rrdargs( graph, plugin, plugin_instance, dtype ) timeleft = { "battery" } }, options = { - timeleft_battery = { color = "0000ff", title = "Time left", transform_rpn = "60,/" } + timeleft_battery = { color = "0000ff", title = "Time left", transform_rpn = "60,/", noarea=true } } } } - return { voltages, currents, percentage, temperature, timeleft } + local power = { + title = "%H: Power on UPS \"%pi\"", + vlabel = "Power", + number_format = "%5.1lf%%", + data = { + instances = { + power = { "ups" } + }, + options = { + power_ups = { color = "00ff00", title = "Power level" } + } + } + } + + local frequencies = { + title = "%H: Frequencies on UPS \"%pi\"", + vlabel = "Hz", + number_format = "%5.1lfHz", + data = { + instances = { + frequency = { "input", "output" } + }, + + options = { + frequency_output = { color = "00e000", title = "Output frequency", noarea=true, overlay=true }, + frequency_input = { color = "ffb000", title = "Input frequency", noarea=true, overlay=true } + } + } + } + return { voltages, currents, percentage, temperature, timeleft, power, frequencies } end diff --git a/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua new file mode 100644 index 0000000000..532246465e --- /dev/null +++ b/applications/luci-app-statistics/luasrc/statistics/rrdtool/definitions/thermal.lua @@ -0,0 +1,20 @@ +-- Licensed to the public under the Apache License 2.0. + +module("luci.statistics.rrdtool.definitions.thermal",package.seeall) + +function rrdargs( graph, plugin, plugin_instance, dtype ) + + return { + title = "%H: Temperature of %pi", + alt_autoscale = true, + vlabel = "Celsius", + number_format = "%3.1lf%s", + data = { + types = { "temperature" }, + options = { + temperature = { color = "ff0000", title = "Temperature", noarea=true }, + } + } + } +end + diff --git a/applications/luci-app-statistics/po/ca/statistics.po b/applications/luci-app-statistics/po/ca/statistics.po index 2c648ceca9..fd3b6d19b5 100644 --- a/applications/luci-app-statistics/po/ca/statistics.po +++ b/applications/luci-app-statistics/po/ca/statistics.po @@ -39,6 +39,12 @@ msgstr "Directori base" msgid "Basic monitoring" msgstr "Monitoreig bàsic" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Configuració del connector de CPU" @@ -129,6 +135,9 @@ msgstr "Configuració del connector d'adreça electrònica" msgid "Email" msgstr "Adreça electrònica" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Activa aquest connector" @@ -268,6 +277,9 @@ msgstr "Monitoritza tots els ports locals que reben connexions" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Monitoritza dispositius" @@ -658,6 +670,12 @@ msgstr "" "els ports seleccionats." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -667,6 +685,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/cs/statistics.po b/applications/luci-app-statistics/po/cs/statistics.po index 2a725461e7..9678726ab4 100644 --- a/applications/luci-app-statistics/po/cs/statistics.po +++ b/applications/luci-app-statistics/po/cs/statistics.po @@ -35,6 +35,12 @@ msgstr "Základní adresář" msgid "Basic monitoring" msgstr "Základní sledování" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Nastavení CPU pluginu" @@ -125,6 +131,9 @@ msgstr "Nastavení E-Mail pluginu" msgid "Email" msgstr "Email" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Povolit tento plugin" @@ -263,6 +272,9 @@ msgstr "Monitorovat všechny naslouchající porty" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Sledovat zařízení" @@ -644,6 +656,12 @@ msgstr "" "vybraných portech." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -653,6 +671,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/de/statistics.po b/applications/luci-app-statistics/po/de/statistics.po index 51697bfd5e..2923f05c03 100644 --- a/applications/luci-app-statistics/po/de/statistics.po +++ b/applications/luci-app-statistics/po/de/statistics.po @@ -37,6 +37,12 @@ msgstr "Basisverzeichnis" msgid "Basic monitoring" msgstr "Schnittstellen einfach überwachen" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "CPU Plugin Konfiguration" @@ -127,6 +133,9 @@ msgstr "E-Mail Plugin Konfiguration" msgid "Email" msgstr "Email" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Plugin aktivieren" @@ -270,6 +279,9 @@ msgstr "Alle durch lokale Dienste genutzten Ports überwachen" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Geräte überwachen" @@ -663,6 +675,12 @@ msgstr "" "ausgewählten Ports." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -672,6 +690,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/el/statistics.po b/applications/luci-app-statistics/po/el/statistics.po index 3388ea510e..379d443eca 100644 --- a/applications/luci-app-statistics/po/el/statistics.po +++ b/applications/luci-app-statistics/po/el/statistics.po @@ -38,6 +38,12 @@ msgstr "Κατάλογος βάσης" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -129,6 +135,9 @@ msgstr "" msgid "Email" msgstr "Ηλ. Ταχυδρομείο" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -261,6 +270,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -606,6 +618,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -613,6 +631,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/en/statistics.po b/applications/luci-app-statistics/po/en/statistics.po index fe1f8beb96..aa956de124 100644 --- a/applications/luci-app-statistics/po/en/statistics.po +++ b/applications/luci-app-statistics/po/en/statistics.po @@ -37,6 +37,12 @@ msgstr "Base Directory" msgid "Basic monitoring" msgstr "Basic monitoring" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "CPU Plugin Configuration" @@ -127,6 +133,9 @@ msgstr "E-Mail Plugin Configuration" msgid "Email" msgstr "Email" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Enable this plugin" @@ -266,6 +275,9 @@ msgstr "Monitor all local listen ports" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Monitor devices" @@ -646,6 +658,12 @@ msgstr "" "selected ports." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -655,6 +673,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/es/statistics.po b/applications/luci-app-statistics/po/es/statistics.po index 0d47b659c4..ef186b120d 100644 --- a/applications/luci-app-statistics/po/es/statistics.po +++ b/applications/luci-app-statistics/po/es/statistics.po @@ -37,6 +37,12 @@ msgstr "Directorio Base" msgid "Basic monitoring" msgstr "Monitorización básica" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Configuración del plugin de CPU" @@ -127,6 +133,9 @@ msgstr "Configuración del plugin email" msgid "Email" msgstr "Correo electrónico" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Activar este plugin" @@ -265,6 +274,9 @@ msgstr "Monitorizar todos los puertos de escucha locales" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Dispositivos a monitonizar" @@ -659,6 +671,12 @@ msgstr "" "puertos seleccionados." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -668,6 +686,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/fr/statistics.po b/applications/luci-app-statistics/po/fr/statistics.po index b7ace0cac1..cacc64ab4f 100644 --- a/applications/luci-app-statistics/po/fr/statistics.po +++ b/applications/luci-app-statistics/po/fr/statistics.po @@ -37,6 +37,12 @@ msgstr "Répertoire de base" msgid "Basic monitoring" msgstr "Surveillance de base" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Configuration du greffon sur le CPU" @@ -127,6 +133,9 @@ msgstr "Configuration du greffon des courriels" msgid "Email" msgstr "Courriel" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Activer ce greffon" @@ -267,6 +276,9 @@ msgstr "Surveiller tous les ports en écoute locaux" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Périphériques à surveiller" @@ -654,6 +666,12 @@ msgstr "" "de connexions TCP sur les ports spécifiés." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -661,6 +679,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/he/statistics.po b/applications/luci-app-statistics/po/he/statistics.po index a5da218a25..0f876e6e40 100644 --- a/applications/luci-app-statistics/po/he/statistics.po +++ b/applications/luci-app-statistics/po/he/statistics.po @@ -37,6 +37,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -124,6 +130,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -256,6 +265,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -601,6 +613,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -608,6 +626,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/hu/statistics.po b/applications/luci-app-statistics/po/hu/statistics.po index bf4dd53a0e..78dfd60388 100644 --- a/applications/luci-app-statistics/po/hu/statistics.po +++ b/applications/luci-app-statistics/po/hu/statistics.po @@ -35,6 +35,12 @@ msgstr "Alapkönyvtár" msgid "Basic monitoring" msgstr "Általános figyelés" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "CPU bővítmény beállítása" @@ -125,6 +131,9 @@ msgstr "E-Mail bővítmény beállítása" msgid "Email" msgstr "E-mail" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Bővítmény engedélyezése" @@ -268,6 +277,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Eszközök figyelése" @@ -646,6 +658,12 @@ msgstr "" "információkat." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -655,6 +673,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/it/statistics.po b/applications/luci-app-statistics/po/it/statistics.po index 1313336120..eb1a3cb6f0 100644 --- a/applications/luci-app-statistics/po/it/statistics.po +++ b/applications/luci-app-statistics/po/it/statistics.po @@ -37,6 +37,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -127,6 +133,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Abilita questo plugin" @@ -266,6 +275,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -611,6 +623,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -618,6 +636,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/ja/statistics.po b/applications/luci-app-statistics/po/ja/statistics.po index 7469fe68ab..bc995a6fb4 100644 --- a/applications/luci-app-statistics/po/ja/statistics.po +++ b/applications/luci-app-statistics/po/ja/statistics.po @@ -37,6 +37,12 @@ msgstr "ベース・ディレクトリ" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -124,6 +130,9 @@ msgstr "E-メールプラグイン設定" msgid "Email" msgstr "Eメール" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "プラグイン設定を有効にする" @@ -256,6 +265,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -604,6 +616,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -611,6 +629,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/ms/statistics.po b/applications/luci-app-statistics/po/ms/statistics.po index 3f32b633bc..a18826f429 100644 --- a/applications/luci-app-statistics/po/ms/statistics.po +++ b/applications/luci-app-statistics/po/ms/statistics.po @@ -34,6 +34,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -121,6 +127,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -253,6 +262,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -598,6 +610,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -605,6 +623,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/no/statistics.po b/applications/luci-app-statistics/po/no/statistics.po index 945fa79b12..2072cbfff8 100644 --- a/applications/luci-app-statistics/po/no/statistics.po +++ b/applications/luci-app-statistics/po/no/statistics.po @@ -28,6 +28,12 @@ msgstr "Hoved Katalog" msgid "Basic monitoring" msgstr "Enkel overvåking" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "CPU plugin konfigurasjon" @@ -118,6 +124,9 @@ msgstr "E-Post plugin konfigurasjon" msgid "Email" msgstr "Epost" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Aktiver denne plugin" @@ -255,6 +264,9 @@ msgstr "Overvåk alle lokale lyttende porter" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Overvåk enheter" @@ -634,6 +646,12 @@ msgstr "" "porter." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -643,6 +661,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/pl/statistics.po b/applications/luci-app-statistics/po/pl/statistics.po index f8176b657a..ea8fc81f59 100644 --- a/applications/luci-app-statistics/po/pl/statistics.po +++ b/applications/luci-app-statistics/po/pl/statistics.po @@ -38,6 +38,12 @@ msgstr "Główny katalog" msgid "Basic monitoring" msgstr "Podstawowy monitoring" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Konfiguracja CPU" @@ -128,6 +134,9 @@ msgstr "Konfiguracja wtyczki E-mail" msgid "Email" msgstr "E-mail" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Włącz tę wtyczkę" @@ -269,6 +278,9 @@ msgstr "Monitoruj wszystkie lokalne otwarte porty" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Monitoruj urządzenia" @@ -654,6 +666,12 @@ msgstr "" "wybranych portów." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -663,6 +681,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/pt-br/statistics.po b/applications/luci-app-statistics/po/pt-br/statistics.po index 92213a8cef..3b3590f264 100644 --- a/applications/luci-app-statistics/po/pt-br/statistics.po +++ b/applications/luci-app-statistics/po/pt-br/statistics.po @@ -37,6 +37,12 @@ msgstr "Diretório Base" msgid "Basic monitoring" msgstr "Monitoramento básico" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Configuração do plugin CPU" @@ -127,6 +133,9 @@ msgstr "Configuração do plugin E-Mail" msgid "Email" msgstr "Email" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Habilitar este plugin" @@ -269,6 +278,9 @@ msgstr "Monitorar todas as portas locais" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Monitorar dispositivos" @@ -659,6 +671,12 @@ msgstr "" "portas selecionadas." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -668,6 +686,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/pt/statistics.po b/applications/luci-app-statistics/po/pt/statistics.po index e215df87d2..f30bf90fd4 100644 --- a/applications/luci-app-statistics/po/pt/statistics.po +++ b/applications/luci-app-statistics/po/pt/statistics.po @@ -37,6 +37,12 @@ msgstr "Diretório Base" msgid "Basic monitoring" msgstr "Monitoramento básico" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Configuração do plugin CPU" @@ -127,6 +133,9 @@ msgstr "Configuração do plugin E-Mail" msgid "Email" msgstr "Email" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Habilitar este plugin" @@ -268,6 +277,9 @@ msgstr "Monitorar todas as portas locais" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Monitorar dispositivos" @@ -652,6 +664,12 @@ msgstr "" "portas selecionadas." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -661,6 +679,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/ro/statistics.po b/applications/luci-app-statistics/po/ro/statistics.po index a8042b435c..0c52e32811 100644 --- a/applications/luci-app-statistics/po/ro/statistics.po +++ b/applications/luci-app-statistics/po/ro/statistics.po @@ -38,6 +38,12 @@ msgstr "Directorul de baza" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Configurarea pluginului CPU" @@ -128,6 +134,9 @@ msgstr "" msgid "Email" msgstr "Email" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -260,6 +269,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -607,6 +619,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -614,6 +632,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/ru/statistics.po b/applications/luci-app-statistics/po/ru/statistics.po index 41f8110823..d1dddbb6ba 100644 --- a/applications/luci-app-statistics/po/ru/statistics.po +++ b/applications/luci-app-statistics/po/ru/statistics.po @@ -39,6 +39,12 @@ msgstr "Базовая директория" msgid "Basic monitoring" msgstr "Базовая статистика" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Конфигурация модуля CPU" @@ -128,6 +134,9 @@ msgstr "Конфигурация модуля E-Mail" msgid "Email" msgstr "E-mail" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Включить этот модуль" @@ -270,6 +279,9 @@ msgstr "Собирать статистику со всех портов, ожи msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Собирать статистику с устройств" @@ -650,6 +662,12 @@ msgstr "" "портах." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -659,6 +677,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/sk/statistics.po b/applications/luci-app-statistics/po/sk/statistics.po index c8100e3e77..6b0caa64ca 100644 --- a/applications/luci-app-statistics/po/sk/statistics.po +++ b/applications/luci-app-statistics/po/sk/statistics.po @@ -32,6 +32,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -119,6 +125,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -251,6 +260,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -596,6 +608,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -603,6 +621,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/sv/statistics.po b/applications/luci-app-statistics/po/sv/statistics.po index a7443b3077..035d9403f2 100644 --- a/applications/luci-app-statistics/po/sv/statistics.po +++ b/applications/luci-app-statistics/po/sv/statistics.po @@ -33,6 +33,12 @@ msgstr "Basmapp" msgid "Basic monitoring" msgstr "Standardövervakning" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -123,6 +129,9 @@ msgstr "Konfiguration av insticksprogrammet E-post" msgid "Email" msgstr "E-post" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Aktivera det här insticksprogrammet" @@ -256,6 +265,9 @@ msgstr "Övervaka alla lokala lyssningsportar" msgid "Monitor all sensors" msgstr "Övervaka alla sensorer" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Övervaka enheter" @@ -601,6 +613,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -608,6 +626,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/templates/statistics.pot b/applications/luci-app-statistics/po/templates/statistics.pot index c07f4dc4ad..8f6fecc48b 100644 --- a/applications/luci-app-statistics/po/templates/statistics.pot +++ b/applications/luci-app-statistics/po/templates/statistics.pot @@ -25,6 +25,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -112,6 +118,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -244,6 +253,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -589,6 +601,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -596,6 +614,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/tr/statistics.po b/applications/luci-app-statistics/po/tr/statistics.po index 235ad1cc0a..0f0bc459e7 100644 --- a/applications/luci-app-statistics/po/tr/statistics.po +++ b/applications/luci-app-statistics/po/tr/statistics.po @@ -33,6 +33,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -120,6 +126,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -252,6 +261,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -597,6 +609,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -604,6 +622,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/uk/statistics.po b/applications/luci-app-statistics/po/uk/statistics.po index 0be5b367b5..ca82efe8dd 100644 --- a/applications/luci-app-statistics/po/uk/statistics.po +++ b/applications/luci-app-statistics/po/uk/statistics.po @@ -38,6 +38,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -125,6 +131,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -257,6 +266,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -602,6 +614,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -609,6 +627,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/vi/statistics.po b/applications/luci-app-statistics/po/vi/statistics.po index ef99e551ad..f6d54bcd62 100644 --- a/applications/luci-app-statistics/po/vi/statistics.po +++ b/applications/luci-app-statistics/po/vi/statistics.po @@ -38,6 +38,12 @@ msgstr "Thư mục Cơ sở" msgid "Basic monitoring" msgstr "Monitoring căn bản" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "Cấu hình Plugin CPU" @@ -128,6 +134,9 @@ msgstr "Cấu hình e-mail plugin" msgid "Email" msgstr "Email" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "Kích hoạt plugin này" @@ -267,6 +276,9 @@ msgstr "Monitor tất cả local listen port" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "Monitor devices" @@ -652,6 +664,12 @@ msgstr "" "chọn." msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -661,6 +679,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/zh-cn/statistics.po b/applications/luci-app-statistics/po/zh-cn/statistics.po index 7b3bbfc0c6..0c8775f3fc 100644 --- a/applications/luci-app-statistics/po/zh-cn/statistics.po +++ b/applications/luci-app-statistics/po/zh-cn/statistics.po @@ -37,6 +37,12 @@ msgstr "基本目录" msgid "Basic monitoring" msgstr "基本监控" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "CPU插件配置" @@ -126,6 +132,9 @@ msgstr "E-Mail插件配置" msgid "Email" msgstr "电子邮件" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "启用该插件" @@ -262,6 +271,9 @@ msgstr "监测所有本地监听端口" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "监测设备" @@ -619,6 +631,12 @@ msgid "" msgstr "tcpconns插件,收集选定端口TCP连接信息。" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "unixsock插件,创建一个unix套接字可用于读取Collectd实例的收集信息。" @@ -626,6 +644,15 @@ msgstr "unixsock插件,创建一个unix套接字可用于读取Collectd实例 msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/po/zh-tw/statistics.po b/applications/luci-app-statistics/po/zh-tw/statistics.po index 9a9ca34a1a..404092bedb 100644 --- a/applications/luci-app-statistics/po/zh-tw/statistics.po +++ b/applications/luci-app-statistics/po/zh-tw/statistics.po @@ -31,6 +31,12 @@ msgstr "" msgid "Basic monitoring" msgstr "" +msgid "CPU Frequency" +msgstr "" + +msgid "CPU Frequency Plugin Configuration" +msgstr "" + msgid "CPU Plugin Configuration" msgstr "" @@ -118,6 +124,9 @@ msgstr "" msgid "Email" msgstr "" +msgid "Empty value = monitor all" +msgstr "" + msgid "Enable this plugin" msgstr "" @@ -250,6 +259,9 @@ msgstr "" msgid "Monitor all sensors" msgstr "" +msgid "Monitor device(s) / thermal zone(s)" +msgstr "" + msgid "Monitor devices" msgstr "" @@ -595,6 +607,12 @@ msgid "" msgstr "" msgid "" +"The thermal plugin will monitor temperature of the system. Data is typically " +"read from /sys/class/thermal/*/temp ( '*' denotes the thermal device to be " +"read, e.g. thermal_zone1 )" +msgstr "" + +msgid "" "The unixsock plugin creates a unix socket which can be used to read " "collected data from a running collectd instance." msgstr "" @@ -602,6 +620,15 @@ msgstr "" msgid "The uptime plugin collects statistics about the uptime of the system." msgstr "" +msgid "Thermal" +msgstr "" + +msgid "Thermal Plugin Configuration" +msgstr "" + +msgid "This plugin collects statistics about the processor frequency scaling." +msgstr "" + msgid "" "This section defines on which interfaces collectd will wait for incoming " "connections." diff --git a/applications/luci-app-statistics/root/etc/config/luci_statistics b/applications/luci-app-statistics/root/etc/config/luci_statistics index 4435d5c61e..774a8382e2 100644 --- a/applications/luci-app-statistics/root/etc/config/luci_statistics +++ b/applications/luci-app-statistics/root/etc/config/luci_statistics @@ -55,6 +55,9 @@ config statistics 'collectd_conntrack' config statistics 'collectd_cpu' option enable '1' +config statistics 'collectd_cpufreq' + option enable '0' + config statistics 'collectd_df' option enable '0' option Devices '/dev/mtdblock/4' @@ -151,6 +154,11 @@ config statistics 'collectd_tcpconns' option ListeningPorts '0' option LocalPorts '22 80' +config statistics 'collectd_thermal' + option enable '0' + option IgnoreSelected '0' + option Device '' + config statistics 'collectd_uptime' option enable '0' diff --git a/applications/luci-app-statistics/root/usr/bin/stat-genconfig b/applications/luci-app-statistics/root/usr/bin/stat-genconfig index 49d8a09935..df9af15261 100755 --- a/applications/luci-app-statistics/root/usr/bin/stat-genconfig +++ b/applications/luci-app-statistics/root/usr/bin/stat-genconfig @@ -273,6 +273,12 @@ plugins = { { } }, + cpufreq = { + { }, + { }, + { } + }, + csv = { { "DataDir" }, { "StoreRates" }, @@ -417,6 +423,12 @@ plugins = { { "LocalPorts", "RemotePorts" } }, + thermal = { + { }, + { "IgnoreSelected" }, + { "Device" } + }, + unixsock = { { "SocketFile", "SocketGroup", "SocketPerms" }, { }, diff --git a/applications/luci-app-travelmate/Makefile b/applications/luci-app-travelmate/Makefile new file mode 100644 index 0000000000..f4b1b0a4e3 --- /dev/null +++ b/applications/luci-app-travelmate/Makefile @@ -0,0 +1,13 @@ +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=LuCI support for Travelmate +LUCI_DEPENDS:=+travelmate +LUCI_PKGARCH:=all + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-travelmate/luasrc/controller/travelmate.lua b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua new file mode 100644 index 0000000000..27c19c4e52 --- /dev/null +++ b/applications/luci-app-travelmate/luasrc/controller/travelmate.lua @@ -0,0 +1,11 @@ +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.travelmate", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/travelmate") then + return + end + + entry({"admin", "services", "travelmate"}, cbi("travelmate"), _("Travelmate"), 60) +end diff --git a/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua new file mode 100644 index 0000000000..9050ae9686 --- /dev/null +++ b/applications/luci-app-travelmate/luasrc/model/cbi/travelmate.lua @@ -0,0 +1,53 @@ +-- Licensed to the public under the Apache License 2.0. + +m = Map("travelmate", translate("Travelmate"), + translate("Configuration of the Travelmate package to enable travel router functionality. ") .. [[</p>]] .. + translate("Brief advice: Create a wwan interface, configure it to use dhcp and " .. + "add it to the wan zone in firewall. Create the wifi interfaces to be used ('client' mode, " .. + "assigned to wwan network, left as disabled). Travelmate will try " .. + "to connect to the known wifi client interfaces in the defined order. ") .. + [[<a href="https://github.com/openwrt/packages/tree/master/net/travelmate/files/README.md" target="_blank">]] + .. translate("Link to detailed advice") + .. [[</a>]] ) + +-- General options + +s = m:section(NamedSection, "global", "travelmate", translate("Global options")) + +o = s:option(Flag, "trm_enabled", translate("Enable Travelmate")) +o.rmempty = false +o.default = 0 + +o = s:option(Value, "trm_loop", translate("Loop timeout in seconds for wlan monitoring"), + translate("Default 30, range 5-60")) +o.rmempty = false +o.default = 30 +o.datatype = "range(5,60)" + +o = s:option(Value, "trm_maxretry", translate("Max. number of connection retries to an uplink"), + translate("Default 3, range 0-10. Set to 0 to allow unlimited retries")) +o.rmempty = false +o.default = 3 +o.datatype = "range(0,10)" + +-- Extra options + +e = m:section(NamedSection, "global", "travelmate", translate("Extra options")) + +a = e:option(Flag, "trm_debug", translate("Debug logging")) +a.rmempty = true +a.default = a.disabled + +a = e:option(Value, "trm_device", translate("Use only one radio, e.g. 'radio0'"), + translate("Default: empty = use all radios.")) +a.rmempty = true +a.default = "" +a.datatype = "uciname" + +a = e:option(Flag, "trm_iw", translate("Use iw for scanning"), + translate("Disable this if you want to use iwinfo instead of iw")) +a.rmempty = true +a.default = a.enabled + +return m + diff --git a/applications/luci-app-travelmate/po/templates/travelmate.pot b/applications/luci-app-travelmate/po/templates/travelmate.pot new file mode 100644 index 0000000000..533b3e2639 --- /dev/null +++ b/applications/luci-app-travelmate/po/templates/travelmate.pot @@ -0,0 +1,56 @@ +msgid "" +msgstr "Content-Type: text/plain; charset=UTF-8" + +msgid "" +"Brief advice: Create a wwan interface, configure it to use dhcp and add it " +"to the wan zone in firewall. Create the wifi interfaces to be used ('client' " +"mode, assigned to wwan network, left as disabled). Travelmate will try to " +"connect to the known wifi client interfaces in the defined order." +msgstr "" + +msgid "" +"Configuration of the Travelmate package to enable travel router " +"functionality." +msgstr "" + +msgid "Debug logging" +msgstr "" + +msgid "Default 3, range 0-10. Set to 0 to allow unlimited retries" +msgstr "" + +msgid "Default 30, range 5-60" +msgstr "" + +msgid "Default: empty = use all radios." +msgstr "" + +msgid "Disable this if you want to use iwinfo instead of iw" +msgstr "" + +msgid "Enable Travelmate" +msgstr "" + +msgid "Extra options" +msgstr "" + +msgid "Global options" +msgstr "" + +msgid "Link to detailed advice" +msgstr "" + +msgid "Loop timeout in seconds for wlan monitoring" +msgstr "" + +msgid "Max. number of connection retries to an uplink" +msgstr "" + +msgid "Travelmate" +msgstr "" + +msgid "Use iw for scanning" +msgstr "" + +msgid "Use only one radio, e.g. 'radio0'" +msgstr "" diff --git a/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate b/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate new file mode 100755 index 0000000000..f7676774a1 --- /dev/null +++ b/applications/luci-app-travelmate/root/etc/uci-defaults/40_luci-travelmate @@ -0,0 +1,11 @@ +#!/bin/sh + +uci -q batch <<-EOF >/dev/null + delete ucitrack.@travelmate[-1] + add ucitrack travelmate + set ucitrack.@travelmate[-1].init=travelmate + commit ucitrack +EOF + +rm -f /tmp/luci-indexcache +exit 0 diff --git a/applications/luci-app-unbound/Makefile b/applications/luci-app-unbound/Makefile new file mode 100644 index 0000000000..6d953e13b2 --- /dev/null +++ b/applications/luci-app-unbound/Makefile @@ -0,0 +1,14 @@ +# +# Copyright (C) 2008-2014 The LuCI Team <luci@lists.subsignal.org> +# +# This is free software, licensed under the Apache License, Version 2.0 . +# + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Unbound Recursive DNS Resolver Configuration +LUCI_DEPENDS:=+unbound + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-unbound/luasrc/controller/unbound.lua b/applications/luci-app-unbound/luasrc/controller/unbound.lua new file mode 100644 index 0000000000..0a5abc5a5e --- /dev/null +++ b/applications/luci-app-unbound/luasrc/controller/unbound.lua @@ -0,0 +1,17 @@ +-- Copyright 2008 Steven Barth <steven@midlink.org> +-- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org> +-- Licensed to the public under the Apache License 2.0. + +module("luci.controller.unbound", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/unbound") then + return + end + + local page + + page = entry({"admin", "services", "unbound"}, cbi("unbound"), _("Recursive DNS")) + page.dependent = true +end + diff --git a/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua new file mode 100644 index 0000000000..22f020021c --- /dev/null +++ b/applications/luci-app-unbound/luasrc/model/cbi/unbound.lua @@ -0,0 +1,123 @@ +-- Copyright 2008 Steven Barth <steven@midlink.org> +-- Copyright 2016 Eric Luehrsen <ericluehrsen@hotmail.com> +-- Licensed to the public under the Apache License 2.0. + +m = Map("unbound", translate("Recursive DNS"), + translate("Unbound is a validating, recursive, and caching DNS resolver.")) + +s = m:section(TypedSection, "unbound", translate("Unbound Settings")) +s.addremove = false +s.anonymous = true + +s:tab("service", translate("Unbound Service")) +s:tab("resource", translate("Unbound Resources")) +s:tab("dnsmasq", translate("Dnsmasq Link")) + +--Enable Unbound + +e = s:taboption("service", Flag, "enabled", translate("Enable Unbound:"), + translate("Enable the initialization scripts for Unbound")) +e.rmempty = false + +function e.cfgvalue(self, section) + return luci.sys.init.enabled("unbound") and self.enabled or self.disabled +end + +function e.write(self, section, value) + if value == "1" then + luci.sys.init.enable("unbound") + luci.sys.call("/etc/init.d/unbound start >/dev/null") + else + luci.sys.call("/etc/init.d/unbound stop >/dev/null") + luci.sys.init.disable("unbound") + end + + return Flag.write(self, section, value) +end + +--Service Tab + +mcf = s:taboption("service", Flag, "manual_conf", translate("Manual Conf:"), + translate("Skip UCI and use /etc/unbound/unbound.conf")) +mcf.rmempty = false + +lsv = s:taboption("service", Flag, "localservice", translate("Local Service:"), + translate("Accept queries only from local subnets")) +lsv.rmempty = false + +qry = s:taboption("service", Flag, "query_minimize", translate("Query Minimize:"), + translate("Break down query components for small added privacy")) +qry.rmempty = false + +rlh = s:taboption("service", Flag, "rebind_localhost", translate("Block Localhost Rebind:"), + translate("Prevent upstream response of 127.0.0.0/8")) +rlh.rmempty = false + +rpv = s:taboption("service", Flag, "rebind_protection", translate("Block Private Rebind:"), + translate("Prevent upstream response of RFC1918 ranges")) +rpv.rmempty = false + +vld = s:taboption("service", Flag, "validator", translate("Enable DNSSEC:"), + translate("Enable the DNSSEC validator module")) +vld.rmempty = false + +nvd = s:taboption("service", Flag, "validator_ntp", translate("DNSSEC NTP Fix:"), + translate("Break the loop where DNSSEC needs NTP and NTP needs DNS")) +nvd.rmempty = false + +eds = s:taboption("service", Value, "edns_size", translate("EDNS Size:"), + translate("Limit extended DNS packet size")) +eds.datatype = "and(uinteger,min(512),max(4096))" +eds.rmempty = false + +prt = s:taboption("service", Value, "listen_port", translate("Listening Port:"), + translate("Choose Unbounds listening port")) +prt.datatype = "port" +prt.rmempty = false + +tlm = s:taboption("service", Value, "ttl_min", translate("TTL Minimum:"), + translate("Prevent excessively short cache periods")) +tlm.datatype = "and(uinteger,min(0),max(600))" +tlm.rmempty = false + +--Resource Tuning Tab + +rsn = s:taboption("resource", ListValue, "recursion", translate("Recursion Strength:"), + translate("Recursion activity affects memory growth and CPU load")) +rsn:value("aggressive", translate("Aggressive")) +rsn:value("default", translate("Default")) +rsn:value("passive", translate("Passive")) +rsn.rmempty = false + +rsc = s:taboption("resource", ListValue, "resource", translate("Memory Resource:"), + translate("Use menu System/Processes to observe any memory growth")) +rsc:value("large", translate("Large")) +rsc:value("medium", translate("Medium")) +rsc:value("small", translate("Small")) +rsc:value("tiny", translate("Tiny")) +rsc.rmempty = false + +age = s:taboption("resource", Value, "root_age", translate("Root DSKEY Age:"), + translate("Limit days between RFC5011 to reduce flash writes")) +age.datatype = "and(uinteger,min(1),max(99))" +age:value("14", "14") +age:value("28", "28 ("..translate("default")..")") +age:value("45", "45") +age:value("90", "90") +age:value("99", "99 ("..translate("never")..")") + +--Dnsmasq Link Tab + +dld = s:taboption("dnsmasq", Flag, "dnsmasq_link_dns", translate("Link dnsmasq:"), + translate("Forward queries to dnsmasq for local clients")) +dld.rmempty = false + +dgn = s:taboption("dnsmasq", Flag, "dnsmsaq_gate_name", translate("Local Gateway Name:"), + translate("Also query dnsmasq for this hosts outbound gateway")) +dgn.rmempty = false + +--TODO: Read only repective dnsmasq options and inform user of link requirements. +--TODO: dnsmasq needs to not reference resolve-file and get off port 53. + +return m + diff --git a/applications/luci-app-wifischedule/Makefile b/applications/luci-app-wifischedule/Makefile new file mode 100644 index 0000000000..1708562a4e --- /dev/null +++ b/applications/luci-app-wifischedule/Makefile @@ -0,0 +1,22 @@ +# Copyright (c) 2016, prpl Foundation +# +# Permission to use, copy, modify, and/or distribute this software for any purpose with or without +# fee is hereby granted, provided that the above copyright notice and this permission notice appear +# in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE +# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +# FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +# ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# +# Author: Nils Koenig <openwrt@newk.it> + +include $(TOPDIR)/rules.mk + +LUCI_TITLE:=Turns WiFi on and off according to a schedule +LUCI_DEPENDS:=+wifischedule + +include ../../luci.mk + +# call BuildPackage - OpenWrt buildroot signature diff --git a/applications/luci-app-wifischedule/README.md b/applications/luci-app-wifischedule/README.md new file mode 100644 index 0000000000..591abb1049 --- /dev/null +++ b/applications/luci-app-wifischedule/README.md @@ -0,0 +1,86 @@ +# wifischedule +Turns WiFi on and off according to a schedule on an openwrt router + +## Components +* wifischedule: Shell script that creates cron jobs based on configuration provided in UCI and does all the other logic of enabling and disabling wifi with the use of `/sbin/wifi` and `/usr/bin/iwinfo`. Can be used standalone. +* luci-app-wifischedule: LUCI frontend for creating the UCI configuration and triggering the actions. Depends on wifischedule. + + +## Use cases +You can create user-defined events when to enable or disable WiFi. +There are various use cases why you would like to do so: + +1. Reduce power consumption and therefore reduce CO2 emissions. +2. Reduce emitted electromagnatic radiation. +3. Force busincess hours when WiFi is available. + +Regarding 1: Please note, that you need to unload the wireless driver modules in order to get the most effect of saving power. +In my test scenario only disabling WiFi saves about ~0.4 Watt, unloading the modules removes another ~0.4 Watt. + +Regarding 2: Think of a wireless accesspoint e.g. in your bedrom, kids room where you want to remove the ammount of radiation emitted. + +Regarding 3: E.g. in a company, why would wireless need to be enabled weekends if no one is there working? +Or think of an accesspoint in your kids room when you want the youngsters to sleep after 10 pm instead of facebooking... + +## Configuration +You can create an arbitrary number of schedule events. Please note that there is on sanity check done wheather the start / stop times overlap or make sense. +If start and stop time are equal, this leads to disabling the WiFi at the given time. + +Logging if enabled is done to the file `/var/log/wifi_schedule.log` and can be reviewed through the "View Logfile" tab. +The cron jobs created can be reviewed through the "View Cron Jobs" tab. + +Please note that the "Unload Modules" function is currently considered as experimental. You can manually add / remove modules in the text field. +The button "Determine Modules Automatically" tries to make a best guess determining regarding the driver module and its dependencies. +When un-/loading the modules, there is a certain number of retries (`module_load`) performed. + +The option "Force disabling wifi even if stations associated" does what it says - when activated it simply shuts down WiFi. +When unchecked, its checked every `recheck_interval` minutes if there are still stations associated. Once the stations disconnect, WiFi is disabled. + +Please note, that the parameters `module_load` and `recheck_interval` are only accessible through uci. + +## UCI Configuration `wifi_schedule` +UCI configuration file: `/etc/config/wifi_schedule`: + +``` +config global + option logging '0' + option enabled '0' + option recheck_interval '10' + option modules_retries '10' + +config entry 'Businesshours' + option enabled '0' + option daysofweek 'Monday Tuesday Wednesday Thursday Friday' + option starttime '06:00' + option stoptime '22:00' + option forcewifidown '0' + +config entry 'Weekend' + option enabled '0' + option daysofweek 'Saturday Sunday' + option starttime '00:00' + option stoptime '00:00' + option forcewifidown '1' +``` + +## Script: `wifi_schedule.sh` +This is the script that does the work. Make your changes to the UCI config file: `/etc/config/wifi_schedule` + +Then call the script as follows in order to get the necessary cron jobs created: + +`wifi_schedule.sh cron` + +All commands: + +``` +wifi_schedule.sh cron|start|stop|forcestop|recheck|getmodules|savemodules|help + + cron: Create cronjob entries. + start: Start wifi. + stop: Stop wifi gracefully, i.e. check if there are stations associated and if so keep retrying. + forcestop: Stop wifi immediately. + recheck: Recheck if wifi can be disabled now. + getmodules: Returns a list of modules used by the wireless driver(s) + savemodules: Saves a list of automatic determined modules to UCI + help: This description. +``` diff --git a/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua b/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua new file mode 100644 index 0000000000..a33c7aab9a --- /dev/null +++ b/applications/luci-app-wifischedule/luasrc/controller/wifischedule/wifi_schedule.lua @@ -0,0 +1,32 @@ +-- Copyright (c) 2016, prpl Foundation +-- +-- Permission to use, copy, modify, and/or distribute this software for any purpose with or without +-- fee is hereby granted, provided that the above copyright notice and this permission notice appear +-- in all copies. +-- +-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE +-- INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +-- FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +-- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +-- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-- +-- Author: Nils Koenig <openwrt@newk.it> + +module("luci.controller.wifischedule.wifi_schedule", package.seeall) + +function index() + entry({"admin", "wifi_schedule"}, firstchild(), "Wifi Schedule", 60).dependent=false + entry({"admin", "wifi_schedule", "tab_from_cbi"}, cbi("wifischedule/wifi_schedule"), "Schedule", 1) + entry({"admin", "wifi_schedule", "wifi_schedule"}, call("wifi_schedule_log"), "View Logfile", 2) + entry({"admin", "wifi_schedule", "cronjob"}, call("view_crontab"), "View Cron Jobs", 3) +end + +function wifi_schedule_log() + local logfile = luci.sys.exec("cat /tmp/log/wifi_schedule.log") + luci.template.render("wifischedule/file_viewer", {title="Wifi Schedule Logfile", content=logfile}) +end + +function view_crontab() + local crontab = luci.sys.exec("cat /etc/crontabs/root") + luci.template.render("wifischedule/file_viewer", {title="Cron Jobs", content=crontab}) +end diff --git a/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua b/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua new file mode 100644 index 0000000000..2cca476b4f --- /dev/null +++ b/applications/luci-app-wifischedule/luasrc/model/cbi/wifischedule/wifi_schedule.lua @@ -0,0 +1,259 @@ +-- Copyright (c) 2016, prpl Foundation +-- +-- Permission to use, copy, modify, and/or distribute this software for any purpose with or without +-- fee is hereby granted, provided that the above copyright notice and this permission notice appear +-- in all copies. +-- +-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE +-- INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +-- FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +-- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +-- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +-- +-- Author: Nils Koenig <openwrt@newk.it> + +function file_exists(name) + local f=io.open(name,"r") + if f~=nil then io.close(f) return true else return false end +end + + +function time_validator(self, value, desc) + if value ~= nil then + + h_str, m_str = string.match(value, "^(%d%d?):(%d%d?)$") + h = tonumber(h_str) + m = tonumber(m_str) + if ( h ~= nil and + h >= 0 and + h <= 23 and + m ~= nil and + m >= 0 and + m <= 59) then + return value + end + end + return nil, translate("The value '" .. desc .. "' is invalid") +end + +-- ------------------------------------------------------------------------------------------------- + +-- BEGIN Map +m = Map("wifi_schedule", translate("Wifi Schedule"), translate("Defines a schedule when to turn on and off wifi.")) +function m.on_commit(self) + luci.sys.exec("/usr/bin/wifi_schedule.sh cron") +end +-- END Map + +-- BEGIN Global Section +global_section = m:section(TypedSection, "global", "Global Settings") +global_section.optional = false +global_section.rmempty = false +global_section.anonymous = true +-- END Section + +-- BEGIN Global Enable Checkbox +global_enable = global_section:option(Flag, "enabled", translate("Enable Wifi Schedule")) +global_enable.optional=false; +global_enable.rmempty = false; + +function global_enable.validate(self, value, global_section) + if value == "1" then + if ( file_exists("/sbin/wifi") and + file_exists("/usr/bin/wifi_schedule.sh") )then + return value + else + return nil, translate("Could not find required /usr/bin/wifi_schedule.sh or /sbin/wifi") + end + else + return "0" + end +end +-- END Global Enable Checkbox + + +-- BEGIN Global Logging Checkbox +global_logging = global_section:option(Flag, "logging", translate("Enable logging")) +global_logging.optional=false; +global_logging.rmempty = false; +global_logging.default = 0 +-- END Global Enable Checkbox + +-- BEGIN Global Activate WiFi Button +enable_wifi = global_section:option(Button, "enable_wifi", translate("Activate wifi")) +function enable_wifi.write() + luci.sys.exec("/usr/bin/wifi_schedule.sh start manual") +end +-- END Global Activate Wifi Button + +-- BEGIN Global Disable WiFi Gracefully Button +disable_wifi_gracefully = global_section:option(Button, "disable_wifi_gracefully", translate("Disable wifi gracefully")) +function disable_wifi_gracefully.write() + luci.sys.exec("/usr/bin/wifi_schedule.sh stop manual") +end +-- END Global Disable Wifi Gracefully Button + +-- BEGIN Disable WiFi Forced Button +disable_wifi_forced = global_section:option(Button, "disable_wifi_forced", translate("Disabled wifi forced")) +function disable_wifi_forced.write() + luci.sys.exec("/usr/bin/wifi_schedule.sh forcestop manual") +end +-- END Global Disable WiFi Forced Button + +-- BEGIN Global Unload Modules Checkbox +global_unload_modules = global_section:option(Flag, "unload_modules", translate("Unload Modules (experimental; saves more power)")) +global_unload_modules.optional = false; +global_unload_modules.rmempty = false; +global_unload_modules.default = 0 +-- END Global Unload Modules Checkbox + + +-- BEGIN Modules +modules = global_section:option(TextValue, "modules", "") +modules:depends("unload_modules", global_unload_modules.enabled); +modules.wrap = "off" +modules.rows = 10 + +function modules.cfgvalue(self, section) + mod=uci.get("wifi_schedule", section, "modules") + if mod == nil then + mod="" + end + return mod:gsub(" ", "\r\n") +end + +function modules.write(self, section, value) + if value then + value_list = value:gsub("\r\n", " ") + ListValue.write(self, section, value_list) + uci.set("wifi_schedule", section, "modules", value_list) + end +end +-- END Modules + +-- BEGIN Determine Modules +determine_modules = global_section:option(Button, "determine_modules", translate("Determine Modules Automatically")) +determine_modules:depends("unload_modules", global_unload_modules.enabled); +function determine_modules.write(self, section) + output = luci.sys.exec("/usr/bin/wifi_schedule.sh getmodules") + modules:write(section, output) +end +-- END Determine Modules + + +-- BEGIN Section +d = m:section(TypedSection, "entry", "Schedule events") +d.addremove = true +--d.anonymous = true +-- END Section + +-- BEGIN Enable Checkbox +c = d:option(Flag, "enabled", translate("Enable")) +c.optional=false; c.rmempty = false; +-- END Enable Checkbox + + +-- BEGIN Day(s) of Week +dow = d:option(MultiValue, "daysofweek", translate("Day(s) of Week")) +dow.optional = false +dow.rmempty = false +dow:value("Monday") +dow:value("Tuesday") +dow:value("Wednesday") +dow:value("Thursday") +dow:value("Friday") +dow:value("Saturday") +dow:value("Sunday") +-- END Day(s) of Weel + +-- BEGIN Start Wifi Dropdown +starttime = d:option(Value, "starttime", translate("Start WiFi")) +starttime.optional=false; +starttime.rmempty = false; +starttime:value("00:00") +starttime:value("01:00") +starttime:value("02:00") +starttime:value("03:00") +starttime:value("04:00") +starttime:value("05:00") +starttime:value("06:00") +starttime:value("07:00") +starttime:value("08:00") +starttime:value("09:00") +starttime:value("10:00") +starttime:value("11:00") +starttime:value("12:00") +starttime:value("13:00") +starttime:value("14:00") +starttime:value("15:00") +starttime:value("16:00") +starttime:value("17:00") +starttime:value("18:00") +starttime:value("19:00") +starttime:value("20:00") +starttime:value("21:00") +starttime:value("22:00") +starttime:value("23:00") + +function starttime.validate(self, value, d) + return time_validator(self, value, translate("Start Time")) +end + +-- END Start Wifi Dropdown + + +-- BEGIN Stop Wifi Dropdown +stoptime = d:option(Value, "stoptime", translate("Stop WiFi")) +stoptime.optional=false; +stoptime.rmempty = false; +stoptime:value("00:00") +stoptime:value("01:00") +stoptime:value("02:00") +stoptime:value("03:00") +stoptime:value("04:00") +stoptime:value("05:00") +stoptime:value("06:00") +stoptime:value("07:00") +stoptime:value("08:00") +stoptime:value("09:00") +stoptime:value("10:00") +stoptime:value("11:00") +stoptime:value("12:00") +stoptime:value("13:00") +stoptime:value("14:00") +stoptime:value("15:00") +stoptime:value("16:00") +stoptime:value("17:00") +stoptime:value("18:00") +stoptime:value("19:00") +stoptime:value("20:00") +stoptime:value("21:00") +stoptime:value("22:00") +stoptime:value("23:00") + +function stoptime.validate(self, value, d) + return time_validator(self, value, translate("Stop Time")) +end +-- END Stop Wifi Dropdown + + +-- BEGIN Force Wifi Stop Checkbox +force_wifi = d:option(Flag, "forcewifidown", translate("Force disabling wifi even if stations associated")) +force_wifi.default = false +force_wifi.rmempty = false; + +function force_wifi.validate(self, value, d) + if value == "0" then + if file_exists("/usr/bin/iwinfo") then + return value + else + return nil, translate("Could not find required programm /usr/bin/iwinfo") + end + else + return "1" + end +end +-- END Force Wifi Checkbox + + +return m diff --git a/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm b/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm new file mode 100644 index 0000000000..f67a2bea99 --- /dev/null +++ b/applications/luci-app-wifischedule/luasrc/view/wifischedule/file_viewer.htm @@ -0,0 +1,22 @@ +<%# +Copyright (c) 2016, prpl Foundation + +Permission to use, copy, modify, and/or distribute this software for any purpose with or without +fee is hereby granted, provided that the above copyright notice and this permission notice appear +in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE +INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +Author: Nils Koenig <openwrt@newk.it> +-%> + +<%+header%> +<h2 name="title"><%=title%></h2> +<div id="content_fileviewer"> +<textarea style="width: 100%" readonly="readonly" wrap="off" rows="<%=content:cmatch("\n")+1%>" id="content_id"><%=content:pcdata()%></textarea> +</div> +<%+footer%> |