Fix outdated configuration key names; add API function to get all configuration keys at once; remove logging of request arguments to prevent printing large blocks of gcode.

This commit is contained in:
Wouter R 2013-07-27 00:25:43 +02:00
parent 0f4b938444
commit efaf58c880
5 changed files with 47 additions and 24 deletions

View File

@ -47,8 +47,10 @@ end
local function main()
local rq = RequestClass.new(postData, confDefaults.DEBUG_API)
-- log:info("received request of type " .. rq:getRequestMethod() .. " for " .. (rq:getRequestedApiModule() or "<unknown>")
-- .. "/" .. (rq:getRealApiFunctionName() or "<unknown>") .. " with arguments: " .. util.dump(rq:getAll()))
log:info("received request of type " .. rq:getRequestMethod() .. " for " .. (rq:getRequestedApiModule() or "<unknown>")
.. "/" .. (rq:getRealApiFunctionName() or "<unknown>") .. " with arguments: " .. util.dump(rq:getAll()))
.. "/" .. (rq:getRealApiFunctionName() or "<unknown>"))
if rq:getRequestMethod() ~= 'CMDLINE' then
log:info("remote IP/port: " .. rq:getRemoteHost() .. "/" .. rq:getRemotePort())
log:debug("user agent: " .. rq:getUserAgent())

View File

@ -96,7 +96,7 @@ end
--[[ Add/remove access point network ]]
function reconf.apnet_add_noreload(dirtyList) reconf.apnet_add(dirtyList, true) end
function reconf.apnet_add(dirtyList, noReload)
local ourSsid = wifi.getSubstitutedSsid(settings.get('apSsid'))
local ourSsid = wifi.getSubstitutedSsid(settings.get('network.ap.ssid'))
local sname = nil
uci:foreach('wireless', 'wifi-iface', function(s)
if s.ssid == ourSsid then sname = s['.name']; return false end
@ -117,7 +117,7 @@ end
function reconf.apnet_rm(dirtyList)
local sname = nil
uci:foreach('wireless', 'wifi-iface', function(s)
if s.ssid == wifi.getSubstitutedSsid(settings.get('apSsid')) then sname = s['.name']; return false end
if s.ssid == wifi.getSubstitutedSsid(settings.get('network.ap.ssid')) then sname = s['.name']; return false end
end)
if sname == nil then return log:info("AP network configuration does not exist, nothing to remove") end
uci:delete('wireless', sname)
@ -132,8 +132,8 @@ function reconf.staticaddr_add(dirtyList)
--NOTE: 'type = "bridge"' should -not- be added as this prevents defining a separate dhcp pool (http://wiki.openwrt.org/doc/recipes/routedap)
M.uciTableSet('network', wifi.NET, {
proto = 'static',
ipaddr = settings.get('apAddress'),
netmask = settings.get('apNetmask')
ipaddr = settings.get('network.ap.address'),
netmask = settings.get('network.ap.netmask')
})
bothBits(dirtyList, 'network')
end
@ -180,7 +180,7 @@ end
--[[ Add/remove redirecton of all DNS requests to self ]]
function reconf.dnsredir_add(dirtyList)
local redirText = '/#/' .. settings.get('apAddress')
local redirText = '/#/' .. settings.get('network.ap.address')
local sname = utils.getUciSectionName('dhcp', 'dnsmasq')
if sname == nil then return log:error("dhcp config does not contain a dnsmasq section") end
if uci:get('dhcp', sname, 'address') ~= nil then return log:debug("DNS address redirection already in place, not re-adding", false) end
@ -228,7 +228,7 @@ function reconf.natreflect_add(dirtyList)
proto = 'tcp',
src_dport = '80',
dest_port = '80',
dest_ip = settings.get('apAddress'),
dest_ip = settings.get('network.ap.address'),
target = 'DNAT'
})
bothBits(dirtyList, 'firewall')

View File

