diff --git a/src/network/signin.lua b/src/network/signin.lua index 5672362..3434afc 100644 --- a/src/network/signin.lua +++ b/src/network/signin.lua @@ -3,37 +3,28 @@ local utils = require('util.utils') local uci = require('uci').cursor() local iwinfo = require('iwinfo') local settings = require('util.settings') -local wlanconfig = require("network.wlanconfig") +local wifi = require("network.wlanconfig") local M = {} --- TODO: this function has been duplicated from rest/api/api_system.lua -local function captureCommandOutput(cmd) - local f = assert(io.popen(cmd, 'r')) - local output = assert(f:read('*all')) - --TODO: test if this works to obtain the return code (http://stackoverflow.com/questions/7607384/getting-return-status-and-program-output) - --local rv = assert(f:close()) - --return output,rv[3] - return output -end - --- Signin to connect.doodle3d.com server -- function M.signin() - local wifiboxid = "henk" - local localip = "10.0.0.99" - local baseurl = "http://192.168.5.220/connect.doodle3d.local/signin.php" + log:info("signin") + local baseurl = "http://connect.doodle3d.com/signin.php" - local ifconfig = captureCommandOutput("ifconfig wlan0"); - --log:info("ifconfig: "..ifconfig) - local localip = ifconfig:match('inet addr:([%d\.]+)') - --log:info("localip: "..utils.dump(localip)) + local localip = wifi.getLocalIP(); + log:info("localip: "..utils.dump(localip)) + if localip == nil then + log:error("signin failed no local ip found") + return + end - local wifiboxid = wlanconfig.getSubstitutedSsid(settings.get('network.cl.wifiboxid')) - --log:info("wifiboxid: "..utils.dump(wifiboxid)) + local wifiboxid = wifi.getSubstitutedSsid(settings.get('network.cl.wifiboxid')) + log:info("wifiboxid: "..utils.dump(wifiboxid)) local cmd = "wget -q -O - "..baseurl.."?wifiboxid="..wifiboxid.."\\&localip="..localip; - local output = captureCommandOutput(cmd); + local output = utils.captureCommandOutput(cmd); log:info("signin: "..output) return 0 diff --git a/src/network/wlanconfig.lua b/src/network/wlanconfig.lua index 8638b31..eab892a 100644 --- a/src/network/wlanconfig.lua +++ b/src/network/wlanconfig.lua @@ -113,6 +113,13 @@ function M.getMacAddress() return out:upper() end +--returns the wireless local ip address +function M.getLocalIP() + local ifconfig, rv = utils.captureCommandOutput("ifconfig wlan0"); + local localip = ifconfig:match('inet addr:([%d\.]+)') + return localip; +end + function M.getDeviceName() return deviceName end diff --git a/src/rest/api/api_network.lua b/src/rest/api/api_network.lua index 13caaa2..3ad48ae 100644 --- a/src/rest/api/api_network.lua +++ b/src/rest/api/api_network.lua @@ -88,6 +88,9 @@ function M.status(request, response) response:addData("signal", ds.signal) response:addData("noise", ds.noise) if withRaw then response:addData("_raw", utils.dump(ds)) end + + local localip = wifi.getLocalIP() + response:addData("localip", localip) end --requires ssid(string), accepts phrase(string), recreate(bool) diff --git a/src/rest/api/api_system.lua b/src/rest/api/api_system.lua index 27304d3..6a9d8de 100644 --- a/src/rest/api/api_system.lua +++ b/src/rest/api/api_system.lua @@ -1,18 +1,9 @@ +local utils = require('util.utils') + local M = { isApi = true } - --- TODO: this function has been duplicated from test/test_wlanconfig.lua -local function captureCommandOutput(cmd) - local f = assert(io.popen(cmd, 'r')) - local output = assert(f:read('*all')) - --TODO: test if this works to obtain the return code (http://stackoverflow.com/questions/7607384/getting-return-status-and-program-output) - --local rv = assert(f:close()) - --return output,rv[3] - return output -end - function M._global(request, response) response:setSuccess() end @@ -24,13 +15,13 @@ function M.fwversions(request, response) response:setSuccess() - output = captureCommandOutput(opkg .. ' list-installed wifibox') + output = utils.captureCommandOutput(opkg .. ' list-installed wifibox') local version = output:match('^wifibox %- (.*)\n$') response:addData('current', version) rv = os.execute(opkg .. ' update >/dev/null') if rv == 0 then - output = captureCommandOutput(opkg .. ' list wifibox') + output = utils.captureCommandOutput(opkg .. ' list wifibox') local versions = {} for v in output:gmatch('wifibox %- (%d+\.%d+\.%d+%-%d+) %- ') do versions[#versions+1] = v diff --git a/src/script/signin.sh b/src/script/signin.sh index c6badf6..7552f06 100755 --- a/src/script/signin.sh +++ b/src/script/signin.sh @@ -1,5 +1,6 @@ #!/bin/sh +sleep 5s while true; do /usr/share/lua/wifibox/script/d3dapi signin > /dev/null 2> /dev/null diff --git a/src/util/utils.lua b/src/util/utils.lua index 32dd1ef..674794a 100644 --- a/src/util/utils.lua +++ b/src/util/utils.lua @@ -103,4 +103,12 @@ function M.readFile(filePath) return res end +-- TODO: this function has been duplicated from rest/api/api_system.lua +function M.captureCommandOutput(cmd) + local f = assert(io.popen(cmd, 'r')) + local output = assert(f:read('*all')) + f:close() + return output; +end + return M