0
0
mirror of https://github.com/Doodle3D/doodle3d-firmware.git synced 2024-12-22 19:13:49 +01:00

Report failure if wlan associate fails; Fix setting/unsetting boolean config key through API.

This commit is contained in:
Wouter R 2013-07-29 13:48:56 +02:00
parent 6ee8b0193e
commit 1608875891
4 changed files with 27 additions and 16 deletions

View File

@ -11,7 +11,7 @@ function M._global_GET(request, response)
for k,v in pairs(request:getAll()) do for k,v in pairs(request:getAll()) do
local r,m = settings.get(k) local r,m = settings.get(k)
if r then response:addData(k, r) if r ~= nil then response:addData(k, r)
else response:addData(k, "could not read key ('" .. m .. "')") else response:addData(k, "could not read key ('" .. m .. "')")
end end
end end

View File

@ -124,11 +124,16 @@ function M.associate_POST(request, response)
wifi.activateConfig(argSsid) wifi.activateConfig(argSsid)
--netconf.switchConfiguration{ wifiiface="add", apnet="rm", staticaddr="rm", dhcppool="rm", wwwredir="rm", dnsredir="rm", wwwcaptive="rm", wireless="reload" } --netconf.switchConfiguration{ wifiiface="add", apnet="rm", staticaddr="rm", dhcppool="rm", wwwredir="rm", dnsredir="rm", wwwcaptive="rm", wireless="reload" }
netconf.switchConfiguration{ wifiiface="add", apnet="rm", staticaddr="rm", dhcppool="rm", wwwredir="rm", dnsredir="rm", wireless="reload" } netconf.switchConfiguration{ wifiiface="add", apnet="rm", staticaddr="rm", dhcppool="rm", wwwredir="rm", dnsredir="rm", wireless="reload" }
response:setSuccess("wlan associated")
local status = wifi.getDeviceState()
response:addData("ssid", argSsid) response:addData("ssid", argSsid)
if status.ssid and status.ssid == argSsid then
response:setSuccess("wlan associated")
else
response:setFail("could not associate with network (incorrect pass phrase?)")
end
end end
--UNTESTED
function M.disassociate_POST(request, response) function M.disassociate_POST(request, response)
wifi.activateConfig() wifi.activateConfig()
local rv = wifi.restart() local rv = wifi.restart()
@ -145,7 +150,6 @@ function M.openap_POST(request, response)
response:addData("ssid", ssid) response:addData("ssid", ssid)
end end
--UNTESTED
--requires ssid(string) --requires ssid(string)
function M.remove_POST(request, response) function M.remove_POST(request, response)
local argSsid = request:get("ssid") local argSsid = request:get("ssid")

View File

@ -37,7 +37,7 @@ local function kvTableFromArray(argArray)
for _, v in ipairs(argArray) do for _, v in ipairs(argArray) do
local split = v:find("=") local split = v:find("=")
if split ~= nil then if split ~= nil then
args[v:sub(1, split - 1)] = v:sub(split + 1) args[v:sub(1, split - 1)] = urlcode.unescape(v:sub(split + 1))
else else
args[v] = true args[v] = true
end end
@ -101,7 +101,10 @@ local function resolveApiFunction(modname, funcname, requestMethod)
local mod, msg = resolveApiModule(modname) local mod, msg = resolveApiModule(modname)
if mod == nil then if mod == nil then
return nil, msg -- error is indicated by leaving out 'func' key and adding 'notfound'=true
resultData.notfound = true
resultData.msg = msg
return resultData
end end
if (funcname == nil or funcname == '') then funcname = GLOBAL_API_FUNCTION_NAME end --treat empty function name as nil if (funcname == nil or funcname == '') then funcname = GLOBAL_API_FUNCTION_NAME end --treat empty function name as nil
@ -175,7 +178,7 @@ function M.new(postData, debugEnabled)
if debugEnabled and self.requestMethod == 'CMDLINE' then if debugEnabled and self.requestMethod == 'CMDLINE' then
self.pathArgs = arrayFromPath(self.cmdLineArgs['p']) self.pathArgs = arrayFromPath(self.cmdLineArgs['p'])
if self.cmdLineArgs['r'] == 'GET' then if self.cmdLineArgs['r'] == 'GET' or self.cmdLineArgs['r'] == nil then
self.requestMethod = 'GET' self.requestMethod = 'GET'
self.getArgs = self.cmdLineArgs self.getArgs = self.cmdLineArgs
self.getArgs.p, self.getArgs.r = nil, nil self.getArgs.p, self.getArgs.r = nil, nil
@ -197,6 +200,7 @@ function M.new(postData, debugEnabled)
-- Perform module/function resolution -- Perform module/function resolution
local rData = resolveApiFunction(self:getRequestedApiModule(), self:getRequestedApiFunction(), self.requestMethod) local rData = resolveApiFunction(self:getRequestedApiModule(), self:getRequestedApiFunction(), self.requestMethod)
local modFuncInfo = self:getRequestedApiModule() or "<>" .. "/" .. self:getRequestedApiFunction() or "<>"
if rData.func ~= nil then --function (possibly the global one) could be resolved if rData.func ~= nil then --function (possibly the global one) could be resolved
self.resolvedApiFunction = rData.func self.resolvedApiFunction = rData.func
@ -212,9 +216,9 @@ function M.new(postData, debugEnabled)
end end
end end
elseif rData.notfound == true then elseif rData.notfound == true then
self.resolutionError = "module/function '" .. self:getRequestedApiModule() .. "/" .. self:getRequestedApiFunction() .. "' does not exist" self.resolutionError = "module/function '" .. modFuncInfo .. "' does not exist"
else else
self.resolutionError = "module/function '" .. self:getRequestedApiModule() .. "/" .. self:getRequestedApiFunction() .. "' can only be accessed with the " .. rData.accessType .. " method" self.resolutionError = "module/function '" .. modFuncInfo .. "' can only be accessed with the " .. rData.accessType .. " method"
end end
return self return self

View File

@ -188,12 +188,15 @@ function M.set(key, value)
local current = uci:get(UCI_CONFIG_NAME, UCI_CONFIG_SECTION, key) local current = uci:get(UCI_CONFIG_NAME, UCI_CONFIG_SECTION, key)
-- TODO: test if this fixes setting bools (and does not break settings the other types) if base.type == 'bool' then
-- if base.type == 'bool' then if value ~= "" then
-- value = utils.toboolean(value) value = utils.toboolean(value)
-- elseif base.type == 'int' or base.type == 'float' then else
-- value = tonumber(value) value = nil
-- end end
elseif base.type == 'int' or base.type == 'float' then
value = tonumber(value)
end
if fromUciValue(current, base.type) == value then return true end if fromUciValue(current, base.type) == value then return true end