OpenWrt_Luci_Lua/Mi_Lua/luci/controller/api/xqpassport.lua
2015-05-09 18:48:46 +08:00

317 lines
11 KiB
Lua

module("luci.controller.api.xqpassport", package.seeall)
function index()
local page = node("api","xqpassport")
page.target = firstchild()
page.title = ("")
page.order = 400
page.sysauth = "admin"
page.sysauth_authenticator = "jsonauth"
page.index = true
entry({"api", "xqpassport"}, firstchild(), (""), 400)
entry({"api", "xqpassport", "login"}, call("passportLogin"), (""), 401, 0x01)
entry({"api", "xqpassport", "userInfo"}, call("getUserInfo"), (""), 402)
entry({"api", "xqpassport", "rigister"}, call("routerRegister"), (""), 405, 0x01)
entry({"api", "xqpassport", "binded"}, call("getBindInfo"), (""), 406, 0x01)
entry({"api", "xqpassport", "plugin_list"}, call("pluginList"), (""), 407)
entry({"api", "xqpassport", "plugin_enable"}, call("pluginEnable"), (""), 408)
entry({"api", "xqpassport", "plugin_disable"}, call("pluginDisable"), (""), 409)
entry({"api", "xqpassport", "plugin_detail"}, call("pluginDetail"), (""), 410)
entry({"api", "xqpassport", "unbound"}, call("unboundRouter"), (""), 411)
end
local LuciHttp = require("luci.http")
local XQErrorUtil = require("xiaoqiang.util.XQErrorUtil")
function getBindInfo()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local XQSysUtil = require("xiaoqiang.util.XQSysUtil")
local uuid = LuciHttp.formvalue("uuid") or ""
local force = tonumber(LuciHttp.formvalue("force") or "0")
local result = {}
local code = 0
local bindUUID = XQSysUtil.getPassportBindInfo()
if bindUUID then
result["bind"] = 1
local info = XQSysUtil.getBindUserInfo()
if info == nil or force ~= 0 then
info = XQNetUtil.getUserInfo(uuid)
end
if info then
if info.miliaoNick and info.miliaoNick ~= "" then
info.aliasNick = info.miliaoNick
end
result["info"] = info
else
info = {}
info["aliasNick"] = bindUUID
info["miliaoIcon"] = ""
info["miliaoIconOrig"] = ""
info["miliaoNick"] = ""
info["userId"] = bindUUID
result["info"] = info
end
else
result["bind"] = 0
end
result["routerName"] = XQSysUtil.getRouterName()
if code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(code)
end
result["code"] = code
LuciHttp.write_json(result)
end
function unboundRouter()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local XQDBUtil = require("xiaoqiang.util.XQDBUtil")
local XQSysUtil = require("xiaoqiang.util.XQSysUtil")
local result = {}
local code = 0
local uuid = LuciHttp.formvalue("uuid")
local password = LuciHttp.formvalue("password")
if uuid == nil or uuid == "" then
uuid = XQSysUtil.getBindUUID()
end
if password ~= nil then
local login = XQNetUtil.xiaomiLogin(uuid,password)
if login and login.code == 0 then
if XQSysUtil.getPassportBindInfo() then
local unbound = XQNetUtil.dismissAccount(nil,uuid)
if unbound and (tonumber(unbound.code) == 0 or tonumber(unbound.code) == 3001 or tonumber(unbound.code) == 3002) then
XQSysUtil.setPassportBound(false,uuid)
else
code = 1550
end
end
else
code = 1556
end
else
code = 1557
end
if code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(code)
else
LuciHttp.header("Set-Cookie", "psp=admin|||2|||0;path=/;")
end
result["code"] = code
LuciHttp.write_json(result)
end
function passportLogin()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local XQDBUtil = require("xiaoqiang.util.XQDBUtil")
local XQSysUtil = require("xiaoqiang.util.XQSysUtil")
local result = {}
local code = 0
local uuid = LuciHttp.formvalue("uuid")
local password = LuciHttp.formvalue("password")
local encrypt = LuciHttp.formvalue("encrypt")
local login = XQNetUtil.xiaomiLogin(uuid,password)
if login and login.code == 0 then
local bindInfo = XQSysUtil.getPassportBindInfo()
if bindInfo then
if login.uuid == bindInfo then
local adminList = XQNetUtil.getAdminList()
if adminList and type(adminList) == "table" then
if tonumber(adminList.code) == 0 then
code = 0
LuciHttp.header("Set-Cookie", "psp=" .. login.uuid .. "|||" .. 1 .. "|||" .. login.token .. ";path=/;")
elseif tonumber(adminList.code) == 401 then
code = 1551
else
code = 1549
XQSysUtil.setPassportBound(false,login.uuid)
LuciHttp.header("Set-Cookie", "psp=admin|||2|||0;path=/;")
end
else
code = 1551
if adminList and adminList.msg then
result["errorDetail"] = adminList.msg
end
end
else
code = 1548
end
else
XQSysUtil.setBindUUID(login.uuid)
end
result["token"] = login.token
result["uuid"] = login.uuid
elseif login and login.code ~= 0 then
if login.code == 1 then
code = 1564
elseif login.code == 2 then
code = 1565
else
code = 1566
end
else
code = 1538
end
if code ~= 0 then
local XQFunction = require("xiaoqiang.common.XQFunction")
XQFunction.forkExec("/usr/sbin/ntpsetclock 99999 log >/dev/null 2>&1")
result["msg"] = XQErrorUtil.getErrorMessage(code)
end
result["code"] = code
LuciHttp.write_json(result)
end
function routerAdminList()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local XQSysUtil = require("xiaoqiang.util.XQSysUtil")
local result = {}
local code = 0
local uuid = LuciHttp.formvalue("uuid") or ""
if not XQSysUtil.getPassportBindInfo() then
code = 1542
else
local admin = XQNetUtil.getAdminList(uuid)
if admin and tonumber(admin.code) == 0 then
result["list"] = admin.adminList
elseif admin and tonumber(admin.code) == 401 then
code = 1581
else
code = 1543
end
end
if code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(code)
end
result["code"] = code
LuciHttp.write_json(result)
end
function routerRegister()
local XQSysUtil = require("xiaoqiang.util.XQSysUtil")
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local XQDBUtil = require("xiaoqiang.util.XQDBUtil")
local result = {}
local code = 0
local uuid = LuciHttp.formvalue("uuid")
local register = XQNetUtil.routerRegister(uuid)
local passport = XQNetUtil.getPassport(uuid)
if register and tonumber(register.code) == 0 then
result["deviceID"] = register.id
XQSysUtil.setPassportBound(true,passport.uuid)
else
XQSysUtil.setPassportBound(false,nil)
code = 1541
end
if code ~= 0 then
local XQFunction = require("xiaoqiang.common.XQFunction")
XQFunction.forkExec("/usr/sbin/ntpsetclock 99999 log >/dev/null 2>&1")
result["msg"] = XQErrorUtil.getErrorMessage(code)
else
LuciHttp.header("Set-Cookie", "psp=" .. uuid .. "|||" .. 1 .. "|||" .. passport.token .. ";path=/;")
end
result["code"] = code
LuciHttp.write_json(result)
end
function getUserInfo()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local result = {}
local code = 0
local uuid = LuciHttp.formvalue("uuid") or ""
local info = XQNetUtil.getUserInfo(uuid)
if info then
result["userInfo"] = info
else
code = 1539
end
if code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(code)
end
result["code"] = code
LuciHttp.write_json(result)
end
function pluginList()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local result = {}
local uuid = LuciHttp.formvalue("uuid") or ""
local pList = XQNetUtil.pluginList(uuid)
if pList and tonumber(pList.code) == 0 then
result["code"] = 0
result["list"] = pList
elseif pList and tonumber(pList.code) == 401 then
result["code"] = 1581
elseif pList and tonumber(pList.code) == 3001 then
result["code"] = 1580
else
result["code"] = 1544
end
if result.code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(result.code)
end
LuciHttp.write_json(result)
end
function pluginEnable()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local result = {}
local uuid = LuciHttp.formvalue("uuid") or ""
local pluginId = LuciHttp.formvalue("pluginId")
local enable = XQNetUtil.pluginEnable(uuid,pluginId)
if enable and tonumber(enable.code) == 0 then
result["code"] = 0
elseif enable and tonumber(enable.code) == 401 then
result["code"] = 1581
elseif enable and tonumber(enable.code) == 3001 then
result["code"] = 1580
else
result["code"] = 1545
end
if result.code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(result.code)
end
LuciHttp.write_json(result)
end
function pluginDisable()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local result = {}
local uuid = LuciHttp.formvalue("uuid") or ""
local pluginId = LuciHttp.formvalue("pluginId")
local disable = XQNetUtil.pluginDisable(uuid,pluginId)
if disable and tonumber(disable.code) == 0 then
result["code"] = 0
elseif disable and tonumber(disable.code) == 401 then
result["code"] = 1581
elseif disable and tonumber(disable.code) == 3001 then
result["code"] = 1580
else
result["code"] = 1546
end
if result.code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(result.code)
end
LuciHttp.write_json(result)
end
function pluginDetail()
local XQNetUtil = require("xiaoqiang.util.XQNetUtil")
local result = {}
local uuid = LuciHttp.formvalue("uuid") or ""
local pluginId = LuciHttp.formvalue("pluginId")
local plugin = XQNetUtil.pluginDetail(uuid,pluginId)
if plugin and tonumber(plugin.code) == 0 then
result["code"] = 0
result["detail"] = plugin
elseif plugin and tonumber(plugin.code) == 401 then
result["code"] = 1581
elseif plugin and tonumber(plugin.code) == 3001 then
result["code"] = 1580
else
result["code"] = 1547
end
if result.code ~= 0 then
result["msg"] = XQErrorUtil.getErrorMessage(result.code)
end
LuciHttp.write_json(result)
end