treewide: fix luacheck warnings

This commit is contained in:
bobcanthelpyou 2019-06-16 20:06:45 +02:00
parent 80b6e7f18f
commit 4249d65af7
33 changed files with 100 additions and 98 deletions

View File

@ -5,7 +5,7 @@ local file = '/etc/dropbear/authorized_keys'
local keys = {} local keys = {}
function load_keys() local function load_keys()
for line in io.lines(file) do for line in io.lines(file) do
keys[line] = true keys[line] = true
end end

View File

@ -2,8 +2,6 @@ return function(form, uci)
local pkg_i18n = i18n 'gluon-config-mode-contact-info' local pkg_i18n = i18n 'gluon-config-mode-contact-info'
local site_i18n = i18n 'gluon-site' local site_i18n = i18n 'gluon-site'
local site = require 'gluon.site'
local owner = uci:get_first("gluon-node-info", "owner") local owner = uci:get_first("gluon-node-info", "owner")
local help = site_i18n._translate("gluon-config-mode:contact-help") or pkg_i18n.translate( local help = site_i18n._translate("gluon-config-mode:contact-help") or pkg_i18n.translate(

View File

@ -7,7 +7,8 @@ return function(form, uci)
local util = require 'gluon.util' local util = require 'gluon.util'
local selected_domain = uci:get('gluon', 'core', 'domain') local selected_domain = uci:get('gluon', 'core', 'domain')
local configured = uci:get_first('gluon-setup-mode','setup_mode', 'configured') == '1' or (selected_domain ~= site.default_domain()) local configured = uci:get_first('gluon-setup-mode','setup_mode', 'configured') == '1' or
(selected_domain ~= site.default_domain())
local function hide_domain_code(domain, code) local function hide_domain_code(domain, code)
if configured and code == selected_domain then if configured and code == selected_domain then

View File

@ -9,7 +9,8 @@ M.MapValue = osm.MapValue
function M.help(i18n) function M.help(i18n)
local pkg_i18n = i18n 'gluon-config-mode-geo-location-osm' local pkg_i18n = i18n 'gluon-config-mode-geo-location-osm'
return pkg_i18n.translate( return pkg_i18n.translate(
'You may also select the position on the map displayed below if your computer is connected to the internet at the moment.' 'You may also select the position on the map displayed below '
.. 'if your computer is connected to the internet at the moment.'
) )
end end

View File

@ -43,7 +43,7 @@ return function(form, uci)
end end
end end
local map = {} local map
if osm then if osm then
map = s:option(osm.MapValue, "map", osm.options()) map = s:option(osm.MapValue, "map", osm.options())
map:depends(share_location, true) map:depends(share_location, true)
@ -56,7 +56,9 @@ return function(form, uci)
function o:write(data) function o:write(data)
uci:set("gluon-node-info", location, "latitude", data) uci:set("gluon-node-info", location, "latitude", data)
end end
if osm then
map.lat = o map.lat = o
end
o = s:option(Value, "longitude", pkg_i18n.translate("Longitude"), pkg_i18n.translatef("e.g. %s", "10.689901")) o = s:option(Value, "longitude", pkg_i18n.translate("Longitude"), pkg_i18n.translatef("e.g. %s", "10.689901"))
o.default = uci:get("gluon-node-info", location, "longitude") o.default = uci:get("gluon-node-info", location, "longitude")
@ -65,7 +67,9 @@ return function(form, uci)
function o:write(data) function o:write(data)
uci:set("gluon-node-info", location, "longitude", data) uci:set("gluon-node-info", location, "longitude", data)
end end
if osm then
map.lon = o map.lon = o
end
if show_altitude then if show_altitude then
o = s:option(Value, "altitude", o = s:option(Value, "altitude",

View File

@ -14,7 +14,8 @@ return function(form, uci)
local current_hostname = pretty_hostname.get(uci) local current_hostname = pretty_hostname.get(uci)
local default_hostname = util.default_hostname() local default_hostname = util.default_hostname()
local configured = uci:get_first('gluon-setup-mode', 'setup_mode', 'configured', false) or (current_hostname ~= default_hostname) local configured = uci:get_first('gluon-setup-mode', 'setup_mode', 'configured', false) or
(current_hostname ~= default_hostname)
local s = form:section(Section) local s = form:section(Section)
local o = s:option(Value, "hostname", pkg_i18n.translate("Node name")) local o = s:option(Value, "hostname", pkg_i18n.translate("Node name"))

View File

@ -8,7 +8,6 @@ if sysconfig.lan_ifname or sysconfig.wan_ifname then
end end
local util = require 'gluon.util'
local platform = require 'gluon.platform' local platform = require 'gluon.platform'
local site = require 'gluon.site' local site = require 'gluon.site'

View File

@ -15,7 +15,7 @@ local sysconfig = require 'gluon.sysconfig'
local platform = require 'gluon.platform' local platform = require 'gluon.platform'
local config = site.wifi5.outdoors('preset') local config = site.wifi5.outdoors('preset')
local outdoor = false local outdoor
if sysconfig.gluon_version then if sysconfig.gluon_version then
-- don't enable the outdoor mode after an upgrade -- don't enable the outdoor mode after an upgrade

View File

@ -16,14 +16,12 @@ if not sysconfig.gluon_version then
-- capable of operating in the 2.4 GHz and 5 GHz band need -- capable of operating in the 2.4 GHz and 5 GHz band need
-- to be distributed evenly. -- to be distributed evenly.
local radio_band_count = {band24=0, band5=0} local radio_band_count = {band24=0, band5=0}
util.foreach_radio(uci, function(radio, index, config) util.foreach_radio(uci, function(radio)
local hwmodes = iwinfo.nl80211.hwmodelist(util.find_phy(radio)) local hwmodes = iwinfo.nl80211.hwmodelist(util.find_phy(radio))
if (hwmodes.a or hwmodes.ac) and hwmodes.g then if hwmodes.g and not (hwmodes.a or hwmodes.ac) then
-- Dualband - do nothing in this step
elseif hwmodes.g then
-- 2.4 GHz -- 2.4 GHz
radio_band_count["band24"] = radio_band_count["band24"] + 1 radio_band_count["band24"] = radio_band_count["band24"] + 1
elseif hwmodes.a or hwmodes.ac then elseif (hwmodes.a or hwmodes.ac) and not hwmodes.g then
-- 5 GHz -- 5 GHz
radio_band_count["band5"] = radio_band_count["band5"] + 1 radio_band_count["band5"] = radio_band_count["band5"] + 1
end end
@ -31,7 +29,7 @@ if not sysconfig.gluon_version then
-- Use the number of all fixed 2.4G GHz and 5 GHz radios to -- Use the number of all fixed 2.4G GHz and 5 GHz radios to
-- distribute dualband radios in this step. -- distribute dualband radios in this step.
util.foreach_radio(uci, function(radio, index, config) util.foreach_radio(uci, function(radio)
local radio_name = radio['.name'] local radio_name = radio['.name']
local hwmodes = iwinfo.nl80211.hwmodelist(util.find_phy(radio)) local hwmodes = iwinfo.nl80211.hwmodelist(util.find_phy(radio))
if (hwmodes.a or hwmodes.ac) and hwmodes.g then if (hwmodes.a or hwmodes.ac) and hwmodes.g then

View File

@ -46,7 +46,7 @@ for line in io.lines('/etc/opkg/distfeeds.conf') do
table.insert(distfeeds, line) table.insert(distfeeds, line)
end end
local f = io.open('/etc/opkg/distfeeds.conf', 'w') f = io.open('/etc/opkg/distfeeds.conf', 'w')
for _, line in ipairs(distfeeds) do for _, line in ipairs(distfeeds) do
local name = line:match('^src/gz%s' .. prefix .. '(%S+)%s') local name = line:match('^src/gz%s' .. prefix .. '(%S+)%s')
@ -62,7 +62,7 @@ end
f:close() f:close()
if next(extra) then if next(extra) then
local f = io.open('/etc/opkg/gluon.conf', 'w') f = io.open('/etc/opkg/gluon.conf', 'w')
for k, v in pairs(extra) do for k, v in pairs(extra) do
f:write(string.format('src/gz %s %s\n', k, replace_patterns(v))) f:write(string.format('src/gz %s %s\n', k, replace_patterns(v)))

View File

@ -85,10 +85,9 @@ function M.mac_to_ip(prefix, mac)
local h3 = 0x100 * m5 + tonumber(m6, 16) local h3 = 0x100 * m5 + tonumber(m6, 16)
local h4 = 0x100 * tonumber(m7, 16) + tonumber(m8, 16) local h4 = 0x100 * tonumber(m7, 16) + tonumber(m8, 16)
local prefix, plen = string.match(prefix, '(.*)/(%d+)') prefix = string.match(prefix, '(.*)/%d+')
plen = tonumber(plen, 10)
local p1, p2, p3, p4, p5, p6, p7, p8 = M.IPv6(prefix) local p1, p2, p3, p4 = M.IPv6(prefix)
return string.format("%x:%x:%x:%x:%x:%x:%x:%x/%d", p1, p2, p3, p4, h1, h2, h3, h4, 128) return string.format("%x:%x:%x:%x:%x:%x:%x:%x/%d", p1, p2, p3, p4, h1, h2, h3, h4, 128)
end end

View File

@ -157,7 +157,7 @@ function M.find_phy(config)
end end
end end
local function get_addresses(uci, radio) local function get_addresses(radio)
local phy = M.find_phy(radio) local phy = M.find_phy(radio)
if not phy then if not phy then
return function() end return function() end
@ -200,11 +200,11 @@ function M.generate_mac(i)
return string.format('%02x:%s:%s:%s:%s:%02x', m1, m2, m3, m4, m5, m6) return string.format('%02x:%s:%s:%s:%s:%02x', m1, m2, m3, m4, m5, m6)
end end
local function get_wlan_mac_from_driver(uci, radio, vif) local function get_wlan_mac_from_driver(radio, vif)
local primary = sysconfig.primary_mac:lower() local primary = sysconfig.primary_mac:lower()
local addresses = {} local addresses = {}
for address in get_addresses(uci, radio) do for address in get_addresses(radio) do
if address:lower() ~= primary then if address:lower() ~= primary then
table.insert(addresses, address) table.insert(addresses, address)
end end
@ -222,8 +222,8 @@ local function get_wlan_mac_from_driver(uci, radio, vif)
end end
end end
function M.get_wlan_mac(uci, radio, index, vif) function M.get_wlan_mac(_, radio, index, vif)
local addr = get_wlan_mac_from_driver(uci, radio, vif) local addr = get_wlan_mac_from_driver(radio, vif)
if addr then if addr then
return addr return addr
end end

View File

@ -3,7 +3,7 @@
local site = require 'gluon.site' local site = require 'gluon.site'
local babelconf='/etc/gluon-babeld.conf' local babelconf='/etc/gluon-babeld.conf'
file = io.open(babelconf, "w") local file = io.open(babelconf, "w")
file:write("ipv6-subtrees true\n") file:write("ipv6-subtrees true\n")
file:write("reflect-kernel-metric true\n") file:write("reflect-kernel-metric true\n")
file:write("export-table 254\n") file:write("export-table 254\n")

View File

@ -5,7 +5,6 @@
local site = require 'gluon.site' local site = require 'gluon.site'
local sysconfig = require 'gluon.sysconfig'
local util = require 'gluon.util' local util = require 'gluon.util'
local uci = require('simple-uci').cursor() local uci = require('simple-uci').cursor()
@ -39,7 +38,7 @@ local networks = uci:get_list('firewall', 'mesh', 'network')
util.add_to_set(networks, 'client') util.add_to_set(networks, 'client')
uci:set_list('firewall', 'mesh', 'network', networks) uci:set_list('firewall', 'mesh', 'network', networks)
local networks = uci:get_list('firewall', 'drop', 'network') networks = uci:get_list('firewall', 'drop', 'network')
util.remove_from_set(networks, 'client') util.remove_from_set(networks, 'client')
uci:set_list('firewall', 'drop', 'network', networks) uci:set_list('firewall', 'drop', 'network', networks)

View File

@ -2,7 +2,8 @@ local fastd_methods = {'salsa2012+gmac', 'salsa2012+umac', 'null+salsa2012+gmac'
need_array_of({'mesh_vpn', 'fastd', 'methods'}, fastd_methods) need_array_of({'mesh_vpn', 'fastd', 'methods'}, fastd_methods)
need_boolean(in_site({'mesh_vpn', 'fastd', 'configurable'}), false) need_boolean(in_site({'mesh_vpn', 'fastd', 'configurable'}), false)
need_one_of(in_site({'mesh_vpn', 'fastd', 'syslog_level'}), {'error', 'warn', 'info', 'verbose', 'debug', 'debug2'}, false) need_one_of(in_site({'mesh_vpn', 'fastd', 'syslog_level'}),
{'error', 'warn', 'info', 'verbose', 'debug', 'debug2'}, false)
local function check_peer(k) local function check_peer(k)
need_alphanumeric_key(k) need_alphanumeric_key(k)

View File

@ -1,4 +1,4 @@
if need_table(in_domain({'domain_switch'}), check_domain_switch, false) then if need_table(in_domain({'domain_switch'}), nil, false) then
need_domain_name(in_domain({'domain_switch', 'target_domain'})) need_domain_name(in_domain({'domain_switch', 'target_domain'}))
need_number(in_domain({'domain_switch', 'switch_after_offline_mins'})) need_number(in_domain({'domain_switch', 'switch_after_offline_mins'}))
need_number(in_domain({'domain_switch', 'switch_time'})) need_number(in_domain({'domain_switch', 'switch_time'}))

View File

@ -1,8 +1,6 @@
#!/usr/bin/lua #!/usr/bin/lua
local json = require 'jsonc'
local site = require 'gluon.site' local site = require 'gluon.site'
local unistd = require 'posix.unistd'
local cronfile = "/usr/lib/micron.d/gluon-scheduled-domain-switch" local cronfile = "/usr/lib/micron.d/gluon-scheduled-domain-switch"

View File

@ -6,7 +6,7 @@ local util = require 'gluon.util'
local site = require 'gluon.site' local site = require 'gluon.site'
-- Returns true if node was offline long enough to perform domain switch -- Returns true if node was offline long enough to perform domain switch
function switch_after_min_reached() local function switch_after_min_reached()
if not unistd.access("/tmp/gluon_offline") then if not unistd.access("/tmp/gluon_offline") then
return false return false
end end
@ -33,7 +33,7 @@ function switch_after_min_reached()
end end
-- Returns true in case switch time has passed -- Returns true in case switch time has passed
function switch_time_passed() local function switch_time_passed()
local current_time = os.time() local current_time = os.time()
local switch_time = site.domain_switch.switch_time() local switch_time = site.domain_switch.switch_time()

View File

@ -15,10 +15,11 @@ package 'gluon-web-admin'
local util = require 'gluon.util' local util = require 'gluon.util'
local unistd = require 'posix.unistd' local unistd = require 'posix.unistd'
local file
local tmpfile = "/tmp/firmware.img" local tmpfile = "/tmp/firmware.img"
local function filehandler(meta, chunk, eof) local function filehandler(_, chunk, eof)
if not unistd.access(tmpfile) and not file and chunk and #chunk > 0 then if not unistd.access(tmpfile) and not file and chunk and #chunk > 0 then
file = io.open(tmpfile, "w") file = io.open(tmpfile, "w")
end end
@ -33,7 +34,6 @@ end
local function action_upgrade(http, renderer) local function action_upgrade(http, renderer)
local fcntl = require 'posix.fcntl' local fcntl = require 'posix.fcntl'
local stat = require 'posix.sys.stat' local stat = require 'posix.sys.stat'
local wait = require 'posix.sys.wait'
local function fork_exec(argv) local function fork_exec(argv)
local pid = unistd.fork() local pid = unistd.fork()
@ -63,15 +63,15 @@ local function action_upgrade(http, renderer)
end end
end end
local function image_supported(tmpfile) local function image_supported(supported_tmpfile)
return (os.execute(string.format("exec /sbin/sysupgrade -T %q >/dev/null", tmpfile)) == 0) return (os.execute(string.format("exec /sbin/sysupgrade -T %q >/dev/null", supported_tmpfile)) == 0)
end end
local function storage_size() local function storage_size()
local size = 0 local size = 0
if unistd.access("/proc/mtd") then if unistd.access("/proc/mtd") then
for l in io.lines("/proc/mtd") do for l in io.lines("/proc/mtd") do
local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"') local s, n = l:match('^[^%s]+%s+([^%s]+)%s+[^%s]+%s+"([^%s]+)"')
if n == "linux" then if n == "linux" then
size = tonumber(s, 16) size = tonumber(s, 16)
break break
@ -79,7 +79,7 @@ local function action_upgrade(http, renderer)
end end
elseif unistd.access("/proc/partitions") then elseif unistd.access("/proc/partitions") then
for l in io.lines("/proc/partitions") do for l in io.lines("/proc/partitions") do
local x, y, b, n = l:match('^%s*(%d+)%s+(%d+)%s+([^%s]+)%s+([^%s]+)') local b, n = l:match('^%s*%d+%s+%d+%s+([^%s]+)%s+([^%s]+)')
if b and n and not n:match('[0-9]') then if b and n and not n:match('[0-9]') then
size = tonumber(b) * 1024 size = tonumber(b) * 1024
break break
@ -89,8 +89,8 @@ local function action_upgrade(http, renderer)
return size return size
end end
local function image_checksum(tmpfile) local function image_checksum(checksum_tmpfile)
return (util.exec(string.format("exec sha256sum %q", tmpfile)):match("^([^%s]+)")) return (util.exec(string.format("exec sha256sum %q", checksum_tmpfile)):match("^([^%s]+)"))
end end

View File

@ -57,7 +57,7 @@ local f_password = Form(translate("Password"), translate(
) )
f_password.reset = false f_password.reset = false
local s = f_password:section(Section) s = f_password:section(Section)
local pw1 = s:option(Value, "pw1", translate("Password")) local pw1 = s:option(Value, "pw1", translate("Password"))
pw1.password = true pw1.password = true

View File

@ -22,18 +22,18 @@ function mode:write(data)
-- methods will be recreated and filled with the original values from site.mesh_vpn.fastd.methods -- methods will be recreated and filled with the original values from site.mesh_vpn.fastd.methods
-- if performance mode was selected, and the method 'null' was not present in the original table, it will be added -- if performance mode was selected, and the method 'null' was not present in the original table, it will be added
local methods = {} local site_methods = {}
if data == 'performance' then if data == 'performance' then
table.insert(methods, 'null') table.insert(site_methods, 'null')
end end
for _, method in ipairs(site.mesh_vpn.fastd.methods()) do for _, method in ipairs(site.mesh_vpn.fastd.methods()) do
if method ~= 'null' then if method ~= 'null' then
table.insert(methods, method) table.insert(site_methods, method)
end end
end end
uci:set('fastd', 'mesh_vpn', 'method', methods) uci:set('fastd', 'mesh_vpn', 'method', site_methods)
uci:save('fastd') uci:save('fastd')
uci:commit('fastd') uci:commit('fastd')

View File

@ -13,7 +13,7 @@ local function load(filename, i18n)
local func = assert(loadfile(filename)) local func = assert(loadfile(filename))
setfenv(func, setmetatable({}, {__index = setfenv(func, setmetatable({}, {__index =
function(tbl, key) function(_, key)
return classes[key] or i18n[key] or _G[key] return classes[key] or i18n[key] or _G[key]
end end
})) }))

View File

@ -145,7 +145,7 @@ function AbstractValue:depends(field, value)
table.insert(self.deps, deps) table.insert(self.deps, deps)
end end
function AbstractValue:deplist(section, deplist) function AbstractValue:deplist(_, deplist)
local deps = {} local deps = {}
for _, d in ipairs(deplist or self.deps) do for _, d in ipairs(deplist or self.deps) do
@ -257,7 +257,8 @@ function AbstractValue:handle()
end end
end end
function AbstractValue:write(value) -- will be overridden: write(value)
function AbstractValue:write()
end end

View File

@ -42,7 +42,7 @@ ipv4_gateway.default = wan.gateway
ipv4_gateway.datatype = "ip4addr" ipv4_gateway.datatype = "ip4addr"
local s = f:section(Section) s = f:section(Section)
local ipv6 = s:option(ListValue, "ipv6", translate("IPv6")) local ipv6 = s:option(ListValue, "ipv6", translate("IPv6"))
ipv6:value("dhcpv6", translate("Automatic (RA/DHCPv6)")) ipv6:value("dhcpv6", translate("Automatic (RA/DHCPv6)"))
@ -61,7 +61,7 @@ ipv6_gateway.default = wan6.ip6gw
ipv6_gateway.datatype = "ip6addr" ipv6_gateway.datatype = "ip6addr"
if dns_static then if dns_static then
local s = f:section(Section) s = f:section(Section)
local dns = s:option(DynamicList, "dns", translate("Static DNS servers")) local dns = s:option(DynamicList, "dns", translate("Static DNS servers"))
dns.default = uci:get_list("gluon-wan-dnsmasq", dns_static, "server") dns.default = uci:get_list("gluon-wan-dnsmasq", dns_static, "server")
@ -74,7 +74,7 @@ if dns_static then
end end
end end
local s = f:section(Section) s = f:section(Section)
local mesh_wan = s:option(Flag, "mesh_wan", translate("Enable meshing on the WAN interface")) local mesh_wan = s:option(Flag, "mesh_wan", translate("Enable meshing on the WAN interface"))
mesh_wan.default = not uci:get_bool("network", "mesh_wan", "disabled") mesh_wan.default = not uci:get_bool("network", "mesh_wan", "disabled")
@ -84,7 +84,7 @@ function mesh_wan:write(data)
end end
if sysconfig.lan_ifname then if sysconfig.lan_ifname then
local s = f:section(Section) s = f:section(Section)
local mesh_lan = s:option(Flag, "mesh_lan", translate("Enable meshing on the LAN interface")) local mesh_lan = s:option(Flag, "mesh_lan", translate("Enable meshing on the LAN interface"))
mesh_lan.default = not uci:get_bool("network", "mesh_lan", "disabled") mesh_lan.default = not uci:get_bool("network", "mesh_lan", "disabled")
@ -107,24 +107,24 @@ if sysconfig.lan_ifname then
end end
local section local section
uci:foreach("system", "gpio_switch", function(s) uci:foreach("system", "gpio_switch", function(si)
if s[".name"]:match("poe") then if si[".name"]:match("poe") then
if not section then if not section then
section = f:section(Section) section = f:section(Section)
end end
local port = s.name:match("^PoE Power Port(%d*)$") local port = si.name:match("^PoE Power Port(%d*)$")
local name local name
if port then if port then
name = translatef("Enable PoE Power Port %s", port) name = translatef("Enable PoE Power Port %s", port)
else else
name = translate("Enable " .. s.name) name = translate("Enable " .. si.name)
end end
local poe = section:option(Flag, s[".name"], name) local poe = section:option(Flag, si[".name"], name)
poe.default = uci:get_bool("system", s[".name"], "value") poe.default = uci:get_bool("system", si[".name"], "value")
function poe:write(data) function poe:write(data)
uci:set("system", s[".name"], "value", data) uci:set("system", si[".name"], "value", data)
end end
end end
end) end)

View File

@ -17,8 +17,8 @@ s = f:section(Section, nil, translate(
o = s:option(ListValue, "role", translate("Role")) o = s:option(ListValue, "role", translate("Role"))
o.default = role o.default = role
for _, role in ipairs(site.roles.list()) do for _, role_value in ipairs(site.roles.list()) do
o:value(role, site_i18n.translate('gluon-web-node-role:role:' .. role)) o:value(role, site_i18n.translate('gluon-web-node-role:role:' .. role_value))
end end
function o:write(data) function o:write(data)

View File

@ -1,5 +1,4 @@
local iwinfo = require 'iwinfo' local iwinfo = require 'iwinfo'
local site = require 'gluon.site'
local uci = require("simple-uci").cursor() local uci = require("simple-uci").cursor()
local util = require 'gluon.util' local util = require 'gluon.util'

View File

@ -109,8 +109,8 @@ local function dispatch(config, http, request)
return _node({...}) return _node({...})
end, end,
entry = function(path, target, title, order) entry = function(entry_path, target, title, order)
local c = _node(path, true) local c = _node(entry_path, true)
c.target = target c.target = target
c.title = title c.title = title
@ -204,7 +204,7 @@ return function(config, http)
table.insert(request, node) table.insert(request, node)
end end
ok, err = pcall(dispatch, config, http, request) local ok, err = pcall(dispatch, config, http, request)
if not ok then if not ok then
http:status(500, "Internal Server Error") http:status(500, "Internal Server Error")
http:prepare_content("text/plain") http:prepare_content("text/plain")

View File

@ -53,7 +53,7 @@ end
function Http:getcookie(name) function Http:getcookie(name)
local c = string.gsub(";" .. (self:getenv("HTTP_COOKIE") or "") .. ";", "%s*;%s*", ";") local c = string.gsub(";" .. (self:getenv("HTTP_COOKIE") or "") .. ";", "%s*;%s*", ";")
local p = ";" .. name .. "=(.-);" local p = ";" .. name .. "=(.-);"
local i, j, value = c:find(p) local _, _, value = c:find(p)
return value and protocol.urldecode(value) return value and protocol.urldecode(value)
end end

View File

@ -124,13 +124,13 @@ local function mimedecode_message_body(src, msg, filecb)
local store = nil local store = nil
local lchunk = nil local lchunk = nil
local function parse_headers(chunk, field) local function parse_headers(chunk, pfield)
local stat local stat
repeat repeat
chunk, stat = chunk:gsub( chunk, stat = chunk:gsub(
"^([A-Z][A-Za-z0-9%-_]+): +([^\r\n]+)\r\n", "^([A-Z][A-Za-z0-9%-_]+): +([^\r\n]+)\r\n",
function(k,v) function(k,v)
field.headers[k] = v pfield.headers[k] = v
return "" return ""
end end
) )
@ -140,26 +140,26 @@ local function mimedecode_message_body(src, msg, filecb)
-- End of headers -- End of headers
if stat > 0 then if stat > 0 then
if field.headers["Content-Disposition"] then if pfield.headers["Content-Disposition"] then
if field.headers["Content-Disposition"]:match("^form%-data; ") then if pfield.headers["Content-Disposition"]:match("^form%-data; ") then
field.name = field.headers["Content-Disposition"]:match('name="(.-)"') pfield.name = pfield.headers["Content-Disposition"]:match('name="(.-)"')
field.file = field.headers["Content-Disposition"]:match('filename="(.+)"$') pfield.file = pfield.headers["Content-Disposition"]:match('filename="(.+)"$')
end end
end end
if not field.headers["Content-Type"] then if not pfield.headers["Content-Type"] then
field.headers["Content-Type"] = "text/plain" pfield.headers["Content-Type"] = "text/plain"
end end
if field.name then if pfield.name then
initval(msg.params, field.name) initval(msg.params, pfield.name)
if field.file then if pfield.file then
appendval(msg.params, field.name, field.file) appendval(msg.params, pfield.name, pfield.file)
store = filecb store = filecb
else else
store = function(hdr, buf, eof) store = function(_, buf, _)
appendval(msg.params, field.name, buf) appendval(msg.params, pfield.name, buf)
end end
end end
else else
@ -197,6 +197,7 @@ local function mimedecode_message_body(src, msg, filecb)
if spos then if spos then
local predata = data:sub(1, spos - 1) local predata = data:sub(1, spos - 1)
local eof
if inhdr then if inhdr then
predata, eof = parse_headers(predata, field) predata, eof = parse_headers(predata, field)
@ -225,11 +226,12 @@ local function mimedecode_message_body(src, msg, filecb)
-- We found at least some boundary. Save -- We found at least some boundary. Save
-- the unparsed remaining data for the -- the unparsed remaining data for the
-- next chunk. -- next chunk.
lchunk, data = data, nil lchunk = data
else else
-- There was a complete chunk without a boundary. Parse it as headers or -- There was a complete chunk without a boundary. Parse it as headers or
-- append it as data, depending on our current state. -- append it as data, depending on our current state.
if inhdr then if inhdr then
local eof
lchunk, eof = parse_headers(data, field) lchunk, eof = parse_headers(data, field)
inhdr = not eof inhdr = not eof
else else
@ -240,7 +242,7 @@ local function mimedecode_message_body(src, msg, filecb)
if store then if store then
store(field, lchunk, false) store(field, lchunk, false)
end end
lchunk, chunk = chunk, nil lchunk = chunk
end end
end end
end end

View File

@ -13,7 +13,7 @@ return function(config)
return string.format('%s/%s.%s.lmo', i18ndir, pkg, lang) return string.format('%s/%s.%s.lmo', i18ndir, pkg, lang)
end end
local function no_translation(key) local function no_translation()
return nil return nil
end end

View File

@ -44,13 +44,13 @@ return function(config, env)
translate = t.translate, translate = t.translate,
translatef = t.translatef, translatef = t.translatef,
_translate = t._translate, _translate = t._translate,
include = function(name) include = function(include_name)
ctx.render(name, scope, pkg) ctx.render(include_name, scope, pkg)
end, end,
} }
setfenv(template, setmetatable({}, { setfenv(template, setmetatable({}, {
__index = function(tbl, key) __index = function(_, key)
return scope[key] or locals[key] or env[key] return scope[key] or locals[key] or env[key]
end end
})) }))

View File

@ -37,7 +37,7 @@ local site, domain_code, domain, conf
local function merge(a, b) local function merge(a, b)
local function is_array(t) local function is_array(t)
local n = 0 local n = 0
for k, v in pairs(t) do for _ in pairs(t) do
n = n + 1 n = n + 1
end end
return n == #t return n == #t
@ -216,12 +216,12 @@ local function check_chanlist(channels)
return function(chanlist) return function(chanlist)
for group in chanlist:gmatch("%S+") do for group in chanlist:gmatch("%S+") do
if group:match("^%d+$") then if group:match("^%d+$") then
channel = tonumber(group) local channel = tonumber(group)
if not is_valid_channel(channel) then if not is_valid_channel(channel) then
return false return false
end end
elseif group:match("^%d+-%d+$") then elseif group:match("^%d+-%d+$") then
from, to = group:match("^(%d+)-(%d+)$") local from, to = group:match("^(%d+)-(%d+)$")
from = tonumber(from) from = tonumber(from)
to = tonumber(to) to = tonumber(to)
if from >= to then if from >= to then
@ -344,8 +344,9 @@ end
function need_chanlist(path, channels, required) function need_chanlist(path, channels, required)
local valid_chanlist = check_chanlist(channels) local valid_chanlist = check_chanlist(channels)
return need(path, valid_chanlist, required, 'be a space-separated list of WiFi channels or channel-ranges (separated by a hyphen). ' .. return need(path, valid_chanlist, required,
'Valid channels are: ' .. array_to_string(channels)) 'be a space-separated list of WiFi channels or channel-ranges (separated by a hyphen). '
.. 'Valid channels are: ' .. array_to_string(channels))
end end
function need_domain_name(path) function need_domain_name(path)