treewide: fix luacheck warnings
This commit is contained in:
		
							parent
							
								
									80b6e7f18f
								
							
						
					
					
						commit
						4249d65af7
					
				| @ -5,7 +5,7 @@ local file = '/etc/dropbear/authorized_keys' | ||||
| 
 | ||||
| local keys = {} | ||||
| 
 | ||||
| function load_keys() | ||||
| local function load_keys() | ||||
|   for line in io.lines(file) do | ||||
|     keys[line] = true | ||||
|   end | ||||
|  | ||||
| @ -2,8 +2,6 @@ return function(form, uci) | ||||
| 	local pkg_i18n = i18n 'gluon-config-mode-contact-info' | ||||
| 	local site_i18n = i18n 'gluon-site' | ||||
| 
 | ||||
| 	local site = require 'gluon.site' | ||||
| 
 | ||||
| 	local owner = uci:get_first("gluon-node-info", "owner") | ||||
| 
 | ||||
| 	local help = site_i18n._translate("gluon-config-mode:contact-help") or pkg_i18n.translate( | ||||
|  | ||||
| @ -7,7 +7,8 @@ return function(form, uci) | ||||
| 	local util = require 'gluon.util' | ||||
| 
 | ||||
| 	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) | ||||
| 		if configured and code == selected_domain then | ||||
|  | ||||
| @ -9,7 +9,8 @@ M.MapValue = osm.MapValue | ||||
| function M.help(i18n) | ||||
| 	local pkg_i18n = i18n 'gluon-config-mode-geo-location-osm' | ||||
| 	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 | ||||
| 
 | ||||
|  | ||||
| @ -43,7 +43,7 @@ return function(form, uci) | ||||
| 		end | ||||
| 	end | ||||
| 
 | ||||
| 	local map = {} | ||||
| 	local map | ||||
| 	if osm then | ||||
| 		map = s:option(osm.MapValue, "map", osm.options()) | ||||
| 		map:depends(share_location, true) | ||||
| @ -56,7 +56,9 @@ return function(form, uci) | ||||
| 	function o:write(data) | ||||
| 		uci:set("gluon-node-info", location, "latitude", data) | ||||
| 	end | ||||
| 	map.lat = o | ||||
| 	if osm then | ||||
| 		map.lat = o | ||||
| 	end | ||||
| 
 | ||||
| 	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") | ||||
| @ -65,7 +67,9 @@ return function(form, uci) | ||||
| 	function o:write(data) | ||||
| 		uci:set("gluon-node-info", location, "longitude", data) | ||||
| 	end | ||||
| 	map.lon = o | ||||
| 	if osm then | ||||
| 		map.lon = o | ||||
| 	end | ||||
| 
 | ||||