@ -8,7 +8,6 @@ local M = {
function M._global_GET(request, response)
response:setSuccess()
--TODO: we need a function to list all configuration keys
for k,v in pairs(request:getAll()) do
local r,m = settings.get(k)
@ -30,4 +29,10 @@ function M._global_POST(request, response)
end
end
function M.all_GET(request, response)
for k,v in pairs(settings.getAll()) do
response:addData(k,v)
end
end
return M

View File

@ -1,6 +1,5 @@
local s = require("util.settings")
local u = require("util.utils")
local l = require("util.logger")
local settings = require("util.settings")
local utils = require("util.utils")
local netconf = require("network.netconfig")
local wifi = require("network.wlanconfig")
local ResponseClass = require("rest.response")
@ -17,8 +16,8 @@ end
--accepts API argument 'nofilter'(bool) to disable filtering of APs and 'self'
--accepts with_raw(bool) to include raw table dump
function M.scan(request, response)
local noFilter = u.toboolean(request:get("nofilter"))
local withRaw = u.toboolean(request:get("with_raw"))
local noFilter = utils.toboolean(request:get("nofilter"))
local withRaw = utils.toboolean(request:get("with_raw"))
local sr = wifi.getScanInfo()
local si, se
@ -26,7 +25,7 @@ function M.scan(request, response)
response:setSuccess("")
local netInfoList = {}
for _, se in ipairs(sr) do
if noFilter or se.mode ~= "ap" and se.ssid ~= wifi.getSubstitutedSsid(s.get('apSsid')) then
if noFilter or se.mode ~= "ap" and se.ssid ~= wifi.getSubstitutedSsid(settings.get('network.ap.ssid')) then
local netInfo = {}
netInfo["ssid"] = se.ssid
@ -37,7 +36,7 @@ function M.scan(request, response)
netInfo["signal"] = se.signal
netInfo["quality"] = se.quality
netInfo["quality_max"] = se.quality_max
if withRaw then netInfo["_raw"] = u.dump(se) end
if withRaw then netInfo["_raw"] = utils.dump(se) end
table.insert(netInfoList, netInfo)
end
@ -52,8 +51,8 @@ end
--accepts API argument 'nofilter'(bool) to disable filtering of APs and 'self'
--accepts with_raw(bool) to include raw table dump
function M.known(request, response)
local noFilter = u.toboolean(request:get("nofilter"))
local withRaw = u.toboolean(request:get("with_raw"))
local noFilter = utils.toboolean(request:get("nofilter"))
local withRaw = utils.toboolean(request:get("with_raw"))
response:setSuccess()
local netInfoList = {}
@ -64,7 +63,7 @@ function M.known(request, response)
netInfo["bssid"] = net.bssid or ""
netInfo["channel"] = net.channel or ""
netInfo["encryption"] = net.encryption
if withRaw then netInfo["_raw"] = u.dump(net) end
if withRaw then netInfo["_raw"] = utils.dump(net) end
table.insert(netInfoList, netInfo)
end
end
@ -74,7 +73,7 @@ end
--accepts with_raw(bool) to include raw table dump
function M.status(request, response)
local withRaw = u.toboolean(request:get("with_raw"))
local withRaw = utils.toboolean(request:get("with_raw"))
local ds = wifi.getDeviceState()
response:setSuccess()
@ -88,10 +87,9 @@ function M.status(request, response)
response:addData("txpower", ds.txpower)
response:addData("signal", ds.signal)
response:addData("noise", ds.noise)
if withRaw then response:addData("_raw", u.dump(ds)) end
if withRaw then response:addData("_raw", utils.dump(ds)) end
end
--UNTESTED
--requires ssid(string), accepts phrase(string), recreate(bool)
function M.associate_POST(request, response)
local argSsid = request:get("ssid")
@ -138,9 +136,8 @@ function M.disassociate_POST(request, response)
response:addData("wifi_restart_result", rv)
end
--UNTESTED
function M.openap_POST(request, response)
local ssid = wifi.getSubstitutedSsid(s.get('apSsid'))
local ssid = wifi.getSubstitutedSsid(settings.get('network.ap.ssid'))
netconf.switchConfiguration{apnet="add_noreload"}
wifi.activateConfig(ssid)
netconf.switchConfiguration{ wifiiface="add", network="reload", staticaddr="add", dhcppool="add", wwwredir="add", dnsredir="add" }

View File

@ -27,7 +27,15 @@ local ERR_NO_SUCH_KEY = "key does not exist"
-- @return The substituted key, or the key parameter itself if it is not of type 'string'.
local function replaceDots(key)
if type(key) ~= 'string' then return key end
return key:gsub('%.', '_')
local r = key:gsub('%.', '_')
return r
end
-- The inverse of replaceDots()
local function replaceUnderscores(key)
if type(key) ~= 'string' then return key end
local r = key:gsub('_', '%.')
return r
end
local function toUciValue(v, vType)
@ -97,6 +105,17 @@ function M.get(key)
return actualV
end
function M.getAll()
local result = {}
for k,_ in pairs(baseconfig) do
if not k:match('^[A-Z_]*$') then --TEMP: skip 'constants', which should be moved anyway
local key = replaceUnderscores(k)
result[key] = M.get(key)
end
end
return result
end
function M.exists(key)
key = replaceDots(key)
return getBaseKeyTable(key) ~= nil