mirror of
https://github.com/Doodle3D/doodle3d-firmware.git
synced 2024-07-01 05:31:23 +02:00
c3756f5348
Pass along chunk metadata in printer api. Move wifi station mode check from main.lua to signin.lua so it is always run past. Only log postresponsequeue if it is not empty. Conflicts: src/rest/api/api_printer.lua
115 lines
3.2 KiB
Lua
115 lines
3.2 KiB
Lua
--
|
|
-- This file is part of the Doodle3D project (http://doodle3d.com).
|
|
--
|
|
-- @copyright 2013, Doodle3D
|
|
-- @license This software is licensed under the terms of the GNU GPL v2 or later.
|
|
-- See file LICENSE.txt or visit http://www.gnu.org/licenses/gpl.html for full license details.
|
|
|
|
|
|
---
|
|
-- TODO: document
|
|
local log = require('util.logger')
|
|
local utils = require('util.utils')
|
|
local uci = require('uci').cursor()
|
|
local iwinfo = require('iwinfo')
|
|
local settings = require('util.settings')
|
|
local wifi = require("network.wlanconfig")
|
|
local urlcode = require('util.urlcode')
|
|
local status = require('util.status')
|
|
|
|
local M = {}
|
|
|
|
local STATUS_FILE = "signinstatus"
|
|
local MOD_ABBR = "NTSI"
|
|
|
|
local IDLE_STATUS = 1
|
|
local SIGNING_IN_STATUS = 2
|
|
|
|
--- Signin to connect.doodle3d.com server
|
|
--
|
|
function M.signin()
|
|
log:verbose(MOD_ABBR, "signin:signin");
|
|
|
|
local code, msg = M.getStatus()
|
|
--log:verbose(MOD_ABBR, " status: "..utils.dump(code).." "..utils.dump(msg));
|
|
|
|
-- if we are already signin in, skip
|
|
if(code == SIGNING_IN_STATUS) then
|
|
log:verbose(MOD_ABBR, " already signing in, skipping")
|
|
return
|
|
end
|
|
|
|
local ds = wifi.getDeviceState()
|
|
log:verbose(MOD_ABBR, " wifi deviceState.mode: "..utils.dump(ds.mode))
|
|
if ds.mode ~= "sta" then
|
|
log:verbose(MOD_ABBR, " wifi not in station mode, skipping signin")
|
|
return
|
|
end
|
|
|
|
M.setStatus(SIGNING_IN_STATUS,"signing in")
|
|
|
|
local baseurl = "http://connect.doodle3d.com/api/signin.php"
|
|
|
|
local attemptInterval = 1
|
|
local maxAttempts = 20
|
|
local attempt = 0
|
|
|
|
local nextAttemptTime = os.time()
|
|
|
|
local localip = ""
|
|
local signinResponse = ""
|
|
while true do
|
|
if os.time() > nextAttemptTime then
|
|
log:verbose(MOD_ABBR, " signin attempt "..utils.dump(attempt).."/"..utils.dump(maxAttempts))
|
|
local signedin = false
|
|
local localip = wifi.getLocalIP();
|
|
--log:verbose(MOD_ABBR, " localip: "..utils.dump(localip))
|
|
if localip ~= nil then
|
|
|
|
local wifiboxid = wifi.getSubstitutedSsid(settings.get('network.cl.wifiboxid'))
|
|
wifiboxid = urlcode.escape(wifiboxid)
|
|
|
|
local cmd = "wget -q -T 2 -t 1 -O - "..baseurl.."?wifiboxid="..wifiboxid.."\\&localip="..localip;
|
|
signinResponse = utils.captureCommandOutput(cmd);
|
|
log:verbose(MOD_ABBR, " signin response: \n"..utils.dump(signinResponse))
|
|
local success = signinResponse:match('"status":"success"')
|
|
log:verbose(MOD_ABBR, " success: "..utils.dump(success))
|
|
if success ~= nil then
|
|
signedin = true
|
|
else
|
|
log:warning(MOD_ABBR, "signin failed, request failed (response: "..utils.dump(signinResponse)..")")
|
|
end
|
|
else
|
|
log:warning(MOD_ABBR, "signin failed, no local ip found (attempt: "..utils.dump(attempt).."/"..utils.dump(maxAttempts)..")")
|
|
end
|
|
|
|
if signedin then
|
|
break
|
|
else
|
|
attempt = attempt+1
|
|
if attempt >= maxAttempts then
|
|
-- still no localIP; fail
|
|
M.setStatus(IDLE_STATUS,"idle")
|
|
return false
|
|
else
|
|
nextAttemptTime = os.time() + attemptInterval
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
M.setStatus(IDLE_STATUS,"idle")
|
|
return string.len(signinResponse) > 0, signinResponse
|
|
end
|
|
|
|
function M.getStatus()
|
|
return status.get(STATUS_FILE);
|
|
end
|
|
|
|
function M.setStatus(code,msg)
|
|
log:info(MOD_ABBR, "signin:setStatus: "..code.." | "..msg)
|
|
status.set(STATUS_FILE,code,msg);
|
|
end
|
|
|
|
return M
|