| 	if show_altitude then | ||||
| 		o = s:option(Value, "altitude", | ||||
|  | ||||
| @ -14,7 +14,8 @@ return function(form, uci) | ||||
| 
 | ||||
| 	local current_hostname = pretty_hostname.get(uci) | ||||
| 	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 o = s:option(Value, "hostname", pkg_i18n.translate("Node name")) | ||||
|  | ||||
| @ -39,8 +39,8 @@ for _, config in ipairs({'wifi24', 'wifi5'}) do | ||||
| 		elseif config == 'wifi5' then | ||||
| 			local channels = { | ||||
| 				34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, | ||||
| 				64, 96, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118,  | ||||
| 				120, 122, 124, 126, 128, 132, 134, 136, 138, 140, 142, 144,  | ||||
| 				64, 96, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, | ||||
| 				120, 122, 124, 126, 128, 132, 134, 136, 138, 140, 142, 144, | ||||
| 				149, 151, 153, 155, 157, 159, 161, 165, 169, 173 } | ||||
| 			need_one_of({config, 'channel'}, channels) | ||||
| 			need_chanlist({config, 'outdoor_chanlist'}, channels, false) | ||||
|  | ||||
| @ -8,7 +8,6 @@ if sysconfig.lan_ifname or sysconfig.wan_ifname then | ||||
| end | ||||
| 
 | ||||
| 
 | ||||
| local util = require 'gluon.util' | ||||
| local platform = require 'gluon.platform' | ||||
| local site = require 'gluon.site' | ||||
| 
 | ||||
|  | ||||
| @ -15,7 +15,7 @@ local sysconfig = require 'gluon.sysconfig' | ||||
| local platform = require 'gluon.platform' | ||||
| 
 | ||||
| local config = site.wifi5.outdoors('preset') | ||||
| local outdoor = false | ||||
| local outdoor | ||||
| 
 | ||||
| if sysconfig.gluon_version then | ||||
| 	-- don't enable the outdoor mode after an upgrade | ||||
|  | ||||
| @ -16,14 +16,12 @@ if not sysconfig.gluon_version then | ||||
| 	-- capable of operating in the 2.4 GHz and 5 GHz band need | ||||
| 	-- to be distributed evenly. | ||||
| 	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)) | ||||
| 		if (hwmodes.a or hwmodes.ac) and hwmodes.g then | ||||
| 			-- Dualband - do nothing in this step | ||||
| 		elseif hwmodes.g then | ||||
| 		if hwmodes.g and not (hwmodes.a or hwmodes.ac) then | ||||
| 			-- 2.4 GHz | ||||
| 			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 | ||||
| 			radio_band_count["band5"] = radio_band_count["band5"] + 1 | ||||
| 		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 | ||||
| 	-- 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 hwmodes = iwinfo.nl80211.hwmodelist(util.find_phy(radio)) | ||||
| 		if (hwmodes.a or hwmodes.ac) and hwmodes.g then | ||||
|  | ||||
| @ -46,7 +46,7 @@ for line in io.lines('/etc/opkg/distfeeds.conf') do | ||||
| 	table.insert(distfeeds, line) | ||||
| end | ||||
| 
 | ||||
| local f = io.open('/etc/opkg/distfeeds.conf', 'w') | ||||
| f = io.open('/etc/opkg/distfeeds.conf', 'w') | ||||
| 
 | ||||
| for _, line in ipairs(distfeeds) do | ||||
| 	local name = line:match('^src/gz%s' .. prefix .. '(%S+)%s') | ||||
| @ -62,7 +62,7 @@ end | ||||
| f:close() | ||||
| 
 | ||||
| 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 | ||||
| 		f:write(string.format('src/gz %s %s\n', k, replace_patterns(v))) | ||||
|  | ||||
| @ -85,10 +85,9 @@ function M.mac_to_ip(prefix, mac) | ||||
| 	local h3 = 0x100 * m5 + tonumber(m6, 16) | ||||
| 	local h4 = 0x100 * tonumber(m7, 16) + tonumber(m8, 16) | ||||
| 
 | ||||
| 	local prefix, plen = string.match(prefix, '(.*)/(%d+)') | ||||
| 	plen = tonumber(plen, 10) | ||||
| 	prefix = string.match(prefix, '(.*)/%d+') | ||||
| 
 | ||||
| 	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) | ||||
| end | ||||
|  | ||||
| @ -157,7 +157,7 @@ function M.find_phy(config) | ||||
| 	end | ||||
| end | ||||
| 
 | ||||
| local function get_addresses(uci, radio) | ||||
| local function get_addresses(radio) | ||||
| 	local phy = M.find_phy(radio) | ||||
| 	if not phy then | ||||
| 		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) | ||||
| 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 addresses = {} | ||||
| 	for address in get_addresses(uci, radio) do | ||||
| 	for address in get_addresses(radio) do | ||||
| 		if address:lower() ~= primary then | ||||
| 			table.insert(addresses, address) | ||||
| 		end | ||||
| @ -222,8 +222,8 @@ local function get_wlan_mac_from_driver(uci, radio, vif) | ||||
| 	end | ||||
| end | ||||
| 
 | ||||
