diff options
Diffstat (limited to 'modules')
17 files changed, 140 insertions, 56 deletions
diff --git a/modules/luci-base/luasrc/cbi.lua b/modules/luci-base/luasrc/cbi.lua index 45c91890a9..f3d4618b65 100644 --- a/modules/luci-base/luasrc/cbi.lua +++ b/modules/luci-base/luasrc/cbi.lua @@ -1533,13 +1533,16 @@ function Flag.parse(self, section) if fexists then local fvalue = self:formvalue(section) and self.enabled or self.disabled + local cvalue = self:cfgvalue(section) if fvalue ~= self.default or (not self.optional and not self.rmempty) then self:write(section, fvalue) else self:remove(section) end + if (fvalue ~= cvalue) then self.section.changed = true end else self:remove(section) + self.section.changed = true end end diff --git a/modules/luci-base/luasrc/http/protocol.lua b/modules/luci-base/luasrc/http/protocol.lua index 61d7b802fe..859272679f 100644 --- a/modules/luci-base/luasrc/http/protocol.lua +++ b/modules/luci-base/luasrc/http/protocol.lua @@ -559,14 +559,23 @@ function parse_message_body( src, msg, filecb ) -- If we have a file callback then feed it if type(filecb) == "function" then - sink = filecb - + local meta = { + name = "raw", + encoding = msg.env.CONTENT_TYPE + } + sink = function( chunk ) + if chunk then + return filecb(meta, chunk, false) + else + return filecb(meta, nil, true) + end + end -- ... else append to .content else msg.content = "" msg.content_length = 0 - sink = function( chunk, err ) + sink = function( chunk ) if chunk then if ( msg.content_length + #chunk ) <= HTTP_MAX_CONTENT then msg.content = msg.content .. chunk diff --git a/modules/luci-base/luasrc/model/ipkg.lua b/modules/luci-base/luasrc/model/ipkg.lua index 587637272d..2e26bd7a16 100644 --- a/modules/luci-base/luasrc/model/ipkg.lua +++ b/modules/luci-base/luasrc/model/ipkg.lua @@ -122,7 +122,7 @@ function upgrade() end -- List helper -function _list(action, pat, cb) +local function _list(action, pat, cb) local fd = io.popen(ipkg .. " " .. action .. (pat and (" '%s'" % pat:gsub("'", "")) or "")) @@ -189,3 +189,48 @@ function overlay_root() return od end + +function compare_versions(ver1, comp, ver2) + if not ver1 or not ver2 + or not comp or not (#comp > 0) then + error("Invalid parameters") + return nil + end + -- correct compare string + if comp == "<>" or comp == "><" or comp == "!=" or comp == "~=" then comp = "~=" + elseif comp == "<=" or comp == "<" or comp == "=<" then comp = "<=" + elseif comp == ">=" or comp == ">" or comp == "=>" then comp = ">=" + elseif comp == "=" or comp == "==" then comp = "==" + elseif comp == "<<" then comp = "<" + elseif comp == ">>" then comp = ">" + else + error("Invalid compare string") + return nil + end + + local av1 = util.split(ver1, "[%.%-]", nil, true) + local av2 = util.split(ver2, "[%.%-]", nil, true) + + local max = table.getn(av1) + if (table.getn(av1) < table.getn(av2)) then + max = table.getn(av2) + end + + for i = 1, max, 1 do + local s1 = av1[i] or "" + local s2 = av2[i] or "" + + -- first "not equal" found return true + if comp == "~=" and (s1 ~= s2) then return true end + -- first "lower" found return true + if (comp == "<" or comp == "<=") and (s1 < s2) then return true end + -- first "greater" found return true + if (comp == ">" or comp == ">=") and (s1 > s2) then return true end + -- not equal then return false + if (s1 ~= s2) then return false end + end + + -- all equal and not compare greater or lower then true + return not (comp == "<" or comp == ">") +end + diff --git a/modules/luci-base/luasrc/model/ipkg.luadoc b/modules/luci-base/luasrc/model/ipkg.luadoc index cf0985f94a..0dbab7a68f 100644 --- a/modules/luci-base/luasrc/model/ipkg.luadoc +++ b/modules/luci-base/luasrc/model/ipkg.luadoc @@ -107,3 +107,20 @@ Determines the overlay root used by opkg. @return String containing the directory path of the overlay root. ]] +---[[ +lua version of opkg compare-versions + +@class function +@name compare_versions +@param ver1 string version 1 +@param ver2 string version 2 +@param comp string compare versions using + "<=" or "<" lower-equal + ">" or ">=" greater-equal + "=" equal + "<<" lower + ">>" greater + "~=" not equal +@return Boolean indicating the status of the compare +]] + diff --git a/modules/luci-base/luasrc/model/network.lua b/modules/luci-base/luasrc/model/network.lua index b6e390e818..20e1032760 100644 --- a/modules/luci-base/luasrc/model/network.lua +++ b/modules/luci-base/luasrc/model/network.lua @@ -1421,7 +1421,7 @@ function wifinet.is_up(self) end function wifinet.active_mode(self) - local m = _stror(self.iwinfo.mode, self.iwdata.mode) or "ap" + local m = _stror(self.iwdata.mode, self.iwinfo.mode) or "ap" if m == "ap" then m = "Master" elseif m == "sta" then m = "Client" @@ -1438,11 +1438,11 @@ function wifinet.active_mode_i18n(self) end function wifinet.active_ssid(self) - return _stror(self.iwinfo.ssid, self.iwdata.ssid) + return _stror(self.iwdata.ssid, self.iwinfo.ssid) end function wifinet.active_bssid(self) - return _stror(self.iwinfo.bssid, self.iwdata.bssid) or "00:00:00:00:00:00" + return _stror(self.iwdata.bssid, self.iwinfo.bssid) or "00:00:00:00:00:00" end function wifinet.active_encryption(self) diff --git a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua index b604f6b65e..b109c712ec 100644 --- a/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua +++ b/modules/luci-base/luasrc/sys/zoneinfo/tzdata.lua @@ -89,7 +89,7 @@ TZ = { { 'America/Cancun', 'EST5' }, { 'America/Caracas', 'VET4:30' }, { 'America/Cayenne', 'GFT3' }, - { 'America/Cayman', 'EST5' }, + { 'America/Cayman', 'EST5EDT,M3.2.0,M11.1.0' }, { 'America/Chicago', 'CST6CDT,M3.2.0,M11.1.0' }, { 'America/Chihuahua', 'MST7MDT,M4.1.0,M10.5.0' }, { 'America/Costa Rica', 'CST6' }, @@ -151,7 +151,7 @@ TZ = { { 'America/Miquelon', 'PMST3PMDT,M3.2.0,M11.1.0' }, { 'America/Moncton', 'AST4ADT,M3.2.0,M11.1.0' }, { 'America/Monterrey', 'CST6CDT,M4.1.0,M10.5.0' }, - { 'America/Montevideo', 'UYT3UYST,M10.1.0,M3.2.0' }, + { 'America/Montevideo', 'UYT3' }, { 'America/Montserrat', 'AST4' }, { 'America/Nassau', 'EST5EDT,M3.2.0,M11.1.0' }, { 'America/New York', 'EST5EDT,M3.2.0,M11.1.0' }, @@ -266,7 +266,7 @@ TZ = { { 'Asia/Oral', 'ORAT-5' }, { 'Asia/Phnom Penh', 'ICT-7' }, { 'Asia/Pontianak', 'WIB-7' }, - { 'Asia/Pyongyang', 'KST-9' }, + { 'Asia/Pyongyang', 'KST-8:30' }, { 'Asia/Qatar', 'AST-3' }, { 'Asia/Qyzylorda', 'QYZT-6' }, { 'Asia/Rangoon', 'MMT-6:30' }, @@ -322,7 +322,7 @@ TZ = { { 'Europe/Bucharest', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, { 'Europe/Budapest', 'CET-1CEST,M3.5.0,M10.5.0/3' }, { 'Europe/Busingen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, - { 'Europe/Chisinau', 'EET-2EEST,M3.5.0/3,M10.5.0/4' }, + { 'Europe/Chisinau', 'EET-2EEST,M3.5.0,M10.5.0/3' }, { 'Europe/Copenhagen', 'CET-1CEST,M3.5.0,M10.5.0/3' }, { 'Europe/Dublin', 'GMT0IST,M3.5.0/1,M10.5.0' }, { 'Europe/Gibraltar', 'CET-1CEST,M3.5.0,M10.5.0/3' }, diff --git a/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua b/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua index 24429ac36b..f156f3663a 100644 --- a/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua +++ b/modules/luci-base/luasrc/sys/zoneinfo/tzoffset.lua @@ -41,7 +41,6 @@ OFFSET = { pmst = -10800, -- PMST pmdt = -7200, -- PMDT uyt = -10800, -- UYT - uyst = -7200, -- UYST fnt = -7200, -- FNT srt = -10800, -- SRT clt = -10800, -- CLT @@ -95,7 +94,7 @@ OFFSET = { novt = 21600, -- NOVT omst = 21600, -- OMST orat = 18000, -- ORAT - kst = 32400, -- KST + kst = 30600, -- KST qyzt = 21600, -- QYZT mmt = 23400, -- MMT sakt = 36000, -- SAKT diff --git a/modules/luci-base/luasrc/tools/status.lua b/modules/luci-base/luasrc/tools/status.lua index 6e588fe71d..0dd092c6df 100644 --- a/modules/luci-base/luasrc/tools/status.lua +++ b/modules/luci-base/luasrc/tools/status.lua @@ -120,7 +120,9 @@ function wifi_networks() assoclist = net:assoclist(), country = net:country(), txpower = net:txpower(), - txpoweroff = net:txpower_offset() + txpoweroff = net:txpower_offset(), + disabled = (dev:get("disabled") == "1" or + net:get("disabled") == "1") } end diff --git a/modules/luci-base/luasrc/view/cbi/network_netlist.htm b/modules/luci-base/luasrc/view/cbi/network_netlist.htm index 7e23d149a8..4f186ca8ea 100644 --- a/modules/luci-base/luasrc/view/cbi/network_netlist.htm +++ b/modules/luci-base/luasrc/view/cbi/network_netlist.htm @@ -59,6 +59,7 @@ <%- else -%> <%:unspecified -or- create:%> <%- end -%> </em></label> + <input style="display:none" type="password" /> <input style="width:6em" type="text"<%=attr("name", cbid .. ".newnet")%> onfocus="document.getElementById('<%=cbid%>_new').checked=true" /> </div> </li> diff --git a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua index 2d81caf242..1ceb24d16a 100644 --- a/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua +++ b/modules/luci-mod-admin-full/luasrc/controller/admin/status.lua @@ -51,7 +51,7 @@ function action_iptables() luci.dispatcher.build_url("admin", "status", "iptables") ) elseif luci.http.formvalue("restart") == "1" then - luci.util.exec("/etc/init.d/firewall reload") + luci.util.exec("/etc/init.d/firewall restart") luci.http.redirect( luci.dispatcher.build_url("admin", "status", "iptables") ) diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua index 997a9274d2..49103a8113 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/dhcp.lua @@ -89,6 +89,11 @@ s:taboption("advanced", Flag, "nonegcache", translate("No negative cache"), translate("Do not cache negative replies, e.g. for not existing domains")) +s:taboption("advanced", Value, "serversfile", + translate("Additional servers file"), + translate("This file may contain lines like 'server=/domain/1.2.3.4' or 'server=1.2.3.4' for".. + "domain-specific or full upstream <abbr title=\"Domain Name System\">DNS</abbr> servers.")) + s:taboption("advanced", Flag, "strictorder", translate("Strict order"), translate("<abbr title=\"Domain Name System\">DNS</abbr> servers will be queried in the " .. diff --git a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua index dd619b3143..9a2bd5d201 100644 --- a/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua +++ b/modules/luci-mod-admin-full/luasrc/model/cbi/admin_network/wifi.lua @@ -143,7 +143,7 @@ local found_sta = nil local _, net if wnet:mode() ~= "sta" then for _, net in ipairs(wdev:get_wifinets()) do - if net:mode() == "sta" then + if net:mode() == "sta" and net:get("disabled") ~= "1" then if not found_sta then found_sta = {} found_sta.channel = net:channel() diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm index b7c44f9073..4fc268e66c 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_overview.htm @@ -183,7 +183,7 @@ for( var i = 0; i < st.length; i++ ) { var iw = st[i]; - var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel && iw.mode != 'Unknown'); + var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel && iw.mode != 'Unknown' && !iw.disabled); var p = iw.quality; var q = is_assoc ? p : -1; diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm index 2484fd3c6b..fa0a97b707 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_network/wifi_status.htm @@ -6,7 +6,7 @@ { if (iw && (iw = iw[0])) { - var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel); + var is_assoc = (iw.bssid && iw.bssid != '00:00:00:00:00:00' && iw.channel && !iw.disabled); var p = iw.quality; var q = is_assoc ? p : -1; diff --git a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm index 548b22d167..07a96b2bf0 100644 --- a/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm +++ b/modules/luci-mod-admin-full/luasrc/view/admin_status/index.htm @@ -352,7 +352,7 @@ for (var nidx = 0; nidx < dev.networks.length; nidx++) { var net = dev.networks[nidx]; - var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel); + var is_assoc = (net.bssid != '00:00:00:00:00:00' && net.channel && !net.disabled); var icon; if (!is_assoc) diff --git a/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm b/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm index 42a58f9dd3..fc3948ecc1 100644 --- a/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm +++ b/modules/luci-mod-freifunk/luasrc/view/freifunk/public_status.htm @@ -49,6 +49,32 @@ for _, dev in ipairs(devices) do end local has_iwinfo = pcall(require, "iwinfo") + +-- Find default routes + +local _, r, def4, def6 + +for _, r in ipairs(ip.routes({ type = 1, dest_exact = "0.0.0.0/0" })) do + def4 = { + gateway = r.gw:string(), + dest = r.dest:string(), + dev = r.dev, + metr = r.metric or 0 + } + break +end + +for _, r in ipairs(ip.routes({ type = 1, dest_exact = "::/0" })) do + def6 = { + gateway = r.gw:string(), + dest = r.dest:string(), + dev = r.dev, + metr = r.metric or 0 + } + break +end + + if luci.http.formvalue("status") == "1" then local rv = { } for dev in pairs(netdevs) do @@ -67,30 +93,6 @@ if luci.http.formvalue("status") == "1" then end - -- Find default routes - - local _, r, def4, def6 - - for _, r in ipairs(ip.routes({ type = 1, dest_exact = "0.0.0.0/0" })) do - def4 = { - gateway = r.gw:string(), - dest = r.dest:string(), - dev = r.dev, - metr = r.metric or 0 - } - break - end - - for _, r in ipairs(ip.routes({ type = 1, dest_exact = "::/0" })) do - def6 = { - gateway = r.gw:string(), - dest = r.dest:string(), - dev = r.dev, - metr = r.metric or 0 - } - break - end - rv[#rv+1] = { time = time, uptime = uptime, @@ -297,7 +299,7 @@ end if bitrate ~= "N/A" then bitrate = ( bitrate / 1000 ).."Mb/s" end - local interface = net.iwdata.ifname or "N/A" + local interface = net.iwinfo.ifname or "N/A" %> <tr class="cbi-section-table-row cbi-rowstyle-1"> <td class="cbi-value-field" id="<%=net:ifname()%>-signal"><%=signal_string%></td> @@ -323,7 +325,7 @@ end <div class="cbi-section"> <div class="cbi-section-node"> -<% if not defroutev4 and not defroutev6 then %> +<% if not def4 and not def6 then %> <%:No default routes known.%> <%else%> <table class="cbi-section-table"> @@ -334,23 +336,22 @@ end <th class="cbi-section-table-cell"><%:Metric%></th> </tr> - <% if defroutev4 then %> - + <% if def4 then %> <tr class="cbi-section-table-row cbi-rowstyle-1"> - <td class="cbi-value-field" id="v4dst"><%=defroutev4.dest%></td> - <td class="cbi-value-field" id="v4dev"><%=defroutev4.device%></td> - <td class="cbi-value-field" id="v4gw"><%=defroutev4.gateway%></td> - <td class="cbi-value-field" id="v4metr"><%=defroutev4.metric%></td> + <td class="cbi-value-field" id="v4dst"><%=def4.dest%></td> + <td class="cbi-value-field" id="v4dev"><%=def4.dev%></td> + <td class="cbi-value-field" id="v4gw"><%=def4.gateway%></td> + <td class="cbi-value-field" id="v4metr"><%=def4.metr%></td> </tr> <% end - if defroutev6 then %> + if def6 then %> <tr class="cbi-section-table-row cbi-rowstyle-2"> - <td class="cbi-value-field" id="v6dst"><%=defroutev6.dest%></td> - <td class="cbi-value-field" id="v6dev"><%=defroutev6.device%></td> - <td class="cbi-value-field" id="v6gw"><%=defroutev6.nexthop%></td> - <td class="cbi-value-field" id="v6metr"><%=defroutev6.metric%></td> + <td class="cbi-value-field" id="v6dst"><%=def6.dest%></td> + <td class="cbi-value-field" id="v6dev"><%=def6.dev%></td> + <td class="cbi-value-field" id="v6gw"><%=def6.gateway%></td> + <td class="cbi-value-field" id="v6metr"><%=def6.metr%></td> </tr> <% end %> diff --git a/modules/luci-mod-rpc/luasrc/controller/rpc.lua b/modules/luci-mod-rpc/luasrc/controller/rpc.lua index 862e5839f2..129ca43b51 100644 --- a/modules/luci-mod-rpc/luasrc/controller/rpc.lua +++ b/modules/luci-mod-rpc/luasrc/controller/rpc.lua @@ -49,6 +49,8 @@ function rpc_auth() server.challenge = function(user, pass) local sid, token, secret + require "luci.config" + if sys.user.checkpasswd(user, pass) then local sdat = util.ubus("session", "create", { timeout = luci.config.sauth.sessiontime }) if sdat then |