| function M.get_wlan_mac(uci, radio, index, vif) | ||||
| 	local addr = get_wlan_mac_from_driver(uci, radio, vif) | ||||
| function M.get_wlan_mac(_, radio, index, vif) | ||||
| 	local addr = get_wlan_mac_from_driver(radio, vif) | ||||
| 	if addr then | ||||
| 		return addr | ||||
| 	end | ||||
|  | ||||
| @ -3,7 +3,7 @@ | ||||
| local site = require 'gluon.site' | ||||
| 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("reflect-kernel-metric true\n") | ||||
| file:write("export-table 254\n") | ||||
|  | ||||
| @ -5,7 +5,6 @@ | ||||
| 
 | ||||
| 
 | ||||
| local site = require 'gluon.site' | ||||
| local sysconfig = require 'gluon.sysconfig' | ||||
| local util = require 'gluon.util' | ||||
| local uci = require('simple-uci').cursor() | ||||
| 
 | ||||
| @ -39,7 +38,7 @@ local networks = uci:get_list('firewall', 'mesh', 'network') | ||||
| util.add_to_set(networks, 'client') | ||||
| 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') | ||||
| uci:set_list('firewall', 'drop', 'network', networks) | ||||
| 
 | ||||
|  | ||||
| @ -2,7 +2,8 @@ local fastd_methods = {'salsa2012+gmac', 'salsa2012+umac', 'null+salsa2012+gmac' | ||||
| need_array_of({'mesh_vpn', 'fastd', 'methods'}, fastd_methods) | ||||
| 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) | ||||
| 	need_alphanumeric_key(k) | ||||
|  | ||||
| @ -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_number(in_domain({'domain_switch', 'switch_after_offline_mins'})) | ||||
| 	need_number(in_domain({'domain_switch', 'switch_time'})) | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| #!/usr/bin/lua | ||||
| 
 | ||||
| local json = require 'jsonc' | ||||
| local site = require 'gluon.site' | ||||
| local unistd = require 'posix.unistd' | ||||
| 
 | ||||
| local cronfile = "/usr/lib/micron.d/gluon-scheduled-domain-switch" | ||||
| 
 | ||||
|  | ||||
| @ -6,7 +6,7 @@ local util = require 'gluon.util' | ||||
| local site = require 'gluon.site' | ||||
| 
 | ||||
| -- 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 | ||||
| 		return false | ||||
| 	end | ||||
| @ -33,7 +33,7 @@ function switch_after_min_reached() | ||||
| end | ||||
| 
 | ||||
| -- Returns true in case switch time has passed | ||||
| function switch_time_passed() | ||||
| local function switch_time_passed() | ||||
| 	local current_time = os.time() | ||||
| 	local switch_time = site.domain_switch.switch_time() | ||||
| 
 | ||||
|  | ||||
| @ -15,10 +15,11 @@ package 'gluon-web-admin' | ||||
| local util = require 'gluon.util' | ||||
| local unistd = require 'posix.unistd' | ||||
| 
 | ||||
| local file | ||||
| 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 | ||||
| 		file = io.open(tmpfile, "w") | ||||
| 	end | ||||
| @ -33,7 +34,6 @@ end | ||||
| local function action_upgrade(http, renderer) | ||||
| 	local fcntl = require 'posix.fcntl' | ||||
| 	local stat = require 'posix.sys.stat' | ||||
| 	local wait = require 'posix.sys.wait' | ||||
| 
 | ||||
| 	local function fork_exec(argv) | ||||
| 		local pid = unistd.fork() | ||||
| @ -63,15 +63,15 @@ local function action_upgrade(http, renderer) | ||||
| 		end | ||||
| 	end | ||||
| 
 | ||||
| 	local function image_supported(tmpfile) | ||||
| 		return (os.execute(string.format("exec /sbin/sysupgrade -T %q >/dev/null", tmpfile)) == 0) | ||||
| 	local function image_supported(supported_tmpfile) | ||||
| 		return (os.execute(string.format("exec /sbin/sysupgrade -T %q >/dev/null", supported_tmpfile)) == 0) | ||||
| 	end | ||||
| 
 | ||||
| 	local function storage_size() | ||||
| 		local size = 0 | ||||
| 		if unistd.access("/proc/mtd") then | ||||
| 			for l in io.lines("/proc/mtd") do | ||||
| 				local d, s, e, n = l:match('^([^%s]+)%s+([^%s]+)%s+([^%s]+)%s+"([^%s]+)"') | ||||
| 				local s, n = l:match('^[^%s]+%s+([^%s]+)%s+[^%s]+%s+"([^%s]+)"') | ||||
| 				if n == "linux" then | ||||
| 					size = tonumber(s, 16) | ||||
| 					break | ||||
| @ -79,7 +79,7 @@ local function action_upgrade(http, renderer) | ||||
| 			end | ||||
| 		elseif unistd.access("/proc/partitions") then | ||||
| 			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 | ||||
| 					size = tonumber(b) * 1024 | ||||
| 					break | ||||
| @ -89,8 +89,8 @@ local function action_upgrade(http, renderer) | ||||
| 		return size | ||||
| 	end | ||||
| 
 | ||||
| 	local function image_checksum(tmpfile) | ||||
| 		return (util.exec(string.format("exec sha256sum %q", tmpfile)):match("^([^%s]+)")) | ||||
| 	local function image_checksum(checksum_tmpfile) | ||||
| 		return (util.exec(string.format("exec sha256sum %q", checksum_tmpfile)):match("^([^%s]+)")) | ||||
| 	end | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -57,7 +57,7 @@ local f_password = Form(translate("Password"), translate( | ||||
| ) | ||||
| f_password.reset = false | ||||
| 
 | ||||
| local s = f_password:section(Section) | ||||
| s = f_password:section(Section) | ||||
| 
 | ||||
| local pw1 = s:option(Value, "pw1", translate("Password")) | ||||
| pw1.password = true | ||||
|  | ||||
| @ -22,18 +22,18 @@ function mode:write(data) | ||||
| 
 | ||||
| 	-- 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 | ||||
| 	local methods = {} | ||||
| 	local site_methods = {} | ||||
| 	if data == 'performance' then | ||||
| 		table.insert(methods, 'null') | ||||
| 		table.insert(site_methods, 'null') | ||||
| 	end | ||||
| 
 | ||||
| 	for _, method in ipairs(site.mesh_vpn.fastd.methods()) do | ||||
| 		if method ~= 'null' then | ||||
| 			table.insert(methods, method) | ||||
| 			table.insert(site_methods, method) | ||||
| 		end | ||||
| 	end | ||||
| 
 | ||||
| 	uci:set('fastd', 'mesh_vpn', 'method', methods) | ||||
| 	uci:set('fastd', 'mesh_vpn', 'method', site_methods) | ||||
| 
 | ||||
| 	uci:save('fastd') | ||||
| 	uci:commit('fastd') | ||||
|  | ||||
| @ -13,7 +13,7 @@ local function load(filename, i18n) | ||||
| 	local func = assert(loadfile(filename)) | ||||
| 
 | ||||
| 	setfenv(func, setmetatable({}, {__index = | ||||
| 		function(tbl, key) | ||||
| 		function(_, key) | ||||
| 			return classes[key] or i18n[key] or _G[key] | ||||
| 		end | ||||
| 	})) | ||||
|  | ||||
| @ -145,7 +145,7 @@ function AbstractValue:depends(field, value) | ||||
| 	table.insert(self.deps, deps) | ||||
| end | ||||
| 
 | ||||
| function AbstractValue:deplist(section, deplist) | ||||
| function AbstractValue:deplist(_, deplist) | ||||
| 	local deps = {} | ||||
| 
 | ||||
| 	for _, d in ipairs(deplist or self.deps) do | ||||
| @ -257,7 +257,8 @@ function AbstractValue:handle() | ||||
| 	end | ||||
| end | ||||
| 
 | ||||
| function AbstractValue:write(value) | ||||
| -- will be overridden: write(value) | ||||
| function AbstractValue:write() | ||||
| end | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
| @ -42,7 +42,7 @@ ipv4_gateway.default = wan.gateway | ||||
| ipv4_gateway.datatype = "ip4addr" | ||||
| 
 | ||||
| 
 | ||||
| local s = f:section(Section) | ||||
| s = f:section(Section) | ||||
| 
 | ||||
| local ipv6 = s:option(ListValue, "ipv6", translate("IPv6")) | ||||
| ipv6:value("dhcpv6", translate("Automatic (RA/DHCPv6)")) | ||||
| @ -61,7 +61,7 @@ ipv6_gateway.default = wan6.ip6gw | ||||
| ipv6_gateway.datatype = "ip6addr" | ||||
| 
 | ||||
| if dns_static then | ||||
| 	local s = f:section(Section) | ||||
| 	s = f:section(Section) | ||||
| 
 | ||||
| 	local dns = s:option(DynamicList, "dns", translate("Static DNS servers")) | ||||
| 	dns.default = uci:get_list("gluon-wan-dnsmasq", dns_static, "server") | ||||
| @ -74,7 +74,7 @@ if dns_static then | ||||
| 	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")) | ||||
| mesh_wan.default = not uci:get_bool("network", "mesh_wan", "disabled") | ||||
| @ -84,7 +84,7 @@ function mesh_wan:write(data) | ||||
| end | ||||
| 
 | ||||
| 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")) | ||||
| 	mesh_lan.default = not uci:get_bool("network", "mesh_lan", "disabled") | ||||
| @ -107,24 +107,24 @@ if sysconfig.lan_ifname then | ||||
| end | ||||
| 
 | ||||
| local section | ||||
| uci:foreach("system", "gpio_switch", function(s) | ||||
| 	if s[".name"]:match("poe") then | ||||
| uci:foreach("system", "gpio_switch", function(si) | ||||
| 	if si[".name"]:match("poe") then | ||||
| 		if not section then | ||||
| 			section = f:section(Section) | ||||
| 		end | ||||
| 
 | ||||
| 		local port = s.name:match("^PoE Power Port(%d*)$") | ||||
| 		local port = si.name:match("^PoE Power Port(%d*)$") | ||||
| 		local name | ||||
| 		if port then | ||||
| 			name = translatef("Enable PoE Power Port %s", port) | ||||
| 		else | ||||
| 			name = translate("Enable " .. s.name) | ||||
| 			name = translate("Enable " .. si.name) | ||||
| 		end | ||||
| 		local poe = section:option(Flag, s[".name"], name) | ||||
| 		poe.default = uci:get_bool("system", s[".name"], "value") | ||||
| 		local poe = section:option(Flag, si[".name"], name) | ||||
| 		poe.default = uci:get_bool("system", si[".name"], "value") | ||||
| 
 | ||||
| 		function poe:write(data) | ||||
| 			uci:set("system", s[".name"], "value", data) | ||||
| 			uci:set("system", si[".name"], "value", data) | ||||
| 		end | ||||
| 	end | ||||
| end) | ||||
|  | ||||
| @ -17,8 +17,8 @@ s = f:section(Section, nil, translate( | ||||
| 
 | ||||
| o = s:option(ListValue, "role", translate("Role")) | ||||
| o.default = role | ||||
| for _, role in ipairs(site.roles.list()) do | ||||
| 	o:value(role, site_i18n.translate('gluon-web-node-role:role:' .. role)) | ||||
| for _, role_value in ipairs(site.roles.list()) do | ||||
| 	o:value(role, site_i18n.translate('gluon-web-node-role:role:' .. role_value)) | ||||
| end | ||||
| 
 | ||||
| function o:write(data) | ||||
|  | ||||
| @ -1,5 +1,4 @@ | ||||
| local iwinfo = require 'iwinfo' | ||||
| local site = require 'gluon.site' | ||||
| local uci = require("simple-uci").cursor() | ||||
| local util = require 'gluon.util' | ||||
| 
 | ||||
| @ -158,7 +157,7 @@ end | ||||
| 
 | ||||
| function f:write() | ||||
| 	uci:commit('gluon') | ||||
| 	os.execute('/lib/gluon/upgrade/200-wireless')  | ||||
| 	os.execute('/lib/gluon/upgrade/200-wireless') | ||||
| 	uci:commit('wireless') | ||||
| end | ||||
| 
 | ||||
|  | ||||
| @ -109,8 +109,8 @@ local function dispatch(config, http, request) | ||||
| 					return _node({...}) | ||||
| 				end, | ||||
| 
 | ||||
| 				entry = function(path, target, title, order) | ||||
| 					local c = _node(path, true) | ||||
| 				entry = function(entry_path, target, title, order) | ||||
| 					local c = _node(entry_path, true) | ||||
| 
 | ||||
| 					c.target = target | ||||
| 					c.title  = title | ||||
| @ -204,7 +204,7 @@ return function(config, http) | ||||
| 		table.insert(request, node) | ||||
| 	end | ||||
| 
 | ||||
| 	ok, err = pcall(dispatch, config, http, request) | ||||
| 	local ok, err = pcall(dispatch, config, http, request) | ||||
| 	if not ok then | ||||
| 		http:status(500, "Internal Server Error") | ||||
| 		http:prepare_content("text/plain") | ||||
|  | ||||
| @ -53,7 +53,7 @@ end | ||||
| function Http:getcookie(name) | ||||
| 	local c = string.gsub(";" .. (self:getenv("HTTP_COOKIE") or "") .. ";", "%s*;%s*", ";") | ||||
| 	local p = ";" .. name .. "=(.-);" | ||||
| 	local i, j, value = c:find(p) | ||||
| 	local _, _, value = c:find(p) | ||||
| 	return value and protocol.urldecode(value) | ||||
| end | ||||
| 
 | ||||
|  | ||||
| @ -124,13 +124,13 @@ local function mimedecode_message_body(src, msg, filecb) | ||||
| 	local store  = nil | ||||
| 	local lchunk = nil | ||||
| 
 | ||||
| 	local function parse_headers(chunk, field) | ||||
| 	local function parse_headers(chunk, pfield) | ||||
| 		local stat | ||||
| 		repeat | ||||
| 			chunk, stat = chunk:gsub( | ||||
| 				"^([A-Z][A-Za-z0-9%-_]+): +([^\r\n]+)\r\n", | ||||
| 				function(k,v) | ||||
| 					field.headers[k] = v | ||||
| 					pfield.headers[k] = v | ||||
| 					return "" | ||||
| 				end | ||||
| 			) | ||||
| @ -140,26 +140,26 @@ local function mimedecode_message_body(src, msg, filecb) | ||||
| 
 | ||||
| 		-- End of headers | ||||
| 		if stat > 0 then | ||||
| 			if field.headers["Content-Disposition"] then | ||||
| 				if field.headers["Content-Disposition"]:match("^form%-data; ") then | ||||
| 					field.name = field.headers["Content-Disposition"]:match('name="(.-)"') | ||||
| 					field.file = field.headers["Content-Disposition"]:match('filename="(.+)"$') | ||||
| 			if pfield.headers["Content-Disposition"] then | ||||
| 				if pfield.headers["Content-Disposition"]:match("^form%-data; ") then | ||||
| 					pfield.name = pfield.headers["Content-Disposition"]:match('name="(.-)"') | ||||
| 					pfield.file = pfield.headers["Content-Disposition"]:match('filename="(.+)"$') | ||||
| 				end | ||||
| 			end | ||||
| 
 | ||||
| 			if not field.headers["Content-Type"] then | ||||
| 				field.headers["Content-Type"] = "text/plain" | ||||
| 			if not pfield.headers["Content-Type"] then | ||||
| 				pfield.headers["Content-Type"] = "text/plain" | ||||
| 			end | ||||
| 
 | ||||
| 
 | ||||
| 			if field.name then | ||||
| 				initval(msg.params, field.name) | ||||
| 				if field.file then | ||||
| 					appendval(msg.params, field.name, field.file) | ||||
| 			if pfield.name then | ||||
| 				initval(msg.params, pfield.name) | ||||
| 				if pfield.file then | ||||
| 					appendval(msg.params, pfield.name, pfield.file) | ||||
| 					store = filecb | ||||
| 				else | ||||
| 					store = function(hdr, buf, eof) | ||||
| 						appendval(msg.params, field.name, buf) | ||||
| 					store = function(_, buf, _) | ||||
| 						appendval(msg.params, pfield.name, buf) | ||||
| 					end | ||||
| 				end | ||||
| 			else | ||||
| @ -197,6 +197,7 @@ local function mimedecode_message_body(src, msg, filecb) | ||||
| 
 | ||||
| 				if spos then | ||||
| 					local predata = data:sub(1, spos - 1) | ||||
| 					local eof | ||||
| 
 | ||||
| 					if inhdr then | ||||
| 						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 | ||||
| 				-- the unparsed remaining data for the | ||||
| 				-- next chunk. | ||||
| 				lchunk, data = data, nil | ||||
| 				lchunk = data | ||||
| 			else | ||||
| 				-- There was a complete chunk without a boundary. Parse it as headers or | ||||
| 				-- append it as data, depending on our current state. | ||||
| 				if inhdr then | ||||
| 					local eof | ||||
| 					lchunk, eof = parse_headers(data, field) | ||||
| 					inhdr = not eof | ||||
| 				else | ||||
| @ -240,7 +242,7 @@ local function mimedecode_message_body(src, msg, filecb) | ||||
| 					if store then | ||||
| 						store(field, lchunk, false) | ||||
| 					end | ||||
| 					lchunk, chunk = chunk, nil | ||||
| 					lchunk = chunk | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
|  | ||||
| @ -13,7 +13,7 @@ return function(config) | ||||
| 		return string.format('%s/%s.%s.lmo', i18ndir, pkg, lang) | ||||
| 	end | ||||
| 
 | ||||
| 	local function no_translation(key) | ||||
| 	local function no_translation() | ||||
| 		return nil | ||||
| 	end | ||||
| 
 | ||||
|  | ||||
| @ -44,13 +44,13 @@ return function(config, env) | ||||
| 			translate = t.translate, | ||||
| 			translatef = t.translatef, | ||||
| 			_translate = t._translate, | ||||
| 			include = function(name) | ||||
| 				ctx.render(name, scope, pkg) | ||||
| 			include = function(include_name) | ||||
| 				ctx.render(include_name, scope, pkg) | ||||
| 			end, | ||||
| 		} | ||||
| 
 | ||||
| 		setfenv(template, setmetatable({}, { | ||||
| 			__index = function(tbl, key) | ||||
| 			__index = function(_, key) | ||||
| 				return scope[key] or locals[key] or env[key] | ||||
| 			end | ||||
| 		})) | ||||
|  | ||||
| @ -37,7 +37,7 @@ local site, domain_code, domain, conf | ||||
| local function merge(a, b) | ||||
| 	local function is_array(t) | ||||
| 		local n = 0 | ||||
| 		for k, v in pairs(t) do | ||||
| 		for _ in pairs(t) do | ||||
| 			n = n + 1 | ||||
| 		end | ||||
| 		return n == #t | ||||
| @ -216,12 +216,12 @@ local function check_chanlist(channels) | ||||
| 	return function(chanlist) | ||||
| 		for group in chanlist:gmatch("%S+") do | ||||
| 			if group:match("^%d+$") then | ||||
| 				channel = tonumber(group) | ||||
| 				local channel = tonumber(group) | ||||
| 				if not is_valid_channel(channel) then | ||||
| 					return false | ||||
| 				end | ||||
| 			elseif group:match("^%d+-%d+$") then | ||||
| 				from, to = group:match("^(%d+)-(%d+)$") | ||||
| 				local from, to = group:match("^(%d+)-(%d+)$") | ||||
| 				from = tonumber(from) | ||||
| 				to = tonumber(to) | ||||
| 				if from >= to then | ||||
| @ -344,8 +344,9 @@ end | ||||
| 
 | ||||
| function need_chanlist(path, channels, required) | ||||
| 	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). ' ..  | ||||
| 	'Valid channels are: ' .. array_to_string(channels)) | ||||
| 	return need(path, valid_chanlist, required, | ||||
| 		'be a space-separated list of WiFi channels or channel-ranges (separated by a hyphen). ' | ||||
| 		.. 'Valid channels are: ' .. array_to_string(channels)) | ||||
| end | ||||
| 
 | ||||
| function need_domain_name(path) